gcm.h

Go to the documentation of this file.
00001 
00023 #ifndef MBEDTLS_GCM_H
00024 #define MBEDTLS_GCM_H
00025 
00026 #include "cipher.h"
00027 
00028 #include <stdint.h>
00029 
00030 #define MBEDTLS_GCM_ENCRYPT     1
00031 #define MBEDTLS_GCM_DECRYPT     0
00032 
00033 #define MBEDTLS_ERR_GCM_AUTH_FAILED                       -0x0012  
00034 #define MBEDTLS_ERR_GCM_BAD_INPUT                         -0x0014  
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039 
00043 typedef struct {
00044     mbedtls_cipher_context_t cipher_ctx;
00045     uint64_t HL[16];            
00046     uint64_t HH[16];            
00047     uint64_t len;               
00048     uint64_t add_len;           
00049     unsigned char base_ectr[16];
00050     unsigned char y[16];        
00051     unsigned char buf[16];      
00052     int mode;                   
00053 }
00054 mbedtls_gcm_context;
00055 
00063 void mbedtls_gcm_init( mbedtls_gcm_context *ctx );
00064 
00075 int mbedtls_gcm_setkey( mbedtls_gcm_context *ctx,
00076                         mbedtls_cipher_id_t cipher,
00077                         const unsigned char *key,
00078                         unsigned int keybits );
00079 
00102 int mbedtls_gcm_crypt_and_tag( mbedtls_gcm_context *ctx,
00103                        int mode,
00104                        size_t length,
00105                        const unsigned char *iv,
00106                        size_t iv_len,
00107                        const unsigned char *add,
00108                        size_t add_len,
00109                        const unsigned char *input,
00110                        unsigned char *output,
00111                        size_t tag_len,
00112                        unsigned char *tag );
00113 
00135 int mbedtls_gcm_auth_decrypt( mbedtls_gcm_context *ctx,
00136                       size_t length,
00137                       const unsigned char *iv,
00138                       size_t iv_len,
00139                       const unsigned char *add,
00140                       size_t add_len,
00141                       const unsigned char *tag,
00142                       size_t tag_len,
00143                       const unsigned char *input,
00144                       unsigned char *output );
00145 
00158 int mbedtls_gcm_starts( mbedtls_gcm_context *ctx,
00159                 int mode,
00160                 const unsigned char *iv,
00161                 size_t iv_len,
00162                 const unsigned char *add,
00163                 size_t add_len );
00164 
00182 int mbedtls_gcm_update( mbedtls_gcm_context *ctx,
00183                 size_t length,
00184                 const unsigned char *input,
00185                 unsigned char *output );
00186 
00198 int mbedtls_gcm_finish( mbedtls_gcm_context *ctx,
00199                 unsigned char *tag,
00200                 size_t tag_len );
00201 
00207 void mbedtls_gcm_free( mbedtls_gcm_context *ctx );
00208 
00214 int mbedtls_gcm_self_test( int verbose );
00215 
00216 #ifdef __cplusplus
00217 }
00218 #endif
00219 
00220 #endif /* gcm.h */

Generated on 11 Mar 2017 for mbed TLS v2.4.2 by  doxygen 1.4.7