xref: /dpdk/app/test/test_cryptodev_mod_test_vectors.h (revision 2d0c29a37a9c080c1cccb1ad7941aba2ccf5437e)
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__ */
1071