Path: blob/master/thirdparty/mbedtls/include/psa/crypto_builtin_primitives.h
9904 views
/*1* Context structure declaration of the Mbed TLS software-based PSA drivers2* called through the PSA Crypto driver dispatch layer.3* This file contains the context structures of those algorithms which do not4* rely on other algorithms, i.e. are 'primitive' algorithms.5*6* \note This file may not be included directly. Applications must7* include psa/crypto.h.8*9* \note This header and its content are not part of the Mbed TLS API and10* applications must not depend on it. Its main purpose is to define the11* multi-part state objects of the Mbed TLS software-based PSA drivers. The12* definitions of these objects are then used by crypto_struct.h to define the13* implementation-defined types of PSA multi-part state objects.14*/15/*16* Copyright The Mbed TLS Contributors17* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later18*/1920#ifndef PSA_CRYPTO_BUILTIN_PRIMITIVES_H21#define PSA_CRYPTO_BUILTIN_PRIMITIVES_H22#include "mbedtls/private_access.h"2324#include <psa/crypto_driver_common.h>2526/*27* Hash multi-part operation definitions.28*/2930#include "mbedtls/md5.h"31#include "mbedtls/ripemd160.h"32#include "mbedtls/sha1.h"33#include "mbedtls/sha256.h"34#include "mbedtls/sha512.h"35#include "mbedtls/sha3.h"3637#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) || \38defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) || \39defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) || \40defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) || \41defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) || \42defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) || \43defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) || \44defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_224) || \45defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_256) || \46defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_384) || \47defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_512)48#define MBEDTLS_PSA_BUILTIN_HASH49#endif5051typedef struct {52psa_algorithm_t MBEDTLS_PRIVATE(alg);53union {54unsigned dummy; /* Make the union non-empty even with no supported algorithms. */55#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5)56mbedtls_md5_context md5;57#endif58#if defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160)59mbedtls_ripemd160_context ripemd160;60#endif61#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1)62mbedtls_sha1_context sha1;63#endif64#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) || \65defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224)66mbedtls_sha256_context sha256;67#endif68#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) || \69defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384)70mbedtls_sha512_context sha512;71#endif72#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_224) || \73defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_256) || \74defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_384) || \75defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_512)76mbedtls_sha3_context sha3;77#endif78} MBEDTLS_PRIVATE(ctx);79} mbedtls_psa_hash_operation_t;8081#define MBEDTLS_PSA_HASH_OPERATION_INIT { 0, { 0 } }8283/*84* Cipher multi-part operation definitions.85*/8687#include "mbedtls/cipher.h"8889#if defined(MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER) || \90defined(MBEDTLS_PSA_BUILTIN_ALG_CTR) || \91defined(MBEDTLS_PSA_BUILTIN_ALG_CFB) || \92defined(MBEDTLS_PSA_BUILTIN_ALG_OFB) || \93defined(MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING) || \94defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING) || \95defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7) || \96defined(MBEDTLS_PSA_BUILTIN_ALG_CCM_STAR_NO_TAG)97#define MBEDTLS_PSA_BUILTIN_CIPHER 198#endif99100typedef struct {101/* Context structure for the Mbed TLS cipher implementation. */102psa_algorithm_t MBEDTLS_PRIVATE(alg);103uint8_t MBEDTLS_PRIVATE(iv_length);104uint8_t MBEDTLS_PRIVATE(block_length);105union {106unsigned int MBEDTLS_PRIVATE(dummy);107mbedtls_cipher_context_t MBEDTLS_PRIVATE(cipher);108} MBEDTLS_PRIVATE(ctx);109} mbedtls_psa_cipher_operation_t;110111#define MBEDTLS_PSA_CIPHER_OPERATION_INIT { 0, 0, 0, { 0 } }112113#endif /* PSA_CRYPTO_BUILTIN_PRIMITIVES_H */114115116