|
RetroArch
|
#include "mbedtls/config.h"#include "mbedtls/gcm.h"#include <string.h>#include "mbedtls/aesni.h"#include "mbedtls/platform.h"#include "arc4_alt.h"Macros | |
| #define | GET_UINT32_BE(n, b, i) |
| #define | PUT_UINT32_BE(n, b, i) |
| #define | MAX_TESTS 6 |
Functions | |
| void | mbedtls_gcm_init (mbedtls_gcm_context *ctx) |
| Initialize GCM context (just makes references valid) Makes the context ready for mbedtls_gcm_setkey() or mbedtls_gcm_free(). More... | |
| static int | gcm_gen_table (mbedtls_gcm_context *ctx) |
| int | mbedtls_gcm_setkey (mbedtls_gcm_context *ctx, mbedtls_cipher_id_t cipher, const unsigned char *key, unsigned int keybits) |
| GCM initialization (encryption) More... | |
| static void | gcm_mult (mbedtls_gcm_context *ctx, const unsigned char x[16], unsigned char output[16]) |
| int | mbedtls_gcm_starts (mbedtls_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 | mbedtls_gcm_update (mbedtls_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 mbedtls_gcm_finish() can be less than 16 bytes! More... | |
| int | mbedtls_gcm_finish (mbedtls_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. More... | |
| int | mbedtls_gcm_crypt_and_tag (mbedtls_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 | mbedtls_gcm_auth_decrypt (mbedtls_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... | |
| void | mbedtls_gcm_free (mbedtls_gcm_context *ctx) |
| Free a GCM context and underlying cipher sub-context. More... | |
| int | mbedtls_gcm_self_test (int verbose) |
| Checkup routine. More... | |
Variables | |
| static const uint64_t | last4 [16] |
| static const int | key_index [MAX_TESTS] |
| static const unsigned char | gcm_key [MAX_TESTS][32] |
| static const size_t | gcm_iv_len [MAX_TESTS] |
| static const int | iv_index [MAX_TESTS] |
| static const unsigned char | gcm_iv [MAX_TESTS][64] |
| static const size_t | gcm_add_len [MAX_TESTS] |
| static const int | add_index [MAX_TESTS] |
| static const unsigned char | additional [MAX_TESTS][64] |
| static const size_t | pt_len [MAX_TESTS] |
| static const int | pt_index [MAX_TESTS] |
| static const unsigned char | pt [MAX_TESTS][64] |
| static const unsigned char | ct [MAX_TESTS *3][64] |
| static const unsigned char | tag [MAX_TESTS *3][16] |
| #define MAX_TESTS 6 |
|
static |
|
static |
| int mbedtls_gcm_auth_decrypt | ( | mbedtls_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 mbedtls_gcm_crypt_and_tag | ( | mbedtls_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 | MBEDTLS_GCM_ENCRYPT or MBEDTLS_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 mbedtls_gcm_finish | ( | mbedtls_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 |
| tag_len | length of the tag to generate (must be at least 4) |
| void mbedtls_gcm_free | ( | mbedtls_gcm_context * | ctx | ) |
Free a GCM context and underlying cipher sub-context.
| ctx | GCM context to free |
| void mbedtls_gcm_init | ( | mbedtls_gcm_context * | ctx | ) |
Initialize GCM context (just makes references valid) Makes the context ready for mbedtls_gcm_setkey() or mbedtls_gcm_free().
| ctx | GCM context to initialize |
| int mbedtls_gcm_self_test | ( | int | verbose | ) |
Checkup routine.
| int mbedtls_gcm_setkey | ( | mbedtls_gcm_context * | ctx, |
| mbedtls_cipher_id_t | cipher, | ||
| const unsigned char * | key, | ||
| unsigned int | keybits | ||
| ) |
GCM initialization (encryption)
| ctx | GCM context to be initialized |
| cipher | cipher to use (a 128-bit block cipher) |
| key | encryption key |
| keybits | must be 128, 192 or 256 |
| int mbedtls_gcm_starts | ( | mbedtls_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 | MBEDTLS_GCM_ENCRYPT or MBEDTLS_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 mbedtls_gcm_update | ( | mbedtls_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 mbedtls_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 |
1.8.15