1
2
3
4
5
6#ifndef TEST_CRYPTODEV_MOD_TEST_VECTORS_H_
7#define TEST_CRYPTODEV_MOD_TEST_VECTORS_H_
8
9#define DATA_SIZE 512
10
11struct modex_test_data {
12 enum rte_crypto_asym_xform_type xform_type;
13 const char *description;
14 struct {
15 uint8_t data[DATA_SIZE];
16 uint16_t len;
17 } base;
18 struct {
19 uint8_t data[DATA_SIZE];
20 uint16_t len;
21 } exponent;
22 struct {
23 uint8_t data[DATA_SIZE];
24 uint16_t len;
25 } modulus;
26 struct {
27 uint8_t data[DATA_SIZE];
28 uint16_t len;
29 } reminder;
30 uint16_t result_len;
31};
32struct modinv_test_data {
33 enum rte_crypto_asym_xform_type xform_type;
34 const char *description;
35 struct {
36 uint8_t data[DATA_SIZE];
37 uint16_t len;
38 } base;
39 struct {
40 uint8_t data[DATA_SIZE];
41 uint16_t len;
42 } modulus;
43 struct {
44 uint8_t data[DATA_SIZE];
45 uint16_t len;
46 } inverse;
47 uint16_t result_len;
48};
49
50static const struct
51modex_test_data modex_test_case[] = {
52{
53 .description = "Modular Exponentiation "
54 "(mod=128, base=20, exp=3, res=128)",
55 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
56 .base = {
57 .data = {
58 0xF8, 0xBA, 0x1A, 0x55, 0xD0, 0x2F, 0x85,
59 0xAE, 0x96, 0x7B, 0xB6, 0x2F, 0xB6, 0xCD,
60 0xA8, 0xEB, 0x7E, 0x78, 0xA0, 0x50
61 },
62 .len = 20
63 },
64 .exponent = {
65 .data = {
66 0x01, 0x00, 0x01
67 },
68 .len = 3
69 },
70 .reminder = {
71 .data = {
72 0x2C, 0x60, 0x75, 0x45, 0x98, 0x9D, 0xE0, 0x72,
73 0xA0, 0x9D, 0x3A, 0x9E, 0x03, 0x38, 0x73, 0x3C,
74 0x31, 0x83, 0x04, 0xFE, 0x75, 0x43, 0xE6, 0x17,
75 0x5C, 0x01, 0x29, 0x51, 0x69, 0x33, 0x62, 0x2D,
76 0x78, 0xBE, 0xAE, 0xC4, 0xBC, 0xDE, 0x7E, 0x2C,
77 0x77, 0x84, 0xF2, 0xC5, 0x14, 0xB5, 0x2F, 0xF7,
78 0xC5, 0x94, 0xEF, 0x86, 0x75, 0x75, 0xB5, 0x11,
79 0xE5, 0x0E, 0x0A, 0x29, 0x76, 0xE2, 0xEA, 0x32,
80 0x0E, 0x43, 0x77, 0x7E, 0x2C, 0x27, 0xAC, 0x3B,
81 0x86, 0xA5, 0xDB, 0xC9, 0x48, 0x40, 0xE8, 0x99,
82 0x9A, 0x0A, 0x3D, 0xD6, 0x74, 0xFA, 0x2E, 0x2E,
83 0x5B, 0xAF, 0x8C, 0x99, 0x44, 0x2A, 0x67, 0x38,
84 0x27, 0x41, 0x59, 0x9D, 0xB8, 0x51, 0xC9, 0xF7,
85 0x43, 0x61, 0x31, 0x6E, 0xF1, 0x25, 0x38, 0x7F,
86 0xAE, 0xC6, 0xD0, 0xBB, 0x29, 0x76, 0x3F, 0x46,
87 0x2E, 0x1B, 0xE4, 0x67, 0x71, 0xE3, 0x87, 0x5A
88 },
89 .len = 128
90 },
91 .modulus = {
92 .data = {
93 0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00, 0x0a,
94 0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5, 0xce,
95 0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a, 0xa2,
96 0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde, 0x0a,
97 0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a, 0x3d,
98 0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63, 0x6a,
99 0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27, 0x6e,
100 0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa, 0x72,
101 0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53, 0x87,
102 0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a, 0x62,
103 0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63, 0x18,
104 0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33, 0x4e,
105 0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3, 0x03,
106 0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e, 0xee,
107 0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb, 0xa6,
108 0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde, 0x55
109 },
110 .len = 128
111 },
112 .result_len = 128
113},
114{
115 .description = "Modular Exponentiation "
116 "(mod=60, base=50, exp=40, res=60)",
117 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
118 .base = {
119 .data = {
120 0x4F, 0xD8, 0x5C, 0xDB, 0x6D, 0xA2, 0xFA, 0x35,
121 0x9D, 0xD7, 0x97, 0x10, 0x4B, 0x71, 0x5F, 0x53,
122 0xE1, 0xC7, 0x09, 0x74, 0x88, 0xC8, 0x9D, 0x03,
123 0xC0, 0x70, 0xE0, 0xBE, 0xE3, 0xF2, 0x2C, 0x01,
124 0x85, 0xA6, 0x4E, 0x28, 0x6E, 0xD3, 0xB5, 0x18,
125 0x58, 0x69, 0x07, 0xDA, 0x3A, 0x1B, 0x35, 0xCE,
126 0xE6, 0xFA
127 },
128 .len = 50
129 },
130 .exponent = {
131 .data = {
132 0x30, 0xA5, 0xD5, 0xF0, 0x42, 0x03, 0xC3, 0x2D,
133 0x2F, 0x58, 0xA8, 0x5C, 0x21, 0x88, 0xDE, 0x82,
134 0x36, 0x44, 0xC1, 0x5A, 0x87, 0x2C, 0x33, 0x19,
135 0x4E, 0xCE, 0x3F, 0x87, 0xFF, 0x98, 0x4B, 0xFC,
136 0x15, 0xC0, 0xBE, 0x9E, 0x8F, 0xF0, 0x6A, 0x62
137 },
138 .len = 40
139 },
140 .reminder = {
141 .data = {
142 0x59, 0x3D, 0x92, 0xE4, 0xE6, 0x9B, 0x5D, 0x97,
143 0x21, 0xE6, 0x06, 0x60, 0x8B, 0x66, 0x8F, 0xF3,
144 0x63, 0xAE, 0x3A, 0x64, 0x7F, 0xCA, 0xDE, 0x4A,
145 0xE5, 0x49, 0xA2, 0x90, 0x0F, 0xAE, 0x13, 0x10,
146 0xC2, 0x5B, 0x97, 0xED, 0x86, 0x97, 0x16, 0xE2,
147 0x01, 0xF6, 0x7A, 0xF1, 0x7B, 0x4B, 0xC7, 0x7D,
148 0x6B, 0xD7, 0x98, 0xE5, 0x9B, 0x75, 0x1A, 0x6B,
149 0xD6, 0x6E, 0xA3, 0x4E
150 },
151 .len = 60
152 },
153 .modulus = {
154 .data = {
155 0xF8, 0x04, 0x0D, 0xD5, 0x09, 0x6C, 0x78, 0x06,
156 0x7D, 0x28, 0x77, 0xA4, 0x0E, 0xA5, 0x49, 0xE7,
157 0x6D, 0xC9, 0x97, 0xD3, 0xC0, 0x7F, 0x82, 0xC6,
158 0x75, 0x51, 0x72, 0xAF, 0x8C, 0x77, 0x97, 0xD0,
159 0xA1, 0x85, 0x54, 0xC0, 0x78, 0x86, 0xD6, 0x40,
160 0x7A, 0x6B, 0xB3, 0xD7, 0x07, 0xCA, 0x27, 0xA3,
161 0x66, 0xB9, 0x98, 0x22, 0xC4, 0x54, 0x18, 0x07,
162 0x65, 0x76, 0x0F, 0x5A
163 },
164 .len = 60
165 },
166 .result_len = 60
167},
168{
169 .description = "Modular Exponentiation "
170 "(mod=8, base=65, exp=17, res=8)",
171 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
172 .base = {
173 .data = {
174 0x25, 0x74, 0x41, 0xCE, 0xFA, 0x5C, 0x07, 0x2A,
175 0xD1, 0x74, 0xF3, 0x3D, 0xE1, 0xCC, 0xC3, 0x18,
176 0x7E, 0x4A, 0x21, 0x9F, 0x97, 0xA3, 0x26, 0x85,
177 0x85, 0xD9, 0x9B, 0xE3, 0xBA, 0xB3, 0x70, 0xC9,
178 0x26, 0x68, 0xE4, 0xB7, 0x4C, 0x88, 0x48, 0xC1,
179 0x6B, 0xC6, 0x3C, 0x00, 0x8C, 0x6B, 0xC6, 0x11,
180 0xD0, 0xD6, 0x61, 0x5D, 0xEC, 0xAA, 0xBA, 0x3B,
181 0x7D, 0xB3, 0x0D, 0x3F, 0xA5, 0x4D, 0xEE, 0xE4,
182 0xAC
183 },
184 .len = 65
185 },
186 .exponent = {
187 .data = {
188 0x1C, 0x54, 0x2F, 0xCA, 0xDE, 0x4F, 0x17, 0x38,
189 0x69, 0x87, 0xB4, 0xFF, 0x3A, 0x6C, 0x82, 0x70,
190 0x53
191 },
192 .len = 17
193 },
194 .reminder = {
195 .data = {
196 0x52, 0x06, 0x1A, 0x35, 0x70, 0x33, 0x78, 0x45
197 },
198 .len = 8
199 },
200 .modulus = {
201 .data = {
202 0x6B, 0x6D, 0xFA, 0xCB, 0x09, 0x5D, 0x9C, 0xFD
203 },
204 .len = 8
205 },
206 .result_len = 8
207},
208{
209 .description = "Modular Exponentiation "
210 "(mod=100, base=150, exp=192, res=100)",
211 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
212 .base = {
213 .data = {
214 0xC1, 0xA1, 0x04, 0xE4, 0x4D, 0x4A, 0xD3, 0x5C,
215 0xB3, 0xD0, 0x16, 0x51, 0xA7, 0xF4, 0x82, 0x6C,
216 0x22, 0xDD, 0x4D, 0xAA, 0x70, 0x30, 0x25, 0xA7,
217 0xFA, 0xA9, 0xF2, 0x20, 0x55, 0x9B, 0xEA, 0x26,
218 0xF6, 0xB5, 0xF8, 0x9C, 0x46, 0x21, 0x85, 0x0E,
219 0x38, 0x73, 0x01, 0xC6, 0x72, 0x67, 0x9B, 0x49,
220 0xCE, 0x48, 0xB7, 0x4A, 0xEE, 0x08, 0x21, 0x26,
221 0xF3, 0x21, 0x77, 0xE7, 0x3C, 0x77, 0xF4, 0x0A,
222 0x82, 0xC8, 0x16, 0x94, 0x6C, 0xBF, 0xA8, 0xD8,
223 0x8B, 0x7D, 0x27, 0x60, 0xAC, 0x06, 0x69, 0x7E,
224 0x46, 0x2C, 0xE2, 0xD1, 0x13, 0x50, 0x7D, 0xCE,
225 0x4D, 0xC4, 0x5D, 0x81, 0xFB, 0x6B, 0x11, 0x4A,
226 0x2D, 0xA2, 0x03, 0x55, 0x77, 0x8C, 0x3D, 0xA1,
227 0xAD, 0xBE, 0x9C, 0x72, 0xE5, 0xA5, 0xFB, 0x49,
228 0x5F, 0x13, 0x48, 0xC7, 0xAC, 0xD1, 0x0F, 0x5E,
229 0xDF, 0x9C, 0xC7, 0xF5, 0x19, 0xFD, 0xC5, 0x77,
230 0x27, 0x8D, 0xC4, 0x1D, 0x90, 0x8C, 0x20, 0x96,
231 0xC8, 0x6A, 0x0D, 0x2F, 0xE2, 0x8B, 0xB0, 0x58,
232 0xF8, 0xC4, 0x31, 0x0A, 0x17, 0x11
233 },
234 .len = 150
235 },
236 .exponent = {
237 .data = {
238 0xC6, 0x20, 0x99, 0xD9, 0xBC, 0xE2, 0xAD, 0x74,
239 0x11, 0x6F, 0x74, 0x14, 0x72, 0xB8, 0x09, 0xCB,
240 0x5C, 0x74, 0x11, 0x21, 0x17, 0x84, 0x02, 0xDC,
241 0x70, 0x59, 0x20, 0x79, 0x40, 0x7B, 0x0E, 0x52,
242 0xAD, 0x00, 0x38, 0x4F, 0x5A, 0xE5, 0x0D, 0x28,
243 0xB5, 0xF8, 0xDC, 0x54, 0x92, 0xB2, 0xB0, 0xA8,
244 0xE8, 0x35, 0x1B, 0x63, 0x0D, 0x6A, 0x50, 0x8D,
245 0xE1, 0x3E, 0x7A, 0xDD, 0x42, 0x7A, 0xD0, 0xB4,
246 0x9D, 0x63, 0x36, 0x03, 0xC0, 0x9B, 0xA0, 0x91,
247 0x8B, 0xBC, 0x45, 0x53, 0x93, 0x2C, 0xFC, 0xDD,
248 0x4F, 0xBD, 0x96, 0x0B, 0x63, 0xEB, 0xEF, 0x50,
249 0xAC, 0x99, 0x45, 0xA7, 0x0D, 0xC6, 0xEA, 0x98,
250 0xBC, 0xD7, 0x63, 0x56, 0x8C, 0x75, 0x68, 0xAE,
251 0xF0, 0xB4, 0x66, 0xA0, 0x4D, 0xC5, 0x71, 0xB9,
252 0x4E, 0xCB, 0xF6, 0xCA, 0xC9, 0x1B, 0x3B, 0x55,
253 0x91, 0x39, 0x25, 0xBD, 0x98, 0xAA, 0xDA, 0xF2,
254 0x8A, 0xCB, 0x8E, 0x56, 0x09, 0xBF, 0xC4, 0x1D,
255 0xFA, 0x23, 0x48, 0xF6, 0x9A, 0xD2, 0xD3, 0x2B,
256 0xED, 0x60, 0x9B, 0x4B, 0x63, 0xD8, 0x8C, 0x6A,
257 0x28, 0xA3, 0x4C, 0x85, 0x43, 0x4D, 0x5C, 0x4A,
258 0xA7, 0xA9, 0x9F, 0x7E, 0x13, 0x5B, 0x36, 0xED,
259 0xD9, 0x53, 0xBE, 0x12, 0xFF, 0x17, 0x9F, 0x70,
260 0xA4, 0xD2, 0x42, 0x72, 0x70, 0x51, 0x70, 0x3F,
261 0x5A, 0xBA, 0x33, 0x0E, 0xBB, 0x4C, 0xA0, 0x4A
262 },
263 .len = 192
264 },
265 .reminder = {
266 .data = {
267 0x07, 0x5E, 0x28, 0x4F, 0xD1, 0xEA, 0x5C, 0x1D,
268 0xF8, 0xBF, 0x29, 0xF0, 0x63, 0xCC, 0xF7, 0x6D,
269 0x99, 0x67, 0xCE, 0xE3, 0x05, 0x16, 0x16, 0x8C,
270 0x3A, 0x07, 0xC0, 0x63, 0x70, 0xB9, 0x1A, 0x24,
271 0xED, 0xE9, 0xF0, 0xEE, 0xD9, 0xAB, 0x18, 0xD4,
272 0x59, 0xB4, 0xD2, 0x77, 0x44, 0x94, 0x72, 0xFE,
273 0x19, 0x26, 0x50, 0x47, 0x77, 0xAD, 0x0A, 0x45,
274 0x76, 0x4B, 0x22, 0xDB, 0x05, 0x13, 0x67, 0x40,
275 0x9A, 0x36, 0x6C, 0x5E, 0xE8, 0xED, 0x40, 0x60,
276 0x86, 0x40, 0x2F, 0x30, 0x9E, 0x4B, 0x61, 0x73,
277 0x2E, 0x76, 0x8A, 0xB0, 0x49, 0x04, 0x1A, 0x82,
278 0xB7, 0xEF, 0xB2, 0xB5, 0xB4, 0xE0, 0x87, 0xF0,
279 0xB4, 0x53, 0xB2, 0xBE
280 },
281 .len = 100
282 },
283 .modulus = {
284 .data = {
285 0x54, 0x58, 0x5C, 0xBA, 0xAE, 0xC1, 0xB4, 0x46,
286 0x50, 0xAF, 0xD0, 0xA6, 0x03, 0x9D, 0x74, 0x84,
287 0x6F, 0x89, 0x07, 0xA6, 0x63, 0xE7, 0x34, 0xB2,
288 0x55, 0x0E, 0xD5, 0x42, 0xC9, 0xBF, 0xD1, 0x89,
289 0x54, 0x0B, 0x76, 0xF7, 0x0E, 0xA1, 0x42, 0x02,
290 0x72, 0xDC, 0x28, 0x5A, 0x68, 0x10, 0xA0, 0x84,
291 0xA4, 0x72, 0x4D, 0x40, 0x69, 0xBC, 0x18, 0xC9,
292 0x92, 0x69, 0xB8, 0x52, 0x2A, 0xB1, 0xA3, 0x43,
293 0x80, 0xA9, 0x55, 0x78, 0xEA, 0xD9, 0x54, 0xF4,
294 0x3A, 0xDD, 0x24, 0x4E, 0x22, 0x9D, 0x89, 0x40,
295 0x8F, 0x50, 0xA5, 0xF5, 0x0F, 0xFA, 0x38, 0xBB,
296 0xE8, 0xD7, 0x21, 0x6B, 0xEA, 0xB1, 0x28, 0x48,
297 0xEB, 0x75, 0xB1, 0xC7
298 },
299 .len = 100
300 },
301 .result_len = 100
302},
303{
304 .description = "Modular Exponentiation "
305 "(mod=255, base=20, exp=10, res=255)",
306 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
307 .base = {
308 .data = {
309 0xD8, 0x21, 0xD2, 0x76, 0xAE, 0x01, 0x62, 0xD8,
310 0x8C, 0x80, 0x01, 0x25, 0xC7, 0xE8, 0x4E, 0x0F,
311 0x7F, 0x23, 0xFE, 0xBB
312 },
313 .len = 20
314 },
315 .exponent = {
316 .data = {
317 0xE5, 0xCE, 0x50, 0xE8, 0x97, 0x32, 0xFB, 0x5C,
318 0xFC, 0x62
319 },
320 .len = 10
321 },
322 .reminder = {
323 .data = {
324 0x1F, 0xA8, 0xAC, 0x32, 0x6C, 0x20, 0xBE, 0x1D,
325 0x88, 0xE9, 0x94, 0x7E, 0xDE, 0xB5, 0x15, 0xA5,
326 0xF3, 0x45, 0x77, 0xB3, 0x3E, 0xDD, 0xDD, 0xAE,
327 0xEA, 0xAE, 0x32, 0x81, 0x37, 0xAE, 0x26, 0xC5,
328 0x6F, 0x3A, 0x75, 0x1F, 0x4F, 0xA2, 0xA3, 0x8B,
329 0xDC, 0x52, 0x3C, 0xD5, 0x42, 0x00, 0x58, 0x37,
330 0xB3, 0x5B, 0xC9, 0x78, 0xFA, 0x48, 0xFE, 0x4B,
331 0x81, 0xFB, 0x4C, 0x5D, 0x9F, 0x5E, 0x4F, 0x56,
332 0x30, 0x79, 0x71, 0x1E, 0xC5, 0x8E, 0xC2, 0x2E,
333 0x9D, 0x18, 0xD8, 0x34, 0x0E, 0xDB, 0xCB, 0x02,
334 0xA7, 0x37, 0x00, 0x44, 0x57, 0x2A, 0x11, 0x85,
335 0x81, 0x06, 0x28, 0xB4, 0x95, 0x79, 0xE2, 0x60,
336 0x39, 0x66, 0x34, 0x2F, 0x19, 0xD4, 0x42, 0x70,
337 0xA8, 0xE9, 0x51, 0xBC, 0xB4, 0x04, 0xD6, 0x4B,
338 0xE1, 0x4A, 0xEE, 0x6F, 0x69, 0xD7, 0x82, 0x07,
339 0x59, 0xD6, 0xB0, 0xAC, 0x22, 0x28, 0xB8, 0x70,
340 0x5F, 0xD2, 0x0D, 0x15, 0x6D, 0xED, 0xEB, 0x8A,
341 0xD5, 0x64, 0x16, 0x7C, 0x12, 0x25, 0x76, 0xFD,
342 0x8A, 0x8D, 0xC5, 0xEA, 0xF8, 0xA9, 0x04, 0x65,
343 0x58, 0x6D, 0x67, 0x2F, 0xA7, 0x3E, 0x2C, 0x96,
344 0x55, 0x11, 0xAA, 0x10, 0xE0, 0x1B, 0x0F, 0x1C,
345 0x89, 0x10, 0x7C, 0x63, 0xCB, 0x0B, 0xB8, 0x1C,
346 0x49, 0x16, 0xC1, 0xB3, 0xA5, 0x57, 0x87, 0x4F,
347 0x80, 0x8B, 0x18, 0xF0, 0x46, 0xCE, 0xE4, 0x95,
348 0x2F, 0x9C, 0xE7, 0xB7, 0x40, 0x1C, 0xB4, 0xA3,
349 0xD4, 0x30, 0x9C, 0xFD, 0x95, 0x35, 0x57, 0x10,
350 0x50, 0x40, 0xDA, 0x47, 0x8E, 0x21, 0xAE, 0x05,
351 0xF8, 0xA8, 0x72, 0xA5, 0x68, 0xE1, 0xA2, 0xAB,
352 0x36, 0x0D, 0x4B, 0xDB, 0x7B, 0xBF, 0x7F, 0x51,
353 0x51, 0xC9, 0xBB, 0x3F, 0xF7, 0x76, 0x45, 0x78,
354 0xAC, 0x3F, 0x56, 0xF4, 0x27, 0x7E, 0xEF, 0x02,
355 0xED, 0x41, 0x15, 0xDB, 0xE4, 0x81, 0x59
356 },
357 .len = 255
358 },
359 .modulus = {
360 .data = {
361 0x71, 0x3C, 0x6C, 0x7A, 0x19, 0x31, 0xF8, 0x94,
362 0xC9, 0xAA, 0x25, 0x69, 0xA7, 0xF2, 0x28, 0x70,
363 0x84, 0x5D, 0xEC, 0x40, 0xC8, 0xF9, 0xC5, 0x79,
364 0xF9, 0x87, 0xD1, 0xA0, 0xC1, 0x5A, 0x06, 0xE4,
365 0x65, 0xB8, 0x29, 0x0B, 0x2B, 0xFE, 0x67, 0xF0,
366 0x91, 0x96, 0xE1, 0xCD, 0x5A, 0xCE, 0x44, 0xA3,
367 0x4F, 0xE8, 0xBE, 0xC6, 0xA3, 0x0A, 0xCB, 0xF5,
368 0x7D, 0x8B, 0x9B, 0x2F, 0x4E, 0xC9, 0x54, 0x48,
369 0xA4, 0xC2, 0x09, 0xCE, 0xA5, 0x93, 0x1F, 0x43,
370 0xC2, 0xCE, 0xFB, 0xBB, 0x69, 0x29, 0x03, 0x74,
371 0xD6, 0x25, 0x47, 0x6B, 0xAC, 0x4E, 0x44, 0x8C,
372 0x39, 0x2F, 0xB2, 0xDD, 0x15, 0x1B, 0xA3, 0x3D,
373 0xA4, 0x0C, 0xFF, 0xCB, 0x05, 0xC2, 0x81, 0x97,
374 0x16, 0xE2, 0xAC, 0x8A, 0xF3, 0xED, 0x80, 0xA4,
375 0xC5, 0xFC, 0xF5, 0x6C, 0x4B, 0xBB, 0x05, 0x91,
376 0xD4, 0x0F, 0xDA, 0x70, 0x7C, 0x9A, 0xA1, 0x63,
377 0x15, 0xEE, 0xBB, 0x17, 0xE6, 0x20, 0x50, 0x74,
378 0x36, 0x9C, 0xA1, 0x10, 0x29, 0x22, 0xFB, 0x7E,
379 0x2A, 0x08, 0xF3, 0x07, 0xEA, 0xCD, 0x2C, 0x50,
380 0x18, 0x15, 0x66, 0x87, 0x74, 0x19, 0x11, 0x2B,
381 0x77, 0x85, 0xA0, 0x57, 0xA7, 0xEB, 0x6E, 0x15,
382 0x15, 0x0D, 0xA4, 0x18, 0x5D, 0x54, 0x13, 0xE3,
383 0x33, 0x12, 0x8D, 0xA3, 0xEF, 0x54, 0xE6, 0x1E,
384 0xDB, 0x8F, 0x3D, 0x02, 0x3C, 0xCB, 0x34, 0x93,
385 0x31, 0x1D, 0x4D, 0x3E, 0x9C, 0x22, 0x04, 0xD1,
386 0x19, 0x53, 0x45, 0xE5, 0xBF, 0xF8, 0x70, 0x1A,
387 0xEA, 0x52, 0x93, 0x2A, 0x26, 0x8A, 0x1E, 0x47,
388 0xCE, 0x83, 0x5B, 0x35, 0x9A, 0xD2, 0x75, 0xC6,
389 0xC6, 0x20, 0x84, 0x9F, 0x74, 0x69, 0x69, 0xB8,
390 0x29, 0xD8, 0xA4, 0x70, 0x91, 0x42, 0x06, 0x25,
391 0x38, 0xCB, 0x42, 0x75, 0x52, 0xEF, 0xB8, 0x64,
392 0x4F, 0xC5, 0x7C, 0xC4, 0x09, 0xDB, 0x12
393 },
394 .len = 255
395 },
396 .result_len = 255
397},
398{
399 .description = "Modular Exponentiation "
400 "(mod=112, base=257, exp=43, res=112)",
401 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
402 .base = {
403 .data = {
404 0x53, 0x63, 0xB0, 0x3A, 0x30, 0xDE, 0x07, 0xBC,
405 0xE4, 0x4B, 0x52, 0x37, 0x9C, 0xD8, 0x5A, 0xCD,
406 0x03, 0xE1, 0xEA, 0x6D, 0xDE, 0x4C, 0x19, 0xE6,
407 0xA2, 0x0F, 0xAE, 0x56, 0xCD, 0xB2, 0xB6, 0x5B,
408 0x31, 0xF5, 0x41, 0x48, 0x8D, 0xA2, 0xC7, 0x0C,
409 0x19, 0x32, 0x6D, 0x58, 0x10, 0xD5, 0xF0, 0x64,
410 0xF9, 0xF5, 0xD7, 0xFE, 0x37, 0x4A, 0xD8, 0xE3,
411 0xBF, 0xDF, 0xCB, 0x45, 0xD5, 0xBF, 0xB9, 0x2A,
412 0x60, 0xF8, 0x52, 0xB0, 0xB5, 0x22, 0x76, 0xBD,
413 0xD3, 0x0D, 0xD4, 0xE1, 0x42, 0xC4, 0x8C, 0x47,
414 0x2D, 0x04, 0x25, 0x1B, 0xFB, 0x21, 0xFD, 0x80,
415 0xC0, 0xCE, 0x9D, 0x32, 0x76, 0x8E, 0x18, 0x28,
416 0xDC, 0x0F, 0x44, 0x37, 0xF8, 0x61, 0x45, 0x93,
417 0xD3, 0x62, 0x21, 0xEE, 0x8B, 0x89, 0x8B, 0xAF,
418 0x8B, 0xE9, 0xA5, 0xD2, 0x00, 0xF5, 0xFF, 0xE6,
419 0xE0, 0x56, 0x9D, 0x41, 0x13, 0xBC, 0xD6, 0x6E,
420 0xC9, 0xE8, 0xE8, 0xC7, 0x61, 0x00, 0x7D, 0x91,
421 0x59, 0xAC, 0x6A, 0x24, 0x86, 0x3C, 0x50, 0xFB,
422 0x49, 0xC4, 0xB9, 0x41, 0xCD, 0xF0, 0xD9, 0xE7,
423 0xE1, 0x54, 0x3F, 0x17, 0x3B, 0xC7, 0x12, 0x20,
424 0x6E, 0xC5, 0x80, 0x11, 0xA5, 0x78, 0x72, 0xCA,
425 0xBC, 0x90, 0xB7, 0xC5, 0xFF, 0x78, 0xE5, 0x71,
426 0x62, 0x4C, 0xCC, 0x6C, 0xEA, 0x76, 0xE3, 0xB6,
427 0x00, 0x54, 0x31, 0x72, 0x5A, 0xFE, 0x14, 0xC3,
428 0x60, 0x3A, 0x79, 0x97, 0x26, 0x87, 0x69, 0x8D,
429 0x44, 0x8E, 0x8B, 0xE0, 0xBC, 0x5C, 0x9F, 0xDE,
430 0xD0, 0x90, 0xA2, 0x85, 0xC8, 0x3E, 0x7E, 0xA0,
431 0x42, 0xE2, 0x3B, 0xEE, 0x0C, 0x59, 0x1E, 0x72,
432 0x62, 0xA5, 0xEE, 0x20, 0xE0, 0xFE, 0x0D, 0xD3,
433 0x9F, 0xA9, 0x84, 0xBC, 0xD0, 0x6E, 0x5E, 0xC2,
434 0x0B, 0xF2, 0xAE, 0xB6, 0xE6, 0xC6, 0x88, 0xF9,
435 0x51, 0xF8, 0x02, 0x08, 0xC6, 0x99, 0x73, 0xF2,
436 0x36
437 },
438 .len = 257
439 },
440 .exponent = {
441 .data = {
442 0xCA, 0x5C, 0x73, 0xF7, 0x8B, 0x1F, 0x95, 0xE4,
443 0x0E, 0x9B, 0x47, 0xDC, 0x03, 0x96, 0x75, 0xB4,
444 0x48, 0x74, 0x73, 0xBE, 0xF8, 0x92, 0x80, 0xE4,
445 0x93, 0x5D, 0x87, 0x7D, 0x74, 0xF7, 0x45, 0xEF,
446 0x8E, 0x53, 0x9C, 0x03, 0xB0, 0xD6, 0xF3, 0xBF,
447 0x86, 0xB2, 0xCD
448 },
449 .len = 43
450 },
451 .reminder = {
452 .data = {
453 0x01, 0x0E, 0x8C, 0x1B, 0x19, 0xF6, 0xB0, 0x0D,
454 0x8D, 0xFF, 0x12, 0x74, 0xF0, 0xD0, 0xB1, 0xA2,
455 0x49, 0xA4, 0xA3, 0x9C, 0x4D, 0xFA, 0xA7, 0xB7,
456 0x6E, 0x45, 0xCC, 0x0D, 0x75, 0xC7, 0xF7, 0x99,
457 0x1F, 0x01, 0x44, 0x7B, 0xF2, 0xF9, 0x73, 0x67,
458 0x75, 0xD9, 0x4C, 0x2F, 0xA9, 0xB4, 0x59, 0x9E,
459 0xF9, 0x2C, 0xB9, 0x14, 0x5D, 0x5C, 0x18, 0x72,
460 0xEC, 0x27, 0x1A, 0x2D, 0xFB, 0xDA, 0xEB, 0x2F,
461 0x98, 0xA9, 0xC2, 0x01, 0x75, 0x7A, 0x27, 0x07,
462 0x94, 0x71, 0x3F, 0x90, 0xDF, 0x56, 0x6F, 0x23,
463 0x47, 0x12, 0xAD, 0x32, 0x7A, 0xBC, 0x91, 0x36,
464 0x43, 0xD2, 0x88, 0x3D, 0x2C, 0x31, 0x85, 0xE6,
465 0x22, 0x2E, 0xCF, 0x53, 0x87, 0x0D, 0xAE, 0x72,
466 0x31, 0x21, 0x52, 0x0C, 0xDF, 0xAC, 0xEA, 0x57
467 },
468 .len = 112
469 },
470 .modulus = {
471 .data = {
472 0x20, 0x7E, 0x78, 0xFC, 0x54, 0x40, 0x47, 0xED,
473 0x7B, 0x26, 0x21, 0x94, 0x6D, 0x9C, 0xDC, 0xB7,
474 0x7C, 0xB8, 0xDE, 0x57, 0x3C, 0x64, 0x47, 0x50,
475 0xDB, 0x92, 0x0A, 0x5A, 0x85, 0x77, 0x84, 0xE3,
476 0xC7, 0xEA, 0x33, 0xA2, 0x63, 0xDA, 0x63, 0xE3,
477 0xDF, 0x07, 0x32, 0x85, 0xDC, 0xC3, 0xF0, 0x7C,
478 0xD8, 0x44, 0xC4, 0xDE, 0x2C, 0xB7, 0x91, 0xAE,
479 0xCD, 0xA2, 0xB3, 0x6B, 0x43, 0x04, 0x88, 0xBE,
480 0x3B, 0x50, 0xE1, 0x88, 0xD0, 0x20, 0x04, 0x36,
481 0xA4, 0xA0, 0xB0, 0x3B, 0x61, 0x9B, 0x83, 0xDB,
482 0x05, 0x77, 0x5A, 0x5E, 0x87, 0xA6, 0xBE, 0x6A,
483 0x2A, 0xB4, 0x30, 0x10, 0x8D, 0x3B, 0xBC, 0x84,
484 0x9E, 0xB2, 0x21, 0x7E, 0xAC, 0x67, 0x94, 0x9F,
485 0xF1, 0x32, 0x3C, 0xF0, 0x94, 0x83, 0xF8, 0x19
486 },
487 .len = 112
488 },
489 .result_len = 112
490},
491{
492 .description = "Modular Exponentiation "
493 "(mod=299, base=240, exp=321, res=299)",
494 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
495 .base = {
496 .data = {
497 0xAF, 0xE4, 0xCF, 0x9F, 0x7C, 0x20, 0x72, 0xE9,
498 0x50, 0x2E, 0xE5, 0xE4, 0xEF, 0x80, 0x28, 0xB3,
499 0x3A, 0x92, 0xAC, 0xCD, 0xF1, 0x6B, 0x7D, 0x83,
500 0x78, 0x4E, 0x9B, 0x30, 0x1E, 0xF4, 0x11, 0x15,
501 0x49, 0xAC, 0x06, 0xA2, 0x92, 0xB9, 0x91, 0x1B,
502 0xE8, 0xC8, 0xBC, 0x8A, 0x6F, 0xB2, 0xB8, 0x7C,
503 0xC5, 0xD3, 0x68, 0x60, 0xA4, 0x37, 0x7A, 0x6E,
504 0x3A, 0x1C, 0xAE, 0xAC, 0x70, 0x7B, 0x03, 0xE0,
505 0xDC, 0x7D, 0x51, 0x2E, 0x04, 0xC1, 0xD4, 0xA8,
506 0x5A, 0xE1, 0xE8, 0xAD, 0x83, 0x0C, 0x0C, 0x2D,
507 0x93, 0x8A, 0x07, 0x25, 0xC6, 0xE1, 0xAB, 0xD7,
508 0x2F, 0xC4, 0x14, 0x2E, 0x68, 0x89, 0xA7, 0xEA,
509 0x4E, 0x7B, 0xC4, 0x05, 0xD4, 0xB7, 0xC1, 0x9B,
510 0x9D, 0x8D, 0x58, 0x33, 0xE3, 0xB0, 0x58, 0xD8,
511 0xCF, 0x6D, 0xA9, 0xC6, 0x96, 0xE3, 0x6E, 0xAA,
512 0x23, 0x17, 0x19, 0x74, 0xE0, 0x7B, 0x50, 0x7A,
513 0x57, 0x49, 0xFD, 0xFA, 0x3E, 0x7D, 0xF9, 0xB6,
514 0x30, 0x5F, 0x1C, 0xE4, 0x5F, 0xC7, 0x3D, 0x5B,
515 0x9E, 0xF5, 0xB6, 0x2F, 0xEA, 0xCF, 0x31, 0x35,
516 0xC0, 0x60, 0xDE, 0x18, 0xC5, 0x0D, 0xBB, 0xC5,
517 0xD1, 0x1D, 0x25, 0x7C, 0x8C, 0x35, 0x8A, 0x71,
518 0xA8, 0x01, 0x9E, 0xEA, 0x8F, 0xD4, 0x5D, 0x52,
519 0x86, 0xB7, 0x11, 0xC8, 0xF2, 0x97, 0xD0, 0x73,
520 0x7C, 0xAB, 0xBB, 0xF4, 0x38, 0x4E, 0x48, 0xB5,
521 0x70, 0x35, 0x2A, 0xC5, 0x14, 0x86, 0x2E, 0x64,
522 0x91, 0x32, 0x37, 0x5E, 0x1A, 0x00, 0xAC, 0xF1,
523 0xFC, 0x36, 0xEA, 0x7F, 0x50, 0xAF, 0x02, 0xEC,
524 0x06, 0xE8, 0x55, 0x68, 0x0D, 0x9A, 0x58, 0x4D,
525 0xBD, 0xB9, 0x62, 0x25, 0xAB, 0x94, 0xD7, 0x37,
526 0xAD, 0xB4, 0x9F, 0xB4, 0x3A, 0x07, 0x45, 0x4B
527 },
528 .len = 240
529 },
530 .exponent = {
531 .data = {
532 0xB1, 0xC2, 0x86, 0xFA, 0xE2, 0xF1, 0x71, 0x9C,
533 0x61, 0x23, 0xAB, 0x37, 0xC6, 0x4F, 0x17, 0xFE,
534 0x4D, 0xAC, 0x11, 0xD4, 0x36, 0xEE, 0xCB, 0xAE,
535 0x46, 0x88, 0xA4, 0x92, 0x20, 0x6D, 0xDC, 0xF1,
536 0xE4, 0x94, 0x72, 0x07, 0x64, 0x84, 0xF4, 0x83,
537 0x31, 0x0C, 0x04, 0xF7, 0x5B, 0x68, 0xE6, 0x7A,
538 0x6C, 0xCD, 0x6C, 0xBF, 0x03, 0x07, 0x5A, 0x91,
539 0x37, 0x3A, 0x73, 0xFF, 0xB2, 0x11, 0x88, 0x39,
540 0x19, 0xEB, 0x1C, 0x0E, 0x45, 0x99, 0xE6, 0x4E,
541 0xE4, 0xB1, 0x57, 0xBE, 0xBE, 0x7A, 0xE8, 0x56,
542 0x19, 0x92, 0xAC, 0xBD, 0x78, 0xCC, 0x54, 0xDC,
543 0x2D, 0xE6, 0x7D, 0x61, 0xE1, 0x27, 0xA7, 0x43,
544 0x46, 0x25, 0x51, 0x95, 0x47, 0xF6, 0xB1, 0x68,
545 0x17, 0xE6, 0x21, 0xD4, 0x83, 0x1E, 0x32, 0xAF,
546 0x22, 0xA4, 0x7D, 0x3D, 0x1F, 0xE6, 0x43, 0x96,
547 0x64, 0xAB, 0xC5, 0x81, 0xBC, 0x79, 0x14, 0x54,
548 0x02, 0x78, 0x79, 0x71, 0x58, 0xC2, 0x2E, 0x56,
549 0x21, 0x6B, 0x40, 0xDB, 0x79, 0xD1, 0x80, 0x5D,
550 0x61, 0xF0, 0x9F, 0x4A, 0xC3, 0x8F, 0xAC, 0x98,
551 0x94, 0x88, 0x2C, 0xA5, 0xCB, 0x06, 0x47, 0x73,
552 0x27, 0x71, 0xA8, 0x0C, 0xBD, 0xFD, 0x83, 0xBF,
553 0xA2, 0xCC, 0x91, 0x63, 0x9D, 0xC5, 0x58, 0x50,
554 0x53, 0x98, 0xA0, 0x5F, 0x0B, 0xDE, 0x15, 0x65,
555 0xFB, 0x5D, 0xF1, 0x9C, 0xD0, 0xC3, 0x6B, 0x4D,
556 0x31, 0x20, 0x2F, 0x4D, 0x4F, 0x9D, 0xEB, 0xCB,
557 0xFC, 0xDA, 0x54, 0xC1, 0x57, 0x10, 0x0F, 0xFC,
558 0xD2, 0xA7, 0x44, 0x0E, 0x89, 0x0D, 0x89, 0x56,
559 0x1E, 0x40, 0x64, 0xFF, 0x9E, 0xB1, 0x5C, 0x9A,
560 0x6E, 0xE5, 0xE9, 0x48, 0xAB, 0x27, 0x91, 0x9A,
561 0x3B, 0x8D, 0xB6, 0xA0, 0xD6, 0xD8, 0x9B, 0xBD,
562 0x0D, 0x1D, 0x90, 0xED, 0x54, 0xE1, 0x75, 0x5B,
563 0x89, 0xE1, 0x0C, 0xC7, 0x42, 0xD7, 0x68, 0xCB,
564 0x41, 0x59, 0xC1, 0x96, 0xD9, 0x77, 0x88, 0xF1,
565 0x68, 0x90, 0xDA, 0xE0, 0xB7, 0x1E, 0x2C, 0xDB,
566 0x27, 0x78, 0xC0, 0x15, 0x68, 0x9E, 0xF7, 0x48,
567 0x45, 0xFC, 0x22, 0x5D, 0x2B, 0xFA, 0xC7, 0x81,
568 0x26, 0x60, 0xF7, 0x50, 0xEE, 0xF9, 0x61, 0xF8,
569 0x59, 0x28, 0x92, 0xEE, 0xD7, 0x92, 0x5F, 0x5E,
570 0xA5, 0x5A, 0x4C, 0xC7, 0x89, 0x9B, 0x9F, 0x8F,
571 0x01, 0x3B, 0x9D, 0x8D, 0xF8, 0x6B, 0xEE, 0x64,
572 0x54
573 },
574 .len = 321
575 },
576 .reminder = {
577 .data = {
578 0x4A, 0x18, 0x9C, 0xCB, 0x90, 0x71, 0x8E, 0xD3,
579 0xCA, 0xEB, 0xF1, 0xE7, 0xE8, 0xB0, 0x19, 0x9C,
580 0x05, 0x51, 0x29, 0x8C, 0xB9, 0x6D, 0x1B, 0x05,
581 0xDC, 0x16, 0x91, 0x0E, 0x69, 0xF3, 0x76, 0x29,
582 0x9D, 0x91, 0x21, 0x98, 0x56, 0x9A, 0x22, 0x20,
583 0xDF, 0x75, 0x4D, 0x40, 0x51, 0x99, 0x6E, 0xEA,
584 0x37, 0x22, 0xF4, 0x27, 0x04, 0x6E, 0xDC, 0xB2,
585 0xF5, 0xF6, 0xF8, 0xD6, 0xA8, 0xB7, 0x2D, 0xB7,
586 0x18, 0x44, 0xF7, 0x62, 0x91, 0x44, 0x97, 0x91,
587 0x6C, 0x14, 0x7E, 0xEB, 0x00, 0xB0, 0x3F, 0x7D,
588 0x7B, 0x4A, 0xD0, 0x04, 0xD2, 0xCC, 0x5A, 0x22,
589 0xB5, 0x0E, 0xAB, 0x1A, 0xB0, 0xD7, 0x97, 0xDD,
590 0xE5, 0x78, 0xA9, 0x97, 0xF4, 0xC7, 0xE0, 0x28,
591 0x00, 0xF3, 0x48, 0xCA, 0x69, 0xD0, 0xE8, 0x43,
592 0x12, 0x82, 0x24, 0xBA, 0x28, 0xBD, 0x8E, 0xCB,
593 0xB1, 0x98, 0x08, 0xC5, 0x0F, 0xF2, 0xE9, 0xA2,
594 0x6C, 0xCC, 0xA9, 0x21, 0xA6, 0x38, 0xAE, 0x88,
595 0x35, 0x5E, 0xBB, 0xEF, 0x37, 0xAB, 0xDA, 0x07,
596 0x5F, 0x0A, 0xB4, 0x29, 0x65, 0x24, 0x22, 0x6C,
597 0x9E, 0xF5, 0x19, 0xA4, 0x8E, 0x5A, 0xFA, 0xFC,
598 0x97, 0x8A, 0xE8, 0x2B, 0x6D, 0x4B, 0xD0, 0xFB,
599 0x86, 0xB9, 0xE7, 0x2C, 0x08, 0x25, 0x17, 0x90,
600 0x77, 0x54, 0xE0, 0xBA, 0x0F, 0x59, 0x6C, 0x8C,
601 0x0E, 0xCF, 0x54, 0x55, 0x6C, 0xF1, 0x65, 0x48,
602 0xCC, 0xF4, 0xAB, 0xA1, 0x91, 0x07, 0x29, 0xFC,
603 0x46, 0xBC, 0x2C, 0x85, 0xA1, 0x0C, 0x8A, 0x77,
604 0x7A, 0xC6, 0x01, 0x34, 0xCE, 0x92, 0x1D, 0x88,
605 0x54, 0x23, 0x26, 0x9B, 0x6B, 0x80, 0x6D, 0x08,
606 0x99, 0xAE, 0xC0, 0xF6, 0x45, 0x97, 0xAF, 0xCD,
607 0x2F, 0x4A, 0x7E, 0xAB, 0xD8, 0x31, 0x48, 0xA1,
608 0xEB, 0x5E, 0xD1, 0xC0, 0xE7, 0xD5, 0x37, 0x3D,
609 0x03, 0xA3, 0x16, 0x09, 0xD4, 0xDE, 0xC3, 0x97,
610 0x13, 0xB6, 0x67, 0x55, 0x8A, 0x71, 0x51, 0x66,
611 0xF5, 0xA1, 0x3B, 0xE3, 0x49, 0x8D, 0x7C, 0x52,
612 0xCD, 0xA7, 0x11, 0xDD, 0xE0, 0xA0, 0x5C, 0xD8,
613 0xF8, 0xDF, 0x01, 0xC5, 0x61, 0x87, 0xB4, 0xDE,
614 0x3E, 0x39, 0xED, 0xC3, 0x3F, 0x84, 0x70, 0x37,
615 0xBA, 0xDB, 0x5B
616 },
617 .len = 299
618 },
619 .modulus = {
620 .data = {
621 0x85, 0x04, 0x13, 0x7C, 0x4D, 0xBF, 0xC6, 0x25,
622 0xD9, 0xAA, 0x1F, 0xED, 0x00, 0x69, 0xD7, 0x6C,
623 0xB0, 0x46, 0x52, 0xA5, 0xF4, 0xF6, 0x55, 0x16,
624 0x67, 0x52, 0x09, 0xF0, 0x28, 0xA7, 0x30, 0x22,
625 0x34, 0xF1, 0xEA, 0xEB, 0x7C, 0x18, 0xEE, 0xAC,
626 0x1A, 0xC1, 0xF5, 0x31, 0x7E, 0xA4, 0x4A, 0x0C,
627 0xEA, 0xFE, 0x33, 0xDB, 0x49, 0x04, 0xFD, 0x33,
628 0x3F, 0xB1, 0x41, 0x1F, 0xBD, 0x43, 0x71, 0xDE,
629 0xB9, 0xA2, 0x4F, 0x20, 0x57, 0xAF, 0x27, 0x37,
630 0x58, 0xA8, 0x51, 0x5D, 0x4E, 0xAB, 0x17, 0x1C,
631 0x99, 0xD9, 0xB2, 0x0D, 0x21, 0xCA, 0x35, 0x52,
632 0xF2, 0x4C, 0x7C, 0x79, 0x83, 0x2C, 0xF2, 0x87,
633 0xC5, 0x58, 0x6E, 0x6E, 0x48, 0xFB, 0x32, 0x4D,
634 0x1C, 0xDC, 0xE9, 0xDA, 0x9B, 0x77, 0x19, 0xD9,
635 0x78, 0xE4, 0xF5, 0x3A, 0x49, 0x3D, 0x0D, 0x3D,
636 0x10, 0x77, 0x0B, 0xC2, 0xE6, 0x66, 0x68, 0xFA,
637 0x55, 0x99, 0x65, 0x5E, 0x55, 0x87, 0xCF, 0x3C,
638 0x9C, 0x6C, 0x08, 0x09, 0x1F, 0x9C, 0xCB, 0x5E,
639 0xE5, 0x19, 0x39, 0xA9, 0x2F, 0xF0, 0x49, 0x3D,
640 0x7C, 0xB6, 0x7B, 0xA2, 0x93, 0xF1, 0x52, 0xD8,
641 0x92, 0xDD, 0x56, 0x57, 0x8E, 0xE2, 0x5F, 0xA0,
642 0x64, 0xB2, 0xC5, 0x0F, 0xB9, 0x89, 0xA6, 0x3F,
643 0x54, 0x51, 0x2D, 0x01, 0x51, 0x78, 0x32, 0xE1,
644 0xA7, 0x4D, 0x45, 0xC0, 0xD0, 0x6C, 0xE7, 0xCA,
645 0xB2, 0x3F, 0x17, 0xD4, 0xB6, 0x58, 0x9B, 0xA8,
646 0xBA, 0x2F, 0x3D, 0x1D, 0x6A, 0x73, 0x82, 0x2B,
647 0x26, 0x2E, 0x7A, 0xEE, 0xEA, 0x41, 0x25, 0xFE,
648 0xF0, 0xA2, 0x9C, 0x60, 0x35, 0xAD, 0x34, 0x30,
649 0x55, 0x02, 0x6B, 0x06, 0xF4, 0xAD, 0x91, 0xA3,
650 0xA2, 0x9C, 0x12, 0x8D, 0xDF, 0x2B, 0x3F, 0x0C,
651 0x54, 0xCB, 0x98, 0xBA, 0xA1, 0x33, 0x70, 0xEF,
652 0xF1, 0xEE, 0x15, 0xB7, 0xC6, 0x27, 0x47, 0x83,
653 0x90, 0x58, 0x08, 0x16, 0x83, 0x94, 0xE9, 0x95,
654 0x8B, 0x03, 0xD0, 0x3C, 0x45, 0xF8, 0x90, 0xC9,
655 0xA7, 0x64, 0x76, 0xE8, 0x01, 0xA4, 0xA2, 0xAD,
656 0x6F, 0x19, 0xCF, 0x38, 0x9A, 0xAB, 0x6E, 0xBE,
657 0x79, 0xE4, 0x0F, 0xCE, 0x9C, 0x59, 0xF2, 0xF4,
658 0x26, 0xAB, 0x0F
659 },
660 .len = 299
661 },
662 .result_len = 299
663},
664{
665 .description = "Modular Exponentiation "
666 "(mod=448, base=50, exp=40, res=448)",
667 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
668 .base = {
669 .data = {
670 0x92, 0x45, 0x17, 0x7D, 0xD3, 0xF4, 0x2B, 0x93,
671 0x8E, 0x1A, 0xFB, 0x1D, 0x13, 0x55, 0x53, 0x84,
672 0x96, 0x3C, 0x39, 0xE0, 0xAF, 0x4A, 0xB4, 0xC9,
673 0x16, 0x1F, 0xF4, 0x24, 0x65, 0xDD, 0xC3, 0x62,
674 0x12, 0xAF, 0x86, 0x95, 0x0D, 0xDE, 0x28, 0x87,
675 0x90, 0x11, 0xAA, 0x6E, 0x60, 0xCD, 0x54, 0xB7,
676 0x48, 0x43
677 },
678 .len = 50
679 },
680 .exponent = {
681 .data = {
682 0x22, 0xD9, 0x4D, 0x01, 0x2F, 0x50, 0x5D, 0xE1,
683 0x01, 0xAA, 0xC6, 0xC6, 0xCD, 0x5D, 0x7E, 0x61,
684 0x75, 0x0A, 0xDC, 0x06, 0x07, 0x4B, 0xBD, 0x29,
685 0x33, 0x09, 0x91, 0xD4, 0x29, 0xEB, 0x52, 0x24,
686 0x27, 0xC6, 0x83, 0x6D, 0x70, 0xA9, 0xC9, 0x11
687 },
688 .len = 40
689 },
690 .reminder = {
691 .data = {
692 0x6B, 0x15, 0x66, 0xD3, 0x81, 0x3E, 0xCB, 0xA6,
693 0xD8, 0x88, 0x9C, 0xFF, 0x8D, 0xBC, 0x91, 0x9F,
694 0xDA, 0x09, 0x9E, 0x1B, 0xDB, 0x8A, 0x0F, 0xAC,
695 0x19, 0x8E, 0xFE, 0x25, 0xA0, 0x66, 0x9D, 0x19,
696 0x7C, 0xCB, 0x1D, 0xCF, 0x97, 0x41, 0xD2, 0x7A,
697 0x0E, 0xAE, 0x8A, 0xD4, 0x24, 0x6D, 0xDF, 0xF4,
698 0x0A, 0xCD, 0xE7, 0xF3, 0x21, 0x76, 0x22, 0xCA,
699 0x31, 0x67, 0x91, 0x1B, 0x3A, 0x38, 0xAF, 0x03,
700 0xA6, 0xFF, 0x34, 0xA2, 0x92, 0xC8, 0x70, 0xD4,
701 0x86, 0xA5, 0x32, 0x57, 0xDC, 0xE5, 0xEB, 0xA5,
702 0x33, 0xC2, 0x83, 0xC3, 0x33, 0xE8, 0x53, 0x8F,
703 0x8A, 0xFA, 0xAE, 0xCF, 0x35, 0x6E, 0xD0, 0x5D,
704 0xCF, 0xE4, 0x18, 0x2F, 0x6E, 0xEC, 0x9D, 0xE9,
705 0x60, 0x27, 0xF7, 0x7A, 0xFD, 0x1D, 0xC3, 0x2C,
706 0xE0, 0xDA, 0x7B, 0x18, 0xE0, 0x6A, 0x06, 0xE6,
707 0xEE, 0xA3, 0x0C, 0x02, 0x98, 0xA5, 0x30, 0xA1,
708 0x3F, 0x98, 0xCA, 0x06, 0xBD, 0x76, 0xDB, 0xCC,
709 0xDF, 0x0B, 0x38, 0x43, 0x86, 0x11, 0xB8, 0xB7,
710 0xC5, 0xC1, 0x74, 0x59, 0x63, 0xFF, 0x3C, 0xFC,
711 0x14, 0xDF, 0xAD, 0xDD, 0x99, 0xCC, 0x48, 0xEA,
712 0xCE, 0x75, 0x15, 0x1D, 0x8F, 0x63, 0x5B, 0x9D,
713 0x97, 0x2E, 0x98, 0x7B, 0x7A, 0x07, 0xBB, 0x99,
714 0x57, 0xF5, 0xC4, 0x4D, 0x11, 0x4C, 0x55, 0x08,
715 0x5F, 0x2C, 0x25, 0x37, 0x83, 0x76, 0xD5, 0xCA,
716 0x51, 0x5C, 0x86, 0xA4, 0xA1, 0x14, 0x2B, 0xBA,
717 0xBD, 0x59, 0xBF, 0xE0, 0x41, 0xA9, 0x66, 0xD1,
718 0x29, 0x4B, 0x04, 0xCA, 0xEE, 0x9A, 0x31, 0x5E,
719 0xD9, 0x11, 0xEE, 0x1B, 0xB6, 0x09, 0x11, 0xA4,
720 0xD8, 0x3A, 0x12, 0xF5, 0x9E, 0x79, 0x02, 0x64,
721 0x8F, 0x18, 0x38, 0x5D, 0x19, 0x4D, 0x56, 0xA6,
722 0x7A, 0xA6, 0xC0, 0x98, 0x13, 0x2F, 0x60, 0x73,
723 0xD2, 0x8F, 0x70, 0x3D, 0x09, 0x42, 0xE9, 0xCC,
724 0xFF, 0xA9, 0xF0, 0x82, 0xA2, 0x10, 0x1A, 0x26,
725 0x91, 0xD6, 0x84, 0x24, 0x0A, 0x3A, 0xC6, 0x67,
726 0x36, 0xCE, 0x9B, 0x4B, 0xF8, 0xF3, 0xCA, 0xB6,
727 0x6C, 0x5F, 0x04, 0xE5, 0x74, 0xD8, 0x56, 0x42,
728 0x7D, 0xD1, 0x5E, 0x8F, 0xA0, 0x9D, 0x66, 0x3B,
729 0x13, 0x86, 0x9D, 0x84, 0x40, 0x74, 0x76, 0x00,
730 0xCD, 0x40, 0x87, 0x58, 0x7C, 0x41, 0x8A, 0xE2,
731 0xF8, 0xCB, 0x06, 0xCF, 0xCB, 0x0C, 0x78, 0x5D,
732 0x6E, 0xAD, 0xE0, 0x1A, 0x54, 0xC3, 0x31, 0x5B,
733 0xCF, 0xD0, 0x2D, 0x22, 0xA5, 0x84, 0x97, 0x20,
734 0x4D, 0x13, 0x5F, 0xED, 0xFE, 0x01, 0xD8, 0x1A,
735 0x79, 0xB5, 0x99, 0x03, 0x18, 0x55, 0xFB, 0xDD,
736 0x5F, 0x6E, 0x85, 0xA2, 0x13, 0x28, 0x45, 0x29,
737 0x25, 0x71, 0xC8, 0x53, 0x9B, 0x45, 0xA5, 0xD9,
738 0x55, 0x8C, 0xC8, 0x93, 0x2B, 0xBC, 0x08, 0x8D,
739 0x47, 0x90, 0x8F, 0x5E, 0x4B, 0xBC, 0xCE, 0xD1,
740 0x51, 0x3B, 0xFB, 0x09, 0x4A, 0x72, 0x99, 0x0F,
741 0xE2, 0x5F, 0x80, 0xF4, 0xE7, 0x6F, 0xD6, 0x08,
742 0xD1, 0x79, 0xE8, 0x68, 0xFA, 0x29, 0x08, 0x4F,
743 0x8B, 0x11, 0x12, 0x27, 0x97, 0x04, 0xC8, 0x7D,
744 0xAB, 0x4D, 0xDA, 0x92, 0x29, 0x42, 0x7C, 0x3E,
745 0x7D, 0x05, 0xEC, 0x1F, 0x4A, 0xA1, 0xBB, 0x3F,
746 0x77, 0x3F, 0xEF, 0xC9, 0xAA, 0x63, 0xD5, 0x39,
747 0xD5, 0x33, 0x0D, 0x28, 0xD0, 0x3C, 0x85, 0xC0
748 },
749 .len = 448
750 },
751 .modulus = {
752 .data = {
753 0xBB, 0x97, 0x8A, 0xB6, 0x26, 0xD4, 0x0E, 0x70,
754 0x21, 0xA6, 0x56, 0x71, 0xE5, 0xD8, 0x18, 0x21,
755 0x64, 0x9F, 0x1B, 0x6F, 0x7C, 0x27, 0x72, 0xB8,
756 0x39, 0xE5, 0x2A, 0x94, 0x76, 0x22, 0xB7, 0x68,
757 0x57, 0x3A, 0x01, 0x54, 0xA8, 0x50, 0x41, 0xA1,
758 0xAD, 0xD0, 0xC7, 0xDB, 0xAA, 0x76, 0x7F, 0x37,
759 0xA9, 0x27, 0x22, 0x8D, 0xF0, 0x5C, 0x5A, 0xAC,
760 0xFB, 0x82, 0x6A, 0x8E, 0x31, 0x51, 0x54, 0x7C,
761 0xDB, 0x55, 0x9C, 0xBC, 0x82, 0x27, 0xF4, 0x0B,
762 0x94, 0x74, 0xC8, 0x83, 0x80, 0x1C, 0xD8, 0xFF,
763 0x50, 0xA2, 0xC9, 0xED, 0x2B, 0x98, 0x77, 0xF3,
764 0x31, 0x81, 0x1C, 0x41, 0x8E, 0xAF, 0x87, 0xA2,
765 0x02, 0xAC, 0x8B, 0x55, 0x01, 0x5C, 0x16, 0x11,
766 0x63, 0x8C, 0xE2, 0x0D, 0x51, 0xD2, 0x4C, 0xD7,
767 0xD4, 0x3D, 0xE4, 0x79, 0x1A, 0xA7, 0xC4, 0xBF,
768 0x4E, 0x2A, 0xC9, 0x74, 0xD6, 0xD4, 0x90, 0x03,
769 0x65, 0x7F, 0x54, 0x0F, 0xAC, 0x5F, 0x98, 0x2C,
770 0x46, 0xC0, 0xD7, 0xE6, 0x75, 0x95, 0xC3, 0xEA,
771 0x05, 0x3A, 0x03, 0x55, 0x43, 0xC7, 0xC2, 0xD1,
772 0x11, 0xCD, 0x57, 0x37, 0x0D, 0x40, 0x87, 0xDF,
773 0x7D, 0xC3, 0x04, 0x54, 0xDE, 0x1D, 0xAF, 0xB8,
774 0x02, 0x50, 0x42, 0xFF, 0x9D, 0xFB, 0x13, 0xF7,
775 0x25, 0x5A, 0x8B, 0xE3, 0x31, 0xA2, 0x64, 0xF8,
776 0x94, 0x50, 0x18, 0xFB, 0xBB, 0xA2, 0xE9, 0x13,
777 0x77, 0x6E, 0xE1, 0x6F, 0x9F, 0x06, 0x03, 0xEE,
778 0x0D, 0x06, 0x6E, 0xF2, 0x9B, 0x15, 0x70, 0xDD,
779 0x26, 0x7C, 0xB4, 0x5D, 0xD0, 0xE7, 0x77, 0xC4,
780 0xB9, 0x88, 0x75, 0xB8, 0x73, 0xFC, 0xE9, 0xB7,
781 0x11, 0x26, 0xAC, 0xDB, 0x97, 0x27, 0x18, 0x21,
782 0x50, 0x7E, 0x46, 0xB2, 0xF1, 0x50, 0x40, 0xD9,
783 0x8B, 0x63, 0xDB, 0x1A, 0x8E, 0x29, 0xBE, 0x1F,
784 0x88, 0x35, 0xFD, 0x95, 0xC3, 0xA6, 0x80, 0xEB,
785 0x73, 0xF7, 0x02, 0x02, 0xB0, 0xCA, 0x97, 0x2C,
786 0x32, 0x44, 0xA9, 0xCA, 0x94, 0xC0, 0xB2, 0xD9,
787 0x7C, 0xD9, 0x10, 0x62, 0x31, 0xC9, 0xFA, 0x5B,
788 0x5C, 0x2C, 0xB6, 0x04, 0x5B, 0x7E, 0x86, 0xBB,
789 0x49, 0x02, 0x16, 0x9E, 0x1E, 0x53, 0xBD, 0xC2,
790 0xA9, 0xAA, 0x94, 0x39, 0xA1, 0xB2, 0x18, 0x17,
791 0xB6, 0x2C, 0xF6, 0xFF, 0xC0, 0xD0, 0x2D, 0x4D,
792 0xAA, 0x6C, 0xB5, 0xC8, 0x6A, 0xBE, 0x38, 0xE4,
793 0x9F, 0xDC, 0x5C, 0x56, 0x56, 0x04, 0x32, 0x49,
794 0x91, 0x17, 0x44, 0x6E, 0xB3, 0xF9, 0x8F, 0xDB,
795 0xEA, 0x04, 0x4C, 0x67, 0xE6, 0xDA, 0x96, 0x2F,
796 0x89, 0x2D, 0x54, 0xC3, 0xAD, 0x07, 0x6B, 0xA0,
797 0x87, 0xF0, 0xCF, 0x4B, 0x43, 0x46, 0xCA, 0x06,
798 0x48, 0x8D, 0x34, 0xC4, 0xD2, 0xD2, 0xA9, 0x16,
799 0x13, 0xF5, 0x49, 0x44, 0x8C, 0xD9, 0x0C, 0x1E,
800 0x79, 0x47, 0xFC, 0x4C, 0x37, 0x8E, 0xD1, 0xFD,
801 0xB9, 0xE8, 0x6E, 0x1B, 0x8D, 0x68, 0xCC, 0x49,
802 0x0D, 0x98, 0xB5, 0xD5, 0x22, 0x1C, 0xFC, 0xBA,
803 0x7A, 0x74, 0x3D, 0xBD, 0xD9, 0xB3, 0x80, 0x58,
804 0x4A, 0x05, 0x67, 0x9D, 0x59, 0xF4, 0xF7, 0x72,
805 0x11, 0x3C, 0x67, 0x96, 0xE7, 0x0D, 0x8E, 0x73,
806 0xD1, 0xEE, 0x00, 0x79, 0x98, 0x7A, 0x0E, 0xE0,
807 0xA8, 0xEA, 0x7D, 0xF3, 0xDB, 0x0E, 0x62, 0x3E,
808 0x66, 0x95, 0xED, 0xD5, 0x8C, 0x39, 0xF5, 0xAB
809 },
810 .len = 448
811 },
812 .result_len = 448
813},
814{
815 .description = "Modular Exponentiation "
816 "(mod=19, base=500, exp=35, res=19)",
817 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
818 .base = {
819 .data = {
820 0x42, 0xE5, 0x6F, 0xF7, 0xEF, 0x8F, 0xAB, 0x6F,
821 0xF5, 0xE2, 0xD2, 0x97, 0x68, 0x0D, 0x52, 0xDD,
822 0x3D, 0x62, 0xC4, 0xC4, 0xDE, 0xD2, 0x07, 0x50,
823 0x1B, 0xA9, 0x5F, 0xAE, 0x42, 0xCB, 0x5E, 0x0B,
824 0xC0, 0x41, 0xFE, 0xEF, 0x22, 0xA6, 0x4E, 0x35,
825 0x80, 0x61, 0x22, 0x92, 0x65, 0x77, 0x45, 0x84,
826 0x6C, 0x03, 0x7C, 0xEF, 0xC0, 0x49, 0x31, 0x87,
827 0x86, 0x9B, 0x2E, 0x28, 0xA1, 0x55, 0x2D, 0x3C,
828 0x68, 0x3D, 0x69, 0x0E, 0x98, 0xD6, 0x40, 0xFD,
829 0x0B, 0x4C, 0x5F, 0xC7, 0x95, 0xF1, 0x53, 0x7C,
830 0xCC, 0x12, 0x3F, 0x8C, 0x7A, 0x24, 0x73, 0xE7,
831 0x33, 0x20, 0xBD, 0x0C, 0xD2, 0x9C, 0x12, 0x20,
832 0xC0, 0xC0, 0xA9, 0x16, 0x7E, 0x6B, 0x1D, 0x1F,
833 0xFE, 0x63, 0x8A, 0x22, 0x75, 0xDC, 0xF0, 0x0F,
834 0x8E, 0xA4, 0x3C, 0xE3, 0x6B, 0xFA, 0x46, 0xBA,
835 0xEB, 0x91, 0x31, 0x9D, 0x34, 0xED, 0xA0, 0xA6,
836 0xA3, 0xAB, 0xA5, 0x2A, 0x10, 0x30, 0xF4, 0x6F,
837 0x80, 0x25, 0xB0, 0xF5, 0x56, 0x76, 0xD3, 0xC5,
838 0x10, 0x92, 0xCD, 0xEA, 0xC3, 0x9C, 0x52, 0x96,
839 0xF1, 0xBD, 0x42, 0x53, 0xF3, 0xA9, 0x1F, 0xCB,
840 0x53, 0x45, 0xF1, 0xF6, 0x5F, 0x98, 0xFC, 0x13,
841 0xC9, 0xA8, 0x44, 0xC6, 0xD0, 0x78, 0xB6, 0x39,
842 0x93, 0x02, 0xC6, 0xC9, 0x0F, 0xAF, 0xF9, 0x6D,
843 0x91, 0x35, 0xC9, 0x26, 0x73, 0x11, 0xEB, 0xEE,
844 0x52, 0x61, 0x6C, 0xC0, 0x7F, 0xFD, 0xD0, 0x77,
845 0x9F, 0xC6, 0x0A, 0x05, 0x1B, 0x90, 0x61, 0x54,
846 0x61, 0xFF, 0x1E, 0xBA, 0x1D, 0x2F, 0x25, 0xE9,
847 0x85, 0x4C, 0xBA, 0xEF, 0x99, 0x95, 0x3C, 0xBB,
848 0xA9, 0xCF, 0x0D, 0xBF, 0x2C, 0x86, 0xB0, 0x59,
849 0xAA, 0x83, 0x29, 0x32, 0x24, 0x28, 0xC8, 0x53,
850 0x28, 0x4C, 0xEB, 0x08, 0xFF, 0xC6, 0x25, 0xB7,
851 0xFF, 0x18, 0xB0, 0x2C, 0xDD, 0xAE, 0xFB, 0xDB,
852 0x54, 0xA2, 0x92, 0x27, 0x15, 0x0D, 0x6B, 0x50,
853 0xFB, 0xEA, 0x2C, 0x1C, 0x6F, 0x91, 0x3C, 0x50,
854 0x5A, 0xD8, 0x9B, 0x33, 0xED, 0x51, 0x5D, 0x7C,
855 0x37, 0x01, 0xEF, 0x09, 0xEA, 0x59, 0x56, 0x8A,
856 0x67, 0x21, 0x8C, 0x25, 0x00, 0x33, 0x24, 0x31,
857 0xCB, 0xAA, 0x5A, 0xA4, 0xB1, 0x84, 0xDD, 0x89,
858 0x3A, 0xFA, 0xD8, 0xAB, 0xEE, 0x3E, 0xC0, 0x0D,
859 0xDA, 0x2C, 0x2A, 0x75, 0x13, 0xD7, 0x49, 0x5E,
860 0x28, 0x2C, 0x24, 0xC6, 0x1E, 0xA0, 0xB3, 0x70,
861 0xAD, 0x45, 0x8A, 0xF2, 0xD9, 0x38, 0x69, 0xD5,
862 0x53, 0x30, 0xD8, 0x09, 0x09, 0xDE, 0x1F, 0x6C,
863 0x36, 0x82, 0xD5, 0xEC, 0xA7, 0x7E, 0x37, 0x5F,
864 0x7D, 0xF2, 0x85, 0x85, 0xF9, 0x0A, 0xC1, 0x13,
865 0x86, 0x3C, 0xCD, 0xFE, 0x44, 0x46, 0x57, 0x5E,
866 0x67, 0x39, 0x9D, 0x65, 0x74, 0xB9, 0x13, 0x5A,
867 0x05, 0xC1, 0xEA, 0xB5, 0x10, 0x1D, 0x66, 0xFF,
868 0xA0, 0x3D, 0x47, 0x27, 0x15, 0x66, 0x52, 0x19,
869 0xFA, 0x95, 0xD0, 0x03, 0x67, 0xA8, 0x89, 0xAA,
870 0x68, 0x04, 0x5F, 0xC4, 0x57, 0x1F, 0x6C, 0xF7,
871 0xD2, 0xE2, 0xA3, 0xF3, 0x96, 0x70, 0x86, 0xC6,
872 0xCB, 0x3D, 0x52, 0x66, 0x79, 0xED, 0xE6, 0x35,
873 0x0A, 0xE8, 0xA8, 0x5A, 0xED, 0x41, 0xB0, 0xF0,
874 0x89, 0xCC, 0x20, 0xDA, 0xB7, 0x48, 0x44, 0x64,
875 0x69, 0xC9, 0x43, 0xE2, 0xBD, 0xD1, 0x17, 0xCF,
876 0x25, 0x7C, 0x92, 0x0B, 0xFC, 0x71, 0x46, 0x67,
877 0x1F, 0xF4, 0xA7, 0xFF, 0xD8, 0xA4, 0x5F, 0x4A,
878 0x8A, 0x45, 0xBE, 0xDD, 0x89, 0xE2, 0x2A, 0xA7,
879 0xBC, 0xE9, 0x84, 0x53, 0x9D, 0xF4, 0x39, 0xB7,
880 0xDB, 0x3A, 0x17, 0xF7, 0x27, 0x39, 0xDF, 0x8A,
881 0xF0, 0x72, 0xD6, 0x23, 0x1B, 0x1C, 0xD9, 0x48,
882 0xF4, 0x2E, 0x54, 0xA3
883 },
884 .len = 500
885 },
886 .exponent = {
887 .data = {
888 0xE7, 0xF1, 0x97, 0x29, 0x62, 0x0B, 0x99, 0x89,
889 0x99, 0xC1, 0x63, 0xA2, 0xB7, 0x29, 0xAD, 0x0E,
890 0x84, 0x3B, 0x86, 0x82, 0xC4, 0xDD, 0xC4, 0xE2,
891 0xA7, 0xD4, 0xBA, 0x91, 0x2C, 0xB5, 0xD6, 0xD4,
892 0x74, 0x1D, 0xE1
893 },
894 .len = 35
895 },
896 .reminder = {
897 .data = {
898 0x67, 0x9F, 0xF7, 0x57, 0xD7, 0xF8, 0xF8, 0x90,
899 0x4E, 0xB5, 0x34, 0xE8, 0xAF, 0x14, 0xC6, 0x94,
900 0x5F, 0xA1, 0x03
901 },
902 .len = 19
903 },
904 .modulus = {
905 .data = {
906 0x9C, 0xE7, 0xE7, 0x14, 0x6E, 0x07, 0x71, 0xD2,
907 0xD1, 0xB3, 0x59, 0x9B, 0x63, 0xDB, 0x58, 0x8D,
908 0x5E, 0x84, 0xA0
909 },
910 .len = 19
911 },
912 .result_len = 19
913}
914};
915
916static const struct
917modinv_test_data modinv_test_case[] = {
918{
919 .description = "Modular Inverse (mod=128, base=20, exp=3, inv=128)",
920 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODINV,
921 .base = {
922 .data = {
923 0xF8, 0xBA, 0x1A, 0x55, 0xD0, 0x2F, 0x85,
924 0xAE, 0x96, 0x7B, 0xB6, 0x2F, 0xB6, 0xCD,
925 0xA8, 0xEB, 0x7E, 0x78, 0xA0, 0x50
926 },
927 .len = 20
928 },
929 .inverse = {
930 .data = {
931 0x52, 0xb1, 0xa3, 0x8c, 0xc5, 0x8a, 0xb9, 0x1f,
932 0xb6, 0x82, 0xf5, 0x6a, 0x9a, 0xde, 0x8d, 0x2e,
933 0x62, 0x4b, 0xac, 0x49, 0x21, 0x1d, 0x30, 0x4d,
934 0x32, 0xac, 0x1f, 0x40, 0x6d, 0x52, 0xc7, 0x9b,
935 0x6c, 0x0a, 0x82, 0x3a, 0x2c, 0xaf, 0x6b, 0x6d,
936 0x17, 0xbe, 0x43, 0xed, 0x97, 0x78, 0xeb, 0x4c,
937 0x92, 0x6f, 0xcf, 0xed, 0xb1, 0x09, 0xcb, 0x27,
938 0xc2, 0xde, 0x62, 0xfd, 0x21, 0xe6, 0xbd, 0x4f,
939 0xfe, 0x7a, 0x1b, 0x50, 0xfe, 0x10, 0x4a, 0xb0,
940 0xb7, 0xcf, 0xdb, 0x7d, 0xca, 0xc2, 0xf0, 0x1c,
941 0x39, 0x48, 0x6a, 0xb5, 0x4d, 0x8c, 0xfe, 0x63,
942 0x91, 0x9c, 0x21, 0xc3, 0x0e, 0x76, 0xad, 0x44,
943 0x8d, 0x54, 0x33, 0x99, 0xe1, 0x80, 0x19, 0xba,
944 0xb5, 0xac, 0x7d, 0x9c, 0xce, 0x91, 0x2a, 0xd9,
945 0x2c, 0xe1, 0x16, 0xd6, 0xd7, 0xcf, 0x9d, 0x05,
946 0x9a, 0x66, 0x9a, 0x3a, 0xc1, 0xb8, 0x4b, 0xc3
947 },
948 .len = 128
949 },
950 .modulus = {
951 .data = {
952 0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00, 0x0a,
953 0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5, 0xce,
954 0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a, 0xa2,
955 0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde, 0x0a,
956 0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a, 0x3d,
957 0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63, 0x6a,
958 0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27, 0x6e,
959 0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa, 0x72,
960 0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53, 0x87,
961 0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a, 0x62,
962 0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63, 0x18,
963 0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33, 0x4e,
964 0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3, 0x03,
965 0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e, 0xee,
966 0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb, 0xa6,
967 0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde, 0x55
968 },
969 .len = 128
970 },
971 .result_len = 128
972}
973};
974
975
976uint8_t base[] = {
977 0xF8, 0xBA, 0x1A, 0x55, 0xD0, 0x2F, 0x85,
978 0xAE, 0x96, 0x7B, 0xB6, 0x2F, 0xB6, 0xCD,
979 0xA8, 0xEB, 0x7E, 0x78, 0xA0, 0x50
980};
981
982uint8_t mod_p[] = {
983 0x00, 0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00,
984 0x0a, 0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5,
985 0xce, 0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a,
986 0xa2, 0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde,
987 0x0a, 0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a,
988 0x3d, 0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63,
989 0x6a, 0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27,
990 0x6e, 0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa,
991 0x72, 0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53,
992 0x87, 0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a,
993 0x62, 0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63,
994 0x18, 0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33,
995 0x4e, 0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3,
996 0x03, 0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e,
997 0xee, 0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb,
998 0xa6, 0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde,
999 0x55
1000};
1001
1002uint8_t mod_e[] = {0x01, 0x00, 0x01};
1003
1004
1005uint8_t mod_exp[] = {
1006 0x2C, 0x60, 0x75, 0x45, 0x98, 0x9D, 0xE0, 0x72,
1007 0xA0, 0x9D, 0x3A, 0x9E, 0x03, 0x38, 0x73, 0x3C,
1008 0x31, 0x83, 0x04, 0xFE, 0x75, 0x43, 0xE6, 0x17,
1009 0x5C, 0x01, 0x29, 0x51, 0x69, 0x33, 0x62, 0x2D,
1010 0x78, 0xBE, 0xAE, 0xC4, 0xBC, 0xDE, 0x7E, 0x2C,
1011 0x77, 0x84, 0xF2, 0xC5, 0x14, 0xB5, 0x2F, 0xF7,
1012 0xC5, 0x94, 0xEF, 0x86, 0x75, 0x75, 0xB5, 0x11,
1013 0xE5, 0x0E, 0x0A, 0x29, 0x76, 0xE2, 0xEA, 0x32,
1014 0x0E, 0x43, 0x77, 0x7E, 0x2C, 0x27, 0xAC, 0x3B,
1015 0x86, 0xA5, 0xDB, 0xC9, 0x48, 0x40, 0xE8, 0x99,
1016 0x9A, 0x0A, 0x3D, 0xD6, 0x74, 0xFA, 0x2E, 0x2E,
1017 0x5B, 0xAF, 0x8C, 0x99, 0x44, 0x2A, 0x67, 0x38,
1018 0x27, 0x41, 0x59, 0x9D, 0xB8, 0x51, 0xC9, 0xF7,
1019 0x43, 0x61, 0x31, 0x6E, 0xF1, 0x25, 0x38, 0x7F,
1020 0xAE, 0xC6, 0xD0, 0xBB, 0x29, 0x76, 0x3F, 0x46,
1021 0x2E, 0x1B, 0xE4, 0x67, 0x71, 0xE3, 0x87, 0x5A
1022};
1023
1024
1025uint8_t mod_inv[] = {
1026 0x52, 0xb1, 0xa3, 0x8c, 0xc5, 0x8a, 0xb9, 0x1f,
1027 0xb6, 0x82, 0xf5, 0x6a, 0x9a, 0xde, 0x8d, 0x2e,
1028 0x62, 0x4b, 0xac, 0x49, 0x21, 0x1d, 0x30, 0x4d,
1029 0x32, 0xac, 0x1f, 0x40, 0x6d, 0x52, 0xc7, 0x9b,
1030 0x6c, 0x0a, 0x82, 0x3a, 0x2c, 0xaf, 0x6b, 0x6d,
1031 0x17, 0xbe, 0x43, 0xed, 0x97, 0x78, 0xeb, 0x4c,
1032 0x92, 0x6f, 0xcf, 0xed, 0xb1, 0x09, 0xcb, 0x27,
1033 0xc2, 0xde, 0x62, 0xfd, 0x21, 0xe6, 0xbd, 0x4f,
1034 0xfe, 0x7a, 0x1b, 0x50, 0xfe, 0x10, 0x4a, 0xb0,
1035 0xb7, 0xcf, 0xdb, 0x7d, 0xca, 0xc2, 0xf0, 0x1c,
1036 0x39, 0x48, 0x6a, 0xb5, 0x4d, 0x8c, 0xfe, 0x63,
1037 0x91, 0x9c, 0x21, 0xc3, 0x0e, 0x76, 0xad, 0x44,
1038 0x8d, 0x54, 0x33, 0x99, 0xe1, 0x80, 0x19, 0xba,
1039 0xb5, 0xac, 0x7d, 0x9c, 0xce, 0x91, 0x2a, 0xd9,
1040 0x2c, 0xe1, 0x16, 0xd6, 0xd7, 0xcf, 0x9d, 0x05,
1041 0x9a, 0x66, 0x9a, 0x3a, 0xc1, 0xb8, 0x4b, 0xc3
1042};
1043
1044struct rte_crypto_asym_xform modex_xform = {
1045 .next = NULL,
1046 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
1047 .modex = {
1048 .modulus = {
1049 .data = mod_p,
1050 .length = sizeof(mod_p)
1051 },
1052 .exponent = {
1053 .data = mod_e,
1054 .length = sizeof(mod_e)
1055 }
1056 }
1057};
1058
1059struct rte_crypto_asym_xform modinv_xform = {
1060 .next = NULL,
1061 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODINV,
1062 .modinv = {
1063 .modulus = {
1064 .data = mod_p,
1065 .length = sizeof(mod_p)
1066 }
1067 }
1068};
1069
1070#endif
1071