mbuf: add a copy routine
[dpdk.git] / app / test / test_cryptodev_mod_test_vectors.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Cavium Networks
3  * Copyright (c) 2019 Intel Corporation
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
11 struct 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 };
32 struct 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
50 static const struct
51 modex_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
916 static const struct
917 modinv_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 /* modular operation test data */
976 uint8_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
982 uint8_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
1002 uint8_t mod_e[] = {0x01, 0x00, 0x01};
1003
1004 /* Precomputed modular exponentiation for verification */
1005 uint8_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 /* Precomputed modular inverse for verification */
1025 uint8_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
1044 struct 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
1059 struct 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 /* TEST_CRYPTODEV_MOD_TEST_VECTORS_H__ */