2 * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
10 typedef struct st_kat_st {
12 const char *algorithm;
13 const unsigned char *pt;
15 const unsigned char *expected;
19 typedef ST_KAT ST_KAT_DIGEST;
20 typedef struct st_kat_cipher_st {
22 const unsigned char *key;
24 const unsigned char *iv;
26 const unsigned char *aad;
28 const unsigned char *tag;
32 typedef struct st_kat_nvp_st {
37 typedef struct st_kat_kdf_st {
39 const char *algorithm;
40 const ST_KAT_NVP *ctrls;
41 const unsigned char *expected;
45 /* Macros to build Self test data */
46 #define ITM(x) x, sizeof(x)
47 #define ITM_STR(x) x, sizeof(x) - 1
49 /*- DIGEST TEST DATA */
50 static const unsigned char sha1_pt[] = "abc";
51 static const unsigned char sha1_digest[] = {
52 0xA9, 0x99, 0x3E, 0x36, 0x47, 0x06, 0x81, 0x6A, 0xBA, 0x3E, 0x25, 0x71,
53 0x78, 0x50, 0xC2, 0x6C, 0x9C, 0xD0, 0xD8, 0x9D
56 static const unsigned char sha512_pt[] = "abc";
57 static const unsigned char sha512_digest[] = {
58 0xDD, 0xAF, 0x35, 0xA1, 0x93, 0x61, 0x7A, 0xBA, 0xCC, 0x41, 0x73, 0x49,
59 0xAE, 0x20, 0x41, 0x31, 0x12, 0xE6, 0xFA, 0x4E, 0x89, 0xA9, 0x7E, 0xA2,
60 0x0A, 0x9E, 0xEE, 0xE6, 0x4B, 0x55, 0xD3, 0x9A, 0x21, 0x92, 0x99, 0x2A,
61 0x27, 0x4F, 0xC1, 0xA8, 0x36, 0xBA, 0x3C, 0x23, 0xA3, 0xFE, 0xEB, 0xBD,
62 0x45, 0x4D, 0x44, 0x23, 0x64, 0x3C, 0xE8, 0x0E, 0x2A, 0x9A, 0xC9, 0x4F,
63 0xA5, 0x4C, 0xA4, 0x9F
65 static const unsigned char sha3_256_pt[] = { 0xe7, 0x37, 0x21, 0x05 };
66 static const unsigned char sha3_256_digest[] = {
67 0x3a, 0x42, 0xb6, 0x8a, 0xb0, 0x79, 0xf2, 0x8c, 0x4c, 0xa3, 0xc7, 0x52,
68 0x29, 0x6f, 0x27, 0x90, 0x06, 0xc4, 0xfe, 0x78, 0xb1, 0xeb, 0x79, 0xd9,
69 0x89, 0x77, 0x7f, 0x05, 0x1e, 0x40, 0x46, 0xae
72 static const ST_KAT_DIGEST st_kat_digest_tests[] =
75 OSSL_SELF_TEST_DESC_MD_SHA1,
81 OSSL_SELF_TEST_DESC_MD_SHA2,
87 OSSL_SELF_TEST_DESC_MD_SHA3,
95 /*- CIPHER TEST DATA */
98 static const unsigned char des_ede3_cbc_pt[] = {
99 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, 0xE9, 0x3D, 0x7E, 0x11,
100 0x73, 0x93, 0x17, 0x2A, 0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C,
101 0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51
104 static const unsigned char des_ede3_cbc_key[] = {
105 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
106 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0x01,
107 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0x01, 0x23
109 static const unsigned char des_ede3_cbc_iv[] = {
110 0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17
112 static const unsigned char des_ede3_cbc_ct[] = {
113 0x20, 0x79, 0xC3, 0xD5, 0x3A, 0xA7, 0x63, 0xE1, 0x93, 0xB7, 0x9E, 0x25,
114 0x69, 0xAB, 0x52, 0x62, 0x51, 0x65, 0x70, 0x48, 0x1F, 0x25, 0xB5, 0x0F,
115 0x73, 0xC0, 0xBD, 0xA8, 0x5C, 0x8E, 0x0D, 0xA7
118 static const unsigned char aes_256_gcm_key[] = {
119 0x92,0xe1,0x1d,0xcd,0xaa,0x86,0x6f,0x5c,0xe7,0x90,0xfd,0x24,
120 0x50,0x1f,0x92,0x50,0x9a,0xac,0xf4,0xcb,0x8b,0x13,0x39,0xd5,
121 0x0c,0x9c,0x12,0x40,0x93,0x5d,0xd0,0x8b
123 static const unsigned char aes_256_gcm_iv[] = {
124 0xac,0x93,0xa1,0xa6,0x14,0x52,0x99,0xbd,0xe9,0x02,0xf2,0x1a
126 static const unsigned char aes_256_gcm_pt[] = {
127 0x2d,0x71,0xbc,0xfa,0x91,0x4e,0x4a,0xc0,0x45,0xb2,0xaa,0x60,
130 static const unsigned char aes_256_gcm_aad[] = {
131 0x1e,0x08,0x89,0x01,0x6f,0x67,0x60,0x1c,0x8e,0xbe,0xa4,0x94,
134 static const unsigned char aes_256_gcm_ct[] = {
135 0x89,0x95,0xae,0x2e,0x6d,0xf3,0xdb,0xf9,0x6f,0xac,0x7b,0x71,
138 static const unsigned char aes_256_gcm_tag[] = {
139 0xec,0xa5,0xaa,0x77,0xd5,0x1d,0x4a,0x0a,0x14,0xd9,0xc5,0x1e,
143 static const ST_KAT_CIPHER st_kat_cipher_tests[] = {
146 OSSL_SELF_TEST_DESC_CIPHER_TDES,
148 ITM(des_ede3_cbc_pt),
151 ITM(des_ede3_cbc_key),
152 ITM(des_ede3_cbc_iv),
156 OSSL_SELF_TEST_DESC_CIPHER_AES_GCM,
161 ITM(aes_256_gcm_key),
163 ITM(aes_256_gcm_aad),
170 static const ST_KAT_NVP hkdf_ctrl[] =
172 { "digest", "SHA256" },
178 static const unsigned char hkdf_expected[] = {
179 0x2a, 0xc4, 0x36, 0x9f, 0x52, 0x59, 0x96, 0xf8, 0xde, 0x13
182 static const ST_KAT_KDF st_kat_kdf_tests[] =
185 OSSL_SELF_TEST_DESC_KDF_HKDF,