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