00001
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 #ifndef MBEDTLS_CCM_H
00062 #define MBEDTLS_CCM_H
00063
00064 #if !defined(MBEDTLS_CONFIG_FILE)
00065 #include "config.h"
00066 #else
00067 #include MBEDTLS_CONFIG_FILE
00068 #endif
00069
00070 #include "cipher.h"
00071
00072 #define MBEDTLS_ERR_CCM_BAD_INPUT -0x000D
00073 #define MBEDTLS_ERR_CCM_AUTH_FAILED -0x000F
00074 #define MBEDTLS_ERR_CCM_HW_ACCEL_FAILED -0x0011
00076 #if !defined(MBEDTLS_CCM_ALT)
00077
00078
00079
00080 #ifdef __cplusplus
00081 extern "C" {
00082 #endif
00083
00088 typedef struct {
00089 mbedtls_cipher_context_t cipher_ctx;
00090 }
00091 mbedtls_ccm_context;
00092
00100 void mbedtls_ccm_init( mbedtls_ccm_context *ctx );
00101
00113 int mbedtls_ccm_setkey( mbedtls_ccm_context *ctx,
00114 mbedtls_cipher_id_t cipher,
00115 const unsigned char *key,
00116 unsigned int keybits );
00117
00124 void mbedtls_ccm_free( mbedtls_ccm_context *ctx );
00125
00151 int mbedtls_ccm_encrypt_and_tag( 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 unsigned char *tag, size_t tag_len );
00156
00178 int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length,
00179 const unsigned char *iv, size_t iv_len,
00180 const unsigned char *add, size_t add_len,
00181 const unsigned char *input, unsigned char *output,
00182 const unsigned char *tag, size_t tag_len );
00183
00184 #ifdef __cplusplus
00185 }
00186 #endif
00187
00188 #else
00189 #include "ccm_alt.h"
00190 #endif
00191
00192 #ifdef __cplusplus
00193 extern "C" {
00194 #endif
00195
00196 #if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C)
00197
00202 int mbedtls_ccm_self_test( int verbose );
00203 #endif
00204
00205 #ifdef __cplusplus
00206 }
00207 #endif
00208
00209 #endif