blob: cc11d3b9a2d589fa5be80d794d52c2ce305bb35a [file] [log] [blame]
Gilles Peskine75976892018-12-12 15:55:09 +01001/**
2 * \file psa/crypto_driver_common.h
3 * \brief Definitions for all PSA crypto drivers
4 *
5 * This file contains common definitions shared by all PSA crypto drivers.
6 * Do not include it directly: instead, include the header file(s) for
7 * the type(s) of driver that you are implementing. For example, if
Gilles Peskinedb6b03b2020-11-30 17:37:14 +01008 * you are writing a dynamically registered driver for a secure element,
9 * include `psa/crypto_se_driver.h`.
Gilles Peskine75976892018-12-12 15:55:09 +010010 *
11 * This file is part of the PSA Crypto Driver Model, containing functions for
12 * driver developers to implement to enable hardware to be called in a
13 * standardized way by a PSA Cryptographic API implementation. The functions
14 * comprising the driver model, which driver authors implement, are not
15 * intended to be called by application developers.
16 */
17
18/*
Bence Szépkúti1e148272020-08-07 13:07:28 +020019 * Copyright The Mbed TLS Contributors
Dave Rodgman16799db2023-11-02 19:47:20 +000020 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Gilles Peskine75976892018-12-12 15:55:09 +010021 */
22#ifndef PSA_CRYPTO_DRIVER_COMMON_H
23#define PSA_CRYPTO_DRIVER_COMMON_H
24
25#include <stddef.h>
26#include <stdint.h>
27
28/* Include type definitions (psa_status_t, psa_algorithm_t,
29 * psa_key_type_t, etc.) and macros to build and analyze values
30 * of these types. */
31#include "crypto_types.h"
32#include "crypto_values.h"
Gilles Peskine09c02ee2021-11-25 20:30:47 +010033/* Include size definitions which are used to size some arrays in operation
34 * structures. */
35#include <psa/crypto_sizes.h>
Gilles Peskine75976892018-12-12 15:55:09 +010036
37/** For encrypt-decrypt functions, whether the operation is an encryption
38 * or a decryption. */
39typedef enum {
40 PSA_CRYPTO_DRIVER_DECRYPT,
41 PSA_CRYPTO_DRIVER_ENCRYPT
42} psa_encrypt_or_decrypt_t;
43
44#endif /* PSA_CRYPTO_DRIVER_COMMON_H */