mbed TLS v1.3.16
|
Galois/Counter mode for 128-bit block ciphers. More...
Go to the source code of this file.
Data Structures | |
struct | gcm_context |
GCM context structure. More... | |
Macros | |
#define | GCM_ENCRYPT 1 |
#define | GCM_DECRYPT 0 |
#define | POLARSSL_ERR_GCM_AUTH_FAILED -0x0012 |
Authenticated decryption failed. More... | |
#define | POLARSSL_ERR_GCM_BAD_INPUT -0x0014 |
Bad input parameters to function. More... | |
Functions | |
int | gcm_init (gcm_context *ctx, cipher_id_t cipher, const unsigned char *key, unsigned int keysize) |
GCM initialization (encryption) More... | |
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. More... | |
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. More... | |
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. More... | |
int | gcm_update (gcm_context *ctx, size_t length, const unsigned char *input, unsigned char *output) |
Generic GCM update function. More... | |
int | gcm_finish (gcm_context *ctx, unsigned char *tag, size_t tag_len) |
Generic GCM finalisation function. More... | |
void | gcm_free (gcm_context *ctx) |
Free a GCM context and underlying cipher sub-context. More... | |
int | gcm_self_test (int verbose) |
Checkup routine. More... | |
Galois/Counter mode for 128-bit block ciphers.
Copyright (C) 2006-2013, ARM Limited, All Rights Reserved
This file is part of mbed TLS (https://tls.mbed.org)
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Definition in file gcm.h.
#define POLARSSL_ERR_GCM_AUTH_FAILED -0x0012 |
#define POLARSSL_ERR_GCM_BAD_INPUT -0x0014 |
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.
ctx | GCM context |
length | length of the input data |
iv | initialization vector |
iv_len | length of IV |
add | additional data |
add_len | length of additional data |
tag | buffer holding the tag |
tag_len | length of the tag |
input | buffer holding the input data |
output | buffer for holding the output data |
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.
ctx | GCM context |
mode | GCM_ENCRYPT or GCM_DECRYPT |
length | length of the input data |
iv | initialization vector |
iv_len | length of IV |
add | additional data |
add_len | length of additional data |
input | buffer holding the input data |
output | buffer for holding the output data |
tag_len | length of the tag to generate |
tag | buffer for holding the tag |
int gcm_finish | ( | gcm_context * | ctx, |
unsigned char * | tag, | ||
size_t | tag_len | ||
) |
Generic GCM finalisation function.
Wraps up the GCM stream and generates the tag. The tag can have a maximum length of 16 bytes.
ctx | GCM context |
tag | buffer for holding the tag (may be NULL if tag_len is 0) |
tag_len | length of the tag to generate |
void gcm_free | ( | gcm_context * | ctx | ) |
Free a GCM context and underlying cipher sub-context.
ctx | GCM context to free |
int gcm_init | ( | gcm_context * | ctx, |
cipher_id_t | cipher, | ||
const unsigned char * | key, | ||
unsigned int | keysize | ||
) |
GCM initialization (encryption)
ctx | GCM context to be initialized |
cipher | cipher to use (a 128-bit block cipher) |
key | encryption key |
keysize | must be 128, 192 or 256 |
int gcm_self_test | ( | int | verbose | ) |
Checkup routine.
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.
ctx | GCM context |
mode | GCM_ENCRYPT or GCM_DECRYPT |
iv | initialization vector |
iv_len | length of IV |
add | additional data (or NULL if length is 0) |
add_len | length of additional data |
int gcm_update | ( | gcm_context * | ctx, |
size_t | length, | ||
const unsigned char * | input, | ||
unsigned char * | output | ||
) |
Generic GCM update function.
Encrypts/decrypts using the given GCM context. Expects input to be a multiple of 16 bytes! Only the last call before gcm_finish() can be less than 16 bytes!
ctx | GCM context |
length | length of the input data |
input | buffer holding the input data |
output | buffer for holding the output data |