| /** |
| * \file block_cipher.h |
| * |
| * \brief Internal abstraction layer. |
| */ |
| /* |
| * Copyright The Mbed TLS Contributors |
| * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later |
| */ |
| #ifndef MBEDTLS_BLOCK_CIPHER_H |
| #define MBEDTLS_BLOCK_CIPHER_H |
| |
| #include "mbedtls/private_access.h" |
| |
| #include "mbedtls/build_info.h" |
| |
| #if defined(MBEDTLS_AES_C) |
| #include "mbedtls/aes.h" |
| #endif |
| #if defined(MBEDTLS_ARIA_C) |
| #include "mbedtls/aria.h" |
| #endif |
| #if defined(MBEDTLS_CAMELLIA_C) |
| #include "mbedtls/camellia.h" |
| #endif |
| |
| #if defined(MBEDTLS_BLOCK_CIPHER_SOME_PSA) |
| #include "psa/crypto_types.h" |
| #endif |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef enum { |
| MBEDTLS_BLOCK_CIPHER_ID_NONE = 0, /**< Unset. */ |
| MBEDTLS_BLOCK_CIPHER_ID_AES, /**< The AES cipher. */ |
| MBEDTLS_BLOCK_CIPHER_ID_CAMELLIA, /**< The Camellia cipher. */ |
| MBEDTLS_BLOCK_CIPHER_ID_ARIA, /**< The Aria cipher. */ |
| } mbedtls_block_cipher_id_t; |
| |
| /** |
| * Used internally to indicate whether a context uses legacy or PSA. |
| * |
| * Internal use only. |
| */ |
| typedef enum { |
| MBEDTLS_BLOCK_CIPHER_ENGINE_LEGACY = 0, |
| MBEDTLS_BLOCK_CIPHER_ENGINE_PSA, |
| } mbedtls_block_cipher_engine_t; |
| |
| typedef struct { |
| mbedtls_block_cipher_id_t MBEDTLS_PRIVATE(id); |
| #if defined(MBEDTLS_BLOCK_CIPHER_SOME_PSA) |
| mbedtls_block_cipher_engine_t MBEDTLS_PRIVATE(engine); |
| mbedtls_svc_key_id_t MBEDTLS_PRIVATE(psa_key_id); |
| #endif |
| union { |
| unsigned dummy; /* Make the union non-empty even with no supported algorithms. */ |
| #if defined(MBEDTLS_AES_C) |
| mbedtls_aes_context MBEDTLS_PRIVATE(aes); |
| #endif |
| #if defined(MBEDTLS_ARIA_C) |
| mbedtls_aria_context MBEDTLS_PRIVATE(aria); |
| #endif |
| #if defined(MBEDTLS_CAMELLIA_C) |
| mbedtls_camellia_context MBEDTLS_PRIVATE(camellia); |
| #endif |
| } MBEDTLS_PRIVATE(ctx); |
| } mbedtls_block_cipher_context_t; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* MBEDTLS_BLOCK_CIPHER_H */ |