gcm.h File Reference

Galois/Counter Mode (GCM) More...

#include "core/crypto.h"

Go to the source code of this file.

Data Structures

struct  GcmContext
 GCM context. More...
 

Macros

#define GCM_TABLE_W   4
 
#define GCM_TABLE_N   16
 
#define GCM_REVERSE_BITS(n)   reverseInt4(n)
 

Functions

error_t gcmInit (GcmContext *context, const CipherAlgo *cipherAlgo, void *cipherContext)
 Initialize GCM context. More...
 
error_t gcmEncrypt (GcmContext *context, const uint8_t *iv, size_t ivLen, const uint8_t *a, size_t aLen, const uint8_t *p, uint8_t *c, size_t length, uint8_t *t, size_t tLen)
 Authenticated encryption using GCM. More...
 
error_t gcmDecrypt (GcmContext *context, const uint8_t *iv, size_t ivLen, const uint8_t *a, size_t aLen, const uint8_t *c, uint8_t *p, size_t length, const uint8_t *t, size_t tLen)
 Authenticated decryption using GCM. More...
 
void gcmMul (GcmContext *context, uint8_t *x)
 Multiplication operation in GF(2^128) More...
 
void gcmXorBlock (uint8_t *x, const uint8_t *a, const uint8_t *b, size_t n)
 XOR operation. More...
 
void gcmIncCounter (uint8_t *x)
 Increment counter block. More...
 

Detailed Description

Galois/Counter Mode (GCM)

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2023 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneCRYPTO Open.

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.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.2.4

Definition in file gcm.h.

Macro Definition Documentation

◆ GCM_REVERSE_BITS

#define GCM_REVERSE_BITS (   n)    reverseInt4(n)

Definition at line 47 of file gcm.h.

◆ GCM_TABLE_N

#define GCM_TABLE_N   16

Definition at line 46 of file gcm.h.

◆ GCM_TABLE_W

#define GCM_TABLE_W   4

Definition at line 39 of file gcm.h.

Function Documentation

◆ gcmDecrypt()

error_t gcmDecrypt ( GcmContext context,
const uint8_t *  iv,
size_t  ivLen,
const uint8_t *  a,
size_t  aLen,
const uint8_t *  c,
uint8_t *  p,
size_t  length,
const uint8_t *  t,
size_t  tLen 
)

Authenticated decryption using GCM.

Parameters
[in]contextPointer to the GCM context
[in]ivInitialization vector
[in]ivLenLength of the initialization vector
[in]aAdditional authenticated data
[in]aLenLength of the additional data
[in]cCiphertext to be decrypted
[out]pPlaintext resulting from the decryption
[in]lengthTotal number of data bytes to be decrypted
[in]tAuthentication tag
[in]tLenLength of the authentication tag
Returns
Error code

Make sure the GCM context is valid

Make sure the GCM context is valid

Make sure the GCM context is valid

Definition at line 357 of file gcm.c.

◆ gcmEncrypt()

error_t gcmEncrypt ( GcmContext context,
const uint8_t *  iv,
size_t  ivLen,
const uint8_t *  a,
size_t  aLen,
const uint8_t *  p,
uint8_t *  c,
size_t  length,
uint8_t *  t,
size_t  tLen 
)

Authenticated encryption using GCM.

Parameters
[in]contextPointer to the GCM context
[in]ivInitialization vector
[in]ivLenLength of the initialization vector
[in]aAdditional authenticated data
[in]aLenLength of the additional data
[in]pPlaintext to be encrypted
[out]cCiphertext resulting from the encryption
[in]lengthTotal number of data bytes to be encrypted
[out]tAuthentication tag
[in]tLenLength of the authentication tag
Returns
Error code

Definition at line 210 of file gcm.c.

◆ gcmIncCounter()

void gcmIncCounter ( uint8_t *  x)

Increment counter block.

Parameters
[in,out]xPointer to the counter block

Definition at line 610 of file gcm.c.

◆ gcmInit()

error_t gcmInit ( GcmContext context,
const CipherAlgo cipherAlgo,
void *  cipherContext 
)

Initialize GCM context.

Parameters
[in]contextPointer to the GCM context
[in]cipherAlgoCipher algorithm
[in]cipherContextPointer to the cipher algorithm context
Returns
Error code

Definition at line 99 of file gcm.c.

◆ gcmMul()

void gcmMul ( GcmContext context,
uint8_t *  x 
)

Multiplication operation in GF(2^128)

Parameters
[in]contextPointer to the GCM context
[in,out]x16-byte block to be multiplied by H

Definition at line 504 of file gcm.c.

◆ gcmXorBlock()

void gcmXorBlock ( uint8_t *  x,
const uint8_t *  a,
const uint8_t *  b,
size_t  n 
)

XOR operation.

Parameters
[out]xBlock resulting from the XOR operation
[in]aFirst block
[in]bSecond block
[in]nSize of the block

Definition at line 593 of file gcm.c.