PolarSSL v1.3.9
gcm.h
Go to the documentation of this file.
1
27#ifndef POLARSSL_GCM_H
28#define POLARSSL_GCM_H
29
30#include "cipher.h"
31
32#if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32)
33#include <basetsd.h>
34typedef UINT32 uint32_t;
35typedef UINT64 uint64_t;
36#else
37#include <stdint.h>
38#endif
39
40#define GCM_ENCRYPT 1
41#define GCM_DECRYPT 0
42
43#define POLARSSL_ERR_GCM_AUTH_FAILED -0x0012
44#define POLARSSL_ERR_GCM_BAD_INPUT -0x0014
46#ifdef __cplusplus
47extern "C" {
48#endif
49
53typedef struct {
55 uint64_t HL[16];
56 uint64_t HH[16];
57 uint64_t len;
58 uint64_t add_len;
59 unsigned char base_ectr[16];
60 unsigned char y[16];
61 unsigned char buf[16];
62 int mode;
63}
65
76int gcm_init( gcm_context *ctx, cipher_id_t cipher, const unsigned char *key,
77 unsigned int keysize );
78
102 int mode,
103 size_t length,
104 const unsigned char *iv,
105 size_t iv_len,
106 const unsigned char *add,
107 size_t add_len,
108 const unsigned char *input,
109 unsigned char *output,
110 size_t tag_len,
111 unsigned char *tag );
112
135 size_t length,
136 const unsigned char *iv,
137 size_t iv_len,
138 const unsigned char *add,
139 size_t add_len,
140 const unsigned char *tag,
141 size_t tag_len,
142 const unsigned char *input,
143 unsigned char *output );
144
158 int mode,
159 const unsigned char *iv,
160 size_t iv_len,
161 const unsigned char *add,
162 size_t add_len );
163
182 size_t length,
183 const unsigned char *input,
184 unsigned char *output );
185
198 unsigned char *tag,
199 size_t tag_len );
200
207
213int gcm_self_test( int verbose );
214
215#ifdef __cplusplus
216}
217#endif
218
219#endif /* gcm.h */
Generic cipher wrapper.
cipher_id_t
Definition cipher.h:71
void gcm_free(gcm_context *ctx)
Free a GCM context and underlying cipher sub-context.
int gcm_starts(gcm_context *ctx, int mode, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len)
Generic GCM stream start function.
int gcm_auth_decrypt(gcm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *tag, size_t tag_len, const unsigned char *input, unsigned char *output)
GCM buffer authenticated decryption using a block cipher.
int gcm_self_test(int verbose)
Checkup routine.
int gcm_finish(gcm_context *ctx, unsigned char *tag, size_t tag_len)
Generic GCM finalisation function.
int gcm_init(gcm_context *ctx, cipher_id_t cipher, const unsigned char *key, unsigned int keysize)
GCM initialization (encryption)
int gcm_update(gcm_context *ctx, size_t length, const unsigned char *input, unsigned char *output)
Generic GCM update function.
int gcm_crypt_and_tag(gcm_context *ctx, int mode, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *input, unsigned char *output, size_t tag_len, unsigned char *tag)
GCM buffer encryption/decryption using a block cipher.
Generic cipher context.
Definition cipher.h:258
GCM context structure.
Definition gcm.h:53
uint64_t add_len
Definition gcm.h:58
uint64_t len
Definition gcm.h:57
cipher_context_t cipher_ctx
Definition gcm.h:54
int mode
Definition gcm.h:62