xref: /freebsd/crypto/openssl/test/acvp_test.inc (revision 3f0efe05432b1633991114ca4ca330102a561959)
1/*
2 * Copyright 2020 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#define PASS 1
11#define FAIL 0
12#define ITM(x) x, sizeof(x)
13
14#ifndef OPENSSL_NO_EC
15
16struct ecdsa_keygen_st {
17    const char *curve_name;
18};
19
20struct ecdsa_pub_verify_st {
21    const char *curve_name;
22    const unsigned char *pub;
23    size_t pub_len;
24    int pass;
25};
26
27struct ecdsa_siggen_st {
28    const char *digest_alg;
29    const char *curve_name;
30    const unsigned char *msg;
31    size_t msg_len;
32};
33
34struct ecdsa_sigver_st {
35    const char *digest_alg;
36    const char *curve_name;
37    const unsigned char *msg;
38    size_t msg_len;
39    const unsigned char *pub;
40    size_t pub_len;
41    const unsigned char *r;
42    size_t r_len;
43    const unsigned char *s;
44    size_t s_len;
45    int pass;
46};
47
48static const struct ecdsa_keygen_st ecdsa_keygen_data[] = {
49    { "P-224" },
50};
51
52static const unsigned char ecdsa_pv_pub0[] = {
53    POINT_CONVERSION_UNCOMPRESSED,
54    0x50, 0x0F, 0x05, 0x86, 0xD3, 0xAA, 0x8A, 0x48,
55    0x46, 0x63, 0x0D, 0xD7, 0xC7, 0x5D, 0x5F, 0x1D,
56    0xB2, 0xA7, 0x9B, 0xE8, 0xC8, 0xBB, 0xBE, 0x2C,
57    0x93, 0x33, 0xDC, 0xCB, 0xBB, 0x2F, 0xB3, 0xCF,
58    0x55, 0x88, 0x7A, 0x97, 0xD1, 0x75, 0x73, 0xFE,
59    0x92, 0x02, 0x5C, 0xC8, 0xE3, 0xF4, 0x35, 0x4B,
60    0x08, 0x7E, 0xF4, 0xD3, 0x7D, 0x86, 0x06, 0x92,
61    0xBA, 0x15, 0x3F, 0xCF, 0x0C, 0xC4, 0xBF, 0xBC,
62};
63static const unsigned char ecdsa_pv_pub1[] = {
64    POINT_CONVERSION_UNCOMPRESSED,
65    0x1F, 0x74, 0xD6, 0x99, 0xEB, 0x1D, 0x4F, 0x26,
66    0x25, 0x5E, 0xD4, 0x6A, 0xA6, 0xD5, 0x23, 0xB3,
67    0xF5, 0x5D, 0x14, 0x38, 0xE0, 0x4D, 0x23, 0x7F,
68    0x9A, 0xE5, 0xB7, 0x1B, 0xF9, 0x7F, 0xAD, 0x7E,
69    0x0E, 0x1C, 0x06, 0xF4, 0x20, 0xF3, 0x8E, 0x93,
70    0x79, 0x11, 0x15, 0xD6, 0x82, 0x12, 0x14, 0xC2,
71    0xF9, 0x30, 0x61, 0x9A, 0xC3, 0x12, 0xE3, 0x88,
72    0x4E, 0xB1, 0x1A, 0x4B, 0x54, 0x6D, 0xEA, 0xCF,
73};
74static const struct ecdsa_pub_verify_st ecdsa_pv_data[] = {
75    {
76        "P-256",
77        ITM(ecdsa_pv_pub0),
78        PASS
79    },
80    {
81        "P-256",
82        ITM(ecdsa_pv_pub1),
83        FAIL
84    },
85};
86
87static const unsigned char ecdsa_siggen_msg0[] = {
88    0xB8, 0x65, 0x55, 0x9D, 0x54, 0x5C, 0xD2, 0xC7,
89    0xC2, 0xCA, 0x96, 0xDF, 0xF3, 0x9B, 0x26, 0xED,
90    0xF8, 0x16, 0x99, 0x05, 0x94, 0xA9, 0x3F, 0x69,
91    0x5F, 0xE8, 0x73, 0xC5, 0xFE, 0x78, 0x28, 0x84,
92    0xC0, 0xA7, 0xFA, 0x29, 0xBE, 0x37, 0x82, 0xC0,
93    0x56, 0x41, 0x49, 0xAF, 0xF3, 0x59, 0xBB, 0x96,
94    0xF6, 0x4B, 0x87, 0x45, 0xAB, 0x1F, 0xB2, 0xB3,
95    0x8F, 0x14, 0xD4, 0xD7, 0x1C, 0x29, 0x08, 0x0C,
96    0x79, 0x8A, 0x38, 0xAE, 0x32, 0x1C, 0x38, 0x80,
97    0x5B, 0x45, 0x25, 0x46, 0x5D, 0xCE, 0x7D, 0x34,
98    0xC0, 0x90, 0xEF, 0x06, 0x84, 0xA1, 0x0F, 0xF8,
99    0x56, 0x2D, 0x46, 0xF7, 0xB7, 0xDE, 0x06, 0x7C,
100    0x87, 0xA6, 0x7E, 0x71, 0x8D, 0x7B, 0x27, 0xE5,
101    0x51, 0x0C, 0xE7, 0xBA, 0x18, 0x08, 0xE0, 0xD5,
102    0x0B, 0x8C, 0xB6, 0x22, 0xA5, 0x8F, 0xB3, 0xF7,
103    0xFB, 0xC6, 0x2A, 0x59, 0x02, 0x8A, 0x8C, 0x42,
104};
105static const struct ecdsa_siggen_st ecdsa_siggen_data[] = {
106     {
107        "SHA2-256",
108        "P-384",
109        ITM(ecdsa_siggen_msg0),
110     },
111};
112
113static const unsigned char ecdsa_sigver_msg0[] = {
114    0x0b, 0x00, 0xc4, 0x3f, 0xb9, 0xcb, 0x92, 0xd3,
115    0x56, 0x83, 0xc6, 0x97, 0x23, 0xf8, 0xf1, 0x0b,
116    0x0a, 0xa6, 0x60, 0xca, 0x3a, 0xed, 0xba, 0x38,
117    0xf7, 0x86, 0xc2, 0x6d, 0xa1, 0xb6, 0x40, 0x2c,
118    0x92, 0xfe, 0x44, 0x1a, 0x19, 0x61, 0x5c, 0x02,
119    0xfa, 0xd3, 0x79, 0x99, 0xb8, 0x99, 0xe8, 0x70,
120    0xaa, 0x26, 0x01, 0xf2, 0xe7, 0xdc, 0x69, 0xce,
121    0x9a, 0xd2, 0xaa, 0x02, 0x15, 0xab, 0x0d, 0xcb,
122    0x77, 0xaf, 0xe0, 0x81, 0x6d, 0x92, 0x6e, 0x09,
123    0xcd, 0x93, 0xd6, 0x22, 0x67, 0xc2, 0xd3, 0x7c,
124    0x58, 0x11, 0xc8, 0x77, 0x4e, 0x97, 0x92, 0x87,
125    0xcd, 0xe4, 0xc9, 0x2a, 0x77, 0xb2, 0xf0, 0xe7,
126    0xd3, 0x5a, 0x20, 0x36, 0x91, 0x75, 0x23, 0xa8,
127    0xcb, 0x4a, 0xd0, 0xe5, 0x95, 0x3b, 0x24, 0x2a,
128    0x86, 0xa0, 0xaa, 0xbe, 0xac, 0x59, 0xd7, 0xd0,
129    0xfb, 0xdf, 0x33, 0xc9, 0x73, 0xaf, 0x8a, 0x06,
130};
131static const unsigned char ecdsa_sigver_msg1[] = {
132    0x45, 0xBB, 0x9D, 0xDC, 0x1D, 0x0A, 0xF2, 0xD7,
133    0x56, 0x07, 0x1F, 0x47, 0x2A, 0x17, 0xCE, 0x38,
134    0xA8, 0x7E, 0x75, 0xED, 0x4F, 0xE4, 0x17, 0x65,
135    0x11, 0x69, 0xDF, 0x04, 0xF0, 0x39, 0x28, 0xD0,
136    0x75, 0xD5, 0xF0, 0x1C, 0x32, 0x84, 0x16, 0x74,
137    0x7D, 0x61, 0x57, 0xDB, 0x92, 0x24, 0x60, 0xBA,
138    0x58, 0x7B, 0x48, 0xB4, 0x44, 0xFB, 0xD7, 0x35,
139    0xD7, 0xCF, 0x61, 0x34, 0x7F, 0x70, 0x38, 0xAE,
140    0xE2, 0xB2, 0x6C, 0x8A, 0xD1, 0x27, 0xB4, 0xF0,
141    0x33, 0xB9, 0xE9, 0x27, 0x1A, 0xEE, 0x34, 0x72,
142    0x9D, 0x5E, 0x74, 0x28, 0xE7, 0x0B, 0x82, 0xE1,
143    0x60, 0xC2, 0x43, 0xE6, 0x75, 0x4A, 0x2E, 0x66,
144    0x88, 0x72, 0xCA, 0xC7, 0x97, 0xFE, 0x19, 0xCD,
145    0xA4, 0x30, 0xBF, 0xC7, 0xDC, 0x37, 0xF8, 0x1B,
146    0xB6, 0xD7, 0x7E, 0xAD, 0xD6, 0xC1, 0x20, 0xAC,
147    0x79, 0x03, 0x89, 0xEA, 0xF4, 0x59, 0x21, 0xF2,
148};
149
150static const unsigned char ecdsa_sigver_pub0[] = {
151    POINT_CONVERSION_UNCOMPRESSED,
152    0x2c, 0xdf, 0x6f, 0x23, 0x3d, 0x73, 0x86, 0x25,
153    0x1a, 0x29, 0xd6, 0xde, 0x98, 0xcf, 0x85, 0xf7,
154    0x6a, 0x55, 0xba, 0xdb, 0x0f, 0x35, 0x94, 0x92,
155    0xb3, 0x58, 0xf3, 0x89, 0x7f, 0x6c, 0x22, 0x10,
156    0xd9, 0xd3, 0x54, 0xd2, 0x74, 0x9f, 0x64, 0x0d,
157    0xd2, 0xf8, 0x3e, 0xfc, 0x7f, 0xb7, 0x16, 0x36,
158};
159static const unsigned char ecdsa_sigver_pub1[] = {
160    POINT_CONVERSION_UNCOMPRESSED,
161    0x00, 0xD4, 0x79, 0x9F, 0xD9, 0x99, 0xEC, 0x21,
162    0x1E, 0xE6, 0x06, 0x58, 0xB7, 0xFB, 0x76, 0xFC,
163    0xF5, 0x9A, 0xE1, 0x1E, 0x5A, 0x87, 0xD7, 0x0E,
164    0x21, 0x7B, 0xDE, 0x21, 0x52, 0xE6, 0xE4, 0x09,
165    0x2C, 0xB8, 0x5D, 0x99, 0xE2, 0x6A, 0xB1, 0xE5,
166    0x79, 0x11, 0x49, 0xBD, 0x3D, 0xC7, 0x1C, 0x48,
167    0xF5, 0x83, 0xFC, 0x9E, 0xF3, 0xAB, 0x2D, 0x30,
168    0x64, 0xEC, 0x22, 0xCB, 0xEB, 0x95, 0xBF, 0xF2,
169    0x2D, 0xCE,
170
171    0x01, 0xB9, 0xFE, 0xBD, 0x4C, 0x4B, 0xDA, 0x1F,
172    0x30, 0xC3, 0x5C, 0x0F, 0x5D, 0x3E, 0x36, 0x51,
173    0xF2, 0xC0, 0xF7, 0xFC, 0x79, 0x25, 0x98, 0xF2,
174    0x4B, 0x2B, 0x61, 0xFC, 0xD9, 0xC4, 0x5C, 0xC0,
175    0x13, 0xA2, 0x4F, 0x2E, 0x34, 0xD4, 0x15, 0xC4,
176    0x25, 0x13, 0xA9, 0x30, 0x35, 0x56, 0xB7, 0xCD,
177    0xD0, 0xC4, 0x65, 0x5D, 0xFB, 0xB2, 0xE4, 0xBF,
178    0x22, 0x67, 0xEF, 0xA1, 0x2E, 0xA2, 0x1B, 0x33,
179    0xE4, 0x3D,
180};
181static const unsigned char ecdsa_sigver_r0[] = {
182    0x6b, 0x35, 0x62, 0x67, 0xa3, 0xbd, 0x76, 0xc8,
183    0xa3, 0xdc, 0x93, 0x18, 0x82, 0x6f, 0xd2, 0x43,
184    0x52, 0x18, 0x93, 0x21, 0x8e, 0xce, 0x12, 0x65,
185};
186static const unsigned char ecdsa_sigver_r1[] = {
187    0x01, 0xBF, 0xA6, 0x46, 0x6D, 0x4E, 0x1C, 0x42,
188    0x18, 0x7D, 0x46, 0xC6, 0x5F, 0xA5, 0x05, 0xEA,
189    0x1A, 0xEF, 0xDB, 0x46, 0xD1, 0x79, 0x3F, 0x2B,
190    0xE2, 0x70, 0x0F, 0x14, 0x26, 0x30, 0x7F, 0x2D,
191    0x1A, 0x41, 0xFD, 0x11, 0xC0, 0xBB, 0xD0, 0xD5,
192    0x09, 0xAA, 0xE0, 0x1A, 0xFE, 0x59, 0x23, 0x7D,
193    0x1B, 0x5C, 0xB9, 0x51, 0xCD, 0x3A, 0xA1, 0x32,
194    0xC6, 0x92, 0xB0, 0x7D, 0x91, 0xC6, 0x30, 0xC0,
195    0xA4, 0x2A,
196};
197static const unsigned char ecdsa_sigver_s0[] = {
198    0x7b, 0x92, 0x4a, 0x13, 0x8d, 0x74, 0x87, 0xb2,
199    0xd4, 0xc7, 0x21, 0x73, 0x2c, 0x8a, 0x09, 0x25,
200    0xac, 0x19, 0xcf, 0x9c, 0xbc, 0xd7, 0x7b, 0xf8,
201};
202static const unsigned char ecdsa_sigver_s1[] = {
203    0x00, 0x8D, 0x56, 0xBA, 0x60, 0x38, 0x23, 0x47,
204    0xB8, 0x32, 0x73, 0x29, 0x40, 0x84, 0xF0, 0x2C,
205    0x90, 0xB2, 0x1D, 0x56, 0xFF, 0x38, 0x68, 0xAA,
206    0x42, 0xBA, 0x48, 0xA1, 0x52, 0x8C, 0xB4, 0xD6,
207    0x15, 0xB7, 0x88, 0xB3, 0x71, 0xC6, 0x69, 0x60,
208    0x6C, 0xEB, 0x4B, 0xF6, 0x19, 0x6A, 0x95, 0x8F,
209    0x01, 0x09, 0xC6, 0x13, 0xE6, 0x17, 0x38, 0xC8,
210    0x10, 0x49, 0x4F, 0x87, 0x43, 0x63, 0x62, 0x98,
211    0xB1, 0xAC,
212};
213static const struct ecdsa_sigver_st ecdsa_sigver_data[] = {
214    {
215        "SHA-1",
216        "P-192",
217        ITM(ecdsa_sigver_msg0),
218        ITM(ecdsa_sigver_pub0),
219        ITM(ecdsa_sigver_r0),
220        ITM(ecdsa_sigver_s0),
221        PASS,
222    },
223    {
224        "SHA2-512",
225        "P-521",
226        ITM(ecdsa_sigver_msg1),
227        ITM(ecdsa_sigver_pub1),
228        ITM(ecdsa_sigver_r1),
229        ITM(ecdsa_sigver_s1),
230        FAIL,
231    },
232};
233
234#endif /* OPENSSL_NO_EC */
235
236
237#ifndef OPENSSL_NO_DSA
238
239struct dsa_paramgen_st {
240    size_t L;
241    size_t N;
242};
243
244struct dsa_pqver_st {
245    const unsigned char *p;
246    size_t p_len;
247    const unsigned char *q;
248    size_t q_len;
249    const unsigned char *seed;
250    size_t seed_len;
251    int counter;
252    int pass;
253};
254
255struct dsa_siggen_st {
256    const char *digest_alg;
257    size_t L;
258    size_t N;
259    const unsigned char *msg;
260    size_t msg_len;
261};
262
263struct dsa_sigver_st {
264    const char *digest_alg;
265    const unsigned char *p;
266    size_t p_len;
267    const unsigned char *q;
268    size_t q_len;
269    const unsigned char *g;
270    size_t g_len;
271    const unsigned char *pub;
272    size_t pub_len;
273    const unsigned char *msg;
274    size_t msg_len;
275    const unsigned char *r;
276    size_t r_len;
277    const unsigned char *s;
278    size_t s_len;
279    int pass;
280};
281
282static const struct dsa_paramgen_st dsa_keygen_data[] = {
283    { 2048, 224 },
284};
285
286static const struct dsa_paramgen_st dsa_paramgen_data[] = {
287    { 2048, 256 },
288};
289
290/* dsa_pqver */
291static const unsigned char dsa_pqver_p0[] = {
292    0xEF, 0xC7, 0x95, 0xEB, 0x1E, 0x1C, 0x8F, 0x5E,
293    0x4A, 0x85, 0xCD, 0x20, 0x66, 0xC7, 0xB9, 0x6C,
294    0x4E, 0xC4, 0xE7, 0x3B, 0x7B, 0x8E, 0x0E, 0x8C,
295    0x00, 0xF5, 0x2E, 0x68, 0xF5, 0xC2, 0x89, 0x47,
296    0xA5, 0x7B, 0xA6, 0xA3, 0x30, 0xBC, 0xFA, 0x25,
297    0x29, 0xBD, 0xE2, 0x4D, 0x05, 0x0B, 0x6D, 0x2D,
298    0x49, 0x50, 0x53, 0xEF, 0x8C, 0xBE, 0xC3, 0xEC,
299    0x92, 0xC1, 0x45, 0xE3, 0x95, 0x39, 0x72, 0x58,
300    0xFD, 0x93, 0x23, 0x06, 0x37, 0xD6, 0x56, 0x1F,
301    0x75, 0x92, 0xAD, 0x15, 0xA9, 0x88, 0x25, 0x3F,
302    0xD6, 0x47, 0xB5, 0xB1, 0x32, 0x01, 0x2D, 0x70,
303    0x55, 0xB9, 0x5D, 0xED, 0x1B, 0x40, 0x39, 0x78,
304    0x74, 0xA6, 0xDF, 0x4B, 0xE4, 0x86, 0x8B, 0x56,
305    0x46, 0x1E, 0xDB, 0x04, 0xD2, 0xD2, 0x50, 0xE9,
306    0x5D, 0x88, 0xA8, 0x84, 0x55, 0xE3, 0xF3, 0xB7,
307    0x07, 0x54, 0x9E, 0x98, 0x03, 0x9F, 0x31, 0x86,
308    0xEB, 0x0D, 0x26, 0x97, 0x30, 0x31, 0x34, 0x64,
309    0x35, 0x56, 0x40, 0x35, 0xEA, 0xE5, 0x00, 0x90,
310    0xBD, 0x20, 0x93, 0xFC, 0xAD, 0x70, 0x9A, 0xF5,
311    0xB8, 0xA4, 0xAD, 0xEC, 0xFE, 0x64, 0xF4, 0x2C,
312    0x11, 0x25, 0x68, 0x27, 0x0E, 0x5C, 0x81, 0x57,
313    0x64, 0x9A, 0x50, 0x86, 0xA3, 0x69, 0x61, 0x1E,
314    0x0D, 0x62, 0xE9, 0x4D, 0x44, 0x1E, 0x1E, 0xE1,
315    0x6D, 0x8F, 0x10, 0x67, 0x82, 0xB6, 0x6A, 0xD0,
316    0x08, 0x59, 0xF3, 0xBA, 0xE8, 0x29, 0xE0, 0x60,
317    0x1F, 0x3E, 0xBA, 0xAB, 0x6E, 0xB6, 0x5B, 0xAF,
318    0xCC, 0x76, 0x5D, 0x70, 0x7F, 0x3A, 0xAA, 0x7E,
319    0x27, 0x23, 0x6F, 0x8E, 0xF8, 0x06, 0xC1, 0x3E,
320    0xAE, 0xBE, 0x22, 0x71, 0x93, 0xEC, 0x9A, 0x33,
321    0x3C, 0xA4, 0x77, 0xD4, 0x76, 0x79, 0x10, 0x5A,
322    0xF4, 0x07, 0x52, 0x66, 0x9D, 0xC5, 0xFD, 0xDA,
323    0xA1, 0xE7, 0xA2, 0x45, 0x27, 0x08, 0x54, 0xB9,
324    0x3B, 0xEC, 0x07, 0xFB, 0xE0, 0xF4, 0x4B, 0x7C,
325    0xB1, 0x04, 0x2B, 0x0E, 0x65, 0x3A, 0xF7, 0x65,
326    0x57, 0x65, 0xCF, 0x36, 0x28, 0x2A, 0x1C, 0x57,
327    0x10, 0x28, 0x02, 0x26, 0xF7, 0x45, 0xAA, 0x1B,
328    0x2E, 0xE3, 0x25, 0xEA, 0x28, 0xA1, 0x84, 0x1E,
329    0xA1, 0xA3, 0xAB, 0x52, 0x25, 0xD4, 0x64, 0xB2,
330    0xA8, 0xA5, 0xFD, 0x2F, 0x48, 0x90, 0x28, 0x8F,
331    0x8B, 0x10, 0x7F, 0x6F, 0x80, 0xA9, 0x4B, 0xB3,
332    0xC0, 0x5B, 0x27, 0xE9, 0x90, 0x90, 0x53, 0xA8,
333    0x30, 0x88, 0xD4, 0x9B, 0x09, 0x62, 0xCD, 0x99,
334    0x61, 0x63, 0x14, 0xDF, 0xC3, 0x5A, 0x60, 0xBE,
335    0xA3, 0x40, 0xAB, 0x29, 0x3E, 0xB2, 0x02, 0x19,
336    0x9D, 0x97, 0x75, 0x34, 0x0D, 0x71, 0x3B, 0xEC,
337    0xF1, 0x13, 0x23, 0xE6, 0xCA, 0x35, 0x84, 0xFF,
338    0x27, 0x4A, 0xE0, 0x11, 0x59, 0xEB, 0x1D, 0x8C,
339    0xFF, 0xF3, 0x91, 0x90, 0x3C, 0xE9, 0x43, 0x31,
340};
341static const unsigned char dsa_pqver_p1[] = {
342    0x83, 0xA6, 0x8F, 0xE5, 0xFE, 0xF0, 0x9D, 0x9E,
343    0x8A, 0x80, 0x9C, 0x47, 0xEF, 0xBE, 0x1A, 0xD0,
344    0x7F, 0xEA, 0x6D, 0x08, 0x59, 0x2D, 0x04, 0xB6,
345    0xAC, 0x2A, 0x54, 0x47, 0x42, 0xB2, 0x5F, 0x28,
346    0xF6, 0x30, 0x36, 0xE3, 0xDA, 0x4E, 0xDC, 0xC1,
347    0x6E, 0x61, 0xCE, 0x45, 0x1C, 0x73, 0x87, 0x3E,
348    0xB7, 0x94, 0xDB, 0x68, 0xEE, 0xFD, 0x8D, 0x93,
349    0x5E, 0x5D, 0xAB, 0x77, 0xA2, 0xF0, 0xD6, 0x60,
350    0xCD, 0x9D, 0x13, 0xE0, 0xA6, 0xE7, 0xEC, 0x45,
351    0xBA, 0xD8, 0xB0, 0x3D, 0x4F, 0x75, 0x30, 0xB7,
352    0x89, 0x96, 0x2B, 0x48, 0xFC, 0x73, 0xB8, 0x5C,
353    0x59, 0xDC, 0x41, 0xEF, 0xCE, 0xC6, 0x7F, 0x66,
354    0x4F, 0xB6, 0x1F, 0x9C, 0x91, 0xB4, 0xEE, 0xAA,
355    0x2C, 0x4A, 0x7F, 0x1F, 0xBF, 0xE2, 0x9A, 0xF2,
356    0x9F, 0x52, 0x83, 0x30, 0x97, 0x86, 0x7F, 0xA2,
357    0x85, 0x20, 0x75, 0x75, 0xAD, 0x01, 0xE2, 0x40,
358    0x3A, 0x82, 0xD8, 0x52, 0x91, 0x15, 0x67, 0x1B,
359    0x00, 0x78, 0xFD, 0x3E, 0x61, 0x8A, 0xA8, 0x1D,
360    0x1A, 0x07, 0x8E, 0x87, 0x48, 0x64, 0x1E, 0x5B,
361    0x05, 0x34, 0x7E, 0x5D, 0xD6, 0x11, 0xC4, 0xB7,
362    0x0E, 0xF3, 0x91, 0xC7, 0x2B, 0xAD, 0x22, 0x96,
363    0xA3, 0xF7, 0x4E, 0xEB, 0xE4, 0x9F, 0x67, 0x91,
364    0x9D, 0x65, 0x45, 0x8F, 0x92, 0x2F, 0x8B, 0x46,
365    0xCC, 0x4B, 0xB9, 0xC5, 0xD0, 0x00, 0xFF, 0xBB,
366    0x37, 0xD6, 0x20, 0x36, 0x7D, 0x4A, 0xC3, 0x75,
367    0xAC, 0x58, 0xE5, 0x24, 0x54, 0x47, 0x80, 0x2C,
368    0x83, 0xBD, 0xC8, 0xA7, 0x87, 0x20, 0x3D, 0xA8,
369    0x78, 0xE2, 0xC5, 0x4E, 0xE8, 0x4E, 0x3C, 0xFA,
370    0x75, 0xA0, 0x8D, 0x35, 0x8E, 0xF2, 0x61, 0x19,
371    0x84, 0x9C, 0x71, 0x95, 0x5B, 0x09, 0xE1, 0xB6,
372    0xC6, 0x6A, 0x7C, 0x34, 0x39, 0x67, 0x14, 0xAB,
373    0xA7, 0x6B, 0x45, 0x01, 0xF0, 0x0F, 0x52, 0xB5,
374    0x23, 0xD9, 0x67, 0x57, 0x91, 0x9F, 0xC2, 0xA9,
375    0xB6, 0x7C, 0x15, 0x59, 0x3E, 0x22, 0x89, 0xD6,
376    0x0B, 0x83, 0xB4, 0x29, 0xEF, 0x0B, 0x66, 0x30,
377    0x2D, 0xE7, 0xC5, 0x04, 0x1F, 0x28, 0x7D, 0x9F,
378    0xC9, 0x87, 0x05, 0xC6, 0x1B, 0x18, 0x1F, 0x3B,
379    0x90, 0x00, 0x31, 0x5B, 0xDC, 0x19, 0x7D, 0x71,
380    0xE4, 0xA4, 0x21, 0xB5, 0x37, 0xE7, 0x9B, 0xA4,
381    0xBC, 0x04, 0xF8, 0x0A, 0x95, 0x3F, 0xDB, 0x30,
382    0xA5, 0xC9, 0xC2, 0xD7, 0x19, 0x9D, 0x57, 0x77,
383    0x44, 0xB7, 0x47, 0xBD, 0xA1, 0x01, 0xEB, 0x51,
384    0xA4, 0xB2, 0x8B, 0x1A, 0x51, 0xA4, 0xCC, 0x07,
385    0x57, 0x19, 0xFB, 0xFC, 0xAA, 0x42, 0xCC, 0x2A,
386    0xCE, 0xF8, 0xFD, 0xF8, 0x92, 0xC4, 0xDC, 0x7B,
387    0x0B, 0x92, 0x9A, 0xD7, 0xC5, 0xBC, 0x6D, 0x74,
388    0x13, 0x0E, 0xD2, 0x8F, 0x86, 0xEB, 0x8D, 0xD7,
389    0xC6, 0xAC, 0x43, 0xD8, 0x00, 0x80, 0x53, 0x57,
390};
391static const unsigned char dsa_pqver_q0[] = {
392    0xCB, 0x74, 0xE6, 0x57, 0x37, 0x0F, 0x7A, 0x61,
393    0x0B, 0x09, 0xCE, 0x91, 0x78, 0x06, 0x3C, 0x7F,
394    0x20, 0xF5, 0xD1, 0x1E, 0x1D, 0xC2, 0x43, 0xBA,
395    0x89, 0xC8, 0x4A, 0x49, 0x83, 0x38, 0xE1, 0x2D,
396};
397static const unsigned char dsa_pqver_q1[] = {
398    0x85, 0x2B, 0x77, 0x9B, 0x1B, 0x70, 0x6F, 0x8C,
399    0x10, 0xF3, 0x2F, 0xA9, 0xC2, 0xEE, 0xF6, 0x74,
400    0x78, 0x5F, 0xD5, 0x5E, 0x2C, 0x34, 0xAF, 0xD1,
401    0x25, 0x63, 0x96, 0x6D, 0x6D, 0x84, 0x68, 0x3F,
402};
403static const unsigned char dsa_pqver_seed0[] = {
404    0x33, 0xDC, 0x43, 0xAF, 0xC4, 0x51, 0x5C, 0x3B,
405    0x8B, 0x8A, 0x0D, 0x5D, 0xA2, 0x84, 0xDE, 0x6D,
406    0xCC, 0x6C, 0xFD, 0x42, 0x37, 0x98, 0xFB, 0x66,
407    0xAB, 0xD3, 0x73, 0x96, 0x1F, 0xC5, 0xD1, 0x46,
408};
409static const unsigned char dsa_pqver_seed1[] = {
410    0xEE, 0xA4, 0x02, 0x70, 0x0B, 0x89, 0xB7, 0x96,
411    0x52, 0x5C, 0x00, 0xC4, 0x8E, 0x14, 0x45, 0x0F,
412    0x6A, 0x18, 0x00, 0xF7, 0x24, 0x52, 0x41, 0x0E,
413    0x33, 0x41, 0xD2, 0x91, 0xC3, 0x16, 0x7D, 0x5D,
414};
415static const struct dsa_pqver_st dsa_pqver_data[] = {
416    {
417        ITM(dsa_pqver_p0),
418        ITM(dsa_pqver_q0),
419        ITM(dsa_pqver_seed0),
420        1956,
421        PASS
422    },
423    {
424        ITM(dsa_pqver_p1),
425        ITM(dsa_pqver_q1),
426        ITM(dsa_pqver_seed1),
427        685,
428        FAIL
429    },
430};
431
432/* dsa_siggen */
433static const unsigned char dsa_siggen_msg0[]= {
434    0x85, 0x01, 0x2F, 0x61, 0x1C, 0x36, 0xA8, 0xE1,
435    0x54, 0x55, 0x13, 0xFA, 0x00, 0x58, 0x1E, 0xD4,
436    0xF2, 0x4C, 0x54, 0x67, 0xB3, 0xEA, 0x48, 0x2C,
437    0xD1, 0x27, 0xBE, 0x5F, 0x26, 0x35, 0xD4, 0x00,
438    0xDD, 0x6C, 0xD8, 0xE8, 0x3C, 0x6D, 0x2D, 0x50,
439    0x01, 0x53, 0xC7, 0xB5, 0xA3, 0x8E, 0x9A, 0x85,
440    0xA6, 0x53, 0x8C, 0x46, 0x55, 0x02, 0xA1, 0x5E,
441    0xEA, 0x6C, 0xCF, 0x4A, 0x86, 0xA9, 0x34, 0x1B,
442    0x0B, 0xB6, 0x88, 0x9A, 0xDE, 0xC4, 0x27, 0x7F,
443    0x93, 0xAA, 0x69, 0x54, 0x48, 0x33, 0x98, 0xA0,
444    0x71, 0x45, 0x09, 0x5A, 0x51, 0xDF, 0xB6, 0x66,
445    0x06, 0xB7, 0xAD, 0x64, 0xED, 0xC1, 0xFA, 0x6B,
446    0xA8, 0x0F, 0xE8, 0x3C, 0x2E, 0x0C, 0xCB, 0xB0,
447    0xAE, 0xDE, 0x25, 0x0C, 0x68, 0xA8, 0x15, 0x97,
448    0xD0, 0xBC, 0x0B, 0x81, 0x15, 0xDC, 0x2B, 0xF3,
449    0xF2, 0xB7, 0xA7, 0xA9, 0x74, 0xD6, 0x5D, 0xB8,
450    0xB7, 0xD1, 0xFC, 0x5D, 0xCA, 0x69, 0x5D, 0x7D,
451    0xC6, 0x1E, 0x37, 0x7D, 0xD3, 0xA9, 0x1E, 0xAE,
452    0x60, 0x22, 0x3A, 0x4B, 0x7A, 0xB1, 0x3D, 0xA4,
453    0x6D, 0xB3, 0xA5, 0x8C, 0x89, 0x91, 0xCF, 0xE6,
454    0x5B, 0xF9, 0xB6, 0x87, 0x56, 0x75, 0xB9, 0x0B,
455    0x08, 0x85, 0x32, 0x52, 0x81, 0x99, 0xA7, 0x98,
456    0x44, 0x30, 0x3B, 0x44, 0xBC, 0xB8, 0xB2, 0x6D,
457    0x59, 0x52, 0xD3, 0x84, 0x74, 0x65, 0x02, 0xF9,
458    0x71, 0xB9, 0x16, 0x7A, 0x42, 0x62, 0xDE, 0x9B,
459    0x66, 0xF6, 0x04, 0x2C, 0x1F, 0x96, 0xF7, 0x41,
460    0x38, 0x1A, 0xF1, 0x8C, 0x8A, 0x40, 0x9F, 0x72,
461    0x73, 0xF9, 0xE9, 0x35, 0x11, 0x1F, 0x02, 0x0C,
462    0xB1, 0x51, 0xE8, 0x78, 0xDB, 0xE0, 0xB2, 0x35,
463    0xBD, 0xC5, 0x84, 0x5B, 0x2B, 0x25, 0x66, 0x42,
464    0x87, 0xE5, 0xA4, 0x77, 0x71, 0xB4, 0x4A, 0x59,
465    0x31, 0xF1, 0x5A, 0xF5, 0x98, 0x9C, 0x61, 0xEA,
466    0x52, 0x2F, 0x51, 0x85, 0xD9, 0x7F, 0x26, 0xDD,
467    0x91, 0x63, 0x41, 0xD5, 0x99, 0xD1, 0x64, 0xCE,
468    0xEE, 0x82, 0xD1, 0x73, 0x0A, 0x54, 0x3B, 0x03,
469    0xD7, 0xC1, 0xF7, 0x01, 0xBD, 0x44, 0x99, 0xFE,
470    0x9B, 0x1E, 0x2C, 0x8F, 0xF4, 0x55, 0xC5, 0x59,
471    0x58, 0xAF, 0xCB, 0xAD, 0xB8, 0x22, 0x1A, 0x29,
472    0xF3, 0x18, 0x39, 0x31, 0x9B, 0xFC, 0x08, 0x7E,
473    0xBE, 0x45, 0xDA, 0x9E, 0xD8, 0x7F, 0x8C, 0x5D,
474    0x10, 0xF9, 0xF8, 0xB4, 0xFA, 0x58, 0xE6, 0x28,
475    0xB4, 0x6C, 0x70, 0x12, 0xD2, 0xFA, 0x49, 0xB2,
476    0x5F, 0xD0, 0x81, 0x4A, 0xA1, 0xAA, 0xF8, 0x93,
477    0xD2, 0x26, 0xE7, 0xDA, 0x7D, 0x79, 0xC5, 0xC8,
478    0xC2, 0x9E, 0xA7, 0x01, 0xD5, 0x7A, 0xF9, 0x75,
479    0x62, 0xDB, 0xDC, 0x93, 0x90, 0xDA, 0xA5, 0xA6,
480    0x20, 0x58, 0x17, 0x9E, 0x47, 0x4E, 0xFB, 0xB8,
481    0xFB, 0xCD, 0x2E, 0xF4, 0xCD, 0x49, 0x03, 0x90,
482};
483static struct dsa_siggen_st dsa_siggen_data[] = {
484    {
485        "SHA2-384",
486        3072,
487        256,
488        ITM(dsa_siggen_msg0),
489    },
490};
491
492/* dsa_sigver */
493static const unsigned char dsa_sigver_p0[] = {
494    0xD2, 0x90, 0x2E, 0x38, 0xA5, 0x32, 0xBB, 0x63,
495    0xE0, 0xC3, 0x20, 0xD9, 0x26, 0x06, 0x21, 0x06,
496    0x85, 0x3A, 0x4C, 0xE3, 0x13, 0x83, 0xCA, 0x43,
497    0x8C, 0x9C, 0x76, 0xC0, 0x65, 0x60, 0x27, 0x7E,
498    0x7C, 0xA0, 0x83, 0x9F, 0x65, 0x91, 0xF9, 0x16,
499    0x5F, 0xE8, 0x60, 0x0C, 0xC6, 0x91, 0x20, 0x35,
500    0xE7, 0xF1, 0x83, 0xE6, 0xF8, 0x8C, 0xBB, 0x4C,
501    0xFF, 0xF5, 0x4D, 0x09, 0x8E, 0x83, 0x72, 0xCB,
502    0x22, 0x5F, 0xD0, 0x85, 0xA9, 0x60, 0x3C, 0x4A,
503    0xA6, 0xDD, 0x73, 0x1F, 0xCF, 0xD0, 0xD7, 0x42,
504    0xB8, 0x72, 0x61, 0xDB, 0x91, 0xE3, 0xBB, 0x5C,
505    0x21, 0x41, 0xFD, 0x97, 0xD0, 0x81, 0x72, 0x53,
506    0x77, 0xE0, 0x15, 0x9E, 0xC0, 0xD0, 0x6A, 0xB4,
507    0x7F, 0xF8, 0x63, 0x39, 0x1A, 0x25, 0x63, 0x84,
508    0x4D, 0xBA, 0x2C, 0x29, 0x94, 0x28, 0xCE, 0x5B,
509    0x9A, 0xC3, 0x14, 0xAD, 0x9D, 0x82, 0x1D, 0x8F,
510    0xF3, 0xE9, 0x60, 0x65, 0x28, 0x0B, 0x0E, 0x48,
511    0x6B, 0xCC, 0x05, 0x9D, 0x3B, 0x1F, 0x1D, 0x0A,
512    0xA7, 0xF8, 0x22, 0xB0, 0xE1, 0x52, 0xB0, 0x25,
513    0x8F, 0xEA, 0x25, 0x28, 0xC9, 0x6F, 0x44, 0xCD,
514    0xA4, 0x16, 0x13, 0xE8, 0xD0, 0xDB, 0x43, 0x6E,
515    0xCE, 0xEC, 0x0B, 0xA8, 0x3E, 0x53, 0x10, 0xA2,
516    0x52, 0x0E, 0xBB, 0x63, 0x63, 0x84, 0x2C, 0x12,
517    0x93, 0x29, 0x98, 0xAF, 0x38, 0x8F, 0x0B, 0x86,
518    0x16, 0x99, 0x0E, 0x39, 0xA8, 0x4A, 0x0B, 0xCD,
519    0xAA, 0x66, 0x8F, 0x4C, 0x15, 0xB7, 0xA5, 0xBB,
520    0x22, 0x77, 0x8D, 0xE8, 0x05, 0x35, 0x2D, 0xAA,
521    0x8D, 0x83, 0xDE, 0xBC, 0x15, 0x3D, 0xC2, 0x95,
522    0x0E, 0x47, 0x85, 0x41, 0xAD, 0xE3, 0xB1, 0x70,
523    0x76, 0x1B, 0x62, 0x9E, 0x96, 0x8B, 0x18, 0xD7,
524    0xE3, 0xB5, 0xF8, 0x6E, 0x85, 0x67, 0x61, 0x54,
525    0x7C, 0x85, 0x08, 0x91, 0xF4, 0x46, 0x3F, 0x01,
526    0x99, 0x48, 0x18, 0x3C, 0x0D, 0xC7, 0x2D, 0xEC,
527    0xA4, 0x11, 0x1D, 0x4F, 0x7F, 0xBF, 0x3A, 0xE8,
528    0x9C, 0x1C, 0xAE, 0x9E, 0x30, 0x32, 0x1F, 0x81,
529    0xEF, 0x14, 0xFE, 0x5C, 0xC2, 0x5C, 0xD0, 0x6A,
530    0x7C, 0x18, 0x88, 0x9F, 0xC4, 0x97, 0x7D, 0x4B,
531    0x3B, 0x01, 0xEB, 0x59, 0x58, 0x1C, 0x00, 0x6B,
532    0x3E, 0xD6, 0x80, 0x80, 0x86, 0x06, 0x39, 0x88,
533    0x0D, 0x23, 0x1E, 0xD6, 0x5E, 0x1F, 0x92, 0x3B,
534    0xEC, 0x50, 0x0B, 0xA0, 0x83, 0x4F, 0x10, 0xDE,
535    0xAF, 0x7B, 0x19, 0xBC, 0xBD, 0x72, 0xE6, 0x42,
536    0xFE, 0xD7, 0xEF, 0x22, 0xD3, 0x83, 0x6B, 0x30,
537    0xA3, 0x95, 0x0D, 0x3E, 0x61, 0x9E, 0xBC, 0x0E,
538    0x14, 0x7E, 0x61, 0x05, 0x3D, 0xBA, 0x4E, 0xEF,
539    0x31, 0x75, 0x5D, 0x10, 0x1E, 0xBA, 0xBD, 0xBA,
540    0x89, 0x4D, 0x3A, 0x5B, 0x03, 0xB1, 0xAE, 0x27,
541    0x47, 0x2D, 0x03, 0xB1, 0x8A, 0x74, 0x1B, 0xF3,
542};
543static const unsigned char dsa_sigver_q0[] = {
544    0xAC, 0x71, 0x8D, 0x81, 0x05, 0x2F, 0xAB, 0x72,
545    0xB9, 0x96, 0x94, 0x98, 0xB5, 0x19, 0x2B, 0xE2,
546    0x78, 0x06, 0xAA, 0x32, 0xFC, 0xB9, 0xD2, 0xFD,
547    0x26, 0xC4, 0x50, 0x6F, 0x81, 0xD8, 0x04, 0xAB,
548};
549static const unsigned char dsa_sigver_g0[] = {
550    0x3D, 0x0B, 0x46, 0x39, 0x13, 0xFF, 0x67, 0xA8,
551    0x8C, 0xE8, 0x8A, 0x46, 0x46, 0x9A, 0xE6, 0x70,
552    0xA1, 0xF5, 0x48, 0xF5, 0x84, 0xF8, 0x93, 0x57,
553    0x9A, 0x4F, 0x2C, 0xD4, 0x26, 0x49, 0x1C, 0x83,
554    0x64, 0x14, 0x0B, 0x5B, 0xEF, 0x6F, 0x6F, 0x91,
555    0x14, 0xC5, 0x4D, 0xE8, 0x86, 0x47, 0x5C, 0xFC,
556    0xAE, 0xBF, 0xD8, 0x32, 0xE2, 0x96, 0xB9, 0x61,
557    0x70, 0x3F, 0x24, 0x29, 0xFA, 0x41, 0x5D, 0x8E,
558    0xD0, 0xB0, 0xF1, 0x26, 0xD5, 0x7C, 0xE6, 0x17,
559    0x48, 0xE5, 0x04, 0x0E, 0x58, 0x14, 0xEE, 0xBA,
560    0x64, 0xE9, 0xF1, 0x6A, 0x7C, 0x17, 0xAB, 0x7B,
561    0x28, 0xCF, 0x69, 0x7D, 0xDC, 0x54, 0xCA, 0xF2,
562    0x4C, 0x22, 0x17, 0xDD, 0xC3, 0x1A, 0x02, 0xE2,
563    0x8E, 0xE6, 0xA4, 0xFB, 0x84, 0x27, 0x2B, 0xE8,
564    0x14, 0xF3, 0x3D, 0xAC, 0x59, 0x0C, 0xAB, 0x69,
565    0x0E, 0x73, 0xDF, 0x82, 0xC1, 0xDE, 0xD7, 0xD9,
566    0xA7, 0xCA, 0x8F, 0x4B, 0xCE, 0x8A, 0x05, 0xBD,
567    0x07, 0xC8, 0x29, 0xBB, 0x46, 0x29, 0x2A, 0x4F,
568    0xA7, 0x12, 0x19, 0x91, 0x01, 0xA0, 0xAE, 0x16,
569    0xEF, 0xC1, 0xC5, 0x4B, 0x03, 0xF0, 0x53, 0xDC,
570    0xFC, 0x1C, 0xC4, 0x73, 0xB7, 0xBF, 0x53, 0xEB,
571    0x19, 0x63, 0xCA, 0x30, 0x53, 0x54, 0x12, 0x90,
572    0x0E, 0x43, 0xC7, 0x66, 0xFF, 0x29, 0xFC, 0xA4,
573    0xE8, 0xF6, 0x4B, 0x76, 0x3B, 0xA2, 0x65, 0x6B,
574    0x9E, 0xFA, 0xBA, 0x5B, 0x54, 0x94, 0x34, 0xF6,
575    0xD1, 0x20, 0x2A, 0xF7, 0x39, 0x72, 0xA3, 0xDB,
576    0xD1, 0x8F, 0xA6, 0x4D, 0x1B, 0xB1, 0x2D, 0xC5,
577    0x7F, 0xC5, 0x2C, 0x7E, 0x6D, 0xD9, 0xC8, 0xC2,
578    0x19, 0xC0, 0xC4, 0xC2, 0x77, 0xD9, 0x4C, 0x63,
579    0x77, 0x59, 0x0C, 0x5B, 0xFE, 0x69, 0xEF, 0xBF,
580    0x58, 0x47, 0x69, 0x3E, 0x49, 0xA7, 0x1B, 0x98,
581    0x6C, 0xE5, 0xA7, 0x42, 0x8B, 0x0E, 0x68, 0x05,
582    0x48, 0x80, 0x39, 0xF4, 0x02, 0x9E, 0xE2, 0x9F,
583    0x1C, 0xDA, 0x24, 0xC5, 0xB8, 0xEC, 0x03, 0xEA,
584    0x7A, 0x00, 0xDF, 0xCF, 0x58, 0xD0, 0xE7, 0xB7,
585    0xF3, 0xE7, 0x36, 0xDD, 0x1F, 0x65, 0xF9, 0x2D,
586    0x6F, 0xC3, 0xE4, 0x72, 0xFD, 0xBA, 0x58, 0x8D,
587    0xB5, 0xDF, 0x61, 0x3D, 0x3B, 0xB5, 0xF3, 0x08,
588    0xE7, 0x21, 0x5A, 0x7D, 0xFF, 0x02, 0x1E, 0x0E,
589    0x4E, 0xB5, 0x0D, 0x3D, 0x33, 0xF4, 0xA7, 0x6D,
590    0xF7, 0x96, 0xC2, 0x96, 0x85, 0x33, 0x9C, 0x58,
591    0x72, 0x5C, 0x97, 0x73, 0x0E, 0xDC, 0x5C, 0x6B,
592    0x3D, 0x68, 0xF7, 0xF0, 0x0F, 0xCC, 0x01, 0xBB,
593    0x47, 0x01, 0x3C, 0xB0, 0x52, 0x48, 0x70, 0xB8,
594    0x0C, 0x0F, 0x04, 0xB5, 0x8F, 0x70, 0x50, 0x12,
595    0x7C, 0x9D, 0xD1, 0xC1, 0x2B, 0xFE, 0x95, 0x31,
596    0x8F, 0x2D, 0xFA, 0xAC, 0xAE, 0x24, 0xDD, 0x13,
597    0xDA, 0x76, 0xC2, 0x34, 0xB9, 0x4A, 0x3E, 0xC3,
598};
599static const unsigned char dsa_sigver_pub0[] = {
600    0x91, 0x78, 0x1C, 0xBA, 0x8A, 0x2F, 0xF6, 0xEC,
601    0x9B, 0xD4, 0x73, 0x2C, 0x1F, 0xC0, 0xFE, 0x79,
602    0xCF, 0xAC, 0x0C, 0x3C, 0x0D, 0x81, 0x85, 0x3D,
603    0xCD, 0x67, 0x2B, 0x77, 0x99, 0x4A, 0x51, 0x48,
604    0x58, 0x03, 0xC9, 0x68, 0xE6, 0x19, 0x26, 0x28,
605    0xDC, 0x86, 0x9F, 0x8F, 0xCE, 0xDD, 0x1B, 0xCD,
606    0xDD, 0x63, 0x4E, 0xCE, 0x76, 0x4D, 0xD5, 0x0D,
607    0x71, 0x73, 0x04, 0x03, 0x9C, 0x35, 0xD0, 0x56,
608    0x98, 0x25, 0xA7, 0x06, 0xF2, 0x6B, 0xA9, 0x9F,
609    0x9A, 0xB1, 0x2A, 0xBD, 0xB7, 0x71, 0x62, 0x99,
610    0x06, 0x47, 0x77, 0x22, 0x57, 0xFA, 0x24, 0x21,
611    0x21, 0xB0, 0x78, 0x26, 0x7E, 0xEC, 0xB6, 0xEB,
612    0x82, 0x15, 0x53, 0x68, 0xAE, 0xAC, 0x5B, 0xDC,
613    0xA6, 0x7F, 0x6B, 0x26, 0xE6, 0x59, 0x22, 0x55,
614    0x1C, 0x3B, 0xFD, 0xD5, 0x90, 0xA9, 0x6F, 0xB3,
615    0xE6, 0x99, 0x8E, 0x26, 0x72, 0xA1, 0x02, 0xAA,
616    0x37, 0xF6, 0x89, 0x68, 0xF1, 0x5A, 0x6D, 0x54,
617    0xAD, 0x9D, 0xF3, 0x03, 0xBE, 0x3F, 0x9D, 0x85,
618    0x38, 0x25, 0xB8, 0xDF, 0xB8, 0x43, 0x21, 0xCA,
619    0xF8, 0xDC, 0x12, 0x40, 0x1E, 0xEF, 0x37, 0x40,
620    0xCE, 0x0E, 0x02, 0x88, 0x63, 0x98, 0x2E, 0x93,
621    0x89, 0xB0, 0x43, 0xAC, 0x0E, 0x62, 0x4C, 0x38,
622    0x14, 0xAC, 0x0C, 0xA3, 0x03, 0x10, 0x8E, 0xB4,
623    0x60, 0x10, 0x9B, 0xCC, 0x16, 0xA7, 0xB8, 0x1D,
624    0x73, 0x81, 0x26, 0x12, 0xA8, 0x9A, 0xFE, 0x17,
625    0xBB, 0x2D, 0x33, 0x5E, 0x8C, 0xA4, 0x80, 0xBF,
626    0x84, 0x37, 0xCA, 0x0F, 0x50, 0x23, 0x79, 0x20,
627    0x2A, 0x8E, 0xD1, 0x1F, 0x9F, 0x89, 0x98, 0x4F,
628    0xF5, 0xB6, 0x0F, 0xB9, 0x3C, 0xFC, 0x6C, 0x00,
629    0xBC, 0x76, 0x2F, 0xB4, 0xFD, 0x22, 0x13, 0x37,
630    0x26, 0xCD, 0x9B, 0xAF, 0x4C, 0x89, 0x16, 0xD0,
631    0x73, 0x44, 0xF9, 0x71, 0x60, 0xA2, 0x3E, 0xFE,
632    0x24, 0xFE, 0xFC, 0xFE, 0x90, 0x91, 0xED, 0x92,
633    0x57, 0x0A, 0xFA, 0xEB, 0x21, 0x99, 0xE3, 0x9A,
634    0xFF, 0x5C, 0x74, 0x85, 0xC2, 0x6D, 0x83, 0x90,
635    0xEE, 0x84, 0x05, 0x1A, 0x00, 0xAC, 0x87, 0xA7,
636    0x78, 0x87, 0xCA, 0x70, 0xFC, 0xB0, 0xF4, 0x3B,
637    0x61, 0x7C, 0xD0, 0x09, 0x63, 0x2B, 0x5E, 0xC2,
638    0xFE, 0x15, 0x41, 0xB3, 0x9F, 0xFC, 0x19, 0xE3,
639    0x4D, 0x3C, 0x6F, 0x89, 0xEB, 0x8A, 0x43, 0xEC,
640    0x8E, 0xFB, 0xEC, 0xCD, 0x99, 0x2E, 0x4B, 0x02,
641    0x99, 0xAC, 0xC6, 0x62, 0xAA, 0xC5, 0x0F, 0xA3,
642    0x0B, 0xBB, 0xCD, 0x51, 0x0C, 0x19, 0xA7, 0x7A,
643    0x43, 0x6C, 0xAA, 0x26, 0x28, 0x2A, 0xC9, 0x9D,
644    0x97, 0xAE, 0x83, 0x74, 0xDA, 0xC4, 0x03, 0x98,
645    0x94, 0x58, 0x28, 0xBC, 0x32, 0x1D, 0xD4, 0xF2,
646    0x6F, 0x89, 0x92, 0xD4, 0x80, 0x9B, 0xDE, 0x6B,
647    0xC5, 0x6F, 0xDB, 0x7A, 0x03, 0x1C, 0xF5, 0x55,
648};
649static const unsigned char dsa_sigver_msg0[] = {
650    0x32, 0xE9, 0x64, 0x47, 0xED, 0x3B, 0xF0, 0xC0,
651    0xCA, 0xC2, 0x90, 0xF5, 0x10, 0x60, 0x99, 0x82,
652    0x4D, 0x13, 0x44, 0xFA, 0x92, 0xD1, 0xFD, 0x50,
653    0x26, 0x80, 0xEA, 0x7B, 0x7D, 0xC5, 0xF0, 0xB7,
654};
655static const unsigned char dsa_sigver_msg1[] = {
656    0x31, 0xE9, 0x64, 0x47, 0xED, 0x3B, 0xF0, 0xC0,
657    0xCA, 0xC2, 0x90, 0xF5, 0x10, 0x60, 0x99, 0x82,
658    0x4D, 0x13, 0x44, 0xFA, 0x92, 0xD1, 0xFD, 0x50,
659    0x26, 0x80, 0xEA, 0x7B, 0x7D, 0xC5, 0xF0, 0xB7
660};
661static const unsigned char dsa_sigver_r0[] = {
662    0x2A, 0x24, 0x0F, 0xA7, 0x04, 0xF1, 0xE0, 0x60,
663    0x3B, 0x07, 0xDE, 0xB6, 0x5F, 0x01, 0x20, 0x81,
664    0xDD, 0x64, 0x22, 0x0F, 0x9F, 0x2E, 0x67, 0x33,
665    0xB7, 0x56, 0xDE, 0x17, 0xD0, 0xED, 0x9D, 0x30,
666};
667static const unsigned char dsa_sigver_s0[] = {
668    0x15, 0x93, 0x81, 0x6E, 0xC2, 0x07, 0x6E, 0x06,
669    0x6A, 0xBF, 0x62, 0xBF, 0x93, 0xA6, 0xCB, 0x6E,
670    0xBA, 0x1E, 0x72, 0x57, 0x27, 0x0E, 0x85, 0x9E,
671    0x8C, 0x42, 0x9A, 0x41, 0x63, 0x27, 0x74, 0x4F,
672};
673static const struct dsa_sigver_st dsa_sigver_data[] = {
674    {
675        "SHA2-512",
676        ITM(dsa_sigver_p0),
677        ITM(dsa_sigver_q0),
678        ITM(dsa_sigver_g0),
679        ITM(dsa_sigver_pub0),
680        ITM(dsa_sigver_msg0),
681        ITM(dsa_sigver_r0),
682        ITM(dsa_sigver_s0),
683        PASS,
684    },
685    {
686        "SHA2-512",
687        ITM(dsa_sigver_p0),
688        ITM(dsa_sigver_q0),
689        ITM(dsa_sigver_g0),
690        ITM(dsa_sigver_pub0),
691        ITM(dsa_sigver_msg1),
692        ITM(dsa_sigver_r0),
693        ITM(dsa_sigver_s0),
694        FAIL,
695    },
696};
697
698#endif /* OPENSSL_NO_DSA */
699
700struct cipher_st {
701    const char *alg;
702    const unsigned char *key;
703    size_t key_len;
704    const unsigned char *iv;
705    size_t iv_len;
706    const unsigned char *pt;
707    size_t pt_len;
708    const unsigned char *ct;
709    size_t ct_len;
710};
711
712struct cipher_ccm_st {
713    const char *alg;
714    const unsigned char *key;
715    size_t key_len;
716    const unsigned char *iv;
717    size_t iv_len;
718    const unsigned char *aad;
719    size_t aad_len;
720    const unsigned char *pt;
721    size_t pt_len;
722    const unsigned char *ct; /* includes the tag */
723    size_t ct_len;
724};
725
726struct cipher_gcm_st {
727    const char *alg;
728    const unsigned char *key;
729    size_t key_len;
730    const unsigned char *iv;
731    size_t iv_len;
732    const unsigned char *aad;
733    size_t aad_len;
734    const unsigned char *pt;
735    size_t pt_len;
736    const unsigned char *ct;
737    size_t ct_len;
738    const unsigned char *tag;
739    size_t tag_len;
740};
741
742
743static const unsigned char cipher_enc_pt0[] = {
744    0xF3, 0x44, 0x81, 0xEC, 0x3C, 0xC6, 0x27, 0xBA,
745    0xCD, 0x5D, 0xC3, 0xFB, 0x08, 0xF2, 0x73, 0xE6,
746};
747static const unsigned char cipher_enc_pt1[] = {
748    0x1B, 0x07, 0x7A, 0x6A, 0xF4, 0xB7, 0xF9, 0x82,
749    0x29, 0xDE, 0x78, 0x6D, 0x75, 0x16, 0xB6, 0x39,
750};
751static const unsigned char cipher_enc_pt2[] = {
752    0x91, 0x07, 0x41, 0x31, 0xF1, 0xF8, 0x6C, 0xCD,
753    0x54, 0x8D, 0x22, 0xA6, 0x93, 0x40, 0xFF, 0x39,
754};
755static const unsigned char cipher_enc_pt3[] = {
756    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
757    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
758    0x10, 0x11, 0x12, 0x13
759};
760static const unsigned char cipher_enc_key0[] = {
761    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
762    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
763};
764static const unsigned char cipher_enc_key1[] = {
765    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
766    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
767    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
768};
769static const unsigned char cipher_enc_key2[] = {
770    0xE8, 0x70, 0x13, 0x1C, 0xE7, 0x03, 0xD6, 0x51,
771    0x4E, 0x76, 0x1F, 0x95, 0xE6, 0xEE, 0x9E, 0xFB,
772};
773static const unsigned char cipher_enc_key3[] = {
774    0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
775    0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0,
776    0xbf, 0xbe, 0xbd, 0xbc, 0xbb, 0xba, 0xb9, 0xb8,
777    0xb7, 0xb6, 0xb5, 0xb4, 0xb3, 0xb2, 0xb1, 0xb0,
778};
779static const unsigned char cipher_enc_ct0[] = {
780    0x03, 0x36, 0x76, 0x3E, 0x96, 0x6D, 0x92, 0x59,
781    0x5A, 0x56, 0x7C, 0xC9, 0xCE, 0x53, 0x7F, 0x5E,
782};
783static const unsigned char cipher_enc_ct1[] = {
784    0x27, 0x5C, 0xFC, 0x04, 0x13, 0xD8, 0xCC, 0xB7,
785    0x05, 0x13, 0xC3, 0x85, 0x9B, 0x1D, 0x0F, 0x72,
786};
787static const unsigned char cipher_enc_ct2[] = {
788    0x3A, 0xF6, 0x4C, 0x70, 0x37, 0xEE, 0x48, 0x13,
789    0xD8, 0x5F, 0xE9, 0xB3, 0x7F, 0xE6, 0x6A, 0xD4,
790};
791static const unsigned char cipher_enc_ct3[] = {
792    0x9d, 0x84, 0xc8, 0x13, 0xf7, 0x19, 0xaa, 0x2c,
793    0x7b, 0xe3, 0xf6, 0x61, 0x71, 0xc7, 0xc5, 0xc2,
794    0xed, 0xbf, 0x9d, 0xac,
795};
796static const unsigned char cipher_enc_iv0[] = {
797    0x00,
798};
799static const unsigned char cipher_enc_iv1[] = {
800    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
801    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
802};
803static const unsigned char cipher_enc_iv2[] = {
804    0x53, 0xF2, 0x25, 0xD8, 0xDE, 0x97, 0xF1, 0x4B,
805    0xFE, 0x3E, 0xC6, 0x5E, 0xC3, 0xFF, 0xF7, 0xD3,
806};
807static const unsigned char cipher_enc_iv3[] = {
808    0x9a, 0x78, 0x56, 0x34, 0x12, 0x00, 0x00, 0x00,
809    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
810};
811
812static const struct cipher_st cipher_enc_data[] = {
813    {
814        "AES-128-ECB",
815        ITM(cipher_enc_key0),
816        NULL, 0,     /* iv */
817        ITM(cipher_enc_pt0),
818        ITM(cipher_enc_ct0),
819    },
820    {
821        "AES-192-CBC",
822        ITM(cipher_enc_key1),
823        ITM(cipher_enc_iv1),
824        ITM(cipher_enc_pt1),
825        ITM(cipher_enc_ct1),
826    },
827    {
828        "AES-128-CTR",
829        ITM(cipher_enc_key2),
830        ITM(cipher_enc_iv2),
831        ITM(cipher_enc_pt2),
832        ITM(cipher_enc_ct2),
833    },
834    {
835        "AES-128-XTS",
836         ITM(cipher_enc_key3),
837         ITM(cipher_enc_iv3),
838         ITM(cipher_enc_pt3),
839         ITM(cipher_enc_ct3),
840    }
841};
842
843static const unsigned char aes_ccm_enc_pt0[] = {
844    0xDA, 0x6A, 0xDC, 0xB2, 0xA5, 0xCC, 0xC3, 0xE7,
845    0xFC, 0x4C, 0xDF, 0x0A, 0xAB, 0xDC, 0x3B, 0x38,
846    0x26, 0x8B, 0x21, 0x82, 0xCA, 0x26, 0xE6, 0x2C,
847};
848static const unsigned char aes_ccm_enc_key0[] = {
849    0xDE, 0xF8, 0x67, 0xBC, 0x40, 0xB6, 0x7C, 0xAA,
850    0x4A, 0x00, 0xE8, 0x07, 0x24, 0x52, 0xAE, 0x72,
851};
852static const unsigned char aes_ccm_enc_aad0[] = {
853    0x29, 0x8D, 0x01, 0x92, 0x3B, 0x50, 0x1F, 0x66,
854    0xCE, 0xD3, 0x57, 0x4B, 0x7B, 0x4F, 0x07, 0x57,
855};
856static const unsigned char aes_ccm_enc_iv0[] = {
857    0x44, 0xEE, 0x48, 0x11, 0x4D, 0x3B, 0x71, 0x33,
858    0xF0, 0xF7, 0x12, 0xA2, 0xA5,
859};
860static const unsigned char aes_ccm_enc_ct0[] = {
861    0x30, 0x4D, 0x19, 0x31, 0x02, 0x66, 0x95, 0x2E,
862    0x23, 0x6D, 0xF4, 0xB9, 0xDF, 0xFE, 0xCA, 0x92,
863    0x04, 0x2A, 0x32, 0xB5, 0x08, 0x2C, 0x8B, 0x6F,
864    0x1B, 0x14, 0xB8, 0x62, 0x8B, 0xA0, 0x12, 0x4E,
865    0x6A, 0x6F, 0x85, 0x86, 0x24, 0x6A, 0x83, 0xE0,
866};
867static const struct cipher_ccm_st aes_ccm_enc_data[] = {
868    {
869        "AES-128-CCM",
870        ITM(aes_ccm_enc_key0),
871        ITM(aes_ccm_enc_iv0),
872        ITM(aes_ccm_enc_aad0),
873        ITM(aes_ccm_enc_pt0),
874        ITM(aes_ccm_enc_ct0),
875    },
876};
877
878static const unsigned char aes_gcm_enc_pt0[] = {
879    0x97,
880};
881static const unsigned char aes_gcm_enc_key0[] = {
882    0x3E, 0x77, 0x38, 0xA6, 0x0A, 0xB3, 0x95, 0x90,
883    0xFA, 0x8B, 0x3B, 0xCF, 0xE1, 0xA3, 0x8C, 0x7D,
884};
885static const unsigned char aes_gcm_enc_aad0[] = {
886    0xE7, 0xEF, 0xCB, 0x0F, 0x3D, 0x94, 0x1D, 0x0F,
887    0x3D, 0x65, 0x69, 0xFC, 0xDA, 0x77, 0x36, 0x5E,
888    0xB9, 0x20, 0xF8, 0xDA, 0x81, 0xDF, 0x6B, 0x4C,
889    0x2A, 0x70, 0x5E, 0xE3, 0x07, 0xCE, 0xCF, 0x62,
890    0x84,
891};
892static const unsigned char aes_gcm_enc_iv0[] = {
893    0x01, 0x02, 0x03, 0x04, 0xEB, 0xED, 0x2F, 0x4B,
894    0xD1, 0x20, 0x2C, 0xCD,
895};
896static const unsigned char aes_gcm_enc_ct0[] = {
897    0x63,
898};
899static const unsigned char aes_gcm_enc_tag0[] = {
900    0xA2, 0x8E, 0xA5, 0xF6, 0x6A, 0x1C, 0xE6, 0xD7,
901    0xFF, 0xCD, 0x7F, 0x49,
902};
903static const struct cipher_gcm_st aes_gcm_enc_data[] = {
904    {
905        "AES-128-GCM",
906        ITM(aes_gcm_enc_key0),
907        ITM(aes_gcm_enc_iv0),
908        ITM(aes_gcm_enc_aad0),
909        ITM(aes_gcm_enc_pt0),
910        ITM(aes_gcm_enc_ct0),
911        ITM(aes_gcm_enc_tag0),
912    },
913};
914
915#ifndef OPENSSL_NO_DH
916
917struct dh_safe_prime_keygen_st {
918    const char *group_name;
919};
920
921struct dh_safe_prime_keyver_st {
922    const char *group_name;
923    const unsigned char *pub;
924    size_t pub_len;
925    const unsigned char *priv;
926    size_t priv_len;
927    int pass;
928};
929
930static const struct dh_safe_prime_keygen_st dh_safe_prime_keygen_data[] = {
931    { "ffdhe2048" },
932};
933
934static const unsigned char dh_safe_prime_keyver_priv0[] = {
935    0x39, 0x9C, 0x08, 0x8E, 0x4A, 0x1E, 0x1A, 0x03,
936    0x18, 0x5A, 0x72, 0x4F, 0xCB, 0x13, 0xFB, 0x8F,
937    0x7F, 0x14, 0x12, 0x48, 0x9A, 0x18, 0x03, 0x1C,
938    0x03, 0x98, 0x7E, 0x3C, 0xEF, 0x57, 0xF2, 0x1E,
939    0xD5, 0x54, 0x5C, 0x0F, 0x36, 0x5E, 0xB0, 0xF8,
940    0xD1, 0x27, 0x79, 0x24, 0x69, 0xB5, 0x7C, 0xF1,
941    0x39, 0xFC, 0xE3, 0x79, 0xF0, 0xD6, 0xA0, 0xE1,
942    0xA5, 0xA7, 0x65, 0x01, 0xBA, 0xFE, 0xBB, 0x28,
943    0xF0, 0x9C, 0x49, 0x90, 0x68, 0xB4, 0xE7, 0xE2,
944    0xB6, 0xBF, 0xB9, 0xF8, 0x96, 0xAA, 0xF9, 0xE6,
945    0x0B, 0x8A, 0x86, 0x0D, 0x31, 0x2C, 0x90, 0xDA,
946    0x4E, 0xFB, 0xE3, 0x59, 0x3F, 0xFB, 0x14, 0x33,
947    0xF6, 0xBD, 0xDA, 0x5D, 0x27, 0xCC, 0x7C, 0x1C,
948    0x30, 0xC8, 0xB2, 0xAF, 0x2A, 0xA8, 0x25, 0x97,
949    0xDC, 0x5E, 0xEF, 0x22, 0xCB, 0xF6, 0x88, 0x83,
950    0xD0, 0x47, 0x3F, 0x5D, 0xF3, 0x2A, 0xE0, 0xCC,
951    0x86, 0x49, 0x5A, 0x8F, 0x67, 0xF6, 0xC4, 0xD8,
952    0x3F, 0x09, 0xE8, 0x49, 0x89, 0x2E, 0xC0, 0xB4,
953    0x9C, 0x06, 0x9C, 0x40, 0x10, 0xFB, 0x20, 0xC6,
954    0xF1, 0x5F, 0x52, 0x3F, 0x21, 0xBF, 0xBB, 0x13,
955    0x6A, 0x81, 0x1C, 0xFF, 0x19, 0x2A, 0x36, 0xD2,
956    0x13, 0x23, 0x33, 0xD1, 0xEF, 0x34, 0xF3, 0xA6,
957    0xD5, 0x56, 0xAF, 0x1A, 0x63, 0xFC, 0x95, 0x86,
958    0xD5, 0xEB, 0xBF, 0x49, 0x84, 0x73, 0x30, 0x1D,
959    0xE2, 0xA1, 0xAE, 0x6D, 0x20, 0x69, 0xAE, 0xB6,
960    0x1A, 0xB9, 0xF2, 0x7A, 0xE3, 0x17, 0x4E, 0x7C,
961    0x8F, 0xE8, 0x34, 0x02, 0x59, 0xB4, 0x54, 0x9A,
962    0x8D, 0x19, 0x04, 0x2A, 0x8E, 0xF8, 0x05, 0xA3,
963    0x98, 0x5B, 0xBD, 0xB4, 0x6A, 0xDA, 0xAA, 0x1F,
964    0xFC, 0x56, 0xA0, 0x4D, 0x22, 0x66, 0x31, 0xEA,
965    0x8A, 0xC8, 0x61, 0x12, 0x40, 0xF0, 0x38, 0x0B,
966    0xA3, 0x23, 0x40, 0x97, 0x7A, 0x18, 0xE3, 0x42,
967};
968static const unsigned char dh_safe_prime_keyver_pub0[] = {
969    0xFA, 0xDA, 0x86, 0x67, 0xE9, 0x12, 0x67, 0x79,
970    0x50, 0xAE, 0x64, 0x0B, 0x07, 0x47, 0x8F, 0xA5,
971    0xD1, 0x27, 0x6C, 0xFC, 0x10, 0xD8, 0x90, 0x8D,
972    0x93, 0x75, 0xAD, 0x31, 0xBD, 0x97, 0xBE, 0xD5,
973    0xB5, 0x59, 0x2F, 0x37, 0x52, 0x32, 0x30, 0x75,
974    0xD3, 0xA5, 0x36, 0x10, 0x62, 0x4C, 0x82, 0x06,
975    0xB9, 0x29, 0xAE, 0x14, 0xD1, 0xB0, 0xD0, 0x23,
976    0x7A, 0xE6, 0xEA, 0x7E, 0x8E, 0xE3, 0xC7, 0xEB,
977    0x43, 0x78, 0xFA, 0x9A, 0x40, 0x9A, 0x6F, 0xF5,
978    0x42, 0x8A, 0xF7, 0xF3, 0x92, 0xE6, 0x5D, 0x68,
979    0x9B, 0x2A, 0x91, 0xB5, 0x37, 0x33, 0x3F, 0x35,
980    0xA5, 0xFB, 0x54, 0xD1, 0x3C, 0x46, 0xC6, 0x3C,
981    0x16, 0x3A, 0xD7, 0xF8, 0x55, 0x48, 0x9A, 0xB7,
982    0xB1, 0x40, 0xBF, 0xAF, 0x26, 0x1B, 0x07, 0x0F,
983    0x11, 0x04, 0x63, 0x06, 0xDA, 0x2D, 0x45, 0x0E,
984    0x7F, 0x17, 0xA4, 0x38, 0xBD, 0x68, 0x5A, 0xA9,
985    0xC4, 0x7F, 0x7E, 0xC7, 0xF0, 0xFC, 0x74, 0x87,
986    0x55, 0xCD, 0x35, 0xA8, 0xAA, 0x59, 0xA7, 0xFA,
987    0xC1, 0x34, 0x67, 0x04, 0xD8, 0xCC, 0xE1, 0x77,
988    0x60, 0xE1, 0xBE, 0xC0, 0xA5, 0x52, 0xA4, 0x72,
989    0x3A, 0x19, 0xFA, 0x76, 0xC8, 0x67, 0x60, 0x5E,
990    0x1C, 0x43, 0xF4, 0x50, 0xA0, 0xCB, 0x33, 0x77,
991    0x2D, 0x2D, 0x3B, 0x5D, 0x7D, 0x72, 0x2E, 0x38,
992    0xCD, 0x71, 0xB1, 0xBF, 0xB5, 0x10, 0x80, 0xCD,
993    0xA4, 0x5D, 0x70, 0x6E, 0xD5, 0x7E, 0xA2, 0xAA,
994    0xDC, 0xA4, 0x7C, 0x7A, 0x7D, 0x21, 0x09, 0x6A,
995    0x14, 0xB2, 0x21, 0x24, 0xA4, 0xF4, 0x6C, 0xD2,
996    0xBA, 0x76, 0x99, 0xD7, 0x69, 0x44, 0xA8, 0x66,
997    0x85, 0x08, 0x50, 0xBA, 0x42, 0x37, 0xA2, 0xC2,
998    0xD5, 0x45, 0x7E, 0x7B, 0xE9, 0x4A, 0xAE, 0xEE,
999    0x84, 0x2A, 0xEB, 0xA9, 0x4A, 0x69, 0x40, 0x83,
1000    0xBA, 0xCC, 0x1E, 0x1B, 0x25, 0x56, 0x13, 0x88,
1001};
1002static const struct dh_safe_prime_keyver_st dh_safe_prime_keyver_data[] = {
1003    {
1004        "ffdhe2048",
1005        ITM(dh_safe_prime_keyver_pub0),
1006        ITM(dh_safe_prime_keyver_priv0),
1007        PASS
1008    },
1009};
1010
1011#endif /* OPENSSL_NO_DH */
1012
1013struct rsa_keygen_st {
1014    size_t mod;
1015    const unsigned char *e;
1016    size_t e_len;
1017    const unsigned char *xp1;
1018    size_t xp1_len;
1019    const unsigned char *xp2;
1020    size_t xp2_len;
1021    const unsigned char *xp;
1022    size_t xp_len;
1023    const unsigned char *xq1;
1024    size_t xq1_len;
1025    const unsigned char *xq2;
1026    size_t xq2_len;
1027    const unsigned char *xq;
1028    size_t xq_len;
1029
1030    const unsigned char *p1;
1031    size_t p1_len;
1032    const unsigned char *p2;
1033    size_t p2_len;
1034    const unsigned char *q1;
1035    size_t q1_len;
1036    const unsigned char *q2;
1037    size_t q2_len;
1038    const unsigned char *p;
1039    size_t p_len;
1040    const unsigned char *q;
1041    size_t q_len;
1042    const unsigned char *n;
1043    size_t n_len;
1044    const unsigned char *d;
1045    size_t d_len;
1046};
1047
1048static const unsigned char rsa_keygen0_e[] = {
1049    0x01,0x00,0x01
1050};
1051static const unsigned char rsa_keygen0_xp[] = {
1052    0xcf,0x72,0x1b,0x9a,0xfd,0x0d,0x22,0x1a,0x74,0x50,0x97,0x22,0x76,0xd8,0xc0,
1053    0xc2,0xfd,0x08,0x81,0x05,0xdd,0x18,0x21,0x99,0x96,0xd6,0x5c,0x79,0xe3,0x02,
1054    0x81,0xd7,0x0e,0x3f,0x3b,0x34,0xda,0x61,0xc9,0x2d,0x84,0x86,0x62,0x1e,0x3d,
1055    0x5d,0xbf,0x92,0x2e,0xcd,0x35,0x3d,0x6e,0xb9,0x59,0x16,0xc9,0x82,0x50,0x41,
1056    0x30,0x45,0x67,0xaa,0xb7,0xbe,0xec,0xea,0x4b,0x9e,0xa0,0xc3,0x05,0xb3,0x88,
1057    0xd4,0x4c,0xac,0xeb,0xe4,0x03,0xc6,0xca,0xcb,0xd9,0xd3,0x4e,0xf6,0x7f,0x2c,
1058    0x27,0x1e,0x08,0x6c,0xc2,0xd6,0x45,0x1f,0x84,0xe4,0x3c,0x97,0x19,0xde,0xb8,
1059    0x55,0xaf,0x0e,0xcf,0x9e,0xb0,0x9c,0x20,0xd3,0x1f,0xa8,0xd7,0x52,0xc2,0x95,
1060    0x1c,0x80,0x15,0x42,0x4d,0x4f,0x19,0x16
1061};
1062static const unsigned char rsa_keygen0_xp1[] = {
1063    0xac,0x5f,0x7f,0x6e,0x33,0x3e,0x97,0x3a,0xb3,0x17,0x44,0xa9,0x0f,0x7a,0x54,
1064    0x70,0x27,0x06,0x93,0xd5,0x49,0xde,0x91,0x83,0xbc,0x8a,0x7b,0x95
1065};
1066static const unsigned char rsa_keygen0_xp2[] = {
1067    0x0b,0xf6,0xe8,0x79,0x5a,0x81,0xae,0x90,0x1d,0xa4,0x38,0x74,0x9c,0x0e,0x6f,
1068    0xe0,0x03,0xcf,0xc4,0x53,0x16,0x32,0x17,0xf7,0x09,0x5f,0xd9
1069};
1070static const unsigned char rsa_keygen0_xq[] = {
1071    0xfe,0xab,0xf2,0x7c,0x16,0x4a,0xf0,0x8d,0x31,0xc6,0x0a,0x82,0xe2,0xae,0xbb,
1072    0x03,0x7e,0x7b,0x20,0x4e,0x64,0xb0,0x16,0xad,0x3c,0x01,0x1a,0xd3,0x54,0xbf,
1073    0x2b,0xa4,0x02,0x9e,0xc3,0x0d,0x60,0x3d,0x1f,0xb9,0xc0,0x0d,0xe6,0x97,0x68,
1074    0xbb,0x8c,0x81,0xd5,0xc1,0x54,0x96,0x0f,0x99,0xf0,0xa8,0xa2,0xf3,0xc6,0x8e,
1075    0xec,0xbc,0x31,0x17,0x70,0x98,0x24,0xa3,0x36,0x51,0xa8,0x54,0xbd,0x9a,0x89,
1076    0x99,0x6e,0x57,0x5e,0xd0,0x39,0x86,0xc3,0xa3,0x1b,0xc7,0xcf,0xc4,0x4f,0x47,
1077    0x25,0x9e,0x2c,0x79,0xe1,0x2c,0xcc,0xe4,0x63,0xf4,0x02,0x84,0xf8,0xf6,0xa1,
1078    0x5c,0x93,0x14,0xf2,0x68,0x5f,0x3a,0x90,0x2f,0x4e,0x5e,0xf9,0x16,0x05,0xcf,
1079    0x21,0x63,0xca,0xfa,0xb0,0x08,0x02,0xc0
1080};
1081static const unsigned char rsa_keygen0_xq1[] = {
1082    0x9b,0x02,0xd4,0xba,0xf0,0xaa,0x14,0x99,0x6d,0xc0,0xb7,0xa5,0xe1,0xd3,0x70,
1083    0xb6,0x5a,0xa2,0x9b,0x59,0xd5,0x8c,0x1e,0x9f,0x3f,0x9a,0xde,0xeb,0x9e,0x9c,
1084    0x61,0xd6,0x5a,0xe1
1085};
1086static const unsigned char rsa_keygen0_xq2[] = {
1087    0x06,0x81,0x53,0xfd,0xa8,0x7b,0xa3,0x85,0x90,0x15,0x2c,0x97,0xb2,0xa0,0x17,
1088    0x48,0xb0,0x7f,0x0a,0x01,0x6d
1089};
1090/* expected values */
1091static const unsigned char rsa_keygen0_p1[] = {
1092    0xac,0x5f,0x7f,0x6e,0x33,0x3e,0x97,0x3a,0xb3,0x17,0x44,0xa9,0x0f,0x7a,0x54,
1093    0x70,0x27,0x06,0x93,0xd5,0x49,0xde,0x91,0x83,0xbc,0x8a,0x7b,0xc3
1094};
1095static const unsigned char rsa_keygen0_p2[] = {
1096    0x0b,0xf6,0xe8,0x79,0x5a,0x81,0xae,0x90,0x1d,0xa4,0x38,0x74,0x9c,0x0e,0x6f,
1097    0xe0,0x03,0xcf,0xc4,0x53,0x16,0x32,0x17,0xf7,0x09,0x5f,0xd9
1098};
1099static const unsigned char rsa_keygen0_q1[] = {
1100    0x9b,0x02,0xd4,0xba,0xf0,0xaa,0x14,0x99,0x6d,0xc0,0xb7,0xa5,0xe1,0xd3,0x70,
1101    0xb6,0x5a,0xa2,0x9b,0x59,0xd5,0x8c,0x1e,0x9f,0x3f,0x9a,0xde,0xeb,0x9e,0x9c,
1102    0x61,0xd6,0x5d,0x47
1103};
1104static const unsigned char rsa_keygen0_q2[] = {
1105    0x06,0x81,0x53,0xfd,0xa8,0x7b,0xa3,0x85,0x90,0x15,0x2c,0x97,0xb2,0xa0,0x17,
1106    0x48,0xb0,0x7f,0x0a,0x01,0x8f
1107};
1108static const unsigned char rsa_keygen0_p[] = {
1109    0xcf,0x72,0x1b,0x9a,0xfd,0x0d,0x22,0x1a,0x74,0x50,0x97,0x22,0x76,0xd8,0xc0,
1110    0xc2,0xfd,0x08,0x81,0x05,0xdd,0x18,0x21,0x99,0x96,0xd6,0x5c,0x79,0xe3,0x02,
1111    0x81,0xd7,0x0e,0x3f,0x3b,0x34,0xda,0x61,0xc9,0x2d,0x84,0x86,0x62,0x1e,0x3d,
1112    0x5d,0xbf,0x92,0x2e,0xcd,0x35,0x3d,0x6e,0xb9,0x59,0x16,0xc9,0x82,0x50,0x41,
1113    0x30,0x45,0x67,0xaa,0xb7,0xbe,0xec,0xea,0x4b,0x9e,0xa0,0xc3,0x05,0xbc,0x4c,
1114    0x01,0xa5,0x4b,0xbd,0xa4,0x20,0xb5,0x20,0xd5,0x59,0x6f,0x82,0x5c,0x8f,0x4f,
1115    0xe0,0x3a,0x4e,0x7e,0xfe,0x44,0xf3,0x3c,0xc0,0x0e,0x14,0x2b,0x32,0xe6,0x28,
1116    0x8b,0x63,0x87,0x00,0xc3,0x53,0x4a,0x5b,0x71,0x7a,0x5b,0x28,0x40,0xc4,0x18,
1117    0xb6,0x77,0x0b,0xab,0x59,0xa4,0x96,0x7d
1118};
1119static const unsigned char rsa_keygen0_q[] = {
1120    0xfe,0xab,0xf2,0x7c,0x16,0x4a,0xf0,0x8d,0x31,0xc6,0x0a,0x82,0xe2,0xae,0xbb,
1121    0x03,0x7e,0x7b,0x20,0x4e,0x64,0xb0,0x16,0xad,0x3c,0x01,0x1a,0xd3,0x54,0xbf,
1122    0x2b,0xa4,0x02,0x9e,0xc3,0x0d,0x60,0x3d,0x1f,0xb9,0xc0,0x0d,0xe6,0x97,0x68,
1123    0xbb,0x8c,0x81,0xd5,0xc1,0x54,0x96,0x0f,0x99,0xf0,0xa8,0xa2,0xf3,0xc6,0x8e,
1124    0xec,0xbc,0x31,0x17,0x70,0x98,0x24,0xa3,0x36,0x51,0xa8,0x54,0xc4,0x44,0xdd,
1125    0xf7,0x7e,0xda,0x47,0x4a,0x67,0x44,0x5d,0x4e,0x75,0xf0,0x4d,0x00,0x68,0xe1,
1126    0x4a,0xec,0x1f,0x45,0xf9,0xe6,0xca,0x38,0x95,0x48,0x6f,0xdc,0x9d,0x1b,0xa3,
1127    0x4b,0xfd,0x08,0x4b,0x54,0xcd,0xeb,0x3d,0xef,0x33,0x11,0x6e,0xce,0xe4,0x5d,
1128    0xef,0xa9,0x58,0x5c,0x87,0x4d,0xc8,0xcf
1129};
1130static const unsigned char rsa_keygen0_n[] = {
1131    0xce,0x5e,0x8d,0x1a,0xa3,0x08,0x7a,0x2d,0xb4,0x49,0x48,0xf0,0x06,0xb6,0xfe,
1132    0xba,0x2f,0x39,0x7c,0x7b,0xe0,0x5d,0x09,0x2d,0x57,0x4e,0x54,0x60,0x9c,0xe5,
1133    0x08,0x4b,0xe1,0x1a,0x73,0xc1,0x5e,0x2f,0xb6,0x46,0xd7,0x81,0xca,0xbc,0x98,
1134    0xd2,0xf9,0xef,0x1c,0x92,0x8c,0x8d,0x99,0x85,0x28,0x52,0xd6,0xd5,0xab,0x70,
1135    0x7e,0x9e,0xa9,0x87,0x82,0xc8,0x95,0x64,0xeb,0xf0,0x6c,0x0f,0x3f,0xe9,0x02,
1136    0x29,0x2e,0x6d,0xa1,0xec,0xbf,0xdc,0x23,0xdf,0x82,0x4f,0xab,0x39,0x8d,0xcc,
1137    0xac,0x21,0x51,0x14,0xf8,0xef,0xec,0x73,0x80,0x86,0xa3,0xcf,0x8f,0xd5,0xcf,
1138    0x22,0x1f,0xcc,0x23,0x2f,0xba,0xcb,0xf6,0x17,0xcd,0x3a,0x1f,0xd9,0x84,0xb9,
1139    0x88,0xa7,0x78,0x0f,0xaa,0xc9,0x04,0x01,0x20,0x72,0x5d,0x2a,0xfe,0x5b,0xdd,
1140    0x16,0x5a,0xed,0x83,0x02,0x96,0x39,0x46,0x37,0x30,0xc1,0x0d,0x87,0xc2,0xc8,
1141    0x33,0x38,0xed,0x35,0x72,0xe5,0x29,0xf8,0x1f,0x23,0x60,0xe1,0x2a,0x5b,0x1d,
1142    0x6b,0x53,0x3f,0x07,0xc4,0xd9,0xbb,0x04,0x0c,0x5c,0x3f,0x0b,0xc4,0xd4,0x61,
1143    0x96,0x94,0xf1,0x0f,0x4a,0x49,0xac,0xde,0xd2,0xe8,0x42,0xb3,0x4a,0x0b,0x64,
1144    0x7a,0x32,0x5f,0x2b,0x5b,0x0f,0x8b,0x8b,0xe0,0x33,0x23,0x34,0x64,0xf8,0xb5,
1145    0x7f,0x69,0x60,0xb8,0x71,0xe9,0xff,0x92,0x42,0xb1,0xf7,0x23,0xa8,0xa7,0x92,
1146    0x04,0x3d,0x6b,0xff,0xf7,0xab,0xbb,0x14,0x1f,0x4c,0x10,0x97,0xd5,0x6b,0x71,
1147    0x12,0xfd,0x93,0xa0,0x4a,0x3b,0x75,0x72,0x40,0x96,0x1c,0x5f,0x40,0x40,0x57,
1148    0x13
1149};
1150static const unsigned char rsa_keygen0_d[] = {
1151    0x47,0x47,0x49,0x1d,0x66,0x2a,0x4b,0x68,0xf5,0xd8,0x4a,0x24,0xfd,0x6c,0xbf,
1152    0x56,0xb7,0x70,0xf7,0x9a,0x21,0xc8,0x80,0x9e,0xf4,0x84,0xcd,0x88,0x01,0x28,
1153    0xea,0x50,0xab,0x13,0x63,0xdf,0xea,0x14,0x38,0xb5,0x07,0x42,0x81,0x2f,0xda,
1154    0xe9,0x24,0x02,0x7e,0xaf,0xef,0x74,0x09,0x0e,0x80,0xfa,0xfb,0xd1,0x19,0x41,
1155    0xe5,0xba,0x0f,0x7c,0x0a,0xa4,0x15,0x55,0xa2,0x58,0x8c,0x3a,0x48,0x2c,0xc6,
1156    0xde,0x4a,0x76,0xfb,0x72,0xb6,0x61,0xe6,0xd2,0x10,0x44,0x4c,0x33,0xb8,0xd2,
1157    0x74,0xb1,0x9d,0x3b,0xcd,0x2f,0xb1,0x4f,0xc3,0x98,0xbd,0x83,0xb7,0x7e,0x75,
1158    0xe8,0xa7,0x6a,0xee,0xcc,0x51,0x8c,0x99,0x17,0x67,0x7f,0x27,0xf9,0x0d,0x6a,
1159    0xb7,0xd4,0x80,0x17,0x89,0x39,0x9c,0xf3,0xd7,0x0f,0xdf,0xb0,0x55,0x80,0x1d,
1160    0xaf,0x57,0x2e,0xd0,0xf0,0x4f,0x42,0x69,0x55,0xbc,0x83,0xd6,0x97,0x83,0x7a,
1161    0xe6,0xc6,0x30,0x6d,0x3d,0xb5,0x21,0xa7,0xc4,0x62,0x0a,0x20,0xce,0x5e,0x5a,
1162    0x17,0x98,0xb3,0x6f,0x6b,0x9a,0xeb,0x6b,0xa3,0xc4,0x75,0xd8,0x2b,0xdc,0x5c,
1163    0x6f,0xec,0x5d,0x49,0xac,0xa8,0xa4,0x2f,0xb8,0x8c,0x4f,0x2e,0x46,0x21,0xee,
1164    0x72,0x6a,0x0e,0x22,0x80,0x71,0xc8,0x76,0x40,0x44,0x61,0x16,0xbf,0xa5,0xf8,
1165    0x89,0xc7,0xe9,0x87,0xdf,0xbd,0x2e,0x4b,0x4e,0xc2,0x97,0x53,0xe9,0x49,0x1c,
1166    0x05,0xb0,0x0b,0x9b,0x9f,0x21,0x19,0x41,0xe9,0xf5,0x61,0xd7,0x33,0x2e,0x2c,
1167    0x94,0xb8,0xa8,0x9a,0x3a,0xcc,0x6a,0x24,0x8d,0x19,0x13,0xee,0xb9,0xb0,0x48,
1168    0x61
1169};
1170
1171static const struct rsa_keygen_st rsa_keygen_data[] = {
1172    {
1173        2048,
1174        ITM(rsa_keygen0_e),
1175        ITM(rsa_keygen0_xp1),
1176        ITM(rsa_keygen0_xp2),
1177        ITM(rsa_keygen0_xp),
1178        ITM(rsa_keygen0_xq1),
1179        ITM(rsa_keygen0_xq2),
1180        ITM(rsa_keygen0_xq),
1181
1182        ITM(rsa_keygen0_p1),
1183        ITM(rsa_keygen0_p2),
1184        ITM(rsa_keygen0_q1),
1185        ITM(rsa_keygen0_q2),
1186
1187        ITM(rsa_keygen0_p),
1188        ITM(rsa_keygen0_q),
1189        ITM(rsa_keygen0_n),
1190        ITM(rsa_keygen0_d),
1191    },
1192};
1193
1194#define NO_PSS_SALT_LEN -1
1195struct rsa_siggen_st {
1196    const char *sig_pad_mode;
1197    size_t mod;
1198    const char *digest_alg;
1199    const unsigned char *msg;
1200    size_t msg_len;
1201    int pss_salt_len;
1202};
1203static const unsigned char rsa_siggen0_msg[] = {
1204    0xa3, 0x76, 0x35, 0xc2, 0x6d, 0x6b, 0xa0, 0xe1,
1205    0x2e, 0x0b, 0x58, 0x33, 0x0d, 0x30, 0xdd, 0x07,
1206    0xa9, 0x53, 0xd6, 0x37, 0x07, 0xad, 0xa8, 0x67,
1207};
1208static const struct rsa_siggen_st rsa_siggen_data[] = {
1209    {
1210        "pkcs1", /* pkcs1v1.5 */
1211        2048,
1212        "SHA384",
1213        ITM(rsa_siggen0_msg),
1214        NO_PSS_SALT_LEN,
1215    },
1216    {
1217        "x931",
1218        2048,
1219        "SHA384",
1220        ITM(rsa_siggen0_msg),
1221        NO_PSS_SALT_LEN,
1222    },
1223    {
1224        "pss",
1225        2048,
1226        "SHA384",
1227        ITM(rsa_siggen0_msg),
1228        62
1229    },
1230};
1231
1232struct rsa_sigver_st {
1233    const char *sig_pad_mode;
1234    size_t mod;
1235    const char *digest_alg;
1236    const unsigned char *msg;
1237    size_t msg_len;
1238    const unsigned char *n;
1239    size_t n_len;
1240    const unsigned char *e;
1241    size_t e_len;
1242    const unsigned char *sig;
1243    size_t sig_len;
1244    int pss_salt_len;
1245    int pass;
1246};
1247
1248static const unsigned char rsa_sigver15_0_n[] = {
1249    0xbb, 0xbc, 0xf3, 0x35, 0x6f, 0x8e, 0x2e, 0x4f,
1250    0x32, 0xb5, 0xbb, 0x47, 0x9d, 0x02, 0x2a, 0xac,
1251    0x93, 0x9e, 0x70, 0x50, 0x0f, 0x59, 0x0d, 0x38,
1252    0x1c, 0xe5, 0xda, 0x87, 0x61, 0x6b, 0xbf, 0xa8,
1253    0x2c, 0x2f, 0x97, 0xbc, 0x4b, 0xd4, 0xae, 0x21,
1254    0xed, 0xbe, 0x7a, 0x98, 0x15, 0xa8, 0xe2, 0xf0,
1255    0x5f, 0x4d, 0xf8, 0xe2, 0x7c, 0x7e, 0x87, 0x52,
1256    0x8e, 0xbf, 0xb6, 0x3f, 0x1a, 0x12, 0x96, 0x87,
1257    0x2c, 0xd2, 0xac, 0x85, 0x87, 0xe5, 0xcd, 0x4c,
1258    0x31, 0x2b, 0x98, 0x16, 0x9f, 0xcf, 0x3e, 0xef,
1259    0x50, 0xaa, 0xee, 0xc0, 0x6c, 0x80, 0x94, 0xc5,
1260    0xb1, 0xc7, 0x0d, 0xd4, 0x24, 0x94, 0x44, 0x3a,
1261    0x44, 0xdb, 0x10, 0xdc, 0x21, 0x57, 0xe0, 0x77,
1262    0xe5, 0x9c, 0xc4, 0x49, 0x06, 0xe3, 0x5a, 0xea,
1263    0x64, 0xf4, 0x54, 0xca, 0xfc, 0x5a, 0x2b, 0x92,
1264    0x76, 0xe1, 0x86, 0x6f, 0x3b, 0x4e, 0x7d, 0xe7,
1265    0xb9, 0x62, 0xc4, 0x63, 0x12, 0x65, 0x16, 0x58,
1266    0x11, 0x23, 0xba, 0x1b, 0x95, 0x06, 0x1c, 0xdd,
1267    0xdc, 0x49, 0x0b, 0x67, 0x7c, 0xb0, 0xdb, 0x45,
1268    0x88, 0x6e, 0x42, 0xdd, 0x67, 0xbf, 0xec, 0x0e,
1269    0xfa, 0x64, 0x06, 0x3e, 0xb9, 0x40, 0xee, 0xc6,
1270    0x56, 0xdf, 0xe7, 0xd8, 0xed, 0xf1, 0xf7, 0x53,
1271    0xec, 0xd6, 0x1e, 0xb1, 0x66, 0x66, 0x80, 0x16,
1272    0x5b, 0xba, 0x8c, 0x75, 0xe2, 0x6c, 0x19, 0xe7,
1273    0xf9, 0xc8, 0xae, 0x75, 0xc9, 0xc4, 0x19, 0xe6,
1274    0xba, 0xfd, 0x3e, 0x12, 0xf0, 0x88, 0x90, 0xee,
1275    0x39, 0xf8, 0x85, 0x3c, 0x20, 0x3b, 0xfe, 0xb9,
1276    0xa0, 0x07, 0x93, 0x6d, 0x20, 0x78, 0xf2, 0xc2,
1277    0xa5, 0x49, 0x51, 0xa3, 0xb7, 0x13, 0x83, 0xeb,
1278    0x19, 0x55, 0x08, 0x4f, 0x28, 0x32, 0x1a, 0x9b,
1279    0xab, 0x05, 0x9a, 0xaa, 0x28, 0xdc, 0xfa, 0xbf,
1280    0xf3, 0x52, 0x40, 0x0c, 0x4a, 0xb3, 0xd6, 0xb5,
1281};
1282static const unsigned char rsa_sigver15_0_e[] = {
1283    0x01, 0x00, 0x01,
1284};
1285static const unsigned char rsa_sigver15_0_msg[] = {
1286    0xba, 0x1a, 0x03, 0xda, 0x95, 0xd4, 0x36, 0x60,
1287    0xe6, 0x77, 0xc7, 0x80, 0x49, 0x42, 0xc7, 0x98,
1288    0xf6, 0x9e, 0xcf, 0x6f, 0xe5, 0xaf, 0x41, 0x6c,
1289    0x36, 0x29, 0xd0, 0x06, 0xcf, 0x65, 0x43, 0x7c,
1290    0x47, 0xb4, 0x75, 0xc6, 0x03, 0xf3, 0xa1, 0xcb,
1291    0x9e, 0x5f, 0xdc, 0xd4, 0x8e, 0xab, 0xe3, 0x41,
1292    0x05, 0x50, 0x17, 0x7b, 0x16, 0x25, 0xc6, 0x29,
1293    0x19, 0x2f, 0xac, 0xa7, 0x50, 0xba, 0xba, 0xb3,
1294    0xcb, 0xa8, 0x16, 0x6a, 0x88, 0x0a, 0x62, 0x74,
1295    0xdf, 0xed, 0x41, 0x7b, 0x1d, 0x76, 0x17, 0xe1,
1296    0x70, 0x32, 0x11, 0xb2, 0x03, 0xa7, 0x66, 0xd7,
1297    0x69, 0x2f, 0xdc, 0x8d, 0x3f, 0x06, 0x8d, 0x16,
1298    0x0d, 0xa1, 0xeb, 0xae, 0x6e, 0x41, 0x02, 0xc1,
1299    0x71, 0xc9, 0xfd, 0x5b, 0x3e, 0xcc, 0xec, 0xe0,
1300    0xfd, 0xeb, 0xc4, 0xfd, 0xf3, 0x5e, 0xa7, 0xde,
1301    0xee, 0xd0, 0x66, 0xa2, 0xe4, 0x70, 0x45, 0x0c,
1302};
1303static const unsigned char rsa_sigver15_0_sig[] = {
1304    0x4a, 0x8a, 0xcb, 0x88, 0x89, 0xd3, 0xa9, 0x48,
1305    0x84, 0x09, 0x2e, 0x2c, 0x50, 0x02, 0xb9, 0xad,
1306    0xe5, 0x10, 0xac, 0x27, 0x8f, 0x2d, 0x36, 0x7e,
1307    0x6e, 0x32, 0x5c, 0x1d, 0xcb, 0xfa, 0xb8, 0xc7,
1308    0x1a, 0x27, 0x11, 0x2b, 0x34, 0xf4, 0xa9, 0xda,
1309    0xa0, 0x99, 0x86, 0xbe, 0x81, 0xd0, 0xd9, 0x2a,
1310    0x88, 0x25, 0x99, 0xb3, 0x02, 0x50, 0xf1, 0xa5,
1311    0x4f, 0x3a, 0x1d, 0x7f, 0xcf, 0x7d, 0x76, 0x00,
1312    0x06, 0x87, 0x9f, 0x39, 0x3a, 0x3c, 0xc0, 0xc6,
1313    0x46, 0x7a, 0x65, 0x0d, 0x85, 0x06, 0xd8, 0x51,
1314    0xbe, 0xc5, 0x00, 0x80, 0xeb, 0x73, 0xbb, 0x71,
1315    0x8c, 0xcc, 0x72, 0x83, 0x1f, 0x9d, 0x73, 0x75,
1316    0xb8, 0xc8, 0x4c, 0x07, 0x5b, 0xda, 0x8c, 0x9b,
1317    0x6f, 0x65, 0x8c, 0x2e, 0x23, 0x62, 0x6c, 0x8d,
1318    0x94, 0x54, 0x5b, 0x7f, 0xe6, 0x5c, 0x90, 0xa3,
1319    0x07, 0xe2, 0x14, 0x4d, 0xe7, 0x71, 0x6c, 0xfd,
1320    0x64, 0x12, 0x14, 0x12, 0x14, 0x00, 0x1b, 0xc4,
1321    0x65, 0xe7, 0x28, 0x5c, 0x34, 0x2d, 0xda, 0x94,
1322    0xfd, 0x71, 0xcb, 0x27, 0xa6, 0x0e, 0x63, 0xd4,
1323    0xd6, 0x14, 0x65, 0xc0, 0xe3, 0x65, 0x94, 0x61,
1324    0x59, 0xb8, 0xc9, 0x3b, 0x9b, 0xc2, 0x82, 0xe2,
1325    0x76, 0xe7, 0x17, 0xf1, 0xef, 0x32, 0x9e, 0x8a,
1326    0x04, 0xf3, 0x1e, 0xcc, 0x16, 0xb4, 0x45, 0x0e,
1327    0x77, 0xdb, 0x8b, 0x38, 0x6c, 0xcc, 0x98, 0xf4,
1328    0xf8, 0xb5, 0x45, 0x2c, 0xde, 0x23, 0x36, 0xe7,
1329    0x83, 0xf0, 0xb4, 0xb5, 0xe3, 0xd3, 0xd4, 0x59,
1330    0xf1, 0x46, 0x7f, 0x0f, 0x55, 0x58, 0xff, 0x75,
1331    0xc7, 0x7f, 0xee, 0xf8, 0xe0, 0xb2, 0x52, 0xd8,
1332    0xba, 0x37, 0x4f, 0x7b, 0xba, 0xa3, 0xf0, 0x13,
1333    0xa7, 0x3a, 0x21, 0xac, 0xdc, 0x9e, 0x63, 0x36,
1334    0x38, 0xe7, 0x90, 0xeb, 0xea, 0x7f, 0x83, 0xf4,
1335    0x9d, 0xf3, 0x6b, 0x31, 0x44, 0x47, 0x27, 0x8e,
1336};
1337
1338#define rsa_sigver15_1_n rsa_sigver15_0_n
1339#define rsa_sigver15_1_e rsa_sigver15_0_e
1340static const unsigned char rsa_sigver15_1_msg[] = {
1341    0x52, 0x68, 0x35, 0xd6, 0x4a, 0x95, 0xaa, 0xbd,
1342    0x02, 0x69, 0x7f, 0x92, 0xc7, 0x8c, 0x04, 0x71,
1343    0x17, 0x10, 0x5a, 0x0d, 0xab, 0x5e, 0x91, 0x45,
1344    0xb5, 0x70, 0x0d, 0xf8, 0x66, 0x41, 0x2e, 0x19,
1345    0xb3, 0x82, 0x30, 0x06, 0x59, 0x8f, 0x4f, 0x15,
1346    0x1e, 0xa1, 0x2f, 0x70, 0x5a, 0x45, 0x7c, 0x24,
1347    0xb7, 0x0d, 0xcd, 0x74, 0x35, 0x85, 0xcf, 0x73,
1348    0x71, 0x68, 0x9f, 0xd2, 0x26, 0x14, 0x77, 0xf6,
1349    0xf4, 0x3c, 0x8d, 0x4d, 0x60, 0xdd, 0x38, 0xe3,
1350    0x1d, 0x73, 0x55, 0x30, 0x8a, 0x6c, 0xe9, 0x35,
1351    0x7b, 0xdd, 0x08, 0xc7, 0x3c, 0x74, 0xf5, 0x2a,
1352    0xd3, 0xae, 0x8a, 0xe1, 0x86, 0x49, 0xda, 0xc5,
1353    0x9d, 0xfd, 0x16, 0x55, 0x69, 0x67, 0xad, 0x4d,
1354    0x85, 0x46, 0xb7, 0x7a, 0x5c, 0xe9, 0x94, 0xcc,
1355    0xeb, 0xe8, 0xd0, 0xad, 0xc9, 0x13, 0x4a, 0x91,
1356    0x64, 0xa8, 0x96, 0xce, 0x8d, 0xc9, 0x9f, 0xaf,
1357};
1358static const unsigned char rsa_sigver15_1_sig[] = {
1359    0x81, 0x96, 0xdb, 0x65, 0x66, 0x5d, 0xec, 0x14,
1360    0xb3, 0x42, 0xf6, 0x93, 0x89, 0xae, 0x49, 0x81,
1361    0x98, 0xda, 0x71, 0x6d, 0x72, 0x9b, 0xcb, 0x39,
1362    0xe4, 0x85, 0xd1, 0x9f, 0xbe, 0xb8, 0x69, 0x0e,
1363    0xbe, 0xc0, 0x07, 0x88, 0xee, 0xbf, 0xf9, 0x5d,
1364    0x20, 0x0f, 0x90, 0x48, 0x93, 0x53, 0xbb, 0xc6,
1365    0x2f, 0xf8, 0xb7, 0x1d, 0xd2, 0x15, 0x0f, 0x1f,
1366    0x25, 0xab, 0x5b, 0xae, 0x52, 0xe6, 0x8e, 0x06,
1367    0x43, 0xe1, 0xd9, 0x4a, 0x4c, 0xee, 0x24, 0x0e,
1368    0xeb, 0x4f, 0x9b, 0x1a, 0xcb, 0x6d, 0x22, 0x93,
1369    0xa8, 0xa8, 0xcd, 0x4b, 0xa2, 0xf6, 0x88, 0x1a,
1370    0xaf, 0x3b, 0x2b, 0xdf, 0x04, 0x2d, 0x2b, 0x27,
1371    0x54, 0x90, 0x41, 0xb0, 0x4a, 0xda, 0xb1, 0xdf,
1372    0xce, 0x39, 0xda, 0xd7, 0xda, 0x00, 0x97, 0x89,
1373    0x9a, 0xaf, 0x4c, 0xc3, 0x0b, 0x6d, 0xb3, 0xce,
1374    0x59, 0x0b, 0xd9, 0x91, 0x17, 0x31, 0x6a, 0xe7,
1375    0x92, 0xec, 0x62, 0xe1, 0xe9, 0x73, 0xc7, 0x14,
1376    0x06, 0x16, 0x42, 0x8a, 0x68, 0xb1, 0x7c, 0xb8,
1377    0xa1, 0x45, 0xf0, 0x06, 0xf6, 0x85, 0xb5, 0x93,
1378    0xf1, 0x45, 0xc4, 0xe5, 0xf1, 0x76, 0x71, 0xb4,
1379    0xdc, 0x03, 0x55, 0xde, 0xb1, 0xd3, 0x5a, 0x0f,
1380    0x1f, 0x4f, 0xdd, 0xaa, 0x87, 0x8e, 0x46, 0x4d,
1381    0xe3, 0xd0, 0x5b, 0x28, 0x01, 0xc4, 0x94, 0xf7,
1382    0x00, 0x93, 0xae, 0xa3, 0xb5, 0x64, 0x65, 0xa1,
1383    0x16, 0x29, 0x2e, 0xc7, 0xbb, 0xeb, 0x71, 0x02,
1384    0xf9, 0x26, 0xb6, 0xa6, 0x24, 0xdc, 0x6a, 0x0e,
1385    0x0d, 0xad, 0x50, 0xf5, 0x4b, 0xe7, 0x0e, 0x9a,
1386    0x39, 0x20, 0x70, 0xe2, 0xdf, 0x3b, 0x6f, 0x9d,
1387    0xe3, 0x8f, 0x15, 0x6d, 0x5a, 0xaf, 0x12, 0xf7,
1388    0xf7, 0x85, 0x6f, 0x0e, 0xe4, 0x6e, 0x27, 0xf7,
1389    0xb3, 0x44, 0x38, 0x73, 0x45, 0x80, 0x7a, 0x72,
1390    0x82, 0xf3, 0xc8, 0x32, 0xb8, 0x25, 0xef, 0xdc,
1391};
1392
1393static const unsigned char rsa_sigverpss_0_n[] = {
1394    0xb2, 0xee, 0xdd, 0xdf, 0xa0, 0x35, 0x92, 0x21,
1395    0xf4, 0x8e, 0xc3, 0x24, 0x39, 0xed, 0xe2, 0x38,
1396    0xc0, 0xaa, 0xff, 0x35, 0x75, 0x27, 0x05, 0xd4,
1397    0x84, 0x78, 0x23, 0x50, 0xa5, 0x64, 0x1e, 0x11,
1398    0x45, 0x2a, 0xb1, 0xeb, 0x97, 0x07, 0x0b, 0xff,
1399    0xb3, 0x1f, 0xc4, 0xa4, 0x80, 0xae, 0x1c, 0x8c,
1400    0x66, 0x71, 0x95, 0x80, 0x60, 0xea, 0x4d, 0xde,
1401    0x90, 0x98, 0xe8, 0xe2, 0x96, 0xa7, 0x0e, 0x5f,
1402    0x00, 0x74, 0xed, 0x79, 0xc3, 0xe2, 0xc2, 0x4e,
1403    0xbe, 0x07, 0xbd, 0xb1, 0xb2, 0xeb, 0x6c, 0x29,
1404    0x9a, 0x59, 0x29, 0x81, 0xa3, 0x83, 0xa3, 0x00,
1405    0x24, 0xa8, 0xfd, 0x45, 0xbb, 0xca, 0x1e, 0x44,
1406    0x47, 0xbb, 0x82, 0x4a, 0x5b, 0x71, 0x46, 0xc0,
1407    0xb4, 0xcc, 0x1b, 0x5e, 0x88, 0x9c, 0x89, 0x69,
1408    0xb4, 0xb0, 0x7c, 0x8e, 0xea, 0x24, 0xc0, 0x2f,
1409    0xc8, 0x3f, 0x9d, 0x9f, 0x43, 0xd3, 0xf0, 0x25,
1410    0x67, 0xf1, 0xf0, 0x9b, 0xd4, 0xff, 0x17, 0x9f,
1411    0xc3, 0x41, 0x2f, 0x53, 0x33, 0xdd, 0x73, 0x8a,
1412    0x5c, 0x74, 0x04, 0x3b, 0x60, 0xcc, 0x9f, 0xca,
1413    0x01, 0xb0, 0x0d, 0xe0, 0xcf, 0xb2, 0xf0, 0x08,
1414    0x73, 0xb6, 0x67, 0x6c, 0x54, 0x9e, 0x1c, 0x01,
1415    0xb5, 0x34, 0xab, 0xcf, 0x77, 0xfe, 0x04, 0x01,
1416    0xc1, 0xd2, 0x4d, 0x47, 0x60, 0x5c, 0x68, 0x47,
1417    0x8a, 0x47, 0x3c, 0x3a, 0xa3, 0xb2, 0x75, 0x87,
1418    0x6e, 0x01, 0x7b, 0xdb, 0xe9, 0x6e, 0x63, 0xb2,
1419    0x65, 0xab, 0xc6, 0xed, 0x0d, 0xa6, 0x84, 0xff,
1420    0xf3, 0xcf, 0xd3, 0x9a, 0x96, 0x9b, 0x5c, 0x22,
1421    0xf8, 0x07, 0x7d, 0x63, 0x75, 0x50, 0x91, 0x5b,
1422    0xc4, 0x1f, 0x29, 0x1f, 0x5d, 0xb0, 0x6e, 0xfa,
1423    0x9b, 0x16, 0xf0, 0xe4, 0xda, 0x2c, 0x94, 0x20,
1424    0x9b, 0x44, 0x51, 0x38, 0xd0, 0xe4, 0x86, 0xc9,
1425    0x76, 0x12, 0x04, 0x1a, 0x25, 0x14, 0xb7, 0x14,
1426    0xdb, 0x6e, 0xd2, 0xc3, 0x57, 0x2c, 0x4c, 0xec,
1427    0xfe, 0x25, 0xed, 0x3e, 0xe3, 0x26, 0xa8, 0xd4,
1428    0xd0, 0x21, 0xbc, 0x09, 0x7e, 0xb0, 0x02, 0x3c,
1429    0xa3, 0x43, 0xa4, 0x1f, 0x73, 0x54, 0x5f, 0xa3,
1430    0xe2, 0x49, 0x4e, 0x25, 0xe8, 0xfc, 0xfb, 0xa9,
1431    0x29, 0xc0, 0x7d, 0xd0, 0x06, 0xd5, 0x5c, 0x52,
1432    0x68, 0x3c, 0xf8, 0xc5, 0xdb, 0x92, 0x27, 0x7c,
1433    0xd8, 0x56, 0x1a, 0x7d, 0xe3, 0x32, 0xe5, 0x08,
1434    0xc9, 0x36, 0x9d, 0x7e, 0xd2, 0x2d, 0xc2, 0x53,
1435    0xf2, 0x7e, 0xce, 0x8a, 0x10, 0x5c, 0xf7, 0xe9,
1436    0x99, 0xa6, 0xa8, 0xf5, 0x8d, 0x6c, 0xed, 0xf3,
1437    0xa1, 0xc8, 0x2a, 0x75, 0x77, 0x99, 0x18, 0xe1,
1438    0x32, 0xdb, 0x35, 0x4a, 0x8b, 0x4a, 0xec, 0xc2,
1439    0x15, 0xe9, 0x4b, 0x89, 0x13, 0x81, 0xfb, 0x0c,
1440    0xf9, 0xb4, 0xd8, 0xee, 0xb5, 0xba, 0x45, 0xa1,
1441    0xea, 0x01, 0xf9, 0xbb, 0xd5, 0xa1, 0x73, 0xa1,
1442    0x5b, 0xef, 0x98, 0xa8, 0xcf, 0x74, 0xf4, 0xd5,
1443    0x1a, 0xe2, 0xa7, 0xb9, 0x37, 0x43, 0xb1, 0x29,
1444    0x94, 0xc3, 0x71, 0x74, 0x34, 0x7d, 0x6f, 0xac,
1445    0x97, 0xb3, 0x5b, 0x3a, 0x0a, 0x3c, 0xe2, 0x94,
1446    0x6c, 0x39, 0xb8, 0xe9, 0x2c, 0xf9, 0xc3, 0x8b,
1447    0xd1, 0x80, 0x4d, 0x22, 0x64, 0x63, 0x20, 0x1b,
1448    0xeb, 0xf9, 0x09, 0x14, 0x86, 0x6e, 0xf4, 0x6d,
1449    0xfc, 0xe5, 0x1b, 0xf7, 0xf2, 0xe0, 0x4d, 0xc8,
1450    0xeb, 0x24, 0x35, 0x16, 0x0a, 0x81, 0x9f, 0x9e,
1451    0x47, 0xd8, 0xea, 0x85, 0xda, 0x77, 0x6c, 0x3d,
1452    0xd4, 0xa9, 0x15, 0xbd, 0xda, 0x5d, 0xf0, 0x72,
1453    0x8d, 0xb5, 0x12, 0x72, 0xb1, 0x62, 0xa0, 0xad,
1454    0xc8, 0x0e, 0x5b, 0x47, 0x4c, 0x69, 0xf7, 0x07,
1455    0xe8, 0xd9, 0x9b, 0xc7, 0x2f, 0xd5, 0x68, 0x1e,
1456    0x1c, 0xe0, 0x8f, 0x40, 0x45, 0x5f, 0x08, 0xc8,
1457    0x95, 0x57, 0xb7, 0x35, 0x92, 0x97, 0xf9, 0x7d,
1458};
1459static const unsigned char rsa_sigverpss_0_e[] = {
1460    0x01, 0x00, 0x01,
1461};
1462static const unsigned char rsa_sigverpss_0_msg[] = {
1463    0x32, 0x03, 0x0c, 0x2e, 0x06, 0xfc, 0x0f, 0xa5,
1464    0x65, 0xcd, 0x0f, 0x88, 0x52, 0x80, 0xc3, 0x43,
1465    0xda, 0x01, 0x36, 0x48, 0xf5, 0x76, 0xc8, 0x03,
1466    0xae, 0xce, 0x76, 0x0f, 0x83, 0x9d, 0x5c, 0xaa,
1467    0x0f, 0x27, 0x78, 0x66, 0xe6, 0xba, 0xb1, 0x22,
1468    0xc1, 0x42, 0x18, 0x39, 0xdb, 0x17, 0x6d, 0xf9,
1469    0x9a, 0x19, 0xe5, 0x57, 0x72, 0xff, 0x2a, 0xe0,
1470    0x07, 0xec, 0xa4, 0xf3, 0x91, 0x43, 0xf7, 0x2e,
1471    0x85, 0xbd, 0xcd, 0x26, 0x72, 0xb9, 0xd5, 0x5b,
1472    0x28, 0xd3, 0x0c, 0x6b, 0x20, 0xb7, 0x3b, 0x85,
1473    0x18, 0x38, 0xc0, 0x21, 0xfe, 0x9c, 0x92, 0xee,
1474    0x0f, 0x3a, 0x80, 0x0c, 0x40, 0x48, 0xb9, 0x7c,
1475    0xdd, 0xee, 0x91, 0xd5, 0x70, 0x9e, 0x82, 0x38,
1476    0xe4, 0xa8, 0x71, 0x85, 0xea, 0x09, 0x33, 0xcf,
1477    0x9c, 0x84, 0x50, 0x0e, 0x60, 0xf5, 0x07, 0x14,
1478    0x10, 0xe1, 0x92, 0xc3, 0x58, 0x51, 0xab, 0x7c,
1479};
1480static const unsigned char rsa_sigverpss_0_sig[] = {
1481    0x43, 0xb2, 0x4a, 0x50, 0xa7, 0xe2, 0x6c, 0x5d,
1482    0x50, 0xc5, 0x39, 0xc1, 0xc1, 0x35, 0xbd, 0x66,
1483    0xbd, 0x86, 0x54, 0xc5, 0x2e, 0x65, 0xfc, 0x19,
1484    0x19, 0x6a, 0x22, 0x43, 0x22, 0x11, 0x26, 0xae,
1485    0x51, 0x78, 0xfa, 0xfa, 0xc1, 0xf0, 0x77, 0x1b,
1486    0xd6, 0x5b, 0x93, 0xbd, 0x84, 0xe4, 0x35, 0xbd,
1487    0x8d, 0x91, 0xb2, 0x7c, 0xb2, 0xb1, 0xda, 0xd7,
1488    0x72, 0x62, 0x88, 0x3e, 0xe9, 0x40, 0x27, 0x4e,
1489    0xa5, 0x17, 0x94, 0xf1, 0xe9, 0xdd, 0x8c, 0x6c,
1490    0x5b, 0xc0, 0x0b, 0xe3, 0x7c, 0x8b, 0xc8, 0x10,
1491    0x57, 0x35, 0x69, 0xb7, 0x56, 0xe0, 0x2f, 0x61,
1492    0x2e, 0x13, 0x11, 0x79, 0xfa, 0x60, 0x8f, 0x2a,
1493    0x65, 0x73, 0xf5, 0x17, 0x34, 0x74, 0x72, 0x22,
1494    0xff, 0x22, 0x5b, 0x97, 0x59, 0x44, 0xf4, 0xfb,
1495    0x4a, 0x2b, 0x7e, 0x28, 0xe3, 0x79, 0x84, 0x24,
1496    0x63, 0xeb, 0xde, 0x63, 0x88, 0xe0, 0xbd, 0x28,
1497    0xef, 0x49, 0x6d, 0xd4, 0x2a, 0x87, 0x53, 0xba,
1498    0x5f, 0xde, 0xe3, 0xd4, 0xb2, 0xc2, 0x6f, 0x49,
1499    0x10, 0xae, 0x5e, 0x15, 0xdd, 0x0f, 0x91, 0xe2,
1500    0xeb, 0x1e, 0xc5, 0x36, 0x8e, 0xdf, 0xa6, 0x17,
1501    0x25, 0x21, 0x16, 0x06, 0x72, 0x37, 0x77, 0x19,
1502    0xe5, 0x88, 0x1b, 0x0b, 0x5b, 0x80, 0x44, 0x8f,
1503    0x13, 0xef, 0xbb, 0xfa, 0xf6, 0x4a, 0x11, 0x6a,
1504    0x6a, 0x0c, 0xe0, 0x42, 0x6b, 0x7d, 0xfd, 0xad,
1505    0xb0, 0x4b, 0xff, 0x3f, 0x20, 0xca, 0x5f, 0x64,
1506    0xcc, 0xc9, 0x5b, 0x89, 0xc2, 0x05, 0x33, 0xf9,
1507    0xa5, 0x31, 0x55, 0xfb, 0xdc, 0xeb, 0xd1, 0x24,
1508    0xbf, 0x17, 0x0f, 0xc8, 0xfd, 0xe9, 0x6a, 0xc1,
1509    0xa7, 0x94, 0x36, 0x72, 0x22, 0x29, 0x2c, 0x1c,
1510    0xd1, 0x8b, 0x7b, 0x37, 0x42, 0x25, 0x8d, 0xe3,
1511    0xcc, 0x06, 0x5f, 0x3c, 0x15, 0xfa, 0x74, 0x8a,
1512    0x83, 0xf0, 0xcc, 0xf5, 0x30, 0xd1, 0xa8, 0x88,
1513    0x9f, 0x4e, 0x1d, 0xd8, 0xe3, 0x1b, 0xb5, 0xe3,
1514    0xdb, 0xce, 0xbc, 0x03, 0xfe, 0xe6, 0xa2, 0xb4,
1515    0x94, 0x76, 0xd1, 0xb7, 0xce, 0xae, 0x6a, 0x7c,
1516    0xbd, 0x4f, 0xd6, 0xfe, 0x60, 0xd0, 0x78, 0xd4,
1517    0x04, 0x3f, 0xe0, 0x17, 0x2a, 0x41, 0x26, 0x5a,
1518    0x81, 0x80, 0xcd, 0x40, 0x7c, 0x4f, 0xd6, 0xd6,
1519    0x1d, 0x1f, 0x58, 0x59, 0xaf, 0xa8, 0x00, 0x91,
1520    0x69, 0xb1, 0xf8, 0x3b, 0xef, 0x59, 0x7e, 0x83,
1521    0x4e, 0xca, 0x1d, 0x33, 0x35, 0xb6, 0xa5, 0x9a,
1522    0x0e, 0xc5, 0xe5, 0x11, 0xdd, 0x5d, 0xb7, 0x32,
1523    0x66, 0x23, 0x63, 0x08, 0xbc, 0x2e, 0x9c, 0x10,
1524    0x30, 0xa4, 0x13, 0x38, 0xee, 0xc7, 0x10, 0xf6,
1525    0xed, 0xe9, 0xe1, 0xd1, 0x89, 0x8b, 0x94, 0x21,
1526    0xde, 0x76, 0x72, 0x90, 0xc4, 0xbc, 0x59, 0x31,
1527    0x1b, 0x1b, 0xd7, 0xa0, 0xd0, 0x3d, 0xaa, 0x43,
1528    0x66, 0xfa, 0x43, 0x8d, 0xcc, 0x37, 0xdc, 0x60,
1529    0x59, 0xaf, 0x02, 0x98, 0xe5, 0xe0, 0x17, 0xd6,
1530    0xc3, 0x84, 0xf2, 0xaa, 0x5d, 0x88, 0xa8, 0x78,
1531    0xbf, 0xbd, 0x18, 0x34, 0x9f, 0x5c, 0x6d, 0x22,
1532    0x0c, 0x77, 0x4f, 0x16, 0xf2, 0x85, 0x88, 0x2e,
1533    0x9a, 0x2b, 0x30, 0x1e, 0x17, 0xc8, 0xc7, 0xd4,
1534    0x20, 0x93, 0x47, 0x0d, 0x32, 0x7d, 0xcb, 0x77,
1535    0x85, 0x82, 0xc3, 0x80, 0x75, 0x10, 0x83, 0x33,
1536    0xd5, 0xde, 0x47, 0xd4, 0x22, 0x55, 0x4d, 0xca,
1537    0x4f, 0x90, 0xd2, 0x9f, 0x80, 0x58, 0x22, 0x4c,
1538    0x5a, 0xaa, 0x53, 0x9e, 0xeb, 0xde, 0x62, 0x8a,
1539    0xfb, 0xd7, 0x4b, 0x28, 0xd5, 0xe1, 0x02, 0xf9,
1540    0x61, 0x74, 0x42, 0x12, 0x32, 0x5d, 0x1b, 0x10,
1541    0x8f, 0x51, 0x8d, 0x7c, 0x59, 0xc5, 0xb7, 0x5a,
1542    0x68, 0xe7, 0xdd, 0xb0, 0xc0, 0x22, 0xbc, 0xf1,
1543    0x37, 0xcc, 0x63, 0xa2, 0x85, 0xb9, 0x11, 0x91,
1544    0x43, 0xb9, 0x7b, 0xfb, 0x4a, 0x21, 0xc9, 0xd5,
1545};
1546
1547#define rsa_sigverpss_1_n rsa_sigverpss_0_n
1548#define rsa_sigverpss_1_e rsa_sigverpss_0_e
1549static const unsigned char rsa_sigverpss_1_msg[] = {
1550    0x29, 0xdc, 0x70, 0xd8, 0xa5, 0xde, 0x41, 0x1d,
1551    0xed, 0x05, 0x16, 0x04, 0x48, 0x05, 0x21, 0x05,
1552    0x1c, 0x40, 0x8a, 0xbb, 0x6c, 0x3c, 0x11, 0xf3,
1553    0x9f, 0x55, 0xf4, 0x03, 0x83, 0xaf, 0x13, 0x5d,
1554    0x91, 0x6f, 0x52, 0x63, 0x73, 0x2b, 0x3f, 0x7d,
1555    0xc3, 0x9e, 0xf5, 0x69, 0x16, 0xa1, 0x40, 0xd3,
1556    0x39, 0x57, 0x01, 0x26, 0xba, 0xa7, 0xd4, 0xa1,
1557    0xaa, 0xef, 0xf1, 0xad, 0xa2, 0xf6, 0x50, 0x6e,
1558    0x04, 0x23, 0x11, 0x98, 0x83, 0xed, 0x1a, 0x84,
1559    0xe6, 0x93, 0x02, 0x83, 0x08, 0x0d, 0x2e, 0x72,
1560    0x24, 0x42, 0x39, 0x8e, 0x4f, 0x7b, 0x99, 0x8a,
1561    0x46, 0x18, 0x80, 0xdf, 0x6a, 0x82, 0x01, 0x64,
1562    0x09, 0x60, 0x74, 0x1e, 0xdf, 0x0e, 0x1b, 0x59,
1563    0xdd, 0x4a, 0x06, 0xf7, 0x29, 0x31, 0x33, 0x09,
1564    0x65, 0x6b, 0xfa, 0x9c, 0x34, 0xa2, 0xa8, 0xd5,
1565    0xfa, 0x38, 0x6b, 0x41, 0xe4, 0x39, 0x6e, 0x66,
1566};
1567static const unsigned char rsa_sigverpss_1_sig[] = {
1568    0x48, 0x7f, 0x71, 0x82, 0x63, 0x1d, 0xf2, 0xee,
1569    0xe8, 0x79, 0xeb, 0x3a, 0xaf, 0x41, 0x8a, 0x7c,
1570    0xab, 0x0b, 0xd4, 0x57, 0xb6, 0x62, 0x9f, 0x6f,
1571    0xec, 0xc1, 0xd4, 0xef, 0x55, 0x51, 0xd1, 0x0a,
1572    0x0e, 0x1d, 0x8a, 0x64, 0x69, 0x08, 0x57, 0xf5,
1573    0x04, 0xa8, 0x6c, 0xde, 0x76, 0x4d, 0x81, 0xf4,
1574    0x95, 0x7e, 0x95, 0x6d, 0x41, 0x31, 0x2f, 0x9d,
1575    0xe7, 0x47, 0x45, 0x45, 0x9f, 0xa8, 0xf8, 0xe3,
1576    0x30, 0xa6, 0x41, 0x0f, 0x12, 0x05, 0x6d, 0x2b,
1577    0x1a, 0xae, 0xef, 0xd4, 0x6b, 0xc6, 0xf4, 0x61,
1578    0xa5, 0x07, 0xfe, 0xe8, 0xd0, 0xfd, 0xa3, 0x93,
1579    0x58, 0xb4, 0x22, 0x37, 0x1b, 0x84, 0xcb, 0xef,
1580    0xae, 0x24, 0xec, 0x62, 0xe2, 0x7d, 0xf4, 0x09,
1581    0x5a, 0xc3, 0x0f, 0x4b, 0x49, 0xb7, 0xe7, 0xb2,
1582    0x9b, 0x01, 0x2c, 0x8a, 0x39, 0xdd, 0x10, 0xec,
1583    0x30, 0xb9, 0x7e, 0x39, 0x98, 0x94, 0x2a, 0xa4,
1584    0xb3, 0x97, 0x7f, 0x85, 0x6e, 0x19, 0x75, 0x9e,
1585    0x91, 0x94, 0xaa, 0xb5, 0xb0, 0x1f, 0x72, 0x50,
1586    0xb5, 0x6d, 0x7a, 0xff, 0x90, 0xcc, 0x24, 0x80,
1587    0x20, 0x23, 0x1c, 0xf3, 0xbd, 0x01, 0xc7, 0x82,
1588    0x63, 0x04, 0xcc, 0xbd, 0xfb, 0x41, 0x9a, 0xb8,
1589    0xeb, 0x6d, 0x78, 0x02, 0xee, 0x4a, 0x6d, 0xbb,
1590    0xf7, 0xb7, 0xcf, 0x91, 0xca, 0x11, 0xf2, 0x62,
1591    0xec, 0x18, 0x14, 0xcd, 0x10, 0xd8, 0x60, 0xe5,
1592    0x20, 0x86, 0x74, 0x84, 0xd5, 0x35, 0x34, 0x69,
1593    0x65, 0x93, 0x31, 0x99, 0xb6, 0x2d, 0x43, 0x23,
1594    0x1d, 0x73, 0x55, 0xfa, 0x03, 0x76, 0x22, 0xcc,
1595    0x66, 0xbc, 0x20, 0x2f, 0x7f, 0x4f, 0x78, 0xdd,
1596    0xd1, 0x1f, 0xb6, 0x79, 0x6b, 0x58, 0x58, 0x57,
1597    0x56, 0x87, 0xbc, 0x72, 0x6c, 0x81, 0x0a, 0xe2,
1598    0xae, 0xb2, 0x4b, 0x66, 0x5b, 0x65, 0x35, 0x2b,
1599    0x89, 0x0b, 0xa8, 0x5c, 0x34, 0xb3, 0x5f, 0xb0,
1600    0x21, 0x5d, 0x4c, 0x60, 0x57, 0x73, 0xb6, 0x16,
1601    0x94, 0xa7, 0x55, 0x52, 0x2a, 0x87, 0x10, 0xc9,
1602    0x7c, 0x86, 0xb9, 0xdd, 0xf5, 0xb9, 0x30, 0xc0,
1603    0xe6, 0x2a, 0xc9, 0x08, 0x3a, 0x88, 0xdc, 0x27,
1604    0xea, 0x2f, 0xd9, 0x37, 0x06, 0x36, 0xd8, 0xe5,
1605    0x66, 0x11, 0x54, 0x72, 0x4c, 0xc8, 0xa2, 0xc1,
1606    0xed, 0xf5, 0x17, 0x3b, 0x06, 0x2b, 0x4c, 0xc9,
1607    0x49, 0x2b, 0x98, 0x6f, 0xb8, 0x77, 0x96, 0x0c,
1608    0x6b, 0x47, 0x81, 0x6c, 0xf3, 0x94, 0x3d, 0x3b,
1609    0x24, 0x2d, 0x26, 0x9c, 0x40, 0xc1, 0x1f, 0xa7,
1610    0xb2, 0xb4, 0x29, 0xb6, 0x05, 0xe5, 0x6e, 0x3c,
1611    0xab, 0xd4, 0xaa, 0x3d, 0x78, 0x63, 0x3e, 0xf2,
1612    0x75, 0x0d, 0xc3, 0x46, 0x0e, 0x68, 0xd7, 0x3d,
1613    0xb9, 0xcb, 0x9a, 0x0a, 0xce, 0xec, 0x6f, 0x21,
1614    0x8c, 0x86, 0xaa, 0xeb, 0x7b, 0x56, 0x41, 0xa6,
1615    0x7a, 0xd3, 0x03, 0x02, 0x5c, 0x76, 0x01, 0xf7,
1616    0x5d, 0x5e, 0x8e, 0x7d, 0xac, 0x35, 0x84, 0x11,
1617    0xc6, 0xbc, 0x9a, 0x53, 0xcc, 0x3b, 0x4f, 0x5b,
1618    0x23, 0x79, 0x30, 0x52, 0xc3, 0x73, 0x5d, 0xc8,
1619    0xf1, 0xec, 0x2e, 0x0d, 0xda, 0x64, 0x90, 0x50,
1620    0x62, 0xcf, 0x18, 0xc5, 0x52, 0x45, 0xe7, 0x38,
1621    0x1a, 0xec, 0x01, 0x18, 0xbb, 0x85, 0x97, 0x7f,
1622    0x68, 0x2b, 0x6f, 0xfc, 0xcd, 0x08, 0xc8, 0xe2,
1623    0xca, 0x7e, 0xa6, 0x4f, 0xca, 0x5d, 0xdd, 0xf8,
1624    0xfa, 0x52, 0x1c, 0x91, 0x82, 0x56, 0x07, 0xb2,
1625    0x03, 0x3e, 0xa2, 0x8d, 0x60, 0xff, 0x78, 0x05,
1626    0x1a, 0xfc, 0x6e, 0x27, 0x80, 0xbd, 0x90, 0x98,
1627    0x83, 0x46, 0xba, 0xec, 0xee, 0x89, 0xe3, 0x1b,
1628    0xc0, 0xcd, 0x2f, 0x05, 0x37, 0x18, 0xb5, 0xfa,
1629    0xc3, 0x91, 0x85, 0x0f, 0xb7, 0x74, 0x1c, 0x64,
1630    0xf0, 0xf8, 0x56, 0x35, 0xb8, 0x1d, 0xc3, 0x39,
1631    0x5c, 0xea, 0x8a, 0x92, 0x31, 0xd2, 0x11, 0x4b,
1632};
1633
1634static const unsigned char rsa_sigverx931_0_n[] = {
1635    0xa0, 0x16, 0x14, 0x80, 0x8b, 0x17, 0x2b, 0xad,
1636    0xd7, 0x07, 0x31, 0x6d, 0xfc, 0xba, 0x25, 0x83,
1637    0x09, 0xa0, 0xf7, 0x71, 0xc6, 0x06, 0x22, 0x87,
1638    0xd6, 0xbd, 0x13, 0xd9, 0xfe, 0x7c, 0xf7, 0xe6,
1639    0x48, 0xdb, 0x27, 0xd8, 0xa5, 0x49, 0x8e, 0x8c,
1640    0xea, 0xbe, 0xe0, 0x04, 0x6f, 0x3d, 0x3b, 0x73,
1641    0xdc, 0xc5, 0xd4, 0xdc, 0x85, 0xef, 0xea, 0x10,
1642    0x46, 0xf3, 0x88, 0xb9, 0x93, 0xbc, 0xa0, 0xb6,
1643    0x06, 0x02, 0x82, 0xb4, 0x2d, 0x54, 0xec, 0x79,
1644    0x50, 0x8a, 0xfc, 0xfa, 0x62, 0x45, 0xbb, 0xd7,
1645    0x26, 0xcd, 0x88, 0xfa, 0xe8, 0x0f, 0x26, 0x5b,
1646    0x1f, 0x21, 0x3f, 0x3b, 0x5d, 0x98, 0x3f, 0x02,
1647    0x8c, 0xa1, 0xbf, 0xc0, 0x70, 0x4d, 0xd1, 0x41,
1648    0xfd, 0xb9, 0x55, 0x12, 0x90, 0xc8, 0x6e, 0x0f,
1649    0x19, 0xa8, 0x5c, 0x31, 0xd6, 0x16, 0x0e, 0xdf,
1650    0x08, 0x84, 0xcd, 0x4b, 0xfd, 0x28, 0x8d, 0x7d,
1651    0x6e, 0xea, 0xc7, 0x95, 0x4a, 0xc3, 0x84, 0x54,
1652    0x7f, 0xb0, 0x20, 0x29, 0x96, 0x39, 0x4c, 0x3e,
1653    0x85, 0xec, 0x22, 0xdd, 0xb9, 0x14, 0xbb, 0x04,
1654    0x2f, 0x4c, 0x0c, 0xe3, 0xfa, 0xae, 0x47, 0x79,
1655    0x59, 0x8e, 0x4e, 0x7d, 0x4a, 0x17, 0xae, 0x16,
1656    0x38, 0x66, 0x4e, 0xff, 0x45, 0x7f, 0xac, 0x5e,
1657    0x75, 0x9f, 0x51, 0x18, 0xe6, 0xad, 0x6b, 0x8b,
1658    0x3d, 0x08, 0x4d, 0x9a, 0xd2, 0x11, 0xba, 0xa8,
1659    0xc3, 0xb5, 0x17, 0xb5, 0xdf, 0xe7, 0x39, 0x89,
1660    0x27, 0x7b, 0xeb, 0xf4, 0xe5, 0x7e, 0xa9, 0x7b,
1661    0x39, 0x40, 0x6f, 0xe4, 0x82, 0x14, 0x3d, 0x62,
1662    0xb6, 0xd4, 0x43, 0xd0, 0x0a, 0x2f, 0xc1, 0x73,
1663    0x3d, 0x99, 0x37, 0xbe, 0x62, 0x13, 0x6a, 0x8b,
1664    0xeb, 0xc5, 0x64, 0xd5, 0x2a, 0x8b, 0x4f, 0x7f,
1665    0x82, 0x48, 0x69, 0x3e, 0x08, 0x1b, 0xb5, 0x77,
1666    0xd3, 0xdc, 0x1b, 0x2c, 0xe5, 0x59, 0xf6, 0x33,
1667    0x47, 0xa0, 0x0f, 0xff, 0x8a, 0x6a, 0x1d, 0x66,
1668    0x24, 0x67, 0x36, 0x7d, 0x21, 0xda, 0xc1, 0xd4,
1669    0x11, 0x6c, 0xe8, 0x5f, 0xd7, 0x8a, 0x53, 0x5c,
1670    0xb2, 0xe2, 0xf9, 0x14, 0x29, 0x0f, 0xcf, 0x28,
1671    0x32, 0x4f, 0xc6, 0x17, 0xf6, 0xbc, 0x0e, 0xb8,
1672    0x99, 0x7c, 0x14, 0xa3, 0x40, 0x3f, 0xf3, 0xe4,
1673    0x31, 0xbe, 0x54, 0x64, 0x5a, 0xad, 0x1d, 0xb0,
1674    0x37, 0xcc, 0xd9, 0x0b, 0xa4, 0xbc, 0xe0, 0x07,
1675    0x37, 0xd1, 0xe1, 0x65, 0xc6, 0x53, 0xfe, 0x60,
1676    0x6a, 0x64, 0xa4, 0x01, 0x00, 0xf3, 0x5b, 0x9a,
1677    0x28, 0x61, 0xde, 0x7a, 0xd7, 0x0d, 0x56, 0x1e,
1678    0x4d, 0xa8, 0x6a, 0xb5, 0xf2, 0x86, 0x2a, 0x4e,
1679    0xaa, 0x37, 0x23, 0x5a, 0x3b, 0x69, 0x66, 0x81,
1680    0xc8, 0x8e, 0x1b, 0x31, 0x0f, 0x28, 0x31, 0x9a,
1681    0x2d, 0xe5, 0x79, 0xcc, 0xa4, 0xca, 0x60, 0x45,
1682    0xf7, 0x83, 0x73, 0x5a, 0x01, 0x29, 0xda, 0xf7,
1683
1684};
1685static const unsigned char rsa_sigverx931_0_e[] = {
1686    0x01, 0x00, 0x01,
1687};
1688static const unsigned char rsa_sigverx931_0_msg[] = {
1689    0x82, 0x2e, 0x41, 0x70, 0x9d, 0x1f, 0xe9, 0x47,
1690    0xec, 0xf1, 0x79, 0xcc, 0x05, 0xef, 0xdb, 0xcd,
1691    0xca, 0x8b, 0x8e, 0x61, 0x45, 0xad, 0xa6, 0xd9,
1692    0xd7, 0x4b, 0x15, 0xf4, 0x92, 0x3a, 0x2a, 0x52,
1693    0xe3, 0x44, 0x57, 0x2b, 0x74, 0x7a, 0x37, 0x41,
1694    0x50, 0xcb, 0xcf, 0x13, 0x49, 0xd6, 0x15, 0x54,
1695    0x97, 0xfd, 0xae, 0x9b, 0xc1, 0xbb, 0xfc, 0x5c,
1696    0xc1, 0x37, 0x58, 0x17, 0x63, 0x19, 0x9c, 0xcf,
1697    0xee, 0x9c, 0xe5, 0xbe, 0x06, 0xe4, 0x97, 0x47,
1698    0xd1, 0x93, 0xa1, 0x2c, 0x59, 0x97, 0x02, 0x01,
1699    0x31, 0x45, 0x8c, 0xe1, 0x5c, 0xac, 0xe7, 0x5f,
1700    0x6a, 0x23, 0xda, 0xbf, 0xe4, 0x25, 0xc6, 0x67,
1701    0xea, 0x5f, 0x73, 0x90, 0x1b, 0x06, 0x0f, 0x41,
1702    0xb5, 0x6e, 0x74, 0x7e, 0xfd, 0xd9, 0xaa, 0xbd,
1703    0xe2, 0x8d, 0xad, 0x99, 0xdd, 0x29, 0x70, 0xca,
1704    0x1b, 0x38, 0x21, 0x55, 0xde, 0x07, 0xaf, 0x00,
1705
1706};
1707static const unsigned char rsa_sigverx931_0_sig[] = {
1708    0x29, 0xa9, 0x3a, 0x8e, 0x9e, 0x90, 0x1b, 0xdb,
1709    0xaf, 0x0b, 0x47, 0x5b, 0xb5, 0xc3, 0x8c, 0xc3,
1710    0x70, 0xbe, 0x73, 0xf9, 0x65, 0x8e, 0xc6, 0x1e,
1711    0x95, 0x0b, 0xdb, 0x24, 0x76, 0x79, 0xf1, 0x00,
1712    0x71, 0xcd, 0xc5, 0x6a, 0x7b, 0xd2, 0x8b, 0x18,
1713    0xc4, 0xdd, 0xf1, 0x2a, 0x31, 0x04, 0x3f, 0xfc,
1714    0x36, 0x06, 0x20, 0x71, 0x3d, 0x62, 0xf2, 0xb5,
1715    0x79, 0x0a, 0xd5, 0xd2, 0x81, 0xf1, 0xb1, 0x4f,
1716    0x9a, 0x17, 0xe8, 0x67, 0x64, 0x48, 0x09, 0x75,
1717    0xff, 0x2d, 0xee, 0x36, 0xca, 0xca, 0x1d, 0x74,
1718    0x99, 0xbe, 0x5c, 0x94, 0x31, 0xcc, 0x12, 0xf4,
1719    0x59, 0x7e, 0x17, 0x00, 0x4f, 0x7b, 0xa4, 0xb1,
1720    0xda, 0xdb, 0x3e, 0xa4, 0x34, 0x10, 0x4a, 0x19,
1721    0x0a, 0xd2, 0xa7, 0xa0, 0xc5, 0xe6, 0xef, 0x82,
1722    0xd4, 0x2e, 0x21, 0xbe, 0x15, 0x73, 0xac, 0xef,
1723    0x05, 0xdb, 0x6a, 0x8a, 0x1a, 0xcb, 0x8e, 0xa5,
1724    0xee, 0xfb, 0x28, 0xbf, 0x96, 0xa4, 0x2b, 0xd2,
1725    0x85, 0x2b, 0x20, 0xc3, 0xaf, 0x9a, 0x32, 0x04,
1726    0xa0, 0x49, 0x24, 0x47, 0xd0, 0x09, 0xf7, 0xcf,
1727    0x73, 0xb6, 0xf6, 0x70, 0xda, 0x3b, 0xf8, 0x5a,
1728    0x28, 0x2e, 0x14, 0x6c, 0x52, 0xbd, 0x2a, 0x7c,
1729    0x8e, 0xc1, 0xa8, 0x0e, 0xb1, 0x1e, 0x6b, 0x8d,
1730    0x76, 0xea, 0x70, 0x81, 0xa0, 0x02, 0x63, 0x74,
1731    0xbc, 0x7e, 0xb9, 0xac, 0x0e, 0x7b, 0x1b, 0x75,
1732    0x82, 0xe2, 0x98, 0x4e, 0x24, 0x55, 0xd4, 0xbd,
1733    0x14, 0xde, 0x58, 0x56, 0x3a, 0x5d, 0x4e, 0x57,
1734    0x0d, 0x54, 0x74, 0xe8, 0x86, 0x8c, 0xcb, 0x07,
1735    0x9f, 0x0b, 0xfb, 0xc2, 0x08, 0x5c, 0xd7, 0x05,
1736    0x3b, 0xc8, 0xd2, 0x15, 0x68, 0x8f, 0x3d, 0x3c,
1737    0x4e, 0x85, 0xa9, 0x25, 0x6f, 0xf5, 0x2e, 0xca,
1738    0xca, 0xa8, 0x27, 0x89, 0x61, 0x4e, 0x1f, 0x57,
1739    0x2d, 0x99, 0x10, 0x3f, 0xbc, 0x9e, 0x96, 0x5e,
1740    0x2f, 0x0a, 0x25, 0xa7, 0x5c, 0xea, 0x65, 0x2a,
1741    0x22, 0x35, 0xa3, 0xf9, 0x13, 0x89, 0x05, 0x2e,
1742    0x19, 0x73, 0x1d, 0x70, 0x74, 0x98, 0x15, 0x4b,
1743    0xab, 0x56, 0x52, 0xe0, 0x01, 0x42, 0x95, 0x6a,
1744    0x46, 0x2c, 0x78, 0xff, 0x26, 0xbc, 0x48, 0x10,
1745    0x38, 0x25, 0xab, 0x32, 0x7c, 0x79, 0x7c, 0x5d,
1746    0x6f, 0x45, 0x54, 0x74, 0x2d, 0x93, 0x56, 0x52,
1747    0x11, 0x34, 0x1e, 0xe3, 0x4b, 0x6a, 0x17, 0x4f,
1748    0x37, 0x14, 0x75, 0xac, 0xa3, 0xa1, 0xca, 0xda,
1749    0x38, 0x06, 0xa9, 0x78, 0xb9, 0x5d, 0xd0, 0x59,
1750    0x1b, 0x5d, 0x1e, 0xc2, 0x0b, 0xfb, 0x39, 0x37,
1751    0x44, 0x85, 0xb6, 0x36, 0x06, 0x95, 0xbc, 0x15,
1752    0x35, 0xb9, 0xe6, 0x27, 0x42, 0xe3, 0xc8, 0xec,
1753    0x30, 0x37, 0x20, 0x26, 0x9a, 0x11, 0x61, 0xc0,
1754    0xdb, 0xb2, 0x5a, 0x26, 0x78, 0x27, 0xb9, 0x13,
1755    0xc9, 0x1a, 0xa7, 0x67, 0x93, 0xe8, 0xbe, 0xcb,
1756};
1757
1758#define rsa_sigverx931_1_n rsa_sigverx931_0_n
1759#define rsa_sigverx931_1_e rsa_sigverx931_0_e
1760static const unsigned char rsa_sigverx931_1_msg[] = {
1761    0x79, 0x02, 0xb9, 0xd2, 0x3e, 0x84, 0x02, 0xc8,
1762    0x2a, 0x94, 0x92, 0x14, 0x8d, 0xd5, 0xd3, 0x8d,
1763    0xb2, 0xf6, 0x00, 0x8b, 0x61, 0x2c, 0xd2, 0xf9,
1764    0xa8, 0xe0, 0x5d, 0xac, 0xdc, 0xa5, 0x34, 0xf3,
1765    0xda, 0x6c, 0xd4, 0x70, 0x92, 0xfb, 0x40, 0x26,
1766    0xc7, 0x9b, 0xe8, 0xd2, 0x10, 0x11, 0xcf, 0x7f,
1767    0x23, 0xd0, 0xed, 0x55, 0x52, 0x6d, 0xd3, 0xb2,
1768    0x56, 0x53, 0x8d, 0x7c, 0x4c, 0xb8, 0xcc, 0xb5,
1769    0xfd, 0xd0, 0x45, 0x4f, 0x62, 0x40, 0x54, 0x42,
1770    0x68, 0xd5, 0xe5, 0xdd, 0xf0, 0x76, 0x94, 0x59,
1771    0x1a, 0x57, 0x13, 0xb4, 0xc3, 0x70, 0xcc, 0xbd,
1772    0x4c, 0x2e, 0xc8, 0x6b, 0x9d, 0x68, 0xd0, 0x72,
1773    0x6a, 0x94, 0xd2, 0x18, 0xb5, 0x3b, 0x86, 0x45,
1774    0x95, 0xaa, 0x50, 0xda, 0x35, 0xeb, 0x69, 0x44,
1775    0x1f, 0xf3, 0x3a, 0x51, 0xbb, 0x1d, 0x08, 0x42,
1776    0x12, 0xd7, 0xd6, 0x21, 0xd8, 0x9b, 0x87, 0x55,
1777};
1778
1779static const unsigned char rsa_sigverx931_1_sig[] = {
1780    0x3b, 0xba, 0xb3, 0xb1, 0xb2, 0x6a, 0x29, 0xb5,
1781    0xf9, 0x94, 0xf1, 0x00, 0x5c, 0x16, 0x67, 0x67,
1782    0x73, 0xd3, 0xde, 0x7e, 0x07, 0xfa, 0xaa, 0x95,
1783    0xeb, 0x5a, 0x55, 0xdc, 0xb2, 0xa9, 0x70, 0x5a,
1784    0xee, 0x8f, 0x8d, 0x69, 0x85, 0x2b, 0x00, 0xe3,
1785    0xdc, 0xe2, 0x73, 0x9b, 0x68, 0xeb, 0x93, 0x69,
1786    0x08, 0x03, 0x17, 0xd6, 0x50, 0x21, 0x14, 0x23,
1787    0x8c, 0xe6, 0x54, 0x3a, 0xd9, 0xfc, 0x8b, 0x14,
1788    0x81, 0xb1, 0x8b, 0x9d, 0xd2, 0xbe, 0x58, 0x75,
1789    0x94, 0x74, 0x93, 0xc9, 0xbb, 0x4e, 0xf6, 0x1f,
1790    0x73, 0x7d, 0x1a, 0x5f, 0xbd, 0xbf, 0x59, 0x37,
1791    0x5b, 0x98, 0x54, 0xad, 0x3a, 0xef, 0xa0, 0xef,
1792    0xcb, 0xc3, 0xe8, 0x84, 0xd8, 0x3d, 0xf5, 0x60,
1793    0xb8, 0xc3, 0x8d, 0x1e, 0x78, 0xa0, 0x91, 0x94,
1794    0xb7, 0xd7, 0xb1, 0xd4, 0xe2, 0xee, 0x81, 0x93,
1795    0xfc, 0x41, 0xf0, 0x31, 0xbb, 0x03, 0x52, 0xde,
1796    0x80, 0x20, 0x3a, 0x68, 0xe6, 0xc5, 0x50, 0x1b,
1797    0x08, 0x3f, 0x40, 0xde, 0xb3, 0xe5, 0x81, 0x99,
1798    0x7f, 0xdb, 0xb6, 0x5d, 0x61, 0x27, 0xd4, 0xfb,
1799    0xcd, 0xc5, 0x7a, 0xea, 0xde, 0x7a, 0x66, 0xef,
1800    0x55, 0x3f, 0x85, 0xea, 0x84, 0xc5, 0x0a, 0xf6,
1801    0x3c, 0x40, 0x38, 0xf7, 0x6c, 0x66, 0xe5, 0xbe,
1802    0x61, 0x41, 0xd3, 0xb1, 0x08, 0xe1, 0xb4, 0xf9,
1803    0x6e, 0xf6, 0x0e, 0x4a, 0x72, 0x6c, 0x61, 0x63,
1804    0x3e, 0x41, 0x33, 0x94, 0xd6, 0x27, 0xa4, 0xd9,
1805    0x3a, 0x20, 0x2b, 0x39, 0xea, 0xe5, 0x82, 0x48,
1806    0xd6, 0x5b, 0x58, 0x85, 0x44, 0xb0, 0xd2, 0xfd,
1807    0xfb, 0x3e, 0xeb, 0x78, 0xac, 0xbc, 0xba, 0x16,
1808    0x92, 0x0e, 0x20, 0xc1, 0xb2, 0xd1, 0x92, 0xa8,
1809    0x00, 0x88, 0xc0, 0x41, 0x46, 0x38, 0xb6, 0x54,
1810    0x70, 0x0c, 0x00, 0x62, 0x97, 0x6a, 0x8e, 0x66,
1811    0x5a, 0xa1, 0x6c, 0xf7, 0x6d, 0xc2, 0x27, 0x56,
1812    0x60, 0x5b, 0x0c, 0x52, 0xac, 0x5c, 0xae, 0x99,
1813    0x55, 0x11, 0x62, 0x52, 0x09, 0x48, 0x53, 0x90,
1814    0x3c, 0x0b, 0xd4, 0xdc, 0x7b, 0xe3, 0x4c, 0xe3,
1815    0xa8, 0x6d, 0xc5, 0xdf, 0xc1, 0x5c, 0x59, 0x25,
1816    0x99, 0x30, 0xde, 0x57, 0x6a, 0x84, 0x25, 0x34,
1817    0x3e, 0x64, 0x11, 0xdb, 0x7a, 0x82, 0x8e, 0x70,
1818    0xd2, 0x5c, 0x0e, 0x81, 0xa0, 0x24, 0x53, 0x75,
1819    0x98, 0xd6, 0x10, 0x01, 0x6a, 0x14, 0xed, 0xc3,
1820    0x6f, 0xc4, 0x18, 0xb8, 0xd2, 0x9f, 0x59, 0x53,
1821    0x81, 0x3a, 0x86, 0x31, 0xfc, 0x9e, 0xbf, 0x6c,
1822    0x52, 0x93, 0x86, 0x9c, 0xaa, 0x6c, 0x6f, 0x07,
1823    0x8a, 0x40, 0x33, 0x64, 0xb2, 0x70, 0x48, 0x85,
1824    0x05, 0x59, 0x65, 0x2d, 0x6b, 0x9a, 0xad, 0xab,
1825    0x20, 0x7e, 0x02, 0x6d, 0xde, 0xcf, 0x22, 0x0b,
1826    0xea, 0x6e, 0xbd, 0x1c, 0x39, 0x3a, 0xfd, 0xa4,
1827    0xde, 0x54, 0xae, 0xde, 0x5e, 0xf7, 0xb0, 0x6d,
1828};
1829
1830static const struct rsa_sigver_st rsa_sigver_data[] = {
1831    {
1832        "pkcs1", /* pkcs1v1.5 */
1833        2048,
1834        "SHA224",
1835        ITM(rsa_sigver15_0_msg),
1836        ITM(rsa_sigver15_0_n),
1837        ITM(rsa_sigver15_0_e),
1838        ITM(rsa_sigver15_0_sig),
1839        NO_PSS_SALT_LEN,
1840        PASS
1841    },
1842    {
1843        "pkcs1", /* pkcs1v1.5 */
1844        2048,
1845        "SHA224",
1846        ITM(rsa_sigver15_1_msg),
1847        ITM(rsa_sigver15_1_n),
1848        ITM(rsa_sigver15_1_e),
1849        ITM(rsa_sigver15_1_sig),
1850        NO_PSS_SALT_LEN,
1851        FAIL
1852    },
1853    {
1854        "x931",
1855        3072,
1856        "SHA1",
1857        ITM(rsa_sigverx931_0_msg),
1858        ITM(rsa_sigverx931_0_n),
1859        ITM(rsa_sigverx931_0_e),
1860        ITM(rsa_sigverx931_0_sig),
1861        NO_PSS_SALT_LEN,
1862        PASS
1863    },
1864    {
1865        "x931",
1866        3072,
1867        "SHA256",
1868        ITM(rsa_sigverx931_1_msg),
1869        ITM(rsa_sigverx931_1_n),
1870        ITM(rsa_sigverx931_1_e),
1871        ITM(rsa_sigverx931_1_sig),
1872        NO_PSS_SALT_LEN,
1873        FAIL
1874    },
1875    {
1876        "pss",
1877        4096,
1878        "SHA384",
1879        ITM(rsa_sigverpss_0_msg),
1880        ITM(rsa_sigverpss_0_n),
1881        ITM(rsa_sigverpss_0_e),
1882        ITM(rsa_sigverpss_0_sig),
1883        62,
1884        PASS
1885    },
1886    {
1887        "pss",
1888        4096,
1889        "SHA384",
1890        ITM(rsa_sigverpss_1_msg),
1891        ITM(rsa_sigverpss_1_n),
1892        ITM(rsa_sigverpss_1_e),
1893        ITM(rsa_sigverpss_1_sig),
1894        62,
1895        FAIL
1896    },
1897};
1898
1899struct rsa_decrypt_prim_st {
1900    const unsigned char *ct;
1901    size_t ct_len;
1902};
1903
1904static const unsigned char rsa_decrypt_prim_0_ct[] = {
1905    0x09, 0x7e, 0x82, 0xfe, 0xc7, 0x24, 0x65, 0xe0,
1906    0x49, 0x2e, 0x78, 0xed, 0xf4, 0x7d, 0x05, 0x0d,
1907    0xff, 0x2f, 0x1a, 0x95, 0xeb, 0x74, 0x60, 0x3d,
1908    0xd3, 0x3a, 0xec, 0x8a, 0x2c, 0x8b, 0x00, 0xa5,
1909    0x75, 0x2c, 0x87, 0x7b, 0xa5, 0x76, 0x08, 0xee,
1910    0x99, 0xab, 0x5b, 0x21, 0x69, 0x90, 0x72, 0x0d,
1911    0x55, 0xe4, 0x7d, 0x1d, 0xcb, 0xaa, 0xeb, 0x32,
1912    0x24, 0xf7, 0xce, 0x95, 0xb5, 0x3e, 0x0e, 0x57,
1913    0xd4, 0x2a, 0x5b, 0xfc, 0x1f, 0xf7, 0x28, 0x3f,
1914    0xd6, 0x31, 0x36, 0x92, 0xc5, 0x13, 0xe3, 0x4e,
1915    0x28, 0x53, 0xbe, 0x60, 0x5f, 0x82, 0x12, 0x7a,
1916    0x50, 0xe6, 0x91, 0x40, 0xcf, 0x52, 0x3a, 0xd2,
1917    0x15, 0x20, 0xd5, 0x82, 0x6d, 0x5e, 0xab, 0x47,
1918    0xd1, 0x2d, 0x00, 0xf5, 0xea, 0xf4, 0x68, 0x88,
1919    0x38, 0x43, 0xd6, 0xcb, 0xaa, 0xd0, 0xd1, 0x75,
1920    0xe6, 0x87, 0x5f, 0xd1, 0x89, 0xd3, 0x57, 0x1b,
1921    0xf2, 0x45, 0x8a, 0x92, 0xe6, 0x95, 0xb8, 0x99,
1922    0x80, 0xe9, 0xe6, 0x5f, 0x2b, 0x48, 0x2b, 0xb3,
1923    0x2b, 0x80, 0x56, 0xf8, 0xd4, 0x96, 0x44, 0xb5,
1924    0xae, 0x6d, 0x4a, 0x3d, 0x7b, 0x0a, 0x54, 0x3c,
1925    0xa8, 0x21, 0x8b, 0x64, 0x96, 0xea, 0xc2, 0xef,
1926    0x60, 0xbb, 0xd3, 0x4e, 0xaf, 0x6c, 0x5b, 0x06,
1927    0x57, 0xe8, 0x5e, 0x2c, 0x87, 0x46, 0x12, 0xeb,
1928    0xfb, 0xe2, 0xdb, 0x7b, 0xac, 0x09, 0x8b, 0xa0,
1929    0x98, 0x6e, 0xc6, 0x3f, 0x98, 0xdd, 0x7d, 0xc6,
1930    0xc6, 0x32, 0xc2, 0xcc, 0x73, 0xe2, 0x15, 0xde,
1931    0xb2, 0x0f, 0x41, 0x08, 0x1e, 0x2e, 0xba, 0x93,
1932    0x65, 0x94, 0xab, 0x84, 0x0e, 0x1e, 0xda, 0x1b,
1933    0xf0, 0xe0, 0x13, 0x13, 0xe2, 0xa5, 0x31, 0xb8,
1934    0x80, 0xc1, 0x38, 0xc5, 0x08, 0x09, 0x0a, 0xe2,
1935    0x78, 0x7d, 0xd6, 0xcf, 0x8d, 0x6b, 0xe8, 0x1b,
1936    0x47, 0x83, 0x80, 0x71, 0xe2, 0xd3, 0x01, 0xbc,
1937};
1938
1939static const unsigned char rsa_decrypt_prim_1_ct[] = {
1940    0xff, 0xd5, 0xaa, 0x3f, 0x0c, 0x7c, 0x78, 0x7e,
1941    0xe3, 0x8a, 0x4f, 0xcc, 0x20, 0x3f, 0x51, 0xe5,
1942    0xf4, 0x9c, 0xc5, 0x62, 0xcc, 0xa3, 0xcb, 0xce,
1943    0x39, 0x80, 0x35, 0xef, 0xd5, 0x95, 0x56, 0xcb,
1944    0xb2, 0x62, 0x8c, 0xe6, 0x8b, 0x20, 0xe4, 0x36,
1945    0xae, 0xe8, 0x07, 0x07, 0xc2, 0x23, 0x6a, 0xfc,
1946    0x83, 0xf0, 0x04, 0x88, 0x19, 0xf8, 0x9f, 0x5c,
1947    0x59, 0x4d, 0xb3, 0x81, 0x86, 0x9d, 0x3b, 0x61,
1948    0x73, 0x31, 0x03, 0xec, 0x9c, 0xdd, 0x75, 0xb7,
1949    0x37, 0x0a, 0x8d, 0x94, 0xd9, 0x9f, 0x6d, 0x85,
1950    0xb0, 0x5c, 0x08, 0xcc, 0xb4, 0x27, 0x8c, 0xf0,
1951    0xe6, 0xd6, 0xe0, 0xc1, 0x57, 0x59, 0xaa, 0xc7,
1952    0x8f, 0x5c, 0xa7, 0x4b, 0x3c, 0x81, 0x4a, 0xa3,
1953    0x9b, 0x18, 0x88, 0x04, 0x98, 0x54, 0x3d, 0x87,
1954    0x2a, 0x89, 0xb6, 0x41, 0xe8, 0xbd, 0x37, 0x17,
1955    0x03, 0xa8, 0xf1, 0x37, 0xa5, 0x5e, 0x02, 0x13,
1956    0x67, 0x08, 0xec, 0x9e, 0x97, 0xf5, 0xcc, 0x5f,
1957    0x75, 0x37, 0xbe, 0xce, 0xe8, 0x5e, 0xa1, 0xca,
1958    0x46, 0xa3, 0xda, 0xe4, 0x1f, 0xf8, 0xc4, 0xa3,
1959    0x26, 0xbb, 0xed, 0xa2, 0x71, 0xb2, 0x44, 0x00,
1960    0xd3, 0xe5, 0x06, 0xf1, 0xb4, 0xc1, 0xe0, 0x29,
1961    0xca, 0xeb, 0xe0, 0xdf, 0xd1, 0x69, 0x5f, 0xa9,
1962    0x03, 0x7c, 0x49, 0x93, 0xfb, 0xc2, 0xdf, 0x39,
1963    0xbc, 0x2a, 0x6b, 0x59, 0x7d, 0xf4, 0x84, 0x93,
1964    0xa2, 0x8b, 0x7a, 0x5a, 0x7a, 0xa9, 0xff, 0x41,
1965    0x4c, 0x52, 0x5c, 0xf9, 0x59, 0xd2, 0x91, 0xc3,
1966    0xa9, 0xe8, 0x23, 0x36, 0x5f, 0x2f, 0xb9, 0xbe,
1967    0x22, 0xc4, 0xfd, 0x84, 0x5f, 0x81, 0x3d, 0x94,
1968    0xf8, 0xa4, 0x9b, 0xae, 0xc0, 0xb5, 0x78, 0x4f,
1969    0x91, 0x76, 0x02, 0x5d, 0x60, 0x71, 0x8b, 0xeb,
1970    0x08, 0x42, 0xe3, 0xb3, 0x63, 0x05, 0x60, 0x59,
1971    0x98, 0xc1, 0x6d, 0x66, 0xb3, 0xc5, 0x8a, 0xbc,
1972};
1973
1974static const struct rsa_decrypt_prim_st rsa_decrypt_prim_data[] = {
1975    {
1976        ITM(rsa_decrypt_prim_0_ct),
1977    },
1978    {
1979        ITM(rsa_decrypt_prim_1_ct),
1980    },
1981};
1982
1983struct drbg_st {
1984    const char *drbg_name;
1985    const char *cipher;
1986    int use_df;
1987
1988    const unsigned char *entropy_input;
1989    size_t entropy_input_len;
1990    const unsigned char *nonce;
1991    size_t nonce_len;
1992    const unsigned char *returned_bits;
1993    size_t returned_bits_len;
1994};
1995
1996static const unsigned char drbg_entropy_input[] = {
1997    0x36, 0x40, 0x19, 0x40, 0xfa, 0x8b, 0x1f, 0xba,
1998    0x91, 0xa1, 0x66, 0x1f, 0x21, 0x1d, 0x78, 0xa0,
1999    0xb9, 0x38, 0x9a, 0x74, 0xe5, 0xbc, 0xcf, 0xec,
2000    0xe8, 0xd7, 0x66, 0xaf, 0x1a, 0x6d, 0x3b, 0x14
2001};
2002
2003static const unsigned char drbg_nonce[] = {
2004    0x49, 0x6f, 0x25, 0xb0, 0xf1, 0x30, 0x1b, 0x4f,
2005    0x50, 0x1b, 0xe3, 0x03, 0x80, 0xa1, 0x37, 0xeb
2006};
2007
2008static const unsigned char drbg_returned_bits[] = {
2009    0x58, 0x62, 0xeb, 0x38, 0xbd, 0x55, 0x8d, 0xd9,
2010    0x78, 0xa6, 0x96, 0xe6, 0xdf, 0x16, 0x47, 0x82,
2011    0xdd, 0xd8, 0x87, 0xe7, 0xe9, 0xa6, 0xc9, 0xf3,
2012    0xf1, 0xfb, 0xaf, 0xb7, 0x89, 0x41, 0xb5, 0x35,
2013    0xa6, 0x49, 0x12, 0xdf, 0xd2, 0x24, 0xc6, 0xdc,
2014    0x74, 0x54, 0xe5, 0x25, 0x0b, 0x3d, 0x97, 0x16,
2015    0x5e, 0x16, 0x26, 0x0c, 0x2f, 0xaf, 0x1c, 0xc7,
2016    0x73, 0x5c, 0xb7, 0x5f, 0xb4, 0xf0, 0x7e, 0x1d
2017};
2018
2019static const unsigned char drbg_key_0[] = {
2020    0x33, 0x63, 0xd9, 0x00, 0x0e, 0x6d, 0xb4, 0x7c,
2021    0x16, 0xd3, 0xfc, 0x65, 0xf2, 0x87, 0x2c, 0x08,
2022    0xa3, 0x5f, 0x99, 0xb2, 0xd1, 0x74, 0xaf, 0xa5,
2023    0x37, 0xa6, 0x6e, 0xc1, 0x53, 0x05, 0x2d, 0x98
2024};
2025
2026static const struct drbg_st drbg_data[] = {
2027    {
2028        "CTR-DRBG",
2029        "AES-256-CTR",
2030        1,
2031        ITM(drbg_entropy_input),
2032        ITM(drbg_nonce),
2033        ITM(drbg_returned_bits)
2034    }
2035};
2036