iPXE
gcm_test.c File Reference

Galois/Counter Mode (GCM) tests. More...

#include <string.h>
#include <ipxe/gcm.h>
#include <ipxe/aes.h>
#include <ipxe/test.h>
#include "cipher_test.h"

Go to the source code of this file.

Macros

#define GCM_KEY_128_ZERO
 128-bit zero key
#define GCM_KEY_128
 128-bit key
#define GCM_KEY_192_ZERO
 192-bit zero key
#define GCM_KEY_192
 192-bit key
#define GCM_KEY_256_ZERO
 256-bit zero key
#define GCM_KEY_256
 256-bit key
#define GCM_IV_64    IV ( 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad )
 64-bit IV
#define GCM_IV_96_ZERO
 96-bit zero IV
#define GCM_IV_96
 96-bit IV
#define GCM_IV_480
 480-bit IV
#define GCM_ADDITIONAL_EMPTY   ADDITIONAL()
 Empty additional data.
#define GCM_ADDITIONAL_160
 160-bit additional data
#define GCM_PLAINTEXT_EMPTY   PLAINTEXT()
 Empty plaintext.
#define GCM_PLAINTEXT_128_ZERO
 128-bit zero plaintext
#define GCM_PLAINTEXT_512
 512-bit plaintext
#define GCM_PLAINTEXT_480
 480-bit plaintext

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 CIPHER_TEST (gcm_test_1, &aes_gcm_algorithm, GCM_KEY_128_ZERO, GCM_IV_96_ZERO, GCM_ADDITIONAL_EMPTY, GCM_PLAINTEXT_EMPTY, CIPHERTEXT(), AUTH(0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61, 0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a))
 Test 1.
 CIPHER_TEST (gcm_test_2, &aes_gcm_algorithm, GCM_KEY_128_ZERO, GCM_IV_96_ZERO, GCM_ADDITIONAL_EMPTY, GCM_PLAINTEXT_128_ZERO, CIPHERTEXT(0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92, 0xf3, 0x28, 0xc2, 0xb9, 0x71, 0xb2, 0xfe, 0x78), AUTH(0xab, 0x6e, 0x47, 0xd4, 0x2c, 0xec, 0x13, 0xbd, 0xf5, 0x3a, 0x67, 0xb2, 0x12, 0x57, 0xbd, 0xdf))
 Test 2.
 CIPHER_TEST (gcm_test_3, &aes_gcm_algorithm, GCM_KEY_128, GCM_IV_96, GCM_ADDITIONAL_EMPTY, GCM_PLAINTEXT_512, CIPHERTEXT(0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85), AUTH(0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6, 0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4))
 Test 3.
 CIPHER_TEST (gcm_test_4, &aes_gcm_algorithm, GCM_KEY_128, GCM_IV_96, GCM_ADDITIONAL_160, GCM_PLAINTEXT_480, CIPHERTEXT(0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 0x3d, 0x58, 0xe0, 0x91), AUTH(0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb, 0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47))
 Test 4.
 CIPHER_TEST (gcm_test_5, &aes_gcm_algorithm, GCM_KEY_128, GCM_IV_64, GCM_ADDITIONAL_160, GCM_PLAINTEXT_480, CIPHERTEXT(0x61, 0x35, 0x3b, 0x4c, 0x28, 0x06, 0x93, 0x4a, 0x77, 0x7f, 0xf5, 0x1f, 0xa2, 0x2a, 0x47, 0x55, 0x69, 0x9b, 0x2a, 0x71, 0x4f, 0xcd, 0xc6, 0xf8, 0x37, 0x66, 0xe5, 0xf9, 0x7b, 0x6c, 0x74, 0x23, 0x73, 0x80, 0x69, 0x00, 0xe4, 0x9f, 0x24, 0xb2, 0x2b, 0x09, 0x75, 0x44, 0xd4, 0x89, 0x6b, 0x42, 0x49, 0x89, 0xb5, 0xe1, 0xeb, 0xac, 0x0f, 0x07, 0xc2, 0x3f, 0x45, 0x98), AUTH(0x36, 0x12, 0xd2, 0xe7, 0x9e, 0x3b, 0x07, 0x85, 0x56, 0x1b, 0xe1, 0x4a, 0xac, 0xa2, 0xfc, 0xcb))
 Test 5.
 CIPHER_TEST (gcm_test_6, &aes_gcm_algorithm, GCM_KEY_128, GCM_IV_480, GCM_ADDITIONAL_160, GCM_PLAINTEXT_480, CIPHERTEXT(0x8c, 0xe2, 0x49, 0x98, 0x62, 0x56, 0x15, 0xb6, 0x03, 0xa0, 0x33, 0xac, 0xa1, 0x3f, 0xb8, 0x94, 0xbe, 0x91, 0x12, 0xa5, 0xc3, 0xa2, 0x11, 0xa8, 0xba, 0x26, 0x2a, 0x3c, 0xca, 0x7e, 0x2c, 0xa7, 0x01, 0xe4, 0xa9, 0xa4, 0xfb, 0xa4, 0x3c, 0x90, 0xcc, 0xdc, 0xb2, 0x81, 0xd4, 0x8c, 0x7c, 0x6f, 0xd6, 0x28, 0x75, 0xd2, 0xac, 0xa4, 0x17, 0x03, 0x4c, 0x34, 0xae, 0xe5), AUTH(0x61, 0x9c, 0xc5, 0xae, 0xff, 0xfe, 0x0b, 0xfa, 0x46, 0x2a, 0xf4, 0x3c, 0x16, 0x99, 0xd0, 0x50))
 Test 6.
 CIPHER_TEST (gcm_test_7, &aes_gcm_algorithm, GCM_KEY_192_ZERO, GCM_IV_96_ZERO, GCM_ADDITIONAL_EMPTY, GCM_PLAINTEXT_EMPTY, CIPHERTEXT(), AUTH(0xcd, 0x33, 0xb2, 0x8a, 0xc7, 0x73, 0xf7, 0x4b, 0xa0, 0x0e, 0xd1, 0xf3, 0x12, 0x57, 0x24, 0x35))
 Test 7.
 CIPHER_TEST (gcm_test_8, &aes_gcm_algorithm, GCM_KEY_192_ZERO, GCM_IV_96_ZERO, GCM_ADDITIONAL_EMPTY, GCM_PLAINTEXT_128_ZERO, CIPHERTEXT(0x98, 0xe7, 0x24, 0x7c, 0x07, 0xf0, 0xfe, 0x41, 0x1c, 0x26, 0x7e, 0x43, 0x84, 0xb0, 0xf6, 0x00), AUTH(0x2f, 0xf5, 0x8d, 0x80, 0x03, 0x39, 0x27, 0xab, 0x8e, 0xf4, 0xd4, 0x58, 0x75, 0x14, 0xf0, 0xfb))
 Test 8.
 CIPHER_TEST (gcm_test_9, &aes_gcm_algorithm, GCM_KEY_192, GCM_IV_96, GCM_ADDITIONAL_EMPTY, GCM_PLAINTEXT_512, CIPHERTEXT(0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41, 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57, 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84, 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c, 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25, 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47, 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9, 0xcc, 0xda, 0x27, 0x10, 0xac, 0xad, 0xe2, 0x56), AUTH(0x99, 0x24, 0xa7, 0xc8, 0x58, 0x73, 0x36, 0xbf, 0xb1, 0x18, 0x02, 0x4d, 0xb8, 0x67, 0x4a, 0x14))
 Test 9.
 CIPHER_TEST (gcm_test_10, &aes_gcm_algorithm, GCM_KEY_192, GCM_IV_96, GCM_ADDITIONAL_160, GCM_PLAINTEXT_480, CIPHERTEXT(0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41, 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57, 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84, 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c, 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25, 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47, 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9, 0xcc, 0xda, 0x27, 0x10), AUTH(0x25, 0x19, 0x49, 0x8e, 0x80, 0xf1, 0x47, 0x8f, 0x37, 0xba, 0x55, 0xbd, 0x6d, 0x27, 0x61, 0x8c))
 Test 10.
 CIPHER_TEST (gcm_test_11, &aes_gcm_algorithm, GCM_KEY_192, GCM_IV_64, GCM_ADDITIONAL_160, GCM_PLAINTEXT_480, CIPHERTEXT(0x0f, 0x10, 0xf5, 0x99, 0xae, 0x14, 0xa1, 0x54, 0xed, 0x24, 0xb3, 0x6e, 0x25, 0x32, 0x4d, 0xb8, 0xc5, 0x66, 0x63, 0x2e, 0xf2, 0xbb, 0xb3, 0x4f, 0x83, 0x47, 0x28, 0x0f, 0xc4, 0x50, 0x70, 0x57, 0xfd, 0xdc, 0x29, 0xdf, 0x9a, 0x47, 0x1f, 0x75, 0xc6, 0x65, 0x41, 0xd4, 0xd4, 0xda, 0xd1, 0xc9, 0xe9, 0x3a, 0x19, 0xa5, 0x8e, 0x8b, 0x47, 0x3f, 0xa0, 0xf0, 0x62, 0xf7), AUTH(0x65, 0xdc, 0xc5, 0x7f, 0xcf, 0x62, 0x3a, 0x24, 0x09, 0x4f, 0xcc, 0xa4, 0x0d, 0x35, 0x33, 0xf8))
 Test 11.
 CIPHER_TEST (gcm_test_12, &aes_gcm_algorithm, GCM_KEY_192, GCM_IV_480, GCM_ADDITIONAL_160, GCM_PLAINTEXT_480, CIPHERTEXT(0xd2, 0x7e, 0x88, 0x68, 0x1c, 0xe3, 0x24, 0x3c, 0x48, 0x30, 0x16, 0x5a, 0x8f, 0xdc, 0xf9, 0xff, 0x1d, 0xe9, 0xa1, 0xd8, 0xe6, 0xb4, 0x47, 0xef, 0x6e, 0xf7, 0xb7, 0x98, 0x28, 0x66, 0x6e, 0x45, 0x81, 0xe7, 0x90, 0x12, 0xaf, 0x34, 0xdd, 0xd9, 0xe2, 0xf0, 0x37, 0x58, 0x9b, 0x29, 0x2d, 0xb3, 0xe6, 0x7c, 0x03, 0x67, 0x45, 0xfa, 0x22, 0xe7, 0xe9, 0xb7, 0x37, 0x3b), AUTH(0xdc, 0xf5, 0x66, 0xff, 0x29, 0x1c, 0x25, 0xbb, 0xb8, 0x56, 0x8f, 0xc3, 0xd3, 0x76, 0xa6, 0xd9))
 Test 12.
 CIPHER_TEST (gcm_test_13, &aes_gcm_algorithm, GCM_KEY_256_ZERO, GCM_IV_96_ZERO, GCM_ADDITIONAL_EMPTY, GCM_PLAINTEXT_EMPTY, CIPHERTEXT(), AUTH(0x53, 0x0f, 0x8a, 0xfb, 0xc7, 0x45, 0x36, 0xb9, 0xa9, 0x63, 0xb4, 0xf1, 0xc4, 0xcb, 0x73, 0x8b))
 Test 13.
 CIPHER_TEST (gcm_test_14, &aes_gcm_algorithm, GCM_KEY_256_ZERO, GCM_IV_96_ZERO, GCM_ADDITIONAL_EMPTY, GCM_PLAINTEXT_128_ZERO, CIPHERTEXT(0xce, 0xa7, 0x40, 0x3d, 0x4d, 0x60, 0x6b, 0x6e, 0x07, 0x4e, 0xc5, 0xd3, 0xba, 0xf3, 0x9d, 0x18), AUTH(0xd0, 0xd1, 0xc8, 0xa7, 0x99, 0x99, 0x6b, 0xf0, 0x26, 0x5b, 0x98, 0xb5, 0xd4, 0x8a, 0xb9, 0x19))
 Test 14.
 CIPHER_TEST (gcm_test_15, &aes_gcm_algorithm, GCM_KEY_256, GCM_IV_96, GCM_ADDITIONAL_EMPTY, GCM_PLAINTEXT_512, CIPHERTEXT(0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07, 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d, 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9, 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa, 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d, 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38, 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a, 0xbc, 0xc9, 0xf6, 0x62, 0x89, 0x80, 0x15, 0xad), AUTH(0xb0, 0x94, 0xda, 0xc5, 0xd9, 0x34, 0x71, 0xbd, 0xec, 0x1a, 0x50, 0x22, 0x70, 0xe3, 0xcc, 0x6c))
 Test 15.
 CIPHER_TEST (gcm_test_16, &aes_gcm_algorithm, GCM_KEY_256, GCM_IV_96, GCM_ADDITIONAL_160, GCM_PLAINTEXT_480, CIPHERTEXT(0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07, 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d, 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9, 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa, 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d, 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38, 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a, 0xbc, 0xc9, 0xf6, 0x62), AUTH(0x76, 0xfc, 0x6e, 0xce, 0x0f, 0x4e, 0x17, 0x68, 0xcd, 0xdf, 0x88, 0x53, 0xbb, 0x2d, 0x55, 0x1b))
 Test 16.
 CIPHER_TEST (gcm_test_17, &aes_gcm_algorithm, GCM_KEY_256, GCM_IV_64, GCM_ADDITIONAL_160, GCM_PLAINTEXT_480, CIPHERTEXT(0xc3, 0x76, 0x2d, 0xf1, 0xca, 0x78, 0x7d, 0x32, 0xae, 0x47, 0xc1, 0x3b, 0xf1, 0x98, 0x44, 0xcb, 0xaf, 0x1a, 0xe1, 0x4d, 0x0b, 0x97, 0x6a, 0xfa, 0xc5, 0x2f, 0xf7, 0xd7, 0x9b, 0xba, 0x9d, 0xe0, 0xfe, 0xb5, 0x82, 0xd3, 0x39, 0x34, 0xa4, 0xf0, 0x95, 0x4c, 0xc2, 0x36, 0x3b, 0xc7, 0x3f, 0x78, 0x62, 0xac, 0x43, 0x0e, 0x64, 0xab, 0xe4, 0x99, 0xf4, 0x7c, 0x9b, 0x1f), AUTH(0x3a, 0x33, 0x7d, 0xbf, 0x46, 0xa7, 0x92, 0xc4, 0x5e, 0x45, 0x49, 0x13, 0xfe, 0x2e, 0xa8, 0xf2))
 Test 17.
 CIPHER_TEST (gcm_test_18, &aes_gcm_algorithm, GCM_KEY_256, GCM_IV_480, GCM_ADDITIONAL_160, GCM_PLAINTEXT_480, CIPHERTEXT(0x5a, 0x8d, 0xef, 0x2f, 0x0c, 0x9e, 0x53, 0xf1, 0xf7, 0x5d, 0x78, 0x53, 0x65, 0x9e, 0x2a, 0x20, 0xee, 0xb2, 0xb2, 0x2a, 0xaf, 0xde, 0x64, 0x19, 0xa0, 0x58, 0xab, 0x4f, 0x6f, 0x74, 0x6b, 0xf4, 0x0f, 0xc0, 0xc3, 0xb7, 0x80, 0xf2, 0x44, 0x45, 0x2d, 0xa3, 0xeb, 0xf1, 0xc5, 0xd8, 0x2c, 0xde, 0xa2, 0x41, 0x89, 0x97, 0x20, 0x0e, 0xf8, 0x2e, 0x44, 0xae, 0x7e, 0x3f), AUTH(0xa4, 0x4a, 0x82, 0x66, 0xee, 0x1c, 0x8e, 0xb0, 0xc8, 0xb5, 0xd4, 0xcf, 0x5a, 0xe9, 0xf1, 0x9a))
 Test 18.
static void gcm_test_exec (void)
 Perform Galois/Counter Mode self-test.

Variables

struct self_test gcm_test __self_test
 Galois/Counter Mode self-test.

Detailed Description

Galois/Counter Mode (GCM) tests.

These test vectors are provided by NIST as part of the GCM proposed specification document (which, unlike the final published specification document, includes test vectors with intermediate values):

https://csrc.nist.rip/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf

Definition in file gcm_test.c.

Macro Definition Documentation

◆ GCM_KEY_128_ZERO

#define GCM_KEY_128_ZERO
Value:
KEY ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 )
#define KEY(...)
Define inline key.
Definition cipher_test.h:45

128-bit zero key

Definition at line 49 of file gcm_test.c.

49#define GCM_KEY_128_ZERO \
50 KEY ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
51 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 )

Referenced by CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_KEY_128

#define GCM_KEY_128
Value:
KEY ( 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 0x6d, \
0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 )

128-bit key

Definition at line 54 of file gcm_test.c.

54#define GCM_KEY_128 \
55 KEY ( 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 0x6d, \
56 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 )

Referenced by CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_KEY_192_ZERO

#define GCM_KEY_192_ZERO
Value:
KEY ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00 )

192-bit zero key

Definition at line 59 of file gcm_test.c.

59#define GCM_KEY_192_ZERO \
60 KEY ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
61 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
62 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 )

Referenced by CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_KEY_192

#define GCM_KEY_192
Value:
KEY ( 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 0x6d, \
0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 0xfe, 0xff, \
0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c )

192-bit key

Definition at line 65 of file gcm_test.c.

65#define GCM_KEY_192 \
66 KEY ( 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 0x6d, \
67 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 0xfe, 0xff, \
68 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c )

Referenced by CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_KEY_256_ZERO

#define GCM_KEY_256_ZERO
Value:
KEY ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00 )

256-bit zero key

Definition at line 71 of file gcm_test.c.

71#define GCM_KEY_256_ZERO \
72 KEY ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
73 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
74 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
75 0x00, 0x00, 0x00, 0x00, 0x00 )

Referenced by CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_KEY_256

#define GCM_KEY_256
Value:
KEY ( 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 0x6d, \
0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 0xfe, 0xff, \
0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 0x6d, 0x6a, 0x8f, \
0x94, 0x67, 0x30, 0x83, 0x08 )

256-bit key

Definition at line 78 of file gcm_test.c.

78#define GCM_KEY_256 \
79 KEY ( 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 0x6d, \
80 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 0xfe, 0xff, \
81 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 0x6d, 0x6a, 0x8f, \
82 0x94, 0x67, 0x30, 0x83, 0x08 )

Referenced by CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_IV_64

#define GCM_IV_64    IV ( 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad )

64-bit IV

Definition at line 85 of file gcm_test.c.

85#define GCM_IV_64 \
86 IV ( 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad )

Referenced by CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_IV_96_ZERO

#define GCM_IV_96_ZERO
Value:
IV ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00 )
#define IV(...)
Define inline initialisation vector.
Definition cipher_test.h:48

96-bit zero IV

Definition at line 89 of file gcm_test.c.

89#define GCM_IV_96_ZERO \
90 IV ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
91 0x00, 0x00, 0x00 )

Referenced by CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_IV_96

#define GCM_IV_96
Value:
IV ( 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 0xde, \
0xca, 0xf8, 0x88 )

96-bit IV

Definition at line 94 of file gcm_test.c.

94#define GCM_IV_96 \
95 IV ( 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 0xde, \
96 0xca, 0xf8, 0x88 )

Referenced by CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_IV_480

#define GCM_IV_480
Value:
IV ( 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5, 0x55, \
0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa, 0x6a, 0x7a, \
0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1, 0xe4, 0xc3, 0x03, \
0xd2, 0xa3, 0x18, 0xa7, 0x28, 0xc3, 0xc0, 0xc9, 0x51, \
0x56, 0x80, 0x95, 0x39, 0xfc, 0xf0, 0xe2, 0x42, 0x9a, \
0x6b, 0x52, 0x54, 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, \
0x6a, 0x57, 0xa6, 0x37, 0xb3, 0x9b )

480-bit IV

Definition at line 99 of file gcm_test.c.

99#define GCM_IV_480 \
100 IV ( 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5, 0x55, \
101 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa, 0x6a, 0x7a, \
102 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1, 0xe4, 0xc3, 0x03, \
103 0xd2, 0xa3, 0x18, 0xa7, 0x28, 0xc3, 0xc0, 0xc9, 0x51, \
104 0x56, 0x80, 0x95, 0x39, 0xfc, 0xf0, 0xe2, 0x42, 0x9a, \
105 0x6b, 0x52, 0x54, 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, \
106 0x6a, 0x57, 0xa6, 0x37, 0xb3, 0x9b )

Referenced by CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_ADDITIONAL_EMPTY

#define GCM_ADDITIONAL_EMPTY   ADDITIONAL()

Empty additional data.

Definition at line 109 of file gcm_test.c.

Referenced by CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_ADDITIONAL_160

#define GCM_ADDITIONAL_160
Value:
ADDITIONAL ( 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, \
0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, \
0xab, 0xad, 0xda, 0xd2 )
#define ADDITIONAL(...)
Define inline additional data.
Definition cipher_test.h:51

160-bit additional data

Definition at line 112 of file gcm_test.c.

112#define GCM_ADDITIONAL_160 \
113 ADDITIONAL ( 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, \
114 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, \
115 0xab, 0xad, 0xda, 0xd2 )

Referenced by CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_PLAINTEXT_EMPTY

#define GCM_PLAINTEXT_EMPTY   PLAINTEXT()

Empty plaintext.

Definition at line 118 of file gcm_test.c.

Referenced by CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_PLAINTEXT_128_ZERO

#define GCM_PLAINTEXT_128_ZERO
Value:
PLAINTEXT ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 )
#define PLAINTEXT(...)
Define inline plaintext data.
Definition cipher_test.h:54

128-bit zero plaintext

Definition at line 121 of file gcm_test.c.

121#define GCM_PLAINTEXT_128_ZERO \
122 PLAINTEXT ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
123 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 )

Referenced by CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_PLAINTEXT_512

#define GCM_PLAINTEXT_512
Value:
PLAINTEXT ( 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, \
0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, \
0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, \
0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, \
0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, \
0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, \
0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, \
0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 )

512-bit plaintext

Definition at line 126 of file gcm_test.c.

126#define GCM_PLAINTEXT_512 \
127 PLAINTEXT ( 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, \
128 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, \
129 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, \
130 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, \
131 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, \
132 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, \
133 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, \
134 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 )

Referenced by CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

◆ GCM_PLAINTEXT_480

#define GCM_PLAINTEXT_480
Value:
PLAINTEXT ( 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, \
0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, \
0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, \
0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, \
0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, \
0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, \
0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, \
0xba, 0x63, 0x7b, 0x39 )

480-bit plaintext

Definition at line 137 of file gcm_test.c.

137#define GCM_PLAINTEXT_480 \
138 PLAINTEXT ( 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, \
139 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, \
140 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, \
141 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, \
142 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, \
143 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, \
144 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, \
145 0xba, 0x63, 0x7b, 0x39 )

Referenced by CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), CIPHER_TEST(), and CIPHER_TEST().

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ CIPHER_TEST() [1/18]

CIPHER_TEST ( gcm_test_1 ,
& aes_gcm_algorithm,
GCM_KEY_128_ZERO ,
GCM_IV_96_ZERO ,
GCM_ADDITIONAL_EMPTY ,
GCM_PLAINTEXT_EMPTY ,
CIPHERTEXT() ,
AUTH(0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61, 0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a)  )

◆ CIPHER_TEST() [2/18]

CIPHER_TEST ( gcm_test_2 ,
& aes_gcm_algorithm,
GCM_KEY_128_ZERO ,
GCM_IV_96_ZERO ,
GCM_ADDITIONAL_EMPTY ,
GCM_PLAINTEXT_128_ZERO ,
CIPHERTEXT(0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92, 0xf3, 0x28, 0xc2, 0xb9, 0x71, 0xb2, 0xfe, 0x78) ,
AUTH(0xab, 0x6e, 0x47, 0xd4, 0x2c, 0xec, 0x13, 0xbd, 0xf5, 0x3a, 0x67, 0xb2, 0x12, 0x57, 0xbd, 0xdf)  )

◆ CIPHER_TEST() [3/18]

CIPHER_TEST ( gcm_test_3 ,
& aes_gcm_algorithm,
GCM_KEY_128 ,
GCM_IV_96 ,
GCM_ADDITIONAL_EMPTY ,
GCM_PLAINTEXT_512 ,
CIPHERTEXT(0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85) ,
AUTH(0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6, 0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4)  )

◆ CIPHER_TEST() [4/18]

CIPHER_TEST ( gcm_test_4 ,
& aes_gcm_algorithm,
GCM_KEY_128 ,
GCM_IV_96 ,
GCM_ADDITIONAL_160 ,
GCM_PLAINTEXT_480 ,
CIPHERTEXT(0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 0x3d, 0x58, 0xe0, 0x91) ,
AUTH(0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb, 0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47)  )

◆ CIPHER_TEST() [5/18]

CIPHER_TEST ( gcm_test_5 ,
& aes_gcm_algorithm,
GCM_KEY_128 ,
GCM_IV_64 ,
GCM_ADDITIONAL_160 ,
GCM_PLAINTEXT_480 ,
CIPHERTEXT(0x61, 0x35, 0x3b, 0x4c, 0x28, 0x06, 0x93, 0x4a, 0x77, 0x7f, 0xf5, 0x1f, 0xa2, 0x2a, 0x47, 0x55, 0x69, 0x9b, 0x2a, 0x71, 0x4f, 0xcd, 0xc6, 0xf8, 0x37, 0x66, 0xe5, 0xf9, 0x7b, 0x6c, 0x74, 0x23, 0x73, 0x80, 0x69, 0x00, 0xe4, 0x9f, 0x24, 0xb2, 0x2b, 0x09, 0x75, 0x44, 0xd4, 0x89, 0x6b, 0x42, 0x49, 0x89, 0xb5, 0xe1, 0xeb, 0xac, 0x0f, 0x07, 0xc2, 0x3f, 0x45, 0x98) ,
AUTH(0x36, 0x12, 0xd2, 0xe7, 0x9e, 0x3b, 0x07, 0x85, 0x56, 0x1b, 0xe1, 0x4a, 0xac, 0xa2, 0xfc, 0xcb)  )

◆ CIPHER_TEST() [6/18]

CIPHER_TEST ( gcm_test_6 ,
& aes_gcm_algorithm,
GCM_KEY_128 ,
GCM_IV_480 ,
GCM_ADDITIONAL_160 ,
GCM_PLAINTEXT_480 ,
CIPHERTEXT(0x8c, 0xe2, 0x49, 0x98, 0x62, 0x56, 0x15, 0xb6, 0x03, 0xa0, 0x33, 0xac, 0xa1, 0x3f, 0xb8, 0x94, 0xbe, 0x91, 0x12, 0xa5, 0xc3, 0xa2, 0x11, 0xa8, 0xba, 0x26, 0x2a, 0x3c, 0xca, 0x7e, 0x2c, 0xa7, 0x01, 0xe4, 0xa9, 0xa4, 0xfb, 0xa4, 0x3c, 0x90, 0xcc, 0xdc, 0xb2, 0x81, 0xd4, 0x8c, 0x7c, 0x6f, 0xd6, 0x28, 0x75, 0xd2, 0xac, 0xa4, 0x17, 0x03, 0x4c, 0x34, 0xae, 0xe5) ,
AUTH(0x61, 0x9c, 0xc5, 0xae, 0xff, 0xfe, 0x0b, 0xfa, 0x46, 0x2a, 0xf4, 0x3c, 0x16, 0x99, 0xd0, 0x50)  )

◆ CIPHER_TEST() [7/18]

CIPHER_TEST ( gcm_test_7 ,
& aes_gcm_algorithm,
GCM_KEY_192_ZERO ,
GCM_IV_96_ZERO ,
GCM_ADDITIONAL_EMPTY ,
GCM_PLAINTEXT_EMPTY ,
CIPHERTEXT() ,
AUTH(0xcd, 0x33, 0xb2, 0x8a, 0xc7, 0x73, 0xf7, 0x4b, 0xa0, 0x0e, 0xd1, 0xf3, 0x12, 0x57, 0x24, 0x35)  )

◆ CIPHER_TEST() [8/18]

CIPHER_TEST ( gcm_test_8 ,
& aes_gcm_algorithm,
GCM_KEY_192_ZERO ,
GCM_IV_96_ZERO ,
GCM_ADDITIONAL_EMPTY ,
GCM_PLAINTEXT_128_ZERO ,
CIPHERTEXT(0x98, 0xe7, 0x24, 0x7c, 0x07, 0xf0, 0xfe, 0x41, 0x1c, 0x26, 0x7e, 0x43, 0x84, 0xb0, 0xf6, 0x00) ,
AUTH(0x2f, 0xf5, 0x8d, 0x80, 0x03, 0x39, 0x27, 0xab, 0x8e, 0xf4, 0xd4, 0x58, 0x75, 0x14, 0xf0, 0xfb)  )

◆ CIPHER_TEST() [9/18]

CIPHER_TEST ( gcm_test_9 ,
& aes_gcm_algorithm,
GCM_KEY_192 ,
GCM_IV_96 ,
GCM_ADDITIONAL_EMPTY ,
GCM_PLAINTEXT_512 ,
CIPHERTEXT(0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41, 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57, 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84, 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c, 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25, 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47, 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9, 0xcc, 0xda, 0x27, 0x10, 0xac, 0xad, 0xe2, 0x56) ,
AUTH(0x99, 0x24, 0xa7, 0xc8, 0x58, 0x73, 0x36, 0xbf, 0xb1, 0x18, 0x02, 0x4d, 0xb8, 0x67, 0x4a, 0x14)  )

◆ CIPHER_TEST() [10/18]

CIPHER_TEST ( gcm_test_10 ,
& aes_gcm_algorithm,
GCM_KEY_192 ,
GCM_IV_96 ,
GCM_ADDITIONAL_160 ,
GCM_PLAINTEXT_480 ,
CIPHERTEXT(0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41, 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57, 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84, 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c, 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25, 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47, 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9, 0xcc, 0xda, 0x27, 0x10) ,
AUTH(0x25, 0x19, 0x49, 0x8e, 0x80, 0xf1, 0x47, 0x8f, 0x37, 0xba, 0x55, 0xbd, 0x6d, 0x27, 0x61, 0x8c)  )

◆ CIPHER_TEST() [11/18]

CIPHER_TEST ( gcm_test_11 ,
& aes_gcm_algorithm,
GCM_KEY_192 ,
GCM_IV_64 ,
GCM_ADDITIONAL_160 ,
GCM_PLAINTEXT_480 ,
CIPHERTEXT(0x0f, 0x10, 0xf5, 0x99, 0xae, 0x14, 0xa1, 0x54, 0xed, 0x24, 0xb3, 0x6e, 0x25, 0x32, 0x4d, 0xb8, 0xc5, 0x66, 0x63, 0x2e, 0xf2, 0xbb, 0xb3, 0x4f, 0x83, 0x47, 0x28, 0x0f, 0xc4, 0x50, 0x70, 0x57, 0xfd, 0xdc, 0x29, 0xdf, 0x9a, 0x47, 0x1f, 0x75, 0xc6, 0x65, 0x41, 0xd4, 0xd4, 0xda, 0xd1, 0xc9, 0xe9, 0x3a, 0x19, 0xa5, 0x8e, 0x8b, 0x47, 0x3f, 0xa0, 0xf0, 0x62, 0xf7) ,
AUTH(0x65, 0xdc, 0xc5, 0x7f, 0xcf, 0x62, 0x3a, 0x24, 0x09, 0x4f, 0xcc, 0xa4, 0x0d, 0x35, 0x33, 0xf8)  )

◆ CIPHER_TEST() [12/18]

CIPHER_TEST ( gcm_test_12 ,
& aes_gcm_algorithm,
GCM_KEY_192 ,
GCM_IV_480 ,
GCM_ADDITIONAL_160 ,
GCM_PLAINTEXT_480 ,
CIPHERTEXT(0xd2, 0x7e, 0x88, 0x68, 0x1c, 0xe3, 0x24, 0x3c, 0x48, 0x30, 0x16, 0x5a, 0x8f, 0xdc, 0xf9, 0xff, 0x1d, 0xe9, 0xa1, 0xd8, 0xe6, 0xb4, 0x47, 0xef, 0x6e, 0xf7, 0xb7, 0x98, 0x28, 0x66, 0x6e, 0x45, 0x81, 0xe7, 0x90, 0x12, 0xaf, 0x34, 0xdd, 0xd9, 0xe2, 0xf0, 0x37, 0x58, 0x9b, 0x29, 0x2d, 0xb3, 0xe6, 0x7c, 0x03, 0x67, 0x45, 0xfa, 0x22, 0xe7, 0xe9, 0xb7, 0x37, 0x3b) ,
AUTH(0xdc, 0xf5, 0x66, 0xff, 0x29, 0x1c, 0x25, 0xbb, 0xb8, 0x56, 0x8f, 0xc3, 0xd3, 0x76, 0xa6, 0xd9)  )

◆ CIPHER_TEST() [13/18]

CIPHER_TEST ( gcm_test_13 ,
& aes_gcm_algorithm,
GCM_KEY_256_ZERO ,
GCM_IV_96_ZERO ,
GCM_ADDITIONAL_EMPTY ,
GCM_PLAINTEXT_EMPTY ,
CIPHERTEXT() ,
AUTH(0x53, 0x0f, 0x8a, 0xfb, 0xc7, 0x45, 0x36, 0xb9, 0xa9, 0x63, 0xb4, 0xf1, 0xc4, 0xcb, 0x73, 0x8b)  )

◆ CIPHER_TEST() [14/18]

CIPHER_TEST ( gcm_test_14 ,
& aes_gcm_algorithm,
GCM_KEY_256_ZERO ,
GCM_IV_96_ZERO ,
GCM_ADDITIONAL_EMPTY ,
GCM_PLAINTEXT_128_ZERO ,
CIPHERTEXT(0xce, 0xa7, 0x40, 0x3d, 0x4d, 0x60, 0x6b, 0x6e, 0x07, 0x4e, 0xc5, 0xd3, 0xba, 0xf3, 0x9d, 0x18) ,
AUTH(0xd0, 0xd1, 0xc8, 0xa7, 0x99, 0x99, 0x6b, 0xf0, 0x26, 0x5b, 0x98, 0xb5, 0xd4, 0x8a, 0xb9, 0x19)  )

◆ CIPHER_TEST() [15/18]

CIPHER_TEST ( gcm_test_15 ,
& aes_gcm_algorithm,
GCM_KEY_256 ,
GCM_IV_96 ,
GCM_ADDITIONAL_EMPTY ,
GCM_PLAINTEXT_512 ,
CIPHERTEXT(0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07, 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d, 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9, 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa, 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d, 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38, 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a, 0xbc, 0xc9, 0xf6, 0x62, 0x89, 0x80, 0x15, 0xad) ,
AUTH(0xb0, 0x94, 0xda, 0xc5, 0xd9, 0x34, 0x71, 0xbd, 0xec, 0x1a, 0x50, 0x22, 0x70, 0xe3, 0xcc, 0x6c)  )

◆ CIPHER_TEST() [16/18]

CIPHER_TEST ( gcm_test_16 ,
& aes_gcm_algorithm,
GCM_KEY_256 ,
GCM_IV_96 ,
GCM_ADDITIONAL_160 ,
GCM_PLAINTEXT_480 ,
CIPHERTEXT(0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07, 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d, 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9, 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa, 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d, 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38, 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a, 0xbc, 0xc9, 0xf6, 0x62) ,
AUTH(0x76, 0xfc, 0x6e, 0xce, 0x0f, 0x4e, 0x17, 0x68, 0xcd, 0xdf, 0x88, 0x53, 0xbb, 0x2d, 0x55, 0x1b)  )

◆ CIPHER_TEST() [17/18]

CIPHER_TEST ( gcm_test_17 ,
& aes_gcm_algorithm,
GCM_KEY_256 ,
GCM_IV_64 ,
GCM_ADDITIONAL_160 ,
GCM_PLAINTEXT_480 ,
CIPHERTEXT(0xc3, 0x76, 0x2d, 0xf1, 0xca, 0x78, 0x7d, 0x32, 0xae, 0x47, 0xc1, 0x3b, 0xf1, 0x98, 0x44, 0xcb, 0xaf, 0x1a, 0xe1, 0x4d, 0x0b, 0x97, 0x6a, 0xfa, 0xc5, 0x2f, 0xf7, 0xd7, 0x9b, 0xba, 0x9d, 0xe0, 0xfe, 0xb5, 0x82, 0xd3, 0x39, 0x34, 0xa4, 0xf0, 0x95, 0x4c, 0xc2, 0x36, 0x3b, 0xc7, 0x3f, 0x78, 0x62, 0xac, 0x43, 0x0e, 0x64, 0xab, 0xe4, 0x99, 0xf4, 0x7c, 0x9b, 0x1f) ,
AUTH(0x3a, 0x33, 0x7d, 0xbf, 0x46, 0xa7, 0x92, 0xc4, 0x5e, 0x45, 0x49, 0x13, 0xfe, 0x2e, 0xa8, 0xf2)  )

◆ CIPHER_TEST() [18/18]

CIPHER_TEST ( gcm_test_18 ,
& aes_gcm_algorithm,
GCM_KEY_256 ,
GCM_IV_480 ,
GCM_ADDITIONAL_160 ,
GCM_PLAINTEXT_480 ,
CIPHERTEXT(0x5a, 0x8d, 0xef, 0x2f, 0x0c, 0x9e, 0x53, 0xf1, 0xf7, 0x5d, 0x78, 0x53, 0x65, 0x9e, 0x2a, 0x20, 0xee, 0xb2, 0xb2, 0x2a, 0xaf, 0xde, 0x64, 0x19, 0xa0, 0x58, 0xab, 0x4f, 0x6f, 0x74, 0x6b, 0xf4, 0x0f, 0xc0, 0xc3, 0xb7, 0x80, 0xf2, 0x44, 0x45, 0x2d, 0xa3, 0xeb, 0xf1, 0xc5, 0xd8, 0x2c, 0xde, 0xa2, 0x41, 0x89, 0x97, 0x20, 0x0e, 0xf8, 0x2e, 0x44, 0xae, 0x7e, 0x3f) ,
AUTH(0xa4, 0x4a, 0x82, 0x66, 0xee, 0x1c, 0x8e, 0xb0, 0xc8, 0xb5, 0xd4, 0xcf, 0x5a, 0xe9, 0xf1, 0x9a)  )

◆ gcm_test_exec()

void gcm_test_exec ( void )
static

Perform Galois/Counter Mode self-test.

Definition at line 364 of file gcm_test.c.

364 {
365 struct cipher_algorithm *gcm = &aes_gcm_algorithm;
366 unsigned int keylen;
367
368 /* Correctness tests */
369 cipher_ok ( &gcm_test_1 );
370 cipher_ok ( &gcm_test_2 );
371 cipher_ok ( &gcm_test_3 );
372 cipher_ok ( &gcm_test_4 );
373 cipher_ok ( &gcm_test_5 );
374 cipher_ok ( &gcm_test_6 );
375 cipher_ok ( &gcm_test_7 );
376 cipher_ok ( &gcm_test_8 );
377 cipher_ok ( &gcm_test_9 );
378 cipher_ok ( &gcm_test_10 );
379 cipher_ok ( &gcm_test_11 );
380 cipher_ok ( &gcm_test_12 );
381 cipher_ok ( &gcm_test_13 );
382 cipher_ok ( &gcm_test_14 );
383 cipher_ok ( &gcm_test_15 );
384 cipher_ok ( &gcm_test_16 );
385 cipher_ok ( &gcm_test_17 );
386 cipher_ok ( &gcm_test_18 );
387
388 /* Speed tests */
389 for ( keylen = 128 ; keylen <= 256 ; keylen += 64 ) {
390 DBG ( "AES-%d-GCM encryption required %ld cycles per byte\n",
391 keylen, cipher_cost_encrypt ( gcm, ( keylen / 8 ) ) );
392 DBG ( "AES-%d-GCM decryption required %ld cycles per byte\n",
393 keylen, cipher_cost_decrypt ( gcm, ( keylen / 8 ) ) );
394 }
395}
struct cipher_algorithm aes_gcm_algorithm
unsigned long cipher_cost_decrypt(struct cipher_algorithm *cipher, size_t key_len)
Calculate cipher decryption cost.
unsigned long cipher_cost_encrypt(struct cipher_algorithm *cipher, size_t key_len)
Calculate cipher encryption cost.
#define cipher_ok(test)
Report a cipher encryption and decryption test result.
#define DBG(...)
Print a debugging message.
Definition compiler.h:498
A cipher algorithm.
Definition crypto.h:51

References aes_gcm_algorithm, cipher_cost_decrypt(), cipher_cost_encrypt(), cipher_ok, and DBG.

Variable Documentation

◆ __self_test

struct self_test gcm_test __self_test
Initial value:
= {
.name = "gcm",
.exec = gcm_test_exec,
}
static void gcm_test_exec(void)
Perform Galois/Counter Mode self-test.
Definition gcm_test.c:364

Galois/Counter Mode self-test.

Definition at line 398 of file gcm_test.c.

398 {
399 .name = "gcm",
400 .exec = gcm_test_exec,
401};