00001
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef MBEDTLS_CCM_H
00035 #define MBEDTLS_CCM_H
00036
00037 #if !defined(MBEDTLS_CONFIG_FILE)
00038 #include "config.h"
00039 #else
00040 #include MBEDTLS_CONFIG_FILE
00041 #endif
00042
00043 #include "cipher.h"
00044
00045 #define MBEDTLS_ERR_CCM_BAD_INPUT -0x000D
00046 #define MBEDTLS_ERR_CCM_AUTH_FAILED -0x000F
00047 #define MBEDTLS_ERR_CCM_HW_ACCEL_FAILED -0x0011
00049 #if !defined(MBEDTLS_CCM_ALT)
00050
00051
00052
00053 #ifdef __cplusplus
00054 extern "C" {
00055 #endif
00056
00061 typedef struct {
00062 mbedtls_cipher_context_t cipher_ctx;
00063 }
00064 mbedtls_ccm_context;
00065
00073 void mbedtls_ccm_init( mbedtls_ccm_context *ctx );
00074
00086 int mbedtls_ccm_setkey( mbedtls_ccm_context *ctx,
00087 mbedtls_cipher_id_t cipher,
00088 const unsigned char *key,
00089 unsigned int keybits );
00090
00097 void mbedtls_ccm_free( mbedtls_ccm_context *ctx );
00098
00124 int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length,
00125 const unsigned char *iv, size_t iv_len,
00126 const unsigned char *add, size_t add_len,
00127 const unsigned char *input, unsigned char *output,
00128 unsigned char *tag, size_t tag_len );
00129
00151 int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length,
00152 const unsigned char *iv, size_t iv_len,
00153 const unsigned char *add, size_t add_len,
00154 const unsigned char *input, unsigned char *output,
00155 const unsigned char *tag, size_t tag_len );
00156
00157 #ifdef __cplusplus
00158 }
00159 #endif
00160
00161 #else
00162 #include "ccm_alt.h"
00163 #endif
00164
00165 #ifdef __cplusplus
00166 extern "C" {
00167 #endif
00168
00169 #if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C)
00170
00175 int mbedtls_ccm_self_test( int verbose );
00176 #endif
00177
00178 #ifdef __cplusplus
00179 }
00180 #endif
00181
00182 #endif