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 #ifndef MBEDTLS_CCM_H
00060 #define MBEDTLS_CCM_H
00061
00062 #if !defined(MBEDTLS_CONFIG_FILE)
00063 #include "config.h"
00064 #else
00065 #include MBEDTLS_CONFIG_FILE
00066 #endif
00067
00068 #include "cipher.h"
00069
00070 #define MBEDTLS_ERR_CCM_BAD_INPUT -0x000D
00071 #define MBEDTLS_ERR_CCM_AUTH_FAILED -0x000F
00072 #define MBEDTLS_ERR_CCM_HW_ACCEL_FAILED -0x0011
00074 #if !defined(MBEDTLS_CCM_ALT)
00075
00076
00077
00078 #ifdef __cplusplus
00079 extern "C" {
00080 #endif
00081
00086 typedef struct {
00087 mbedtls_cipher_context_t cipher_ctx;
00088 }
00089 mbedtls_ccm_context;
00090
00098 void mbedtls_ccm_init( mbedtls_ccm_context *ctx );
00099
00111 int mbedtls_ccm_setkey( mbedtls_ccm_context *ctx,
00112 mbedtls_cipher_id_t cipher,
00113 const unsigned char *key,
00114 unsigned int keybits );
00115
00122 void mbedtls_ccm_free( mbedtls_ccm_context *ctx );
00123
00149 int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length,
00150 const unsigned char *iv, size_t iv_len,
00151 const unsigned char *add, size_t add_len,
00152 const unsigned char *input, unsigned char *output,
00153 unsigned char *tag, size_t tag_len );
00154
00176 int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length,
00177 const unsigned char *iv, size_t iv_len,
00178 const unsigned char *add, size_t add_len,
00179 const unsigned char *input, unsigned char *output,
00180 const unsigned char *tag, size_t tag_len );
00181
00182 #ifdef __cplusplus
00183 }
00184 #endif
00185
00186 #else
00187 #include "ccm_alt.h"
00188 #endif
00189
00190 #ifdef __cplusplus
00191 extern "C" {
00192 #endif
00193
00194 #if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C)
00195
00200 int mbedtls_ccm_self_test( int verbose );
00201 #endif
00202
00203 #ifdef __cplusplus
00204 }
00205 #endif
00206
00207 #endif