123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /**
- * \file block_cipher_internal.h
- *
- * \brief Lightweight abstraction layer for block ciphers with 128 bit blocks,
- * for use by the GCM and CCM modules.
- */
- /*
- * Copyright The Mbed TLS Contributors
- * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
- */
- #ifndef MBEDTLS_BLOCK_CIPHER_INTERNAL_H
- #define MBEDTLS_BLOCK_CIPHER_INTERNAL_H
- #include "mbedtls/build_info.h"
- #include "mbedtls/cipher.h"
- #include "mbedtls/block_cipher.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * \brief Initialize the context.
- * This must be the first API call before using the context.
- *
- * \param ctx The context to initialize.
- */
- static inline void mbedtls_block_cipher_init(mbedtls_block_cipher_context_t *ctx)
- {
- memset(ctx, 0, sizeof(*ctx));
- }
- /**
- * \brief Set the block cipher to use with this context.
- * This must be called after mbedtls_block_cipher_init().
- *
- * \param ctx The context to set up.
- * \param cipher_id The identifier of the cipher to use.
- * This must be either AES, ARIA or Camellia.
- * Warning: this is a ::mbedtls_cipher_id_t,
- * not a ::mbedtls_block_cipher_id_t!
- *
- * \retval \c 0 on success.
- * \retval #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA if \p cipher_id was
- * invalid.
- */
- int mbedtls_block_cipher_setup(mbedtls_block_cipher_context_t *ctx,
- mbedtls_cipher_id_t cipher_id);
- /**
- * \brief Set the key into the context.
- *
- * \param ctx The context to configure.
- * \param key The buffer holding the key material.
- * \param key_bitlen The size of the key in bits.
- *
- * \retval \c 0 on success.
- * \retval #MBEDTLS_ERR_CIPHER_INVALID_CONTEXT if the context was not
- * properly set up before calling this function.
- * \retval One of #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH,
- * #MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
- * #MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA if \p key_bitlen is
- * invalid.
- */
- int mbedtls_block_cipher_setkey(mbedtls_block_cipher_context_t *ctx,
- const unsigned char *key,
- unsigned key_bitlen);
- /**
- * \brief Encrypt one block (16 bytes) with the configured key.
- *
- * \param ctx The context holding the key.
- * \param input The buffer holding the input block. Must be 16 bytes.
- * \param output The buffer to which the output block will be written.
- * Must be writable and 16 bytes long.
- * This must either not overlap with \p input, or be equal.
- *
- * \retval \c 0 on success.
- * \retval #MBEDTLS_ERR_CIPHER_INVALID_CONTEXT if the context was not
- * properly set up before calling this function.
- * \retval Another negative value if encryption failed.
- */
- int mbedtls_block_cipher_encrypt(mbedtls_block_cipher_context_t *ctx,
- const unsigned char input[16],
- unsigned char output[16]);
- /**
- * \brief Clear the context.
- *
- * \param ctx The context to clear.
- */
- void mbedtls_block_cipher_free(mbedtls_block_cipher_context_t *ctx);
- #ifdef __cplusplus
- }
- #endif
- #endif /* MBEDTLS_BLOCK_CIPHER_INTERNAL_H */
|