]> git.ipfire.org Git - thirdparty/openssl.git/blob - providers/fips/self_test_data.inc
Update copyright year
[thirdparty/openssl.git] / providers / fips / self_test_data.inc
1 /*
2 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License 2.0 (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
8 */
9
10 /* Macros to build Self test data */
11 #define ITM(x) ((void *)&x), sizeof(x)
12 #define ITM_STR(x) ((void *)&x), (sizeof(x) - 1)
13
14 #define ST_KAT_PARAM_END() { "", 0, NULL, 0 }
15 #define ST_KAT_PARAM_BIGNUM(name, data) \
16 { name, OSSL_PARAM_UNSIGNED_INTEGER, ITM(data) }
17 #define ST_KAT_PARAM_OCTET(name, data) \
18 { name, OSSL_PARAM_OCTET_STRING, ITM(data) }
19 #define ST_KAT_PARAM_UTF8STRING(name, data) \
20 { name, OSSL_PARAM_UTF8_STRING, ITM_STR(data) }
21 #define ST_KAT_PARAM_UTF8CHAR(name, data) \
22 { name, OSSL_PARAM_UTF8_STRING, ITM(data) }
23 #define ST_KAT_PARAM_INT(name, i) \
24 { name, OSSL_PARAM_INTEGER, ITM(i) }
25
26 /* used to store raw parameters for keys and algorithms */
27 typedef struct st_kat_param_st {
28 const char *name; /* an OSSL_PARAM name */
29 size_t type; /* the type associated with the data */
30 const void *data; /* unsigned char [], or char [] depending on the type */
31 size_t data_len; /* the length of the data */
32 } ST_KAT_PARAM;
33
34 typedef struct st_kat_st {
35 const char *desc;
36 const char *algorithm;
37 const unsigned char *pt;
38 size_t pt_len;
39 const unsigned char *expected;
40 size_t expected_len;
41 } ST_KAT;
42
43 #define CIPHER_MODE_ENCRYPT 1
44 #define CIPHER_MODE_DECRYPT 2
45 #define CIPHER_MODE_ALL (CIPHER_MODE_ENCRYPT | CIPHER_MODE_DECRYPT)
46
47 typedef ST_KAT ST_KAT_DIGEST;
48 typedef struct st_kat_cipher_st {
49 ST_KAT base;
50 int mode;
51 const unsigned char *key;
52 size_t key_len;
53 const unsigned char *iv;
54 size_t iv_len;
55 const unsigned char *aad;
56 size_t aad_len;
57 const unsigned char *tag;
58 size_t tag_len;
59 } ST_KAT_CIPHER;
60
61 typedef struct st_kat_kdf_st {
62 const char *desc;
63 const char *algorithm;
64 const ST_KAT_PARAM *params;
65 const unsigned char *expected;
66 size_t expected_len;
67 } ST_KAT_KDF;
68
69 typedef struct st_kat_drbg_st {
70 const char *desc;
71 const char *algorithm;
72 const char *param_name;
73 char *param_value;
74 const unsigned char *entropyin;
75 size_t entropyinlen;
76 const unsigned char *nonce;
77 size_t noncelen;
78 const unsigned char *persstr;
79 size_t persstrlen;
80 const unsigned char *entropyinpr1;
81 size_t entropyinpr1len;
82 const unsigned char *entropyinpr2;
83 size_t entropyinpr2len;
84 const unsigned char *entropyaddin1;
85 size_t entropyaddin1len;
86 const unsigned char *entropyaddin2;
87 size_t entropyaddin2len;
88 const unsigned char *expected;
89 size_t expectedlen;
90 } ST_KAT_DRBG;
91
92 typedef struct st_kat_kas_st {
93 const char *desc;
94 const char *algorithm;
95
96 const ST_KAT_PARAM *key_group;
97 const ST_KAT_PARAM *key_host_data;
98 const ST_KAT_PARAM *key_peer_data;
99
100 const unsigned char *expected;
101 size_t expected_len;
102 } ST_KAT_KAS;
103
104 typedef struct st_kat_sign_st {
105 const char *desc;
106 const char *algorithm;
107 const char *mdalgorithm;
108 const ST_KAT_PARAM *key;
109 const unsigned char *sig_expected; /* Set to NULL if this value changes */
110 size_t sig_expected_len;
111 } ST_KAT_SIGN;
112
113 typedef struct st_kat_asym_cipher_st {
114 const char *desc;
115 const char *algorithm;
116 int encrypt;
117 const ST_KAT_PARAM *key;
118 const ST_KAT_PARAM *postinit;
119 const unsigned char *in;
120 size_t in_len;
121 const unsigned char *expected;
122 size_t expected_len;
123 } ST_KAT_ASYM_CIPHER;
124
125 /*- DIGEST TEST DATA */
126 static const unsigned char sha1_pt[] = "abc";
127 static const unsigned char sha1_digest[] = {
128 0xA9, 0x99, 0x3E, 0x36, 0x47, 0x06, 0x81, 0x6A, 0xBA, 0x3E, 0x25, 0x71,
129 0x78, 0x50, 0xC2, 0x6C, 0x9C, 0xD0, 0xD8, 0x9D
130 };
131
132 static const unsigned char sha512_pt[] = "abc";
133 static const unsigned char sha512_digest[] = {
134 0xDD, 0xAF, 0x35, 0xA1, 0x93, 0x61, 0x7A, 0xBA, 0xCC, 0x41, 0x73, 0x49,
135 0xAE, 0x20, 0x41, 0x31, 0x12, 0xE6, 0xFA, 0x4E, 0x89, 0xA9, 0x7E, 0xA2,
136 0x0A, 0x9E, 0xEE, 0xE6, 0x4B, 0x55, 0xD3, 0x9A, 0x21, 0x92, 0x99, 0x2A,
137 0x27, 0x4F, 0xC1, 0xA8, 0x36, 0xBA, 0x3C, 0x23, 0xA3, 0xFE, 0xEB, 0xBD,
138 0x45, 0x4D, 0x44, 0x23, 0x64, 0x3C, 0xE8, 0x0E, 0x2A, 0x9A, 0xC9, 0x4F,
139 0xA5, 0x4C, 0xA4, 0x9F
140 };
141 static const unsigned char sha3_256_pt[] = { 0xe7, 0x37, 0x21, 0x05 };
142 static const unsigned char sha3_256_digest[] = {
143 0x3a, 0x42, 0xb6, 0x8a, 0xb0, 0x79, 0xf2, 0x8c, 0x4c, 0xa3, 0xc7, 0x52,
144 0x29, 0x6f, 0x27, 0x90, 0x06, 0xc4, 0xfe, 0x78, 0xb1, 0xeb, 0x79, 0xd9,
145 0x89, 0x77, 0x7f, 0x05, 0x1e, 0x40, 0x46, 0xae
146 };
147
148 static const ST_KAT_DIGEST st_kat_digest_tests[] =
149 {
150 {
151 OSSL_SELF_TEST_DESC_MD_SHA1,
152 "SHA1",
153 ITM_STR(sha1_pt),
154 ITM(sha1_digest),
155 },
156 {
157 OSSL_SELF_TEST_DESC_MD_SHA2,
158 "SHA512",
159 ITM_STR(sha512_pt),
160 ITM(sha512_digest),
161 },
162 {
163 OSSL_SELF_TEST_DESC_MD_SHA3,
164 "SHA3-256",
165 ITM(sha3_256_pt),
166 ITM(sha3_256_digest),
167 },
168 };
169
170
171 /*- CIPHER TEST DATA */
172
173 /* DES3 test data */
174 static const unsigned char des_ede3_cbc_pt[] = {
175 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96,
176 0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A,
177 0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C,
178 0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51
179 };
180 static const unsigned char des_ede3_cbc_key[] = {
181 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
182 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0x01,
183 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0x01, 0x23
184 };
185 static const unsigned char des_ede3_cbc_iv[] = {
186 0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17
187 };
188 static const unsigned char des_ede3_cbc_ct[] = {
189 0x20, 0x79, 0xC3, 0xD5, 0x3A, 0xA7, 0x63, 0xE1,
190 0x93, 0xB7, 0x9E, 0x25, 0x69, 0xAB, 0x52, 0x62,
191 0x51, 0x65, 0x70, 0x48, 0x1F, 0x25, 0xB5, 0x0F,
192 0x73, 0xC0, 0xBD, 0xA8, 0x5C, 0x8E, 0x0D, 0xA7
193 };
194
195 /* AES-256 GCM test data */
196 static const unsigned char aes_256_gcm_key[] = {
197 0x92, 0xe1, 0x1d, 0xcd, 0xaa, 0x86, 0x6f, 0x5c,
198 0xe7, 0x90, 0xfd, 0x24, 0x50, 0x1f, 0x92, 0x50,
199 0x9a, 0xac, 0xf4, 0xcb, 0x8b, 0x13, 0x39, 0xd5,
200 0x0c, 0x9c, 0x12, 0x40, 0x93, 0x5d, 0xd0, 0x8b
201 };
202 static const unsigned char aes_256_gcm_iv[] = {
203 0xac, 0x93, 0xa1, 0xa6, 0x14, 0x52, 0x99, 0xbd,
204 0xe9, 0x02, 0xf2, 0x1a
205 };
206 static const unsigned char aes_256_gcm_pt[] = {
207 0x2d, 0x71, 0xbc, 0xfa, 0x91, 0x4e, 0x4a, 0xc0,
208 0x45, 0xb2, 0xaa, 0x60, 0x95, 0x5f, 0xad, 0x24
209 };
210 static const unsigned char aes_256_gcm_aad[] = {
211 0x1e, 0x08, 0x89, 0x01, 0x6f, 0x67, 0x60, 0x1c,
212 0x8e, 0xbe, 0xa4, 0x94, 0x3b, 0xc2, 0x3a, 0xd6
213 };
214 static const unsigned char aes_256_gcm_ct[] = {
215 0x89, 0x95, 0xae, 0x2e, 0x6d, 0xf3, 0xdb, 0xf9,
216 0x6f, 0xac, 0x7b, 0x71, 0x37, 0xba, 0xe6, 0x7f
217 };
218 static const unsigned char aes_256_gcm_tag[] = {
219 0xec, 0xa5, 0xaa, 0x77, 0xd5, 0x1d, 0x4a, 0x0a,
220 0x14, 0xd9, 0xc5, 0x1e, 0x1d, 0xa4, 0x74, 0xab
221 };
222
223 /* AES-ECB test data */
224 static const unsigned char aes_128_ecb_key[] = {
225 0x10, 0xa5, 0x88, 0x69, 0xd7, 0x4b, 0xe5, 0xa3,
226 0x74, 0xcf, 0x86, 0x7c, 0xfb, 0x47, 0x38, 0x59
227 };
228 static const unsigned char aes_128_ecb_pt[] = {
229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
231 };
232 static const unsigned char aes_128_ecb_ct[] = {
233 0x6d, 0x25, 0x1e, 0x69, 0x44, 0xb0, 0x51, 0xe0,
234 0x4e, 0xaa, 0x6f, 0xb4, 0xdb, 0xf7, 0x84, 0x65
235 };
236
237 static const ST_KAT_CIPHER st_kat_cipher_tests[] = {
238 #ifndef OPENSSL_NO_DES
239 {
240 {
241 OSSL_SELF_TEST_DESC_CIPHER_TDES,
242 "DES-EDE3-CBC",
243 ITM(des_ede3_cbc_pt),
244 ITM(des_ede3_cbc_ct)
245 },
246 CIPHER_MODE_ENCRYPT | CIPHER_MODE_DECRYPT,
247 ITM(des_ede3_cbc_key),
248 ITM(des_ede3_cbc_iv),
249 },
250 #endif
251 {
252 {
253 OSSL_SELF_TEST_DESC_CIPHER_AES_GCM,
254 "AES-256-GCM",
255 ITM(aes_256_gcm_pt),
256 ITM(aes_256_gcm_ct)
257 },
258 CIPHER_MODE_ENCRYPT | CIPHER_MODE_DECRYPT,
259 ITM(aes_256_gcm_key),
260 ITM(aes_256_gcm_iv),
261 ITM(aes_256_gcm_aad),
262 ITM(aes_256_gcm_tag)
263 },
264 {
265 {
266 OSSL_SELF_TEST_DESC_CIPHER_AES_ECB,
267 "AES-128-ECB",
268 ITM(aes_128_ecb_pt),
269 ITM(aes_128_ecb_ct)
270 },
271 CIPHER_MODE_DECRYPT,
272 ITM(aes_128_ecb_key)
273 }
274 };
275
276 static const char hkdf_digest[] = "SHA256";
277 static const unsigned char hkdf_secret[] = { 's', 'e', 'c', 'r', 'e', 't' };
278 static const unsigned char hkdf_salt[] = { 's', 'a', 'l', 't' };
279 static const unsigned char hkdf_info[] = { 'l', 'a', 'b', 'e', 'l' };
280
281 static const ST_KAT_PARAM hkdf_params[] = {
282 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, hkdf_digest),
283 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, hkdf_secret),
284 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SALT, hkdf_salt),
285 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, hkdf_info),
286 ST_KAT_PARAM_END()
287 };
288 static const unsigned char hkdf_expected[] = {
289 0x2a, 0xc4, 0x36, 0x9f, 0x52, 0x59, 0x96, 0xf8,
290 0xde, 0x13
291 };
292
293 static const char sskdf_digest[] = "SHA224";
294 static const unsigned char sskdf_secret[] = {
295 0x6d, 0xbd, 0xc2, 0x3f, 0x04, 0x54, 0x88, 0xe4,
296 0x06, 0x27, 0x57, 0xb0, 0x6b, 0x9e, 0xba, 0xe1,
297 0x83, 0xfc, 0x5a, 0x59, 0x46, 0xd8, 0x0d, 0xb9,
298 0x3f, 0xec, 0x6f, 0x62, 0xec, 0x07, 0xe3, 0x72,
299 0x7f, 0x01, 0x26, 0xae, 0xd1, 0x2c, 0xe4, 0xb2,
300 0x62, 0xf4, 0x7d, 0x48, 0xd5, 0x42, 0x87, 0xf8,
301 0x1d, 0x47, 0x4c, 0x7c, 0x3b, 0x18, 0x50, 0xe9
302 };
303 static const unsigned char sskdf_otherinfo[] = {
304 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0x43, 0x41, 0x56,
305 0x53, 0x69, 0x64, 0x3c, 0x83, 0x2e, 0x98, 0x49,
306 0xdc, 0xdb, 0xa7, 0x1e, 0x9a, 0x31, 0x39, 0xe6,
307 0x06, 0xe0, 0x95, 0xde, 0x3c, 0x26, 0x4a, 0x66,
308 0xe9, 0x8a, 0x16, 0x58, 0x54, 0xcd, 0x07, 0x98,
309 0x9b, 0x1e, 0xe0, 0xec, 0x3f, 0x8d, 0xbe
310 };
311 static const unsigned char sskdf_expected[] = {
312 0xa4, 0x62, 0xde, 0x16, 0xa8, 0x9d, 0xe8, 0x46,
313 0x6e, 0xf5, 0x46, 0x0b, 0x47, 0xb8
314 };
315 static const ST_KAT_PARAM sskdf_params[] = {
316 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, sskdf_digest),
317 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, sskdf_secret),
318 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, sskdf_otherinfo),
319 ST_KAT_PARAM_END()
320 };
321
322 static const char x942kdf_digest[] = "SHA1";
323 static const char x942kdf_cekalg[] = "AES-128-WRAP";
324 static const unsigned char x942kdf_secret[] = {
325 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
326 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
327 0x10, 0x11, 0x12, 0x13
328 };
329 static const unsigned char x942kdf_expected[] = {
330 0xd6, 0xd6, 0xb0, 0x94, 0xc1, 0x02, 0x7a, 0x7d,
331 0xe6, 0xe3, 0x11, 0x72, 0x94, 0xa3, 0x53, 0x64
332 };
333 static const ST_KAT_PARAM x942kdf_params[] = {
334 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, x942kdf_digest),
335 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_CEK_ALG, x942kdf_cekalg),
336 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, x942kdf_secret),
337 ST_KAT_PARAM_END()
338 };
339
340 static const char x963kdf_digest[] = "SHA256";
341 static const unsigned char x963kdf_otherinfo[] = {
342 0x75, 0xee, 0xf8, 0x1a, 0xa3, 0x04, 0x1e, 0x33,
343 0xb8, 0x09, 0x71, 0x20, 0x3d, 0x2c, 0x0c, 0x52
344 };
345 static const unsigned char x963kdf_secret[] = {
346 0x22, 0x51, 0x8b, 0x10, 0xe7, 0x0f, 0x2a, 0x3f,
347 0x24, 0x38, 0x10, 0xae, 0x32, 0x54, 0x13, 0x9e,
348 0xfb, 0xee, 0x04, 0xaa, 0x57, 0xc7, 0xaf, 0x7d
349 };
350 static const unsigned char x963kdf_expected[] = {
351 0xc4, 0x98, 0xaf, 0x77, 0x16, 0x1c, 0xc5, 0x9f,
352 0x29, 0x62, 0xb9, 0xa7, 0x13, 0xe2, 0xb2, 0x15,
353 0x15, 0x2d, 0x13, 0x97, 0x66, 0xce, 0x34, 0xa7,
354 0x76, 0xdf, 0x11, 0x86, 0x6a, 0x69, 0xbf, 0x2e
355 };
356 static const ST_KAT_PARAM x963kdf_params[] = {
357 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, x963kdf_digest),
358 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, x963kdf_secret),
359 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, x963kdf_otherinfo),
360 ST_KAT_PARAM_END()
361 };
362
363 static const char pbkdf2_digest[] = "SHA256";
364 static const unsigned char pbkdf2_password[] = {
365 0x70, 0x61, 0x73, 0x73, 0x00, 0x77, 0x6f, 0x72,
366 0x64
367 };
368 static const unsigned char pbkdf2_salt[] = {
369 0x73, 0x61, 0x00, 0x6c, 0x74
370 };
371 static const unsigned char pbkdf2_expected[] = {
372 0x89, 0xb6, 0x9d, 0x05, 0x16, 0xf8, 0x29, 0x89,
373 0x3c, 0x69, 0x62, 0x26, 0x65, 0x0a, 0x86, 0x87,
374 };
375 static int pbkdf2_iterations = 4096;
376 static int pbkdf2_pkcs5 = 1;
377 static const ST_KAT_PARAM pbkdf2_params[] = {
378 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, pbkdf2_digest),
379 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_PASSWORD, pbkdf2_password),
380 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SALT, pbkdf2_salt),
381 ST_KAT_PARAM_INT(OSSL_KDF_PARAM_ITER, pbkdf2_iterations),
382 ST_KAT_PARAM_INT(OSSL_KDF_PARAM_PKCS5, pbkdf2_pkcs5),
383 ST_KAT_PARAM_END()
384 };
385
386 static const char sshkdf_digest[] = "SHA1";
387 static const char sshkdf_type = EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV;
388 static const unsigned char sshkdf_key[] = {
389 0x00, 0x00, 0x00, 0x80, 0x55, 0xba, 0xe9, 0x31,
390 0xc0, 0x7f, 0xd8, 0x24, 0xbf, 0x10, 0xad, 0xd1,
391 0x90, 0x2b, 0x6f, 0xbc, 0x7c, 0x66, 0x53, 0x47,
392 0x38, 0x34, 0x98, 0xa6, 0x86, 0x92, 0x9f, 0xf5,
393 0xa2, 0x5f, 0x8e, 0x40, 0xcb, 0x66, 0x45, 0xea,
394 0x81, 0x4f, 0xb1, 0xa5, 0xe0, 0xa1, 0x1f, 0x85,
395 0x2f, 0x86, 0x25, 0x56, 0x41, 0xe5, 0xed, 0x98,
396 0x6e, 0x83, 0xa7, 0x8b, 0xc8, 0x26, 0x94, 0x80,
397 0xea, 0xc0, 0xb0, 0xdf, 0xd7, 0x70, 0xca, 0xb9,
398 0x2e, 0x7a, 0x28, 0xdd, 0x87, 0xff, 0x45, 0x24,
399 0x66, 0xd6, 0xae, 0x86, 0x7c, 0xea, 0xd6, 0x3b,
400 0x36, 0x6b, 0x1c, 0x28, 0x6e, 0x6c, 0x48, 0x11,
401 0xa9, 0xf1, 0x4c, 0x27, 0xae, 0xa1, 0x4c, 0x51,
402 0x71, 0xd4, 0x9b, 0x78, 0xc0, 0x6e, 0x37, 0x35,
403 0xd3, 0x6e, 0x6a, 0x3b, 0xe3, 0x21, 0xdd, 0x5f,
404 0xc8, 0x23, 0x08, 0xf3, 0x4e, 0xe1, 0xcb, 0x17,
405 0xfb, 0xa9, 0x4a, 0x59,
406 };
407 static const unsigned char sshkdf_xcghash[] = {
408 0xa4, 0xeb, 0xd4, 0x59, 0x34, 0xf5, 0x67, 0x92,
409 0xb5, 0x11, 0x2d, 0xcd, 0x75, 0xa1, 0x07, 0x5f,
410 0xdc, 0x88, 0x92, 0x45,
411 };
412 static const unsigned char sshkdf_session_id[] = {
413 0xa4, 0xeb, 0xd4, 0x59, 0x34, 0xf5, 0x67, 0x92,
414 0xb5, 0x11, 0x2d, 0xcd, 0x75, 0xa1, 0x07, 0x5f,
415 0xdc, 0x88, 0x92, 0x45,
416 };
417 static const unsigned char sshkdf_expected[] = {
418 0xe2, 0xf6, 0x27, 0xc0, 0xb4, 0x3f, 0x1a, 0xc1,
419 };
420 static const ST_KAT_PARAM sshkdf_params[] = {
421 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, sshkdf_digest),
422 ST_KAT_PARAM_UTF8CHAR(OSSL_KDF_PARAM_SSHKDF_TYPE, sshkdf_type),
423 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, sshkdf_key),
424 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SSHKDF_XCGHASH, sshkdf_xcghash),
425 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SSHKDF_SESSION_ID, sshkdf_session_id),
426 ST_KAT_PARAM_END()
427 };
428
429 static const char tls12prf_digest[] = "SHA256";
430 static const unsigned char tls12prf_secret[] = {
431 0x20, 0x2c, 0x88, 0xc0, 0x0f, 0x84, 0xa1, 0x7a,
432 0x20, 0x02, 0x70, 0x79, 0x60, 0x47, 0x87, 0x46,
433 0x11, 0x76, 0x45, 0x55, 0x39, 0xe7, 0x05, 0xbe,
434 0x73, 0x08, 0x90, 0x60, 0x2c, 0x28, 0x9a, 0x50,
435 0x01, 0xe3, 0x4e, 0xeb, 0x3a, 0x04, 0x3e, 0x5d,
436 0x52, 0xa6, 0x5e, 0x66, 0x12, 0x51, 0x88, 0xbf,
437 };
438 static const unsigned char tls12prf_seed[] = {
439 'k', 'e', 'y', ' ', 'e', 'x', 'p', 'a', 'n', 's', 'i', 'o', 'n',
440 0xae, 0x6c, 0x80, 0x6f, 0x8a, 0xd4, 0xd8, 0x07,
441 0x84, 0x54, 0x9d, 0xff, 0x28, 0xa4, 0xb5, 0x8f,
442 0xd8, 0x37, 0x68, 0x1a, 0x51, 0xd9, 0x28, 0xc3,
443 0xe3, 0x0e, 0xe5, 0xff, 0x14, 0xf3, 0x98, 0x68,
444 0x62, 0xe1, 0xfd, 0x91, 0xf2, 0x3f, 0x55, 0x8a,
445 0x60, 0x5f, 0x28, 0x47, 0x8c, 0x58, 0xcf, 0x72,
446 0x63, 0x7b, 0x89, 0x78, 0x4d, 0x95, 0x9d, 0xf7,
447 0xe9, 0x46, 0xd3, 0xf0, 0x7b, 0xd1, 0xb6, 0x16,
448 };
449 static const unsigned char tls12prf_expected[] = {
450 0xd0, 0x61, 0x39, 0x88, 0x9f, 0xff, 0xac, 0x1e,
451 0x3a, 0x71, 0x86, 0x5f, 0x50, 0x4a, 0xa5, 0xd0,
452 0xd2, 0xa2, 0xe8, 0x95, 0x06, 0xc6, 0xf2, 0x27,
453 0x9b, 0x67, 0x0c, 0x3e, 0x1b, 0x74, 0xf5, 0x31,
454 0x01, 0x6a, 0x25, 0x30, 0xc5, 0x1a, 0x3a, 0x0f,
455 0x7e, 0x1d, 0x65, 0x90, 0xd0, 0xf0, 0x56, 0x6b,
456 0x2f, 0x38, 0x7f, 0x8d, 0x11, 0xfd, 0x4f, 0x73,
457 0x1c, 0xdd, 0x57, 0x2d, 0x2e, 0xae, 0x92, 0x7f,
458 0x6f, 0x2f, 0x81, 0x41, 0x0b, 0x25, 0xe6, 0x96,
459 0x0b, 0xe6, 0x89, 0x85, 0xad, 0xd6, 0xc3, 0x84,
460 0x45, 0xad, 0x9f, 0x8c, 0x64, 0xbf, 0x80, 0x68,
461 0xbf, 0x9a, 0x66, 0x79, 0x48, 0x5d, 0x96, 0x6f,
462 0x1a, 0xd6, 0xf6, 0x8b, 0x43, 0x49, 0x5b, 0x10,
463 0xa6, 0x83, 0x75, 0x5e, 0xa2, 0xb8, 0x58, 0xd7,
464 0x0c, 0xca, 0xc7, 0xec, 0x8b, 0x05, 0x3c, 0x6b,
465 0xd4, 0x1c, 0xa2, 0x99, 0xd4, 0xe5, 0x19, 0x28,
466 };
467 static const ST_KAT_PARAM tls12prf_params[] = {
468 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, tls12prf_digest),
469 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SECRET, tls12prf_secret),
470 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SEED, tls12prf_seed),
471 ST_KAT_PARAM_END()
472 };
473
474 static const char kbkdf_digest[] = "SHA256";
475 static const char kbkdf_mac[] = "HMAC";
476 static const unsigned char kbkdf_salt[] = { 'p', 'r', 'f' };
477 static const unsigned char kbkdf_prfinput[] = { 't', 'e', 's', 't' };
478 static unsigned char kbkdf_key[] = {
479 0x37, 0x05, 0xD9, 0x60, 0x80, 0xC1, 0x77, 0x28,
480 0xA0, 0xE8, 0x00, 0xEA, 0xB6, 0xE0, 0xD2, 0x3C,
481 };
482 static unsigned char kbkdf_expected[] = {
483 0x9D, 0x18, 0x86, 0x16, 0xF6, 0x38, 0x52, 0xFE,
484 0x86, 0x91, 0x5B, 0xB8, 0x40, 0xB4, 0xA8, 0x86,
485 0xFF, 0x3E, 0x6B, 0xB0, 0xF8, 0x19, 0xB4, 0x9B,
486 0x89, 0x33, 0x93, 0xD3, 0x93, 0x85, 0x42, 0x95,
487 };
488 static const ST_KAT_PARAM kbkdf_params[] = {
489 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, kbkdf_digest),
490 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_MAC, kbkdf_mac),
491 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, kbkdf_key),
492 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SALT, kbkdf_salt),
493 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, kbkdf_prfinput),
494 ST_KAT_PARAM_END()
495 };
496
497 static const char tls13_kdf_digest[] = "SHA256";
498 static int tls13_kdf_extract_mode = EVP_KDF_HKDF_MODE_EXTRACT_ONLY;
499 static int tls13_kdf_expand_mode = EVP_KDF_HKDF_MODE_EXPAND_ONLY;
500 static const unsigned char tls13_kdf_prefix[] = {
501 0x74, 0x6C, 0x73, 0x31, 0x33, 0x20 /* "tls13 " */
502 };
503 static const unsigned char tls13_kdf_client_early_secret_label[] = {
504 0x63, 0x20, 0x65, 0x20, 0x74, 0x72, 0x61, 0x66,
505 0x66, 0x69, 0x63 /* "c e traffic"*/
506 };
507 static const unsigned char tls13_kdf_psk[] = {
508 0xF8, 0xAF, 0x6A, 0xEA, 0x2D, 0x39, 0x7B, 0xAF,
509 0x29, 0x48, 0xA2, 0x5B, 0x28, 0x34, 0x20, 0x06,
510 0x92, 0xCF, 0xF1, 0x7E, 0xEE, 0x91, 0x65, 0xE4,
511 0xE2, 0x7B, 0xAB, 0xEE, 0x9E, 0xDE, 0xFD, 0x05
512 };
513 static const unsigned char tls13_kdf_client_hello_hash[] = {
514 0x7c, 0x92, 0xf6, 0x8b, 0xd5, 0xbf, 0x36, 0x38,
515 0xea, 0x33, 0x8a, 0x64, 0x94, 0x72, 0x2e, 0x1b,
516 0x44, 0x12, 0x7e, 0x1b, 0x7e, 0x8a, 0xad, 0x53,
517 0x5f, 0x23, 0x22, 0xa6, 0x44, 0xff, 0x22, 0xb3
518 };
519
520 static const unsigned char tls13_kdf_early_secret[] = {
521 0x15, 0x3B, 0x63, 0x94, 0xA9, 0xC0, 0x3C, 0xF3,
522 0xF5, 0xAC, 0xCC, 0x6E, 0x45, 0x5A, 0x76, 0x93,
523 0x28, 0x11, 0x38, 0xA1, 0xBC, 0xFA, 0x38, 0x03,
524 0xC2, 0x67, 0x35, 0xDD, 0x11, 0x94, 0xD2, 0x16
525 };
526 static const unsigned char tls13_kdf_client_early_traffic_secret[] = {
527 0xC8, 0x05, 0x83, 0xA9, 0x0E, 0x99, 0x5C, 0x48,
528 0x96, 0x00, 0x49, 0x2A, 0x5D, 0xA6, 0x42, 0xE6,
529 0xB1, 0xF6, 0x79, 0xBA, 0x67, 0x48, 0x28, 0x79,
530 0x2D, 0xF0, 0x87, 0xB9, 0x39, 0x63, 0x61, 0x71
531 };
532 static const ST_KAT_PARAM tls13_kdf_early_secret_params[] = {
533 ST_KAT_PARAM_INT(OSSL_KDF_PARAM_MODE, tls13_kdf_extract_mode),
534 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, tls13_kdf_digest),
535 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, tls13_kdf_psk),
536 ST_KAT_PARAM_END()
537 };
538 static const ST_KAT_PARAM tls13_kdf_client_early_secret_params[] = {
539 ST_KAT_PARAM_INT(OSSL_KDF_PARAM_MODE, tls13_kdf_expand_mode),
540 ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_DIGEST, tls13_kdf_digest),
541 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, tls13_kdf_early_secret),
542 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_DATA, tls13_kdf_client_hello_hash),
543 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_PREFIX, tls13_kdf_prefix),
544 ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_LABEL,
545 tls13_kdf_client_early_secret_label),
546 ST_KAT_PARAM_END()
547 };
548
549 static const ST_KAT_KDF st_kat_kdf_tests[] =
550 {
551 {
552 OSSL_SELF_TEST_DESC_KDF_TLS13_EXTRACT,
553 OSSL_KDF_NAME_TLS1_3_KDF,
554 tls13_kdf_early_secret_params,
555 ITM(tls13_kdf_early_secret)
556 },
557 {
558 OSSL_SELF_TEST_DESC_KDF_TLS13_EXPAND,
559 OSSL_KDF_NAME_TLS1_3_KDF,
560 tls13_kdf_client_early_secret_params,
561 ITM(tls13_kdf_client_early_traffic_secret)
562 },
563 {
564 OSSL_SELF_TEST_DESC_KDF_TLS12_PRF,
565 OSSL_KDF_NAME_TLS1_PRF,
566 tls12prf_params,
567 ITM(tls12prf_expected)
568 },
569 {
570 OSSL_SELF_TEST_DESC_KDF_PBKDF2,
571 OSSL_KDF_NAME_PBKDF2,
572 pbkdf2_params,
573 ITM(pbkdf2_expected)
574 },
575 {
576 OSSL_SELF_TEST_DESC_KDF_SSHKDF,
577 OSSL_KDF_NAME_SSHKDF,
578 sshkdf_params,
579 ITM(sshkdf_expected)
580 },
581 {
582 OSSL_SELF_TEST_DESC_KDF_KBKDF,
583 OSSL_KDF_NAME_KBKDF,
584 kbkdf_params,
585 ITM(kbkdf_expected)
586 },
587 {
588 OSSL_SELF_TEST_DESC_KDF_HKDF,
589 OSSL_KDF_NAME_HKDF,
590 hkdf_params,
591 ITM(hkdf_expected)
592 },
593 {
594 OSSL_SELF_TEST_DESC_KDF_SSKDF,
595 OSSL_KDF_NAME_SSKDF,
596 sskdf_params,
597 ITM(sskdf_expected)
598 },
599 {
600 OSSL_SELF_TEST_DESC_KDF_X963KDF,
601 OSSL_KDF_NAME_X963KDF,
602 x963kdf_params,
603 ITM(x963kdf_expected)
604 },
605 {
606 OSSL_SELF_TEST_DESC_KDF_X942KDF,
607 OSSL_KDF_NAME_X942KDF_ASN1,
608 x942kdf_params,
609 ITM(x942kdf_expected)
610 },
611 };
612
613 /*-
614 * DRBG test vectors are a small subset of
615 * https://csrc.nist.rip/groups/STM/cavp/documents/drbg/drbgtestvectors.zip
616 * Using the folder drbgvectors_pr_true
617 * Generated for CAVS 14.3.
618 */
619
620 /*
621 * Hash_DRBG.rsp
622 *
623 * [SHA-256]
624 * [PredictionResistance = True]
625 * [EntropyInputLen = 256]
626 * [NonceLen = 128]
627 * [PersonalizationStringLen = 256]
628 * [AdditionalInputLen = 256]
629 * [ReturnedBitsLen = 1024]
630 *
631 * COUNT = 14
632 */
633 static const unsigned char drbg_hash_sha256_pr_entropyin[] = {
634 0x06, 0x6d, 0xc8, 0xce, 0x75, 0xb2, 0x89, 0x66, 0xa6, 0x85, 0x16, 0x3f,
635 0xe2, 0xa4, 0xd4, 0x27, 0xfb, 0xdb, 0x61, 0x66, 0x50, 0x61, 0x6b, 0xa2,
636 0x82, 0xfc, 0x33, 0x2b, 0x4e, 0x6f, 0x12, 0x20
637 };
638 static const unsigned char drbg_hash_sha256_pr_nonce[] = {
639 0x55, 0x9f, 0x7c, 0x64, 0x89, 0x70, 0x83, 0xec, 0x2d, 0x73, 0x70, 0xd9,
640 0xf0, 0xe5, 0x07, 0x1f
641 };
642 static const unsigned char drbg_hash_sha256_pr_persstr[] = {
643 0x88, 0x6f, 0x54, 0x9a, 0xad, 0x1a, 0xc6, 0x3d, 0x18, 0xcb, 0xcc, 0x66,
644 0x85, 0xda, 0xa2, 0xc2, 0xf7, 0x9e, 0xb0, 0x89, 0x4c, 0xb4, 0xae, 0xf1,
645 0xac, 0x54, 0x4f, 0xce, 0x57, 0xf1, 0x5e, 0x11
646 };
647 static const unsigned char drbg_hash_sha256_pr_entropyinpr0[] = {
648 0xff, 0x80, 0xb7, 0xd2, 0x6a, 0x05, 0xbc, 0x8a, 0x7a, 0xbe, 0x53, 0x28,
649 0x6b, 0x0e, 0xeb, 0x73, 0x3b, 0x71, 0x5a, 0x20, 0x5b, 0xfa, 0x4f, 0xf6,
650 0x37, 0x03, 0xde, 0xad, 0xb6, 0xea, 0x0e, 0xf4
651 };
652 static const unsigned char drbg_hash_sha256_pr_entropyinpr1[] = {
653 0xc7, 0x38, 0x32, 0x53, 0x46, 0x81, 0xed, 0xe3, 0x7e, 0x03, 0x84, 0x6d,
654 0x3c, 0x84, 0x17, 0x67, 0x29, 0x7d, 0x24, 0x6c, 0x68, 0x92, 0x41, 0xd2,
655 0xe7, 0x75, 0xbe, 0x7e, 0xc9, 0x96, 0x29, 0x3d
656 };
657 static const unsigned char drbg_hash_sha256_pr_addin0[] = {
658 0xb7, 0x21, 0x5f, 0x14, 0xac, 0x7b, 0xaf, 0xd0, 0xa9, 0x17, 0x72, 0xba,
659 0x22, 0xf7, 0x19, 0xaf, 0xbd, 0x20, 0xb3, 0x11, 0x63, 0x6c, 0x2b, 0x1e,
660 0x83, 0xe4, 0xa8, 0x23, 0x35, 0x3f, 0xc6, 0xea
661 };
662 static const unsigned char drbg_hash_sha256_pr_addin1[] = {
663 0xce, 0xd3, 0x1f, 0x7e, 0x0d, 0xae, 0x5b, 0xb5, 0xc0, 0x43, 0xe2, 0x46,
664 0xb2, 0x94, 0x73, 0xe2, 0xfd, 0x39, 0x51, 0x2e, 0xad, 0x45, 0x69, 0xee,
665 0xe3, 0xe3, 0x80, 0x33, 0x14, 0xab, 0xa7, 0xa3
666 };
667 static const unsigned char drbg_hash_sha256_pr_expected[] = {
668 0x60, 0xc2, 0x34, 0xcf, 0xaf, 0xb4, 0x68, 0x03, 0x3b, 0xf1, 0x95, 0xe5,
669 0x78, 0xce, 0x26, 0x6e, 0x14, 0x65, 0x32, 0x6a, 0x96, 0xa9, 0xe0, 0x3f,
670 0x8b, 0x89, 0x36, 0x70, 0xef, 0x62, 0x75, 0x4d, 0x5e, 0x80, 0xd5, 0x53,
671 0xa1, 0xf8, 0x49, 0x50, 0x20, 0x8b, 0x93, 0x43, 0x07, 0x9f, 0x2e, 0xf8,
672 0x56, 0xe9, 0xc5, 0x70, 0x61, 0x85, 0x97, 0xb5, 0xdc, 0x82, 0xa2, 0xda,
673 0xea, 0xa3, 0xfd, 0x9b, 0x2f, 0xd2, 0xa0, 0xd7, 0x1b, 0xc6, 0x29, 0x35,
674 0xcc, 0xb8, 0x3d, 0xa0, 0x67, 0x98, 0x05, 0xa0, 0xe3, 0x1e, 0xfe, 0xe4,
675 0xf0, 0xe5, 0x13, 0xb0, 0x83, 0x17, 0xfa, 0xca, 0x93, 0x5e, 0x38, 0x29,
676 0x48, 0xd2, 0x72, 0xdb, 0x76, 0x3e, 0x6d, 0xf3, 0x25, 0x10, 0xff, 0x1b,
677 0x99, 0xff, 0xf8, 0xc6, 0x0e, 0xb0, 0xdd, 0x29, 0x2e, 0xbc, 0xbb, 0xc8,
678 0x0a, 0x01, 0x6e, 0xd3, 0xb0, 0x0e, 0x4e, 0xab
679 };
680
681 /*
682 * CTR_DRBG.rsp
683 *
684 * [AES-128 use df]
685 * [PredictionResistance = True]
686 * [EntropyInputLen = 128]
687 * [NonceLen = 64]
688 * [PersonalizationStringLen = 128]
689 * [AdditionalInputLen = 128]
690 * [ReturnedBitsLen = 512]
691 *
692 * COUNT = 0
693 */
694 static const unsigned char drbg_ctr_aes128_pr_df_entropyin[] = {
695 0x92, 0x89, 0x8f, 0x31, 0xfa, 0x1c, 0xff, 0x6d, 0x18, 0x2f, 0x26, 0x06,
696 0x43, 0xdf, 0xf8, 0x18
697 };
698 static const unsigned char drbg_ctr_aes128_pr_df_nonce[] = {
699 0xc2, 0xa4, 0xd9, 0x72, 0xc3, 0xb9, 0xb6, 0x97
700 };
701 static const unsigned char drbg_ctr_aes128_pr_df_persstr[] = {
702 0xea, 0x65, 0xee, 0x60, 0x26, 0x4e, 0x7e, 0xb6, 0x0e, 0x82, 0x68, 0xc4,
703 0x37, 0x3c, 0x5c, 0x0b
704 };
705 static const unsigned char drbg_ctr_aes128_pr_df_entropyinpr0[] = {
706 0x20, 0x72, 0x8a, 0x06, 0xf8, 0x6f, 0x8d, 0xd4, 0x41, 0xe2, 0x72, 0xb7,
707 0xc4, 0x2c, 0xe8, 0x10
708 };
709 static const unsigned char drbg_ctr_aes128_pr_df_entropyinpr1[] = {
710 0x3d, 0xb0, 0xf0, 0x94, 0xf3, 0x05, 0x50, 0x33, 0x17, 0x86, 0x3e, 0x22,
711 0x08, 0xf7, 0xa5, 0x01
712 };
713 static const unsigned char drbg_ctr_aes128_pr_df_addin0[] = {
714 0x1a, 0x40, 0xfa, 0xe3, 0xcc, 0x6c, 0x7c, 0xa0, 0xf8, 0xda, 0xba, 0x59,
715 0x23, 0x6d, 0xad, 0x1d
716 };
717 static const unsigned char drbg_ctr_aes128_pr_df_addin1[] = {
718 0x9f, 0x72, 0x76, 0x6c, 0xc7, 0x46, 0xe5, 0xed, 0x2e, 0x53, 0x20, 0x12,
719 0xbc, 0x59, 0x31, 0x8c
720 };
721 static const unsigned char drbg_ctr_aes128_pr_df_expected[] = {
722 0x5a, 0x35, 0x39, 0x87, 0x0f, 0x4d, 0x22, 0xa4, 0x09, 0x24, 0xee, 0x71,
723 0xc9, 0x6f, 0xac, 0x72, 0x0a, 0xd6, 0xf0, 0x88, 0x82, 0xd0, 0x83, 0x28,
724 0x73, 0xec, 0x3f, 0x93, 0xd8, 0xab, 0x45, 0x23, 0xf0, 0x7e, 0xac, 0x45,
725 0x14, 0x5e, 0x93, 0x9f, 0xb1, 0xd6, 0x76, 0x43, 0x3d, 0xb6, 0xe8, 0x08,
726 0x88, 0xf6, 0xda, 0x89, 0x08, 0x77, 0x42, 0xfe, 0x1a, 0xf4, 0x3f, 0xc4,
727 0x23, 0xc5, 0x1f, 0x68
728 };
729
730 /*
731 * HMAC_DRBG.rsp
732 *
733 * [SHA-1]
734 * [PredictionResistance = True]
735 * [EntropyInputLen = 128]
736 * [NonceLen = 64]
737 * [PersonalizationStringLen = 128]
738 * [AdditionalInputLen = 128]
739 * [ReturnedBitsLen = 640]
740 *
741 * COUNT = 0
742 */
743 static const unsigned char drbg_hmac_sha1_pr_entropyin[] = {
744 0x68, 0x0f, 0xac, 0xe9, 0x0d, 0x7b, 0xca, 0x21, 0xd4, 0xa0, 0xed, 0xb7,
745 0x79, 0x9e, 0xe5, 0xd8
746 };
747 static const unsigned char drbg_hmac_sha1_pr_nonce[] = {
748 0xb7, 0xbe, 0x9e, 0xed, 0xdd, 0x0e, 0x3b, 0x4b
749 };
750 static const unsigned char drbg_hmac_sha1_pr_persstr[] = {
751 0xf5, 0x8c, 0x40, 0xae, 0x70, 0xf7, 0xa5, 0x56, 0x48, 0xa9, 0x31, 0xa0,
752 0xa9, 0x31, 0x3d, 0xd7
753 };
754 static const unsigned char drbg_hmac_sha1_pr_entropyinpr0[] = {
755 0x7c, 0xaf, 0xe2, 0x31, 0x63, 0x0a, 0xa9, 0x5a, 0x74, 0x2c, 0x4e, 0x5f,
756 0x5f, 0x22, 0xc6, 0xa4
757 };
758 static const unsigned char drbg_hmac_sha1_pr_entropyinpr1[] = {
759 0x1c, 0x0d, 0x77, 0x92, 0x89, 0x88, 0x27, 0x94, 0x8a, 0x58, 0x9f, 0x82,
760 0x2d, 0x1a, 0xf7, 0xa6
761 };
762 static const unsigned char drbg_hmac_sha1_pr_addin0[] = {
763 0xdc, 0x36, 0x63, 0xf0, 0x62, 0x78, 0x9c, 0xd1, 0x5c, 0xbb, 0x20, 0xc3,
764 0xc1, 0x8c, 0xd9, 0xd7
765 };
766 static const unsigned char drbg_hmac_sha1_pr_addin1[] = {
767 0xfe, 0x85, 0xb0, 0xab, 0x14, 0xc6, 0x96, 0xe6, 0x9c, 0x24, 0xe7, 0xb5,
768 0xa1, 0x37, 0x12, 0x0c
769 };
770 static const unsigned char drbg_hmac_sha1_pr_expected[] = {
771 0x68, 0x00, 0x4b, 0x3a, 0x28, 0xf7, 0xf0, 0x1c, 0xf9, 0xe9, 0xb5, 0x71,
772 0x20, 0x79, 0xef, 0x80, 0x87, 0x1b, 0x08, 0xb9, 0xa9, 0x1b, 0xcd, 0x2b,
773 0x9f, 0x09, 0x4d, 0xa4, 0x84, 0x80, 0xb3, 0x4c, 0xaf, 0xd5, 0x59, 0x6b,
774 0x0c, 0x0a, 0x48, 0xe1, 0x48, 0xda, 0xbc, 0x6f, 0x77, 0xb8, 0xff, 0xaf,
775 0x18, 0x70, 0x28, 0xe1, 0x04, 0x13, 0x7a, 0x4f, 0xeb, 0x1c, 0x72, 0xb0,
776 0xc4, 0x4f, 0xe8, 0xb1, 0xaf, 0xab, 0xa5, 0xbc, 0xfd, 0x86, 0x67, 0xf2,
777 0xf5, 0x5b, 0x46, 0x06, 0x63, 0x2e, 0x3c, 0xbc
778 };
779
780 static const ST_KAT_DRBG st_kat_drbg_tests[] =
781 {
782 {
783 OSSL_SELF_TEST_DESC_DRBG_HASH,
784 "HASH-DRBG", "digest", "SHA256",
785 ITM(drbg_hash_sha256_pr_entropyin),
786 ITM(drbg_hash_sha256_pr_nonce),
787 ITM(drbg_hash_sha256_pr_persstr),
788 ITM(drbg_hash_sha256_pr_entropyinpr0),
789 ITM(drbg_hash_sha256_pr_entropyinpr1),
790 ITM(drbg_hash_sha256_pr_addin0),
791 ITM(drbg_hash_sha256_pr_addin1),
792 ITM(drbg_hash_sha256_pr_expected)
793 },
794 {
795 OSSL_SELF_TEST_DESC_DRBG_CTR,
796 "CTR-DRBG", "cipher", "AES-128-CTR",
797 ITM(drbg_ctr_aes128_pr_df_entropyin),
798 ITM(drbg_ctr_aes128_pr_df_nonce),
799 ITM(drbg_ctr_aes128_pr_df_persstr),
800 ITM(drbg_ctr_aes128_pr_df_entropyinpr0),
801 ITM(drbg_ctr_aes128_pr_df_entropyinpr1),
802 ITM(drbg_ctr_aes128_pr_df_addin0),
803 ITM(drbg_ctr_aes128_pr_df_addin1),
804 ITM(drbg_ctr_aes128_pr_df_expected)
805 },
806 {
807 OSSL_SELF_TEST_DESC_DRBG_HMAC,
808 "HMAC-DRBG", "digest", "SHA1",
809 ITM(drbg_hmac_sha1_pr_entropyin),
810 ITM(drbg_hmac_sha1_pr_nonce),
811 ITM(drbg_hmac_sha1_pr_persstr),
812 ITM(drbg_hmac_sha1_pr_entropyinpr0),
813 ITM(drbg_hmac_sha1_pr_entropyinpr1),
814 ITM(drbg_hmac_sha1_pr_addin0),
815 ITM(drbg_hmac_sha1_pr_addin1),
816 ITM(drbg_hmac_sha1_pr_expected)
817 }
818 };
819
820 /* KEY EXCHANGE TEST DATA */
821
822 #ifndef OPENSSL_NO_DH
823 /* DH KAT */
824 static const unsigned char dh_p[] = {
825 0xdc, 0xca, 0x15, 0x11, 0xb2, 0x31, 0x32, 0x25,
826 0xf5, 0x21, 0x16, 0xe1, 0x54, 0x27, 0x89, 0xe0,
827 0x01, 0xf0, 0x42, 0x5b, 0xcc, 0xc7, 0xf3, 0x66,
828 0xf7, 0x40, 0x64, 0x07, 0xf1, 0xc9, 0xfa, 0x8b,
829 0xe6, 0x10, 0xf1, 0x77, 0x8b, 0xb1, 0x70, 0xbe,
830 0x39, 0xdb, 0xb7, 0x6f, 0x85, 0xbf, 0x24, 0xce,
831 0x68, 0x80, 0xad, 0xb7, 0x62, 0x9f, 0x7c, 0x6d,
832 0x01, 0x5e, 0x61, 0xd4, 0x3f, 0xa3, 0xee, 0x4d,
833 0xe1, 0x85, 0xf2, 0xcf, 0xd0, 0x41, 0xff, 0xde,
834 0x9d, 0x41, 0x84, 0x07, 0xe1, 0x51, 0x38, 0xbb,
835 0x02, 0x1d, 0xae, 0xb3, 0x5f, 0x76, 0x2d, 0x17,
836 0x82, 0xac, 0xc6, 0x58, 0xd3, 0x2b, 0xd4, 0xb0,
837 0x23, 0x2c, 0x92, 0x7d, 0xd3, 0x8f, 0xa0, 0x97,
838 0xb3, 0xd1, 0x85, 0x9f, 0xa8, 0xac, 0xaf, 0xb9,
839 0x8f, 0x06, 0x66, 0x08, 0xfc, 0x64, 0x4e, 0xc7,
840 0xdd, 0xb6, 0xf0, 0x85, 0x99, 0xf9, 0x2a, 0xc1,
841 0xb5, 0x98, 0x25, 0xda, 0x84, 0x32, 0x07, 0x7d,
842 0xef, 0x69, 0x56, 0x46, 0x06, 0x3c, 0x20, 0x82,
843 0x3c, 0x95, 0x07, 0xab, 0x6f, 0x01, 0x76, 0xd4,
844 0x73, 0x0d, 0x99, 0x0d, 0xbb, 0xe6, 0x36, 0x1c,
845 0xd8, 0xb2, 0xb9, 0x4d, 0x3d, 0x2f, 0x32, 0x9b,
846 0x82, 0x09, 0x9b, 0xd6, 0x61, 0xf4, 0x29, 0x50,
847 0xf4, 0x03, 0xdf, 0x3e, 0xde, 0x62, 0xa3, 0x31,
848 0x88, 0xb0, 0x27, 0x98, 0xba, 0x82, 0x3f, 0x44,
849 0xb9, 0x46, 0xfe, 0x9d, 0xf6, 0x77, 0xa0, 0xc5,
850 0xa1, 0x23, 0x8e, 0xaa, 0x97, 0xb7, 0x0f, 0x80,
851 0xda, 0x8c, 0xac, 0x88, 0xe0, 0x92, 0xb1, 0x12,
852 0x70, 0x60, 0xff, 0xbf, 0x45, 0x57, 0x99, 0x94,
853 0x01, 0x1d, 0xc2, 0xfa, 0xa5, 0xe7, 0xf6, 0xc7,
854 0x62, 0x45, 0xe1, 0xcc, 0x31, 0x22, 0x31, 0xc1,
855 0x7d, 0x1c, 0xa6, 0xb1, 0x90, 0x07, 0xef, 0x0d,
856 0xb9, 0x9f, 0x9c, 0xb6, 0x0e, 0x1d, 0x5f, 0x69
857 };
858 static const unsigned char dh_q[] = {
859 0x89, 0x8b, 0x22, 0x67, 0x17, 0xef, 0x03, 0x9e,
860 0x60, 0x3e, 0x82, 0xe5, 0xc7, 0xaf, 0xe4, 0x83,
861 0x74, 0xac, 0x5f, 0x62, 0x5c, 0x54, 0xf1, 0xea,
862 0x11, 0xac, 0xb5, 0x7d
863 };
864 static const unsigned char dh_g[] = {
865 0x5e, 0xf7, 0xb8, 0x8f, 0x2d, 0xf6, 0x01, 0x39,
866 0x35, 0x1d, 0xfb, 0xfe, 0x12, 0x66, 0x80, 0x5f,
867 0xdf, 0x35, 0x6c, 0xdf, 0xd1, 0x3a, 0x4d, 0xa0,
868 0x05, 0x0c, 0x7e, 0xde, 0x24, 0x6d, 0xf5, 0x9f,
869 0x6a, 0xbf, 0x96, 0xad, 0xe5, 0xf2, 0xb2, 0x8f,
870 0xfe, 0x88, 0xd6, 0xbc, 0xe7, 0xf7, 0x89, 0x4a,
871 0x3d, 0x53, 0x5f, 0xc8, 0x21, 0x26, 0xdd, 0xd4,
872 0x24, 0x87, 0x2e, 0x16, 0xb8, 0x38, 0xdf, 0x8c,
873 0x51, 0xe9, 0x01, 0x6f, 0x88, 0x9c, 0x7c, 0x20,
874 0x3e, 0x98, 0xa8, 0xb6, 0x31, 0xf9, 0xc7, 0x25,
875 0x63, 0xd3, 0x8a, 0x49, 0x58, 0x9a, 0x07, 0x53,
876 0xd3, 0x58, 0xe7, 0x83, 0x31, 0x8c, 0xef, 0xd9,
877 0x67, 0x7c, 0x7b, 0x2d, 0xbb, 0x77, 0xd6, 0xdc,
878 0xe2, 0xa1, 0x96, 0x37, 0x95, 0xca, 0x64, 0xb9,
879 0x2d, 0x1c, 0x9a, 0xac, 0x6d, 0x0e, 0x8d, 0x43,
880 0x1d, 0xe5, 0xe5, 0x00, 0x60, 0xdf, 0xf7, 0x86,
881 0x89, 0xc9, 0xec, 0xa1, 0xc1, 0x24, 0x8c, 0x16,
882 0xed, 0x09, 0xc7, 0xad, 0x41, 0x2a, 0x17, 0x40,
883 0x6d, 0x2b, 0x52, 0x5a, 0xa1, 0xca, 0xbb, 0x23,
884 0x7b, 0x97, 0x34, 0xec, 0x7b, 0x8c, 0xe3, 0xfa,
885 0xe0, 0x2f, 0x29, 0xc5, 0xef, 0xed, 0x30, 0xd6,
886 0x91, 0x87, 0xda, 0x10, 0x9c, 0x2c, 0x9f, 0xe2,
887 0xaa, 0xdb, 0xb0, 0xc2, 0x2a, 0xf5, 0x4c, 0x61,
888 0x66, 0x55, 0x00, 0x0c, 0x43, 0x1c, 0x6b, 0x4a,
889 0x37, 0x97, 0x63, 0xb0, 0xa9, 0x16, 0x58, 0xef,
890 0xc8, 0x4e, 0x8b, 0x06, 0x35, 0x8c, 0x8b, 0x4f,
891 0x21, 0x37, 0x10, 0xfd, 0x10, 0x17, 0x2c, 0xf3,
892 0x9b, 0x83, 0x0c, 0x2d, 0xd8, 0x4a, 0x0c, 0x8a,
893 0xb8, 0x25, 0x16, 0xec, 0xab, 0x99, 0x5f, 0xa4,
894 0x21, 0x5e, 0x02, 0x3e, 0x4e, 0xcf, 0x80, 0x74,
895 0xc3, 0x9d, 0x6c, 0x88, 0xb7, 0x0d, 0x1e, 0xe4,
896 0xe9, 0x6f, 0xdc, 0x20, 0xea, 0x11, 0x5c, 0x32
897 };
898 static const unsigned char dh_priv[] = {
899 0x14, 0x33, 0xe0, 0xb5, 0xa9, 0x17, 0xb6, 0x0a,
900 0x30, 0x23, 0xf2, 0xf8, 0xaa, 0x2c, 0x2d, 0x70,
901 0xd2, 0x96, 0x8a, 0xba, 0x9a, 0xea, 0xc8, 0x15,
902 0x40, 0xb8, 0xfc, 0xe6
903 };
904 static const unsigned char dh_pub[] = {
905 0x95, 0xdd, 0x33, 0x8d, 0x29, 0xe5, 0x71, 0x04,
906 0x92, 0xb9, 0x18, 0x31, 0x7b, 0x72, 0xa3, 0x69,
907 0x36, 0xe1, 0x95, 0x1a, 0x2e, 0xe5, 0xa5, 0x59,
908 0x16, 0x99, 0xc0, 0x48, 0x6d, 0x0d, 0x4f, 0x9b,
909 0xdd, 0x6d, 0x5a, 0x3f, 0x6b, 0x98, 0x89, 0x0c,
910 0x62, 0xb3, 0x76, 0x52, 0xd3, 0x6e, 0x71, 0x21,
911 0x11, 0xe6, 0x8a, 0x73, 0x55, 0x37, 0x25, 0x06,
912 0x99, 0xef, 0xe3, 0x30, 0x53, 0x73, 0x91, 0xfb,
913 0xc2, 0xc5, 0x48, 0xbc, 0x5a, 0xc3, 0xe5, 0xb2,
914 0x33, 0x86, 0xc3, 0xee, 0xf5, 0xeb, 0x43, 0xc0,
915 0x99, 0xd7, 0x0a, 0x52, 0x02, 0x68, 0x7e, 0x83,
916 0x96, 0x42, 0x48, 0xfc, 0xa9, 0x1f, 0x40, 0x90,
917 0x8e, 0x8f, 0xb3, 0x31, 0x93, 0x15, 0xf6, 0xd2,
918 0x60, 0x6d, 0x7f, 0x7c, 0xd5, 0x2c, 0xc6, 0xe7,
919 0xc5, 0x84, 0x3a, 0xfb, 0x22, 0x51, 0x9c, 0xf0,
920 0xf0, 0xf9, 0xd3, 0xa0, 0xa4, 0xe8, 0xc8, 0x88,
921 0x99, 0xef, 0xed, 0xe7, 0x36, 0x43, 0x51, 0xfb,
922 0x6a, 0x36, 0x3e, 0xe7, 0x17, 0xe5, 0x44, 0x5a,
923 0xda, 0xb4, 0xc9, 0x31, 0xa6, 0x48, 0x39, 0x97,
924 0xb8, 0x7d, 0xad, 0x83, 0x67, 0x7e, 0x4d, 0x1d,
925 0x3a, 0x77, 0x75, 0xe0, 0xf6, 0xd0, 0x0f, 0xdf,
926 0x73, 0xc7, 0xad, 0x80, 0x1e, 0x66, 0x5a, 0x0e,
927 0x5a, 0x79, 0x6d, 0x0a, 0x03, 0x80, 0xa1, 0x9f,
928 0xa1, 0x82, 0xef, 0xc8, 0xa0, 0x4f, 0x5e, 0x4d,
929 0xb9, 0x0d, 0x1a, 0x86, 0x37, 0xf9, 0x5d, 0xb1,
930 0x64, 0x36, 0xbd, 0xc8, 0xf3, 0xfc, 0x09, 0x6c,
931 0x4f, 0xf7, 0xf2, 0x34, 0xbe, 0x8f, 0xef, 0x47,
932 0x9a, 0xc4, 0xb0, 0xdc, 0x4b, 0x77, 0x26, 0x3e,
933 0x07, 0xd9, 0x95, 0x9d, 0xe0, 0xf1, 0xbf, 0x3f,
934 0x0a, 0xe3, 0xd9, 0xd5, 0x0e, 0x4b, 0x89, 0xc9,
935 0x9e, 0x3e, 0xa1, 0x21, 0x73, 0x43, 0xdd, 0x8c,
936 0x65, 0x81, 0xac, 0xc4, 0x95, 0x9c, 0x91, 0xd3
937 };
938 static const unsigned char dh_peer_pub[] = {
939 0x1f, 0xc1, 0xda, 0x34, 0x1d, 0x1a, 0x84, 0x6a,
940 0x96, 0xb7, 0xbe, 0x24, 0x34, 0x0f, 0x87, 0x7d,
941 0xd0, 0x10, 0xaa, 0x03, 0x56, 0xd5, 0xad, 0x58,
942 0xaa, 0xe9, 0xc7, 0xb0, 0x8f, 0x74, 0x9a, 0x32,
943 0x23, 0x51, 0x10, 0xb5, 0xd8, 0x8e, 0xb5, 0xdb,
944 0xfa, 0x97, 0x8d, 0x27, 0xec, 0xc5, 0x30, 0xf0,
945 0x2d, 0x31, 0x14, 0x00, 0x5b, 0x64, 0xb1, 0xc0,
946 0xe0, 0x24, 0xcb, 0x8a, 0xe2, 0x16, 0x98, 0xbc,
947 0xa9, 0xe6, 0x0d, 0x42, 0x80, 0x86, 0x22, 0xf1,
948 0x81, 0xc5, 0x6e, 0x1d, 0xe7, 0xa9, 0x6e, 0x6e,
949 0xfe, 0xe9, 0xd6, 0x65, 0x67, 0xe9, 0x1b, 0x97,
950 0x70, 0x42, 0xc7, 0xe3, 0xd0, 0x44, 0x8f, 0x05,
951 0xfb, 0x77, 0xf5, 0x22, 0xb9, 0xbf, 0xc8, 0xd3,
952 0x3c, 0xc3, 0xc3, 0x1e, 0xd3, 0xb3, 0x1f, 0x0f,
953 0xec, 0xb6, 0xdb, 0x4f, 0x6e, 0xa3, 0x11, 0xe7,
954 0x7a, 0xfd, 0xbc, 0xd4, 0x7a, 0xee, 0x1b, 0xb1,
955 0x50, 0xf2, 0x16, 0x87, 0x35, 0x78, 0xfb, 0x96,
956 0x46, 0x8e, 0x8f, 0x9f, 0x3d, 0xe8, 0xef, 0xbf,
957 0xce, 0x75, 0x62, 0x4b, 0x1d, 0xf0, 0x53, 0x22,
958 0xa3, 0x4f, 0x14, 0x63, 0xe8, 0x39, 0xe8, 0x98,
959 0x4c, 0x4a, 0xd0, 0xa9, 0x6e, 0x1a, 0xc8, 0x42,
960 0xe5, 0x31, 0x8c, 0xc2, 0x3c, 0x06, 0x2a, 0x8c,
961 0xa1, 0x71, 0xb8, 0xd5, 0x75, 0x98, 0x0d, 0xde,
962 0x7f, 0xc5, 0x6f, 0x15, 0x36, 0x52, 0x38, 0x20,
963 0xd4, 0x31, 0x92, 0xbf, 0xd5, 0x1e, 0x8e, 0x22,
964 0x89, 0x78, 0xac, 0xa5, 0xb9, 0x44, 0x72, 0xf3,
965 0x39, 0xca, 0xeb, 0x99, 0x31, 0xb4, 0x2b, 0xe3,
966 0x01, 0x26, 0x8b, 0xc9, 0x97, 0x89, 0xc9, 0xb2,
967 0x55, 0x71, 0xc3, 0xc0, 0xe4, 0xcb, 0x3f, 0x00,
968 0x7f, 0x1a, 0x51, 0x1c, 0xbb, 0x53, 0xc8, 0x51,
969 0x9c, 0xdd, 0x13, 0x02, 0xab, 0xca, 0x6c, 0x0f,
970 0x34, 0xf9, 0x67, 0x39, 0xf1, 0x7f, 0xf4, 0x8b
971 };
972
973 static const unsigned char dh_secret_expected[] = {
974 0x08, 0xff, 0x33, 0xbb, 0x2e, 0xcf, 0xf4, 0x9a,
975 0x7d, 0x4a, 0x79, 0x12, 0xae, 0xb1, 0xbb, 0x6a,
976 0xb5, 0x11, 0x64, 0x1b, 0x4a, 0x76, 0x77, 0x0c,
977 0x8c, 0xc1, 0xbc, 0xc2, 0x33, 0x34, 0x3d, 0xfe,
978 0x70, 0x0d, 0x11, 0x81, 0x3d, 0x2c, 0x9e, 0xd2,
979 0x3b, 0x21, 0x1c, 0xa9, 0xe8, 0x78, 0x69, 0x21,
980 0xed, 0xca, 0x28, 0x3c, 0x68, 0xb1, 0x61, 0x53,
981 0xfa, 0x01, 0xe9, 0x1a, 0xb8, 0x2c, 0x90, 0xdd,
982 0xab, 0x4a, 0x95, 0x81, 0x67, 0x70, 0xa9, 0x87,
983 0x10, 0xe1, 0x4c, 0x92, 0xab, 0x83, 0xb6, 0xe4,
984 0x6e, 0x1e, 0x42, 0x6e, 0xe8, 0x52, 0x43, 0x0d,
985 0x61, 0x87, 0xda, 0xa3, 0x72, 0x0a, 0x6b, 0xcd,
986 0x73, 0x23, 0x5c, 0x6b, 0x0f, 0x94, 0x1f, 0x33,
987 0x64, 0xf5, 0x04, 0x20, 0x55, 0x1a, 0x4b, 0xfe,
988 0xaf, 0xe2, 0xbc, 0x43, 0x85, 0x05, 0xa5, 0x9a,
989 0x4a, 0x40, 0xda, 0xca, 0x7a, 0x89, 0x5a, 0x73,
990 0xdb, 0x57, 0x5c, 0x74, 0xc1, 0x3a, 0x23, 0xad,
991 0x88, 0x32, 0x95, 0x7d, 0x58, 0x2d, 0x38, 0xf0,
992 0xa6, 0x16, 0x5f, 0xb0, 0xd7, 0xe9, 0xb8, 0x79,
993 0x9e, 0x42, 0xfd, 0x32, 0x20, 0xe3, 0x32, 0xe9,
994 0x81, 0x85, 0xa0, 0xc9, 0x42, 0x97, 0x57, 0xb2,
995 0xd0, 0xd0, 0x2c, 0x17, 0xdb, 0xaa, 0x1f, 0xf6,
996 0xed, 0x93, 0xd7, 0xe7, 0x3e, 0x24, 0x1e, 0xae,
997 0xd9, 0x0c, 0xaf, 0x39, 0x4d, 0x2b, 0xc6, 0x57,
998 0x0f, 0x18, 0xc8, 0x1f, 0x2b, 0xe5, 0xd0, 0x1a,
999 0x2c, 0xa9, 0x9f, 0xf1, 0x42, 0xb5, 0xd9, 0x63,
1000 0xf9, 0xf5, 0x00, 0x32, 0x5e, 0x75, 0x56, 0xf9,
1001 0x58, 0x49, 0xb3, 0xff, 0xc7, 0x47, 0x94, 0x86,
1002 0xbe, 0x1d, 0x45, 0x96, 0xa3, 0x10, 0x6b, 0xd5,
1003 0xcb, 0x4f, 0x61, 0xc5, 0x7e, 0xc5, 0xf1, 0x00,
1004 0xfb, 0x7a, 0x0c, 0x82, 0xa1, 0x0b, 0x82, 0x52,
1005 0x6a, 0x97, 0xd1, 0xd9, 0x7d, 0x98, 0xea, 0xf6
1006 };
1007
1008 static const ST_KAT_PARAM dh_group[] = {
1009 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_P, dh_p),
1010 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_Q, dh_q),
1011 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_G, dh_g),
1012 ST_KAT_PARAM_END()
1013 };
1014
1015 /* The host's private key */
1016 static const ST_KAT_PARAM dh_host_key[] = {
1017 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PUB_KEY, dh_pub),
1018 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, dh_priv),
1019 ST_KAT_PARAM_END()
1020 };
1021
1022 /* The peer's public key */
1023 static const ST_KAT_PARAM dh_peer_key[] = {
1024 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PUB_KEY, dh_peer_pub),
1025 ST_KAT_PARAM_END()
1026 };
1027 #endif /* OPENSSL_NO_DH */
1028
1029
1030 #ifndef OPENSSL_NO_EC
1031 static const char ecdh_curve_name[] = "prime256v1";
1032 static const unsigned char ecdh_privd[] = {
1033 0x33, 0xd0, 0x43, 0x83, 0xa9, 0x89, 0x56, 0x03,
1034 0xd2, 0xd7, 0xfe, 0x6b, 0x01, 0x6f, 0xe4, 0x59,
1035 0xcc, 0x0d, 0x9a, 0x24, 0x6c, 0x86, 0x1b, 0x2e,
1036 0xdc, 0x4b, 0x4d, 0x35, 0x43, 0xe1, 0x1b, 0xad
1037 };
1038 static const unsigned char ecdh_pub[] = {
1039 0x04,
1040 0x1b, 0x93, 0x67, 0x55, 0x1c, 0x55, 0x9f, 0x63,
1041 0xd1, 0x22, 0xa4, 0xd8, 0xd1, 0x0a, 0x60, 0x6d,
1042 0x02, 0xa5, 0x77, 0x57, 0xc8, 0xa3, 0x47, 0x73,
1043 0x3a, 0x6a, 0x08, 0x28, 0x39, 0xbd, 0xc9, 0xd2,
1044 0x80, 0xec, 0xe9, 0xa7, 0x08, 0x29, 0x71, 0x2f,
1045 0xc9, 0x56, 0x82, 0xee, 0x9a, 0x85, 0x0f, 0x6d,
1046 0x7f, 0x59, 0x5f, 0x8c, 0xd1, 0x96, 0x0b, 0xdf,
1047 0x29, 0x3e, 0x49, 0x07, 0x88, 0x3f, 0x9a, 0x29
1048 };
1049 static const unsigned char ecdh_peer_pub[] = {
1050 0x04,
1051 0x1f, 0x72, 0xbd, 0x2a, 0x3e, 0xeb, 0x6c, 0x76,
1052 0xe5, 0x5d, 0x69, 0x75, 0x24, 0xbf, 0x2f, 0x5b,
1053 0x96, 0xb2, 0x91, 0x62, 0x06, 0x35, 0xcc, 0xb2,
1054 0x4b, 0x31, 0x1b, 0x0c, 0x6f, 0x06, 0x9f, 0x86,
1055 0xcf, 0xc8, 0xac, 0xd5, 0x4f, 0x4d, 0x77, 0xf3,
1056 0x70, 0x4a, 0x8f, 0x04, 0x9a, 0xb1, 0x03, 0xc7,
1057 0xeb, 0xd5, 0x94, 0x78, 0x61, 0xab, 0x78, 0x0c,
1058 0x4a, 0x2d, 0x6b, 0xf3, 0x2f, 0x2e, 0x4a, 0xbc
1059 };
1060
1061 static const ST_KAT_PARAM ecdh_group[] = {
1062 ST_KAT_PARAM_UTF8STRING(OSSL_PKEY_PARAM_GROUP_NAME, ecdh_curve_name),
1063 ST_KAT_PARAM_END()
1064 };
1065 static const ST_KAT_PARAM ecdh_host_key[] = {
1066 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecdh_pub),
1067 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, ecdh_privd),
1068 ST_KAT_PARAM_END()
1069 };
1070 static const ST_KAT_PARAM ecdh_peer_key[] = {
1071 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecdh_peer_pub),
1072 ST_KAT_PARAM_END()
1073 };
1074 static const unsigned char ecdh_secret_expected[] = {
1075 0x45, 0x2a, 0x2f, 0x0d, 0x24, 0xe6, 0x8d, 0xd0,
1076 0xda, 0x59, 0x7b, 0x0c, 0xec, 0x9b, 0x4c, 0x38,
1077 0x41, 0xdd, 0xce, 0xb3, 0xcc, 0xf1, 0x90, 0x8e,
1078 0x30, 0xdb, 0x5b, 0x5f, 0x97, 0xea, 0xe0, 0xc2
1079 };
1080 #endif /* OPENSSL_NO_EC */
1081
1082 #if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_EC)
1083 static const ST_KAT_KAS st_kat_kas_tests[] =
1084 {
1085 # ifndef OPENSSL_NO_DH
1086 {
1087 OSSL_SELF_TEST_DESC_KA_DH,
1088 "DH",
1089 dh_group,
1090 dh_host_key,
1091 dh_peer_key,
1092 ITM(dh_secret_expected)
1093 },
1094 # endif /* OPENSSL_NO_DH */
1095 # ifndef OPENSSL_NO_EC
1096 {
1097 OSSL_SELF_TEST_DESC_KA_ECDH,
1098 "EC",
1099 ecdh_group,
1100 ecdh_host_key,
1101 ecdh_peer_key,
1102 ITM(ecdh_secret_expected)
1103 },
1104 # endif /* OPENSSL_NO_EC */
1105 };
1106 #endif /* !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_EC) */
1107
1108 /* RSA key data */
1109 static const unsigned char rsa_n[] = {
1110 0xDB, 0x10, 0x1A, 0xC2, 0xA3, 0xF1, 0xDC, 0xFF,
1111 0x13, 0x6B, 0xED, 0x44, 0xDF, 0xF0, 0x02, 0x6D,
1112 0x13, 0xC7, 0x88, 0xDA, 0x70, 0x6B, 0x54, 0xF1,
1113 0xE8, 0x27, 0xDC, 0xC3, 0x0F, 0x99, 0x6A, 0xFA,
1114 0xC6, 0x67, 0xFF, 0x1D, 0x1E, 0x3C, 0x1D, 0xC1,
1115 0xB5, 0x5F, 0x6C, 0xC0, 0xB2, 0x07, 0x3A, 0x6D,
1116 0x41, 0xE4, 0x25, 0x99, 0xAC, 0xFC, 0xD2, 0x0F,
1117 0x02, 0xD3, 0xD1, 0x54, 0x06, 0x1A, 0x51, 0x77,
1118 0xBD, 0xB6, 0xBF, 0xEA, 0xA7, 0x5C, 0x06, 0xA9,
1119 0x5D, 0x69, 0x84, 0x45, 0xD7, 0xF5, 0x05, 0xBA,
1120 0x47, 0xF0, 0x1B, 0xD7, 0x2B, 0x24, 0xEC, 0xCB,
1121 0x9B, 0x1B, 0x10, 0x8D, 0x81, 0xA0, 0xBE, 0xB1,
1122 0x8C, 0x33, 0xE4, 0x36, 0xB8, 0x43, 0xEB, 0x19,
1123 0x2A, 0x81, 0x8D, 0xDE, 0x81, 0x0A, 0x99, 0x48,
1124 0xB6, 0xF6, 0xBC, 0xCD, 0x49, 0x34, 0x3A, 0x8F,
1125 0x26, 0x94, 0xE3, 0x28, 0x82, 0x1A, 0x7C, 0x8F,
1126 0x59, 0x9F, 0x45, 0xE8, 0x5D, 0x1A, 0x45, 0x76,
1127 0x04, 0x56, 0x05, 0xA1, 0xD0, 0x1B, 0x8C, 0x77,
1128 0x6D, 0xAF, 0x53, 0xFA, 0x71, 0xE2, 0x67, 0xE0,
1129 0x9A, 0xFE, 0x03, 0xA9, 0x85, 0xD2, 0xC9, 0xAA,
1130 0xBA, 0x2A, 0xBC, 0xF4, 0xA0, 0x08, 0xF5, 0x13,
1131 0x98, 0x13, 0x5D, 0xF0, 0xD9, 0x33, 0x34, 0x2A,
1132 0x61, 0xC3, 0x89, 0x55, 0xF0, 0xAE, 0x1A, 0x9C,
1133 0x22, 0xEE, 0x19, 0x05, 0x8D, 0x32, 0xFE, 0xEC,
1134 0x9C, 0x84, 0xBA, 0xB7, 0xF9, 0x6C, 0x3A, 0x4F,
1135 0x07, 0xFC, 0x45, 0xEB, 0x12, 0xE5, 0x7B, 0xFD,
1136 0x55, 0xE6, 0x29, 0x69, 0xD1, 0xC2, 0xE8, 0xB9,
1137 0x78, 0x59, 0xF6, 0x79, 0x10, 0xC6, 0x4E, 0xEB,
1138 0x6A, 0x5E, 0xB9, 0x9A, 0xC7, 0xC4, 0x5B, 0x63,
1139 0xDA, 0xA3, 0x3F, 0x5E, 0x92, 0x7A, 0x81, 0x5E,
1140 0xD6, 0xB0, 0xE2, 0x62, 0x8F, 0x74, 0x26, 0xC2,
1141 0x0C, 0xD3, 0x9A, 0x17, 0x47, 0xE6, 0x8E, 0xAB
1142 };
1143 static const unsigned char rsa_e[] = { 0x01, 0x00, 0x01 };
1144 static const unsigned char rsa_d[] = {
1145 0x52, 0x41, 0xF4, 0xDA, 0x7B, 0xB7, 0x59, 0x55,
1146 0xCA, 0xD4, 0x2F, 0x0F, 0x3A, 0xCB, 0xA4, 0x0D,
1147 0x93, 0x6C, 0xCC, 0x9D, 0xC1, 0xB2, 0xFB, 0xFD,
1148 0xAE, 0x40, 0x31, 0xAC, 0x69, 0x52, 0x21, 0x92,
1149 0xB3, 0x27, 0xDF, 0xEA, 0xEE, 0x2C, 0x82, 0xBB,
1150 0xF7, 0x40, 0x32, 0xD5, 0x14, 0xC4, 0x94, 0x12,
1151 0xEC, 0xB8, 0x1F, 0xCA, 0x59, 0xE3, 0xC1, 0x78,
1152 0xF3, 0x85, 0xD8, 0x47, 0xA5, 0xD7, 0x02, 0x1A,
1153 0x65, 0x79, 0x97, 0x0D, 0x24, 0xF4, 0xF0, 0x67,
1154 0x6E, 0x75, 0x2D, 0xBF, 0x10, 0x3D, 0xA8, 0x7D,
1155 0xEF, 0x7F, 0x60, 0xE4, 0xE6, 0x05, 0x82, 0x89,
1156 0x5D, 0xDF, 0xC6, 0xD2, 0x6C, 0x07, 0x91, 0x33,
1157 0x98, 0x42, 0xF0, 0x02, 0x00, 0x25, 0x38, 0xC5,
1158 0x85, 0x69, 0x8A, 0x7D, 0x2F, 0x95, 0x6C, 0x43,
1159 0x9A, 0xB8, 0x81, 0xE2, 0xD0, 0x07, 0x35, 0xAA,
1160 0x05, 0x41, 0xC9, 0x1E, 0xAF, 0xE4, 0x04, 0x3B,
1161 0x19, 0xB8, 0x73, 0xA2, 0xAC, 0x4B, 0x1E, 0x66,
1162 0x48, 0xD8, 0x72, 0x1F, 0xAC, 0xF6, 0xCB, 0xBC,
1163 0x90, 0x09, 0xCA, 0xEC, 0x0C, 0xDC, 0xF9, 0x2C,
1164 0xD7, 0xEB, 0xAE, 0xA3, 0xA4, 0x47, 0xD7, 0x33,
1165 0x2F, 0x8A, 0xCA, 0xBC, 0x5E, 0xF0, 0x77, 0xE4,
1166 0x97, 0x98, 0x97, 0xC7, 0x10, 0x91, 0x7D, 0x2A,
1167 0xA6, 0xFF, 0x46, 0x83, 0x97, 0xDE, 0xE9, 0xE2,
1168 0x17, 0x03, 0x06, 0x14, 0xE2, 0xD7, 0xB1, 0x1D,
1169 0x77, 0xAF, 0x51, 0x27, 0x5B, 0x5E, 0x69, 0xB8,
1170 0x81, 0xE6, 0x11, 0xC5, 0x43, 0x23, 0x81, 0x04,
1171 0x62, 0xFF, 0xE9, 0x46, 0xB8, 0xD8, 0x44, 0xDB,
1172 0xA5, 0xCC, 0x31, 0x54, 0x34, 0xCE, 0x3E, 0x82,
1173 0xD6, 0xBF, 0x7A, 0x0B, 0x64, 0x21, 0x6D, 0x88,
1174 0x7E, 0x5B, 0x45, 0x12, 0x1E, 0x63, 0x8D, 0x49,
1175 0xA7, 0x1D, 0xD9, 0x1E, 0x06, 0xCD, 0xE8, 0xBA,
1176 0x2C, 0x8C, 0x69, 0x32, 0xEA, 0xBE, 0x60, 0x71
1177 };
1178 static const unsigned char rsa_p[] = {
1179 0xFA, 0xAC, 0xE1, 0x37, 0x5E, 0x32, 0x11, 0x34,
1180 0xC6, 0x72, 0x58, 0x2D, 0x91, 0x06, 0x3E, 0x77,
1181 0xE7, 0x11, 0x21, 0xCD, 0x4A, 0xF8, 0xA4, 0x3F,
1182 0x0F, 0xEF, 0x31, 0xE3, 0xF3, 0x55, 0xA0, 0xB9,
1183 0xAC, 0xB6, 0xCB, 0xBB, 0x41, 0xD0, 0x32, 0x81,
1184 0x9A, 0x8F, 0x7A, 0x99, 0x30, 0x77, 0x6C, 0x68,
1185 0x27, 0xE2, 0x96, 0xB5, 0x72, 0xC9, 0xC3, 0xD4,
1186 0x42, 0xAA, 0xAA, 0xCA, 0x95, 0x8F, 0xFF, 0xC9,
1187 0x9B, 0x52, 0x34, 0x30, 0x1D, 0xCF, 0xFE, 0xCF,
1188 0x3C, 0x56, 0x68, 0x6E, 0xEF, 0xE7, 0x6C, 0xD7,
1189 0xFB, 0x99, 0xF5, 0x4A, 0xA5, 0x21, 0x1F, 0x2B,
1190 0xEA, 0x93, 0xE8, 0x98, 0x26, 0xC4, 0x6E, 0x42,
1191 0x21, 0x5E, 0xA0, 0xA1, 0x2A, 0x58, 0x35, 0xBB,
1192 0x10, 0xE7, 0xBA, 0x27, 0x0A, 0x3B, 0xB3, 0xAF,
1193 0xE2, 0x75, 0x36, 0x04, 0xAC, 0x56, 0xA0, 0xAB,
1194 0x52, 0xDE, 0xCE, 0xDD, 0x2C, 0x28, 0x77, 0x03
1195 };
1196 static const unsigned char rsa_q[] = {
1197 0xDF, 0xB7, 0x52, 0xB6, 0xD7, 0xC0, 0xE2, 0x96,
1198 0xE7, 0xC9, 0xFE, 0x5D, 0x71, 0x5A, 0xC4, 0x40,
1199 0x96, 0x2F, 0xE5, 0x87, 0xEA, 0xF3, 0xA5, 0x77,
1200 0x11, 0x67, 0x3C, 0x8D, 0x56, 0x08, 0xA7, 0xB5,
1201 0x67, 0xFA, 0x37, 0xA8, 0xB8, 0xCF, 0x61, 0xE8,
1202 0x63, 0xD8, 0x38, 0x06, 0x21, 0x2B, 0x92, 0x09,
1203 0xA6, 0x39, 0x3A, 0xEA, 0xA8, 0xB4, 0x45, 0x4B,
1204 0x36, 0x10, 0x4C, 0xE4, 0x00, 0x66, 0x71, 0x65,
1205 0xF8, 0x0B, 0x94, 0x59, 0x4F, 0x8C, 0xFD, 0xD5,
1206 0x34, 0xA2, 0xE7, 0x62, 0x84, 0x0A, 0xA7, 0xBB,
1207 0xDB, 0xD9, 0x8A, 0xCD, 0x05, 0xE1, 0xCC, 0x57,
1208 0x7B, 0xF1, 0xF1, 0x1F, 0x11, 0x9D, 0xBA, 0x3E,
1209 0x45, 0x18, 0x99, 0x1B, 0x41, 0x64, 0x43, 0xEE,
1210 0x97, 0x5D, 0x77, 0x13, 0x5B, 0x74, 0x69, 0x73,
1211 0x87, 0x95, 0x05, 0x07, 0xBE, 0x45, 0x07, 0x17,
1212 0x7E, 0x4A, 0x69, 0x22, 0xF3, 0xDB, 0x05, 0x39
1213 };
1214 static const unsigned char rsa_dp[] = {
1215 0x5E, 0xD8, 0xDC, 0xDA, 0x53, 0x44, 0xC4, 0x67,
1216 0xE0, 0x92, 0x51, 0x34, 0xE4, 0x83, 0xA5, 0x4D,
1217 0x3E, 0xDB, 0xA7, 0x9B, 0x82, 0xBB, 0x73, 0x81,
1218 0xFC, 0xE8, 0x77, 0x4B, 0x15, 0xBE, 0x17, 0x73,
1219 0x49, 0x9B, 0x5C, 0x98, 0xBC, 0xBD, 0x26, 0xEF,
1220 0x0C, 0xE9, 0x2E, 0xED, 0x19, 0x7E, 0x86, 0x41,
1221 0x1E, 0x9E, 0x48, 0x81, 0xDD, 0x2D, 0xE4, 0x6F,
1222 0xC2, 0xCD, 0xCA, 0x93, 0x9E, 0x65, 0x7E, 0xD5,
1223 0xEC, 0x73, 0xFD, 0x15, 0x1B, 0xA2, 0xA0, 0x7A,
1224 0x0F, 0x0D, 0x6E, 0xB4, 0x53, 0x07, 0x90, 0x92,
1225 0x64, 0x3B, 0x8B, 0xA9, 0x33, 0xB3, 0xC5, 0x94,
1226 0x9B, 0x4C, 0x5D, 0x9C, 0x7C, 0x46, 0xA4, 0xA5,
1227 0x56, 0xF4, 0xF3, 0xF8, 0x27, 0x0A, 0x7B, 0x42,
1228 0x0D, 0x92, 0x70, 0x47, 0xE7, 0x42, 0x51, 0xA9,
1229 0xC2, 0x18, 0xB1, 0x58, 0xB1, 0x50, 0x91, 0xB8,
1230 0x61, 0x41, 0xB6, 0xA9, 0xCE, 0xD4, 0x7C, 0xBB
1231 };
1232 static const unsigned char rsa_dq[] = {
1233 0x54, 0x09, 0x1F, 0x0F, 0x03, 0xD8, 0xB6, 0xC5,
1234 0x0C, 0xE8, 0xB9, 0x9E, 0x0C, 0x38, 0x96, 0x43,
1235 0xD4, 0xA6, 0xC5, 0x47, 0xDB, 0x20, 0x0E, 0xE5,
1236 0xBD, 0x29, 0xD4, 0x7B, 0x1A, 0xF8, 0x41, 0x57,
1237 0x49, 0x69, 0x9A, 0x82, 0xCC, 0x79, 0x4A, 0x43,
1238 0xEB, 0x4D, 0x8B, 0x2D, 0xF2, 0x43, 0xD5, 0xA5,
1239 0xBE, 0x44, 0xFD, 0x36, 0xAC, 0x8C, 0x9B, 0x02,
1240 0xF7, 0x9A, 0x03, 0xE8, 0x19, 0xA6, 0x61, 0xAE,
1241 0x76, 0x10, 0x93, 0x77, 0x41, 0x04, 0xAB, 0x4C,
1242 0xED, 0x6A, 0xCC, 0x14, 0x1B, 0x99, 0x8D, 0x0C,
1243 0x6A, 0x37, 0x3B, 0x86, 0x6C, 0x51, 0x37, 0x5B,
1244 0x1D, 0x79, 0xF2, 0xA3, 0x43, 0x10, 0xC6, 0xA7,
1245 0x21, 0x79, 0x6D, 0xF9, 0xE9, 0x04, 0x6A, 0xE8,
1246 0x32, 0xFF, 0xAE, 0xFD, 0x1C, 0x7B, 0x8C, 0x29,
1247 0x13, 0xA3, 0x0C, 0xB2, 0xAD, 0xEC, 0x6C, 0x0F,
1248 0x8D, 0x27, 0x12, 0x7B, 0x48, 0xB2, 0xDB, 0x31
1249 };
1250 static const unsigned char rsa_qInv[] = {
1251 0x8D, 0x1B, 0x05, 0xCA, 0x24, 0x1F, 0x0C, 0x53,
1252 0x19, 0x52, 0x74, 0x63, 0x21, 0xFA, 0x78, 0x46,
1253 0x79, 0xAF, 0x5C, 0xDE, 0x30, 0xA4, 0x6C, 0x20,
1254 0x38, 0xE6, 0x97, 0x39, 0xB8, 0x7A, 0x70, 0x0D,
1255 0x8B, 0x6C, 0x6D, 0x13, 0x74, 0xD5, 0x1C, 0xDE,
1256 0xA9, 0xF4, 0x60, 0x37, 0xFE, 0x68, 0x77, 0x5E,
1257 0x0B, 0x4E, 0x5E, 0x03, 0x31, 0x30, 0xDF, 0xD6,
1258 0xAE, 0x85, 0xD0, 0x81, 0xBB, 0x61, 0xC7, 0xB1,
1259 0x04, 0x5A, 0xC4, 0x6D, 0x56, 0x1C, 0xD9, 0x64,
1260 0xE7, 0x85, 0x7F, 0x88, 0x91, 0xC9, 0x60, 0x28,
1261 0x05, 0xE2, 0xC6, 0x24, 0x8F, 0xDD, 0x61, 0x64,
1262 0xD8, 0x09, 0xDE, 0x7E, 0xD3, 0x4A, 0x61, 0x1A,
1263 0xD3, 0x73, 0x58, 0x4B, 0xD8, 0xA0, 0x54, 0x25,
1264 0x48, 0x83, 0x6F, 0x82, 0x6C, 0xAF, 0x36, 0x51,
1265 0x2A, 0x5D, 0x14, 0x2F, 0x41, 0x25, 0x00, 0xDD,
1266 0xF8, 0xF3, 0x95, 0xFE, 0x31, 0x25, 0x50, 0x12
1267 };
1268
1269 static const ST_KAT_PARAM rsa_crt_key[] = {
1270 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_N, rsa_n),
1271 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_E, rsa_e),
1272 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_D, rsa_d),
1273 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_FACTOR, rsa_p),
1274 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_FACTOR, rsa_q),
1275 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_EXPONENT, rsa_dp),
1276 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_EXPONENT, rsa_dq),
1277 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_COEFFICIENT, rsa_qInv),
1278 ST_KAT_PARAM_END()
1279 };
1280
1281 static const ST_KAT_PARAM rsa_pub_key[] = {
1282 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_N, rsa_n),
1283 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_E, rsa_e),
1284 ST_KAT_PARAM_END()
1285 };
1286
1287 static const ST_KAT_PARAM rsa_priv_key[] = {
1288 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_N, rsa_n),
1289 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_E, rsa_e),
1290 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_RSA_D, rsa_d),
1291 ST_KAT_PARAM_END()
1292 };
1293
1294 /*-
1295 * Using OSSL_PKEY_RSA_PAD_MODE_NONE directly in the expansion of the
1296 * ST_KAT_PARAM_UTF8STRING macro below causes a failure on ancient
1297 * HP/UX PA-RISC compilers.
1298 */
1299 static const char pad_mode_none[] = OSSL_PKEY_RSA_PAD_MODE_NONE;
1300
1301 static const ST_KAT_PARAM rsa_enc_params[] = {
1302 ST_KAT_PARAM_UTF8STRING(OSSL_ASYM_CIPHER_PARAM_PAD_MODE, pad_mode_none),
1303 ST_KAT_PARAM_END()
1304 };
1305
1306 static const unsigned char rsa_expected_sig[256] = {
1307 0xad, 0xbe, 0x2a, 0xaf, 0x16, 0x85, 0xc5, 0x00,
1308 0x91, 0x3e, 0xd0, 0x49, 0xfb, 0x3a, 0x81, 0xb9,
1309 0x6c, 0x28, 0xbc, 0xbf, 0xea, 0x96, 0x5f, 0xe4,
1310 0x9f, 0x99, 0xf7, 0x18, 0x8c, 0xec, 0x60, 0x28,
1311 0xeb, 0x29, 0x02, 0x49, 0xfc, 0xda, 0xd7, 0x78,
1312 0x68, 0xf8, 0xe1, 0xe9, 0x4d, 0x20, 0x6d, 0x32,
1313 0xa6, 0xde, 0xfc, 0xe4, 0xda, 0xcc, 0x6c, 0x75,
1314 0x36, 0x6b, 0xff, 0x5a, 0xac, 0x01, 0xa8, 0xc2,
1315 0xa9, 0xe6, 0x8b, 0x18, 0x3e, 0xec, 0xea, 0x4c,
1316 0x4a, 0x9e, 0x00, 0x09, 0xd1, 0x8a, 0x69, 0x1b,
1317 0x8b, 0xd9, 0xad, 0x37, 0xe5, 0x7c, 0xff, 0x7d,
1318 0x59, 0x56, 0x3e, 0xa0, 0xc6, 0x32, 0xd8, 0x35,
1319 0x2f, 0xff, 0xfb, 0x05, 0x02, 0xcd, 0xd7, 0x19,
1320 0xb9, 0x00, 0x86, 0x2a, 0xcf, 0xaa, 0x78, 0x16,
1321 0x4b, 0xf1, 0xa7, 0x59, 0xef, 0x7d, 0xe8, 0x74,
1322 0x23, 0x5c, 0xb2, 0xd4, 0x8a, 0x99, 0xa5, 0xbc,
1323 0xfa, 0x63, 0xd8, 0xf7, 0xbd, 0xc6, 0x00, 0x13,
1324 0x06, 0x02, 0x9a, 0xd4, 0xa7, 0xb4, 0x3d, 0x61,
1325 0xab, 0xf1, 0xc2, 0x95, 0x59, 0x9b, 0x3d, 0x67,
1326 0x1f, 0xde, 0x57, 0xb6, 0xb6, 0x9f, 0xb0, 0x87,
1327 0xd6, 0x51, 0xd5, 0x3e, 0x00, 0xe2, 0xc9, 0xa0,
1328 0x03, 0x66, 0xbc, 0x01, 0xb3, 0x8e, 0xfa, 0xf1,
1329 0x15, 0xeb, 0x26, 0xf1, 0x5d, 0x81, 0x90, 0xb4,
1330 0x1c, 0x00, 0x7c, 0x83, 0x4a, 0xa5, 0xde, 0x64,
1331 0xae, 0xea, 0x6c, 0x43, 0xc3, 0x20, 0x77, 0x77,
1332 0x42, 0x12, 0x24, 0xf5, 0xe3, 0x70, 0xdd, 0x59,
1333 0x48, 0x9c, 0xef, 0xd4, 0x8a, 0x3c, 0x29, 0x6a,
1334 0x0c, 0x9c, 0xf2, 0x13, 0xa4, 0x1c, 0x2f, 0x49,
1335 0xcd, 0xb4, 0xaa, 0x28, 0x40, 0x34, 0xc6, 0x75,
1336 0xba, 0x30, 0xe6, 0xd8, 0x5b, 0x2f, 0x08, 0xd0,
1337 0x29, 0xa5, 0x39, 0xfb, 0x6e, 0x3b, 0x0f, 0x52,
1338 0x2c, 0x68, 0xf0, 0x37, 0xa9, 0xd2, 0x56, 0xd6
1339 };
1340
1341 static const unsigned char rsa_asym_plaintext_encrypt[256] = {
1342 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
1343 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
1344 };
1345 static const unsigned char rsa_asym_expected_encrypt[256] = {
1346 0x54, 0xac, 0x23, 0x96, 0x1d, 0x82, 0x5d, 0x8b,
1347 0x8f, 0x36, 0x33, 0xd0, 0xf4, 0x02, 0xa2, 0x61,
1348 0xb1, 0x13, 0xd4, 0x4a, 0x46, 0x06, 0x37, 0x3c,
1349 0xbf, 0x40, 0x05, 0x3c, 0xc6, 0x3b, 0x64, 0xdc,
1350 0x22, 0x22, 0xaf, 0x36, 0x79, 0x62, 0x45, 0xf0,
1351 0x97, 0x82, 0x22, 0x44, 0x86, 0x4a, 0x7c, 0xfa,
1352 0xac, 0x03, 0x21, 0x84, 0x3f, 0x31, 0xad, 0x2a,
1353 0xa4, 0x6e, 0x7a, 0xc5, 0x93, 0xf3, 0x0f, 0xfc,
1354 0xf1, 0x62, 0xce, 0x82, 0x12, 0x45, 0xc9, 0x35,
1355 0xb0, 0x7a, 0xcd, 0x99, 0x8c, 0x91, 0x6b, 0x5a,
1356 0xd3, 0x46, 0xdb, 0xf9, 0x9e, 0x52, 0x49, 0xbd,
1357 0x1e, 0xe8, 0xda, 0xac, 0x61, 0x47, 0xc2, 0xda,
1358 0xfc, 0x1e, 0xfb, 0x74, 0xd7, 0xd6, 0xc1, 0x18,
1359 0x86, 0x3e, 0x20, 0x9c, 0x7a, 0xe1, 0x04, 0xb7,
1360 0x38, 0x43, 0xb1, 0x4e, 0xa0, 0xd8, 0xc1, 0x39,
1361 0x4d, 0xe1, 0xd3, 0xb0, 0xb3, 0xf1, 0x82, 0x87,
1362 0x1f, 0x74, 0xb5, 0x69, 0xfd, 0x33, 0xd6, 0x21,
1363 0x7c, 0x61, 0x60, 0x28, 0xca, 0x70, 0xdb, 0xa0,
1364 0xbb, 0xc8, 0x73, 0xa9, 0x82, 0xf8, 0x6b, 0xd8,
1365 0xf0, 0xc9, 0x7b, 0x20, 0xdf, 0x9d, 0xfb, 0x8c,
1366 0xd4, 0xa2, 0x89, 0xe1, 0x9b, 0x04, 0xad, 0xaa,
1367 0x11, 0x6c, 0x8f, 0xce, 0x83, 0x29, 0x56, 0x69,
1368 0xbb, 0x00, 0x3b, 0xef, 0xca, 0x2d, 0xcd, 0x52,
1369 0xc8, 0xf1, 0xb3, 0x9b, 0xb4, 0x4f, 0x6d, 0x9c,
1370 0x3d, 0x69, 0xcc, 0x6d, 0x1f, 0x38, 0x4d, 0xe6,
1371 0xbb, 0x0c, 0x87, 0xdc, 0x5f, 0xa9, 0x24, 0x93,
1372 0x03, 0x46, 0xa2, 0x33, 0x6c, 0xf4, 0xd8, 0x5d,
1373 0x68, 0xf3, 0xd3, 0xe0, 0xf2, 0x30, 0xdb, 0xf5,
1374 0x4f, 0x0f, 0xad, 0xc7, 0xd0, 0xaa, 0x47, 0xd9,
1375 0x9f, 0x85, 0x1b, 0x2e, 0x6c, 0x3c, 0x57, 0x04,
1376 0x29, 0xf4, 0xf5, 0x66, 0x7d, 0x93, 0x4a, 0xaa,
1377 0x05, 0x52, 0x55, 0xc1, 0xc6, 0x06, 0x90, 0xab,
1378 };
1379
1380 #ifndef OPENSSL_NO_EC
1381 /* ECDSA key data */
1382 static const char ecd_prime_curve_name[] = "secp224r1";
1383 static const unsigned char ecd_prime_priv[] = {
1384 0x98, 0x1f, 0xb5, 0xf1, 0xfc, 0x87, 0x1d, 0x7d,
1385 0xde, 0x1e, 0x01, 0x64, 0x09, 0x9b, 0xe7, 0x1b,
1386 0x9f, 0xad, 0x63, 0xdd, 0x33, 0x01, 0xd1, 0x50,
1387 0x80, 0x93, 0x50, 0x30
1388 };
1389 static const unsigned char ecd_prime_pub[] = {
1390 0x04, 0x95, 0x47, 0x99, 0x44, 0x29, 0x8f, 0x51,
1391 0x39, 0xe2, 0x53, 0xec, 0x79, 0xb0, 0x4d, 0xde,
1392 0x87, 0x1a, 0x76, 0x54, 0xd5, 0x96, 0xb8, 0x7a,
1393 0x6d, 0xf4, 0x1c, 0x2c, 0x87, 0x91, 0x5f, 0xd5,
1394 0x31, 0xdd, 0x24, 0xe5, 0x78, 0xd9, 0x08, 0x24,
1395 0x8a, 0x49, 0x99, 0xec, 0x55, 0xf2, 0x82, 0xb3,
1396 0xc4, 0xb7, 0x33, 0x68, 0xe4, 0x24, 0xa9, 0x12,
1397 0x82
1398 };
1399 static const ST_KAT_PARAM ecdsa_prime_key[] = {
1400 ST_KAT_PARAM_UTF8STRING(OSSL_PKEY_PARAM_GROUP_NAME, ecd_prime_curve_name),
1401 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecd_prime_pub),
1402 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, ecd_prime_priv),
1403 ST_KAT_PARAM_END()
1404 };
1405
1406 # ifndef OPENSSL_NO_EC2M
1407 static const char ecd_bin_curve_name[] = "sect233r1";
1408 static const unsigned char ecd_bin_priv[] = {
1409 0x00, 0x6d, 0xd6, 0x39, 0x9d, 0x2a, 0xa2, 0xc8,
1410 0x8c, 0xfc, 0x7b, 0x80, 0x66, 0xaa, 0xe1, 0xaa,
1411 0xba, 0xee, 0xcb, 0xfd, 0xc9, 0xe5, 0x36, 0x38,
1412 0x2e, 0xf7, 0x37, 0x6d, 0xd3, 0x20
1413 };
1414 static const unsigned char ecd_bin_pub[] = {
1415 0x04, 0x00, 0x06, 0xe2, 0x56, 0xf7, 0x37, 0xf9,
1416 0xea, 0xb6, 0xd1, 0x0f, 0x59, 0xfa, 0x23, 0xc3,
1417 0x93, 0xa8, 0xb2, 0x26, 0xe2, 0x5c, 0x08, 0xbe,
1418 0x63, 0x49, 0x26, 0xdc, 0xc7, 0x1e, 0x6f, 0x01,
1419 0x32, 0x3b, 0xe6, 0x54, 0x8d, 0xc1, 0x13, 0x3e,
1420 0x54, 0xb2, 0x66, 0x89, 0xb2, 0x82, 0x0a, 0x72,
1421 0x02, 0xa8, 0xe9, 0x6f, 0x54, 0xfd, 0x3a, 0x6b,
1422 0x99, 0xb6, 0x8f, 0x80, 0x46
1423 };
1424 static const ST_KAT_PARAM ecdsa_bin_key[] = {
1425 ST_KAT_PARAM_UTF8STRING(OSSL_PKEY_PARAM_GROUP_NAME, ecd_bin_curve_name),
1426 ST_KAT_PARAM_OCTET(OSSL_PKEY_PARAM_PUB_KEY, ecd_bin_pub),
1427 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, ecd_bin_priv),
1428 ST_KAT_PARAM_END()
1429 };
1430 # endif /* OPENSSL_NO_EC2M */
1431 #endif /* OPENSSL_NO_EC */
1432
1433 #ifndef OPENSSL_NO_DSA
1434 /* dsa 2048 */
1435 static const unsigned char dsa_p[] = {
1436 0xa2, 0x9b, 0x88, 0x72, 0xce, 0x8b, 0x84, 0x23,
1437 0xb7, 0xd5, 0xd2, 0x1d, 0x4b, 0x02, 0xf5, 0x7e,
1438 0x03, 0xe9, 0xe6, 0xb8, 0xa2, 0x58, 0xdc, 0x16,
1439 0x61, 0x1b, 0xa0, 0x98, 0xab, 0x54, 0x34, 0x15,
1440 0xe4, 0x15, 0xf1, 0x56, 0x99, 0x7a, 0x3e, 0xe2,
1441 0x36, 0x65, 0x8f, 0xa0, 0x93, 0x26, 0x0d, 0xe3,
1442 0xad, 0x42, 0x2e, 0x05, 0xe0, 0x46, 0xf9, 0xec,
1443 0x29, 0x16, 0x1a, 0x37, 0x5f, 0x0e, 0xb4, 0xef,
1444 0xfc, 0xef, 0x58, 0x28, 0x5c, 0x5d, 0x39, 0xed,
1445 0x42, 0x5d, 0x7a, 0x62, 0xca, 0x12, 0x89, 0x6c,
1446 0x4a, 0x92, 0xcb, 0x19, 0x46, 0xf2, 0x95, 0x2a,
1447 0x48, 0x13, 0x3f, 0x07, 0xda, 0x36, 0x4d, 0x1b,
1448 0xdf, 0x6b, 0x0f, 0x71, 0x39, 0x98, 0x3e, 0x69,
1449 0x3c, 0x80, 0x05, 0x9b, 0x0e, 0xac, 0xd1, 0x47,
1450 0x9b, 0xa9, 0xf2, 0x85, 0x77, 0x54, 0xed, 0xe7,
1451 0x5f, 0x11, 0x2b, 0x07, 0xeb, 0xbf, 0x35, 0x34,
1452 0x8b, 0xbf, 0x3e, 0x01, 0xe0, 0x2f, 0x2d, 0x47,
1453 0x3d, 0xe3, 0x94, 0x53, 0xf9, 0x9d, 0xd2, 0x36,
1454 0x75, 0x41, 0xca, 0xca, 0x3b, 0xa0, 0x11, 0x66,
1455 0x34, 0x3d, 0x7b, 0x5b, 0x58, 0xa3, 0x7b, 0xd1,
1456 0xb7, 0x52, 0x1d, 0xb2, 0xf1, 0x3b, 0x86, 0x70,
1457 0x71, 0x32, 0xfe, 0x09, 0xf4, 0xcd, 0x09, 0xdc,
1458 0x16, 0x18, 0xfa, 0x34, 0x01, 0xeb, 0xf9, 0xcc,
1459 0x7b, 0x19, 0xfa, 0x94, 0xaa, 0x47, 0x20, 0x88,
1460 0x13, 0x3d, 0x6c, 0xb2, 0xd3, 0x5c, 0x11, 0x79,
1461 0xc8, 0xc8, 0xff, 0x36, 0x87, 0x58, 0xd5, 0x07,
1462 0xd9, 0xf9, 0xa1, 0x7d, 0x46, 0xc1, 0x10, 0xfe,
1463 0x31, 0x44, 0xce, 0x9b, 0x02, 0x2b, 0x42, 0xe4,
1464 0x19, 0xeb, 0x4f, 0x53, 0x88, 0x61, 0x3b, 0xfc,
1465 0x3e, 0x26, 0x24, 0x1a, 0x43, 0x2e, 0x87, 0x06,
1466 0xbc, 0x58, 0xef, 0x76, 0x11, 0x72, 0x78, 0xde,
1467 0xab, 0x6c, 0xf6, 0x92, 0x61, 0x82, 0x91, 0xb7
1468 };
1469 static const unsigned char dsa_q[] = {
1470 0xa3, 0xbf, 0xd9, 0xab, 0x78, 0x84, 0x79, 0x4e,
1471 0x38, 0x34, 0x50, 0xd5, 0x89, 0x1d, 0xc1, 0x8b,
1472 0x65, 0x15, 0x7b, 0xdc, 0xfc, 0xda, 0xc5, 0x15,
1473 0x18, 0x90, 0x28, 0x67
1474 };
1475 static const unsigned char dsa_g[] = {
1476 0x68, 0x19, 0x27, 0x88, 0x69, 0xc7, 0xfd, 0x3d,
1477 0x2d, 0x7b, 0x77, 0xf7, 0x7e, 0x81, 0x50, 0xd9,
1478 0xad, 0x43, 0x3b, 0xea, 0x3b, 0xa8, 0x5e, 0xfc,
1479 0x80, 0x41, 0x5a, 0xa3, 0x54, 0x5f, 0x78, 0xf7,
1480 0x22, 0x96, 0xf0, 0x6c, 0xb1, 0x9c, 0xed, 0xa0,
1481 0x6c, 0x94, 0xb0, 0x55, 0x1c, 0xfe, 0x6e, 0x6f,
1482 0x86, 0x3e, 0x31, 0xd1, 0xde, 0x6e, 0xed, 0x7d,
1483 0xab, 0x8b, 0x0c, 0x9d, 0xf2, 0x31, 0xe0, 0x84,
1484 0x34, 0xd1, 0x18, 0x4f, 0x91, 0xd0, 0x33, 0x69,
1485 0x6b, 0xb3, 0x82, 0xf8, 0x45, 0x5e, 0x98, 0x88,
1486 0xf5, 0xd3, 0x1d, 0x47, 0x84, 0xec, 0x40, 0x12,
1487 0x02, 0x46, 0xf4, 0xbe, 0xa6, 0x17, 0x94, 0xbb,
1488 0xa5, 0x86, 0x6f, 0x09, 0x74, 0x64, 0x63, 0xbd,
1489 0xf8, 0xe9, 0xe1, 0x08, 0xcd, 0x95, 0x29, 0xc3,
1490 0xd0, 0xf6, 0xdf, 0x80, 0x31, 0x6e, 0x2e, 0x70,
1491 0xaa, 0xeb, 0x1b, 0x26, 0xcd, 0xb8, 0xad, 0x97,
1492 0xbc, 0x3d, 0x28, 0x7e, 0x0b, 0x8d, 0x61, 0x6c,
1493 0x42, 0xe6, 0x5b, 0x87, 0xdb, 0x20, 0xde, 0xb7,
1494 0x00, 0x5b, 0xc4, 0x16, 0x74, 0x7a, 0x64, 0x70,
1495 0x14, 0x7a, 0x68, 0xa7, 0x82, 0x03, 0x88, 0xeb,
1496 0xf4, 0x4d, 0x52, 0xe0, 0x62, 0x8a, 0xf9, 0xcf,
1497 0x1b, 0x71, 0x66, 0xd0, 0x34, 0x65, 0xf3, 0x5a,
1498 0xcc, 0x31, 0xb6, 0x11, 0x0c, 0x43, 0xda, 0xbc,
1499 0x7c, 0x5d, 0x59, 0x1e, 0x67, 0x1e, 0xaf, 0x7c,
1500 0x25, 0x2c, 0x1c, 0x14, 0x53, 0x36, 0xa1, 0xa4,
1501 0xdd, 0xf1, 0x32, 0x44, 0xd5, 0x5e, 0x83, 0x56,
1502 0x80, 0xca, 0xb2, 0x53, 0x3b, 0x82, 0xdf, 0x2e,
1503 0xfe, 0x55, 0xec, 0x18, 0xc1, 0xe6, 0xcd, 0x00,
1504 0x7b, 0xb0, 0x89, 0x75, 0x8b, 0xb1, 0x7c, 0x2c,
1505 0xbe, 0x14, 0x44, 0x1b, 0xd0, 0x93, 0xae, 0x66,
1506 0xe5, 0x97, 0x6d, 0x53, 0x73, 0x3f, 0x4f, 0xa3,
1507 0x26, 0x97, 0x01, 0xd3, 0x1d, 0x23, 0xd4, 0x67
1508 };
1509 static const unsigned char dsa_pub[] = {
1510 0xa0, 0x12, 0xb3, 0xb1, 0x70, 0xb3, 0x07, 0x22,
1511 0x79, 0x57, 0xb7, 0xca, 0x20, 0x61, 0xa8, 0x16,
1512 0xac, 0x7a, 0x2b, 0x3d, 0x9a, 0xe9, 0x95, 0xa5,
1513 0x11, 0x9c, 0x38, 0x5b, 0x60, 0x3b, 0xf6, 0xf6,
1514 0xc5, 0xde, 0x4d, 0xc5, 0xec, 0xb5, 0xdf, 0xa4,
1515 0xa4, 0x1c, 0x68, 0x66, 0x2e, 0xb2, 0x5b, 0x63,
1516 0x8b, 0x7e, 0x26, 0x20, 0xba, 0x89, 0x8d, 0x07,
1517 0xda, 0x6c, 0x49, 0x91, 0xe7, 0x6c, 0xc0, 0xec,
1518 0xd1, 0xad, 0x34, 0x21, 0x07, 0x70, 0x67, 0xe4,
1519 0x7c, 0x18, 0xf5, 0x8a, 0x92, 0xa7, 0x2a, 0xd4,
1520 0x31, 0x99, 0xec, 0xb7, 0xbd, 0x84, 0xe7, 0xd3,
1521 0xaf, 0xb9, 0x01, 0x9f, 0x0e, 0x9d, 0xd0, 0xfb,
1522 0xaa, 0x48, 0x73, 0x00, 0xb1, 0x30, 0x81, 0xe3,
1523 0x3c, 0x90, 0x28, 0x76, 0x43, 0x6f, 0x7b, 0x03,
1524 0xc3, 0x45, 0x52, 0x84, 0x81, 0xd3, 0x62, 0x81,
1525 0x5e, 0x24, 0xfe, 0x59, 0xda, 0xc5, 0xac, 0x34,
1526 0x66, 0x0d, 0x4c, 0x8a, 0x76, 0xcb, 0x99, 0xa7,
1527 0xc7, 0xde, 0x93, 0xeb, 0x95, 0x6c, 0xd6, 0xbc,
1528 0x88, 0xe5, 0x8d, 0x90, 0x10, 0x34, 0x94, 0x4a,
1529 0x09, 0x4b, 0x01, 0x80, 0x3a, 0x43, 0xc6, 0x72,
1530 0xb9, 0x68, 0x8c, 0x0e, 0x01, 0xd8, 0xf4, 0xfc,
1531 0x91, 0xc6, 0x2a, 0x3f, 0x88, 0x02, 0x1f, 0x7b,
1532 0xd6, 0xa6, 0x51, 0xb1, 0xa8, 0x8f, 0x43, 0xaa,
1533 0x4e, 0xf2, 0x76, 0x53, 0xd1, 0x2b, 0xf8, 0xb7,
1534 0x09, 0x9f, 0xdf, 0x6b, 0x46, 0x10, 0x82, 0xf8,
1535 0xe9, 0x39, 0x10, 0x7b, 0xfd, 0x2f, 0x72, 0x10,
1536 0x08, 0x7d, 0x32, 0x6c, 0x37, 0x52, 0x00, 0xf1,
1537 0xf5, 0x1e, 0x7e, 0x74, 0xa3, 0x41, 0x31, 0x90,
1538 0x1b, 0xcd, 0x08, 0x63, 0x52, 0x1f, 0xf8, 0xd6,
1539 0x76, 0xc4, 0x85, 0x81, 0x86, 0x87, 0x36, 0xc5,
1540 0xe5, 0x1b, 0x16, 0xa4, 0xe3, 0x92, 0x15, 0xea,
1541 0x0b, 0x17, 0xc4, 0x73, 0x59, 0x74, 0xc5, 0x16
1542 };
1543 static const unsigned char dsa_priv[] = {
1544 0x6c, 0xca, 0xee, 0xf6, 0xd7, 0x3b, 0x4e, 0x80,
1545 0xf1, 0x1c, 0x17, 0xb8, 0xe9, 0x62, 0x7c, 0x03,
1546 0x66, 0x35, 0xba, 0xc3, 0x94, 0x23, 0x50, 0x5e,
1547 0x40, 0x7e, 0x5c, 0xb7
1548 };
1549
1550 static const ST_KAT_PARAM dsa_key[] = {
1551 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_P, dsa_p),
1552 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_Q, dsa_q),
1553 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_FFC_G, dsa_g),
1554 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PUB_KEY, dsa_pub),
1555 ST_KAT_PARAM_BIGNUM(OSSL_PKEY_PARAM_PRIV_KEY, dsa_priv),
1556 ST_KAT_PARAM_END()
1557 };
1558 #endif /* OPENSSL_NO_DSA */
1559
1560 static const ST_KAT_SIGN st_kat_sign_tests[] = {
1561 {
1562 OSSL_SELF_TEST_DESC_SIGN_RSA,
1563 "RSA",
1564 "SHA-256",
1565 rsa_crt_key,
1566 ITM(rsa_expected_sig)
1567 },
1568 #ifndef OPENSSL_NO_EC
1569 {
1570 OSSL_SELF_TEST_DESC_SIGN_ECDSA,
1571 "EC",
1572 "SHA-256",
1573 ecdsa_prime_key,
1574 /*
1575 * The ECDSA signature changes each time due to it using a random k.
1576 * So there is no expected KAT for this case.
1577 */
1578 },
1579 # ifndef OPENSSL_NO_EC2M
1580 {
1581 OSSL_SELF_TEST_DESC_SIGN_ECDSA,
1582 "EC",
1583 "SHA-256",
1584 ecdsa_bin_key,
1585 /*
1586 * The ECDSA signature changes each time due to it using a random k.
1587 * So there is no expected KAT for this case.
1588 */
1589 },
1590 # endif
1591 #endif /* OPENSSL_NO_EC */
1592 #ifndef OPENSSL_NO_DSA
1593 {
1594 OSSL_SELF_TEST_DESC_SIGN_DSA,
1595 "DSA",
1596 "SHA-256",
1597 dsa_key,
1598 /*
1599 * The DSA signature changes each time due to it using a random k.
1600 * So there is no expected KAT for this case.
1601 */
1602 },
1603 #endif /* OPENSSL_NO_DSA */
1604 };
1605
1606 static const ST_KAT_ASYM_CIPHER st_kat_asym_cipher_tests[] = {
1607 {
1608 OSSL_SELF_TEST_DESC_ASYM_RSA_ENC,
1609 "RSA",
1610 1,
1611 rsa_pub_key,
1612 rsa_enc_params,
1613 ITM(rsa_asym_plaintext_encrypt),
1614 ITM(rsa_asym_expected_encrypt),
1615 },
1616 {
1617 OSSL_SELF_TEST_DESC_ASYM_RSA_DEC,
1618 "RSA",
1619 0,
1620 rsa_priv_key,
1621 rsa_enc_params,
1622 ITM(rsa_asym_expected_encrypt),
1623 ITM(rsa_asym_plaintext_encrypt),
1624 },
1625 {
1626 OSSL_SELF_TEST_DESC_ASYM_RSA_DEC,
1627 "RSA",
1628 0,
1629 rsa_crt_key,
1630 rsa_enc_params,
1631 ITM(rsa_asym_expected_encrypt),
1632 ITM(rsa_asym_plaintext_encrypt),
1633 },
1634 };