00001
00023 #ifndef MBEDTLS_CCM_H
00024 #define MBEDTLS_CCM_H
00025
00026 #include "cipher.h"
00027
00028 #define MBEDTLS_ERR_CCM_BAD_INPUT -0x000D
00029 #define MBEDTLS_ERR_CCM_AUTH_FAILED -0x000F
00031 #ifdef __cplusplus
00032 extern "C" {
00033 #endif
00034
00038 typedef struct {
00039 mbedtls_cipher_context_t cipher_ctx;
00040 }
00041 mbedtls_ccm_context;
00042
00050 void mbedtls_ccm_init( mbedtls_ccm_context *ctx );
00051
00062 int mbedtls_ccm_setkey( mbedtls_ccm_context *ctx,
00063 mbedtls_cipher_id_t cipher,
00064 const unsigned char *key,
00065 unsigned int keybits );
00066
00072 void mbedtls_ccm_free( mbedtls_ccm_context *ctx );
00073
00099 int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length,
00100 const unsigned char *iv, size_t iv_len,
00101 const unsigned char *add, size_t add_len,
00102 const unsigned char *input, unsigned char *output,
00103 unsigned char *tag, size_t tag_len );
00104
00122 int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length,
00123 const unsigned char *iv, size_t iv_len,
00124 const unsigned char *add, size_t add_len,
00125 const unsigned char *input, unsigned char *output,
00126 const unsigned char *tag, size_t tag_len );
00127
00128 #if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C)
00129
00134 int mbedtls_ccm_self_test( int verbose );
00135 #endif
00136
00137 #ifdef __cplusplus
00138 }
00139 #endif
00140
00141 #endif