app/test: fix crypto typos
[dpdk.git] / app / test / test_cryptodev_perf.c
1 /*-
2  *   BSD LICENSE
3  *
4  *   Copyright(c) 2015-2016 Intel Corporation. All rights reserved.
5  *
6  *   Redistribution and use in source and binary forms, with or without
7  *   modification, are permitted provided that the following conditions
8  *   are met:
9  *
10  *       * Redistributions of source code must retain the above copyright
11  *         notice, this list of conditions and the following disclaimer.
12  *       * Redistributions in binary form must reproduce the above copyright
13  *         notice, this list of conditions and the following disclaimer in
14  *         the documentation and/or other materials provided with the
15  *         distribution.
16  *       * Neither the name of Intel Corporation nor the names of its
17  *         contributors may be used to endorse or promote products derived
18  *         from this software without specific prior written permission.
19  *
20  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 #include <rte_common.h>
34 #include <rte_mbuf.h>
35 #include <rte_malloc.h>
36 #include <rte_memcpy.h>
37
38 #include <rte_crypto.h>
39 #include <rte_cryptodev.h>
40 #include <rte_cycles.h>
41 #include <rte_hexdump.h>
42
43 #include "test.h"
44 #include "test_cryptodev.h"
45
46
47 #define PERF_NUM_OPS_INFLIGHT           (128)
48 #define DEFAULT_NUM_REQS_TO_SUBMIT      (10000000)
49
50 struct crypto_testsuite_params {
51         struct rte_mempool *mbuf_mp;
52         struct rte_mempool *op_mpool;
53
54         uint16_t nb_queue_pairs;
55
56         struct rte_cryptodev_config conf;
57         struct rte_cryptodev_qp_conf qp_conf;
58         uint8_t dev_id;
59 };
60
61 enum chain_mode {
62         CIPHER_HASH,
63         HASH_CIPHER,
64         CIPHER_ONLY,
65         HASH_ONLY
66 };
67
68 struct perf_test_params {
69
70         unsigned total_operations;
71         unsigned burst_size;
72         unsigned buf_size;
73
74         enum chain_mode chain;
75
76         enum rte_crypto_cipher_algorithm cipher_algo;
77         unsigned cipher_key_length;
78         enum rte_crypto_auth_algorithm auth_algo;
79 };
80
81 #define MAX_NUM_OF_OPS_PER_UT   (128)
82
83 struct crypto_unittest_params {
84         struct rte_crypto_sym_xform cipher_xform;
85         struct rte_crypto_sym_xform auth_xform;
86
87         struct rte_cryptodev_sym_session *sess;
88
89         struct rte_crypto_op *op;
90
91         struct rte_mbuf *obuf[MAX_NUM_OF_OPS_PER_UT];
92         struct rte_mbuf *ibuf[MAX_NUM_OF_OPS_PER_UT];
93
94         uint8_t *digest;
95 };
96
97 static struct rte_cryptodev_sym_session *
98 test_perf_create_snow3g_session(uint8_t dev_id, enum chain_mode chain,
99                 enum rte_crypto_cipher_algorithm cipher_algo, unsigned cipher_key_len,
100                 enum rte_crypto_auth_algorithm auth_algo);
101 static struct rte_mbuf *
102 test_perf_create_pktmbuf(struct rte_mempool *mpool, unsigned buf_sz);
103 static inline struct rte_crypto_op *
104 test_perf_set_crypto_op_snow3g(struct rte_crypto_op *op, struct rte_mbuf *m,
105                 struct rte_cryptodev_sym_session *sess, unsigned data_len,
106                 unsigned digest_len);
107 static uint32_t get_auth_digest_length(enum rte_crypto_auth_algorithm algo);
108
109
110 static const char *chain_mode_name(enum chain_mode mode)
111 {
112         switch (mode) {
113         case CIPHER_HASH: return "cipher_hash"; break;
114         case HASH_CIPHER: return "hash_cipher"; break;
115         case CIPHER_ONLY: return "cipher_only"; break;
116         case HASH_ONLY: return "hash_only"; break;
117         default: return ""; break;
118         }
119 }
120
121 static const char *pmd_name(enum rte_cryptodev_type pmd)
122 {
123         switch (pmd) {
124         case RTE_CRYPTODEV_NULL_PMD: return CRYPTODEV_NAME_NULL_PMD; break;
125         case RTE_CRYPTODEV_AESNI_GCM_PMD:
126                 return CRYPTODEV_NAME_AESNI_GCM_PMD;
127         case RTE_CRYPTODEV_AESNI_MB_PMD:
128                 return CRYPTODEV_NAME_AESNI_MB_PMD;
129         case RTE_CRYPTODEV_QAT_SYM_PMD:
130                 return CRYPTODEV_NAME_QAT_SYM_PMD;
131         case RTE_CRYPTODEV_SNOW3G_PMD:
132                 return CRYPTODEV_NAME_SNOW3G_PMD;
133         default:
134                 return "";
135         }
136 }
137
138 static const char *cipher_algo_name(enum rte_crypto_cipher_algorithm cipher_algo)
139 {
140         switch (cipher_algo) {
141         case RTE_CRYPTO_CIPHER_NULL: return "NULL";
142         case RTE_CRYPTO_CIPHER_3DES_CBC: return "3DES_CBC";
143         case RTE_CRYPTO_CIPHER_3DES_CTR: return "3DES_CTR";
144         case RTE_CRYPTO_CIPHER_3DES_ECB: return "3DES_ECB";
145         case RTE_CRYPTO_CIPHER_AES_CBC: return "AES_CBC";
146         case RTE_CRYPTO_CIPHER_AES_CCM: return "AES_CCM";
147         case RTE_CRYPTO_CIPHER_AES_CTR: return "AES_CTR";
148         case RTE_CRYPTO_CIPHER_AES_ECB: return "AES_ECB";
149         case RTE_CRYPTO_CIPHER_AES_F8: return "AES_F8";
150         case RTE_CRYPTO_CIPHER_AES_GCM: return "AES_GCM";
151         case RTE_CRYPTO_CIPHER_AES_XTS: return "AES_XTS";
152         case RTE_CRYPTO_CIPHER_ARC4: return "ARC4";
153         case RTE_CRYPTO_CIPHER_KASUMI_F8: return "KASUMI_F8";
154         case RTE_CRYPTO_CIPHER_SNOW3G_UEA2: return "SNOW3G_UEA2";
155         case RTE_CRYPTO_CIPHER_ZUC_EEA3: return "ZUC_EEA3";
156         default: return "Another cipher algo";
157         }
158 }
159
160 static const char *auth_algo_name(enum rte_crypto_auth_algorithm auth_algo)
161 {
162         switch (auth_algo) {
163         case RTE_CRYPTO_AUTH_NULL: return "NULL"; break;
164         case RTE_CRYPTO_AUTH_AES_CBC_MAC: return "AES_CBC_MAC"; break;
165         case RTE_CRYPTO_AUTH_AES_CCM: return "AES_CCM"; break;
166         case RTE_CRYPTO_AUTH_AES_CMAC: return "AES_CMAC,"; break;
167         case RTE_CRYPTO_AUTH_AES_GCM: return "AES_GCM"; break;
168         case RTE_CRYPTO_AUTH_AES_GMAC: return "AES_GMAC"; break;
169         case RTE_CRYPTO_AUTH_AES_XCBC_MAC: return "AES_XCBC_MAC"; break;
170         case RTE_CRYPTO_AUTH_KASUMI_F9: return "KASUMI_F9"; break;
171         case RTE_CRYPTO_AUTH_MD5: return "MD5"; break;
172         case RTE_CRYPTO_AUTH_MD5_HMAC: return "MD5_HMAC,"; break;
173         case RTE_CRYPTO_AUTH_SHA1: return "SHA1"; break;
174         case RTE_CRYPTO_AUTH_SHA1_HMAC: return "SHA1_HMAC"; break;
175         case RTE_CRYPTO_AUTH_SHA224: return "SHA224"; break;
176         case RTE_CRYPTO_AUTH_SHA224_HMAC: return "SHA224_HMAC"; break;
177         case RTE_CRYPTO_AUTH_SHA256: return "SHA256"; break;
178         case RTE_CRYPTO_AUTH_SHA256_HMAC: return "SHA256_HMAC"; break;
179         case RTE_CRYPTO_AUTH_SHA384: return "SHA384,"; break;
180         case RTE_CRYPTO_AUTH_SHA384_HMAC: return "SHA384_HMAC,"; break;
181         case RTE_CRYPTO_AUTH_SHA512: return "SHA512,"; break;
182         case RTE_CRYPTO_AUTH_SHA512_HMAC: return "SHA512_HMAC,"; break;
183         case RTE_CRYPTO_AUTH_SNOW3G_UIA2: return "SNOW3G_UIA2"; break;
184         case RTE_CRYPTO_AUTH_ZUC_EIA3: return "RTE_CRYPTO_AUTH_ZUC_EIA3"; break;
185         default: return "Another auth algo"; break;
186         };
187 }
188
189 static struct rte_mbuf *
190 setup_test_string(struct rte_mempool *mpool,
191                 const uint8_t *data, size_t len, uint8_t blocksize)
192 {
193         struct rte_mbuf *m = rte_pktmbuf_alloc(mpool);
194         size_t t_len = len - (blocksize ? (len % blocksize) : 0);
195
196         if (m) {
197                 char *dst = rte_pktmbuf_append(m, t_len);
198
199                 if (!dst) {
200                         rte_pktmbuf_free(m);
201                         return NULL;
202                 }
203
204                 rte_memcpy(dst, (const void *)data, t_len);
205         }
206         return m;
207 }
208
209 static struct crypto_testsuite_params testsuite_params = { NULL };
210 static struct crypto_unittest_params unittest_params;
211 static enum rte_cryptodev_type gbl_cryptodev_perftest_devtype;
212
213 static int
214 testsuite_setup(void)
215 {
216         struct crypto_testsuite_params *ts_params = &testsuite_params;
217         struct rte_cryptodev_info info;
218         unsigned i, nb_devs, valid_dev_id = 0;
219         int ret;
220         uint16_t qp_id;
221
222         ts_params->mbuf_mp = rte_mempool_lookup("CRYPTO_PERF_MBUFPOOL");
223         if (ts_params->mbuf_mp == NULL) {
224                 /* Not already created so create */
225                 ts_params->mbuf_mp = rte_pktmbuf_pool_create(
226                                 "CRYPTO_PERF_MBUFPOOL",
227                                 NUM_MBUFS, MBUF_CACHE_SIZE, 0, MBUF_SIZE,
228                                 rte_socket_id());
229                 if (ts_params->mbuf_mp == NULL) {
230                         RTE_LOG(ERR, USER1, "Can't create CRYPTO_PERF_MBUFPOOL\n");
231                         return TEST_FAILED;
232                 }
233         }
234
235
236         ts_params->op_mpool = rte_crypto_op_pool_create("CRYPTO_OP_POOL",
237                         RTE_CRYPTO_OP_TYPE_SYMMETRIC,
238                         NUM_MBUFS, MBUF_CACHE_SIZE,
239                         DEFAULT_NUM_XFORMS *
240                         sizeof(struct rte_crypto_sym_xform),
241                         rte_socket_id());
242                 if (ts_params->op_mpool == NULL) {
243                         RTE_LOG(ERR, USER1, "Can't create CRYPTO_OP_POOL\n");
244                         return TEST_FAILED;
245                 }
246
247         /* Create 2 AESNI MB devices if required */
248         if (gbl_cryptodev_perftest_devtype == RTE_CRYPTODEV_AESNI_MB_PMD) {
249                 nb_devs = rte_cryptodev_count_devtype(RTE_CRYPTODEV_AESNI_MB_PMD);
250                 if (nb_devs < 2) {
251                         for (i = nb_devs; i < 2; i++) {
252                                 ret = rte_eal_vdev_init(
253                                         CRYPTODEV_NAME_AESNI_MB_PMD, NULL);
254
255                                 TEST_ASSERT(ret == 0,
256                                         "Failed to create instance %u of pmd : %s",
257                                         i, CRYPTODEV_NAME_AESNI_MB_PMD);
258                         }
259                 }
260         }
261
262         /* Create 2 SNOW3G devices if required */
263         if (gbl_cryptodev_perftest_devtype == RTE_CRYPTODEV_SNOW3G_PMD) {
264                 nb_devs = rte_cryptodev_count_devtype(RTE_CRYPTODEV_SNOW3G_PMD);
265                 if (nb_devs < 2) {
266                         for (i = nb_devs; i < 2; i++) {
267                                 ret = rte_eal_vdev_init(
268                                         CRYPTODEV_NAME_SNOW3G_PMD, NULL);
269
270                                 TEST_ASSERT(ret == 0,
271                                         "Failed to create instance %u of pmd : %s",
272                                         i, CRYPTODEV_NAME_SNOW3G_PMD);
273                         }
274                 }
275         }
276
277         nb_devs = rte_cryptodev_count();
278         if (nb_devs < 1) {
279                 RTE_LOG(ERR, USER1, "No crypto devices found?");
280                 return TEST_FAILED;
281         }
282
283         /* Search for the first valid */
284         for (i = 0; i < nb_devs; i++) {
285                 rte_cryptodev_info_get(i, &info);
286                 if (info.dev_type == gbl_cryptodev_perftest_devtype) {
287                         ts_params->dev_id = i;
288                         valid_dev_id = 1;
289                         break;
290                 }
291         }
292
293         if (!valid_dev_id)
294                 return TEST_FAILED;
295
296         /*
297          * Using Crypto Device Id 0 by default.
298          * Since we can't free and re-allocate queue memory always set the queues
299          * on this device up to max size first so enough memory is allocated for
300          * any later re-configures needed by other tests
301          */
302
303         rte_cryptodev_info_get(ts_params->dev_id, &info);
304
305         ts_params->conf.nb_queue_pairs = DEFAULT_NUM_QPS_PER_QAT_DEVICE;
306         ts_params->conf.socket_id = SOCKET_ID_ANY;
307         ts_params->conf.session_mp.nb_objs = info.sym.max_nb_sessions;
308
309         TEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->dev_id,
310                         &ts_params->conf),
311                         "Failed to configure cryptodev %u",
312                         ts_params->dev_id);
313
314
315         ts_params->qp_conf.nb_descriptors = MAX_NUM_OPS_INFLIGHT;
316
317         for (qp_id = 0; qp_id < ts_params->conf.nb_queue_pairs ; qp_id++) {
318                 TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
319                         ts_params->dev_id, qp_id,
320                         &ts_params->qp_conf,
321                         rte_cryptodev_socket_id(ts_params->dev_id)),
322                         "Failed to setup queue pair %u on cryptodev %u",
323                         qp_id, ts_params->dev_id);
324         }
325
326         /*Now reconfigure queues to size we actually want to use in this testsuite.*/
327         ts_params->qp_conf.nb_descriptors = PERF_NUM_OPS_INFLIGHT;
328         for (qp_id = 0; qp_id < ts_params->conf.nb_queue_pairs ; qp_id++) {
329
330                 TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
331                         ts_params->dev_id, qp_id,
332                                 &ts_params->qp_conf,
333                                 rte_cryptodev_socket_id(ts_params->dev_id)),
334                                 "Failed to setup queue pair %u on cryptodev %u",
335                                 qp_id, ts_params->dev_id);
336         }
337
338         return TEST_SUCCESS;
339 }
340 static void
341 testsuite_teardown(void)
342 {
343         struct crypto_testsuite_params *ts_params = &testsuite_params;
344
345         if (ts_params->mbuf_mp != NULL)
346                 RTE_LOG(DEBUG, USER1, "CRYPTO_PERF_MBUFPOOL count %u\n",
347                 rte_mempool_count(ts_params->mbuf_mp));
348         if (ts_params->op_mpool != NULL)
349                 RTE_LOG(DEBUG, USER1, "CRYPTO_PERF_OP POOL count %u\n",
350                 rte_mempool_count(ts_params->op_mpool));
351 }
352
353 static int
354 ut_setup(void)
355 {
356         struct crypto_testsuite_params *ts_params = &testsuite_params;
357         struct crypto_unittest_params *ut_params = &unittest_params;
358
359         /* Clear unit test parameters before running test */
360         memset(ut_params, 0, sizeof(*ut_params));
361
362         rte_cryptodev_stats_reset(ts_params->dev_id);
363
364         /* Start the device */
365         TEST_ASSERT_SUCCESS(rte_cryptodev_start(ts_params->dev_id),
366                         "Failed to start cryptodev %u",
367                         ts_params->dev_id);
368
369         return TEST_SUCCESS;
370 }
371
372 static void
373 ut_teardown(void)
374 {
375         struct crypto_testsuite_params *ts_params = &testsuite_params;
376         struct crypto_unittest_params *ut_params = &unittest_params;
377         struct rte_cryptodev_stats stats;
378
379         unsigned i;
380
381         /* free crypto session structure */
382         if (ut_params->sess)
383                 rte_cryptodev_sym_session_free(ts_params->dev_id,
384                                 ut_params->sess);
385
386         /* free crypto operation structure */
387         if (ut_params->op)
388                 rte_crypto_op_free(ut_params->op);
389
390         for (i = 0; i < MAX_NUM_OF_OPS_PER_UT; i++) {
391                 if (ut_params->obuf[i])
392                         rte_pktmbuf_free(ut_params->obuf[i]);
393                 else if (ut_params->ibuf[i])
394                         rte_pktmbuf_free(ut_params->ibuf[i]);
395         }
396
397         if (ts_params->mbuf_mp != NULL)
398                 RTE_LOG(DEBUG, USER1, "CRYPTO_PERF_MBUFPOOL count %u\n",
399                         rte_mempool_count(ts_params->mbuf_mp));
400
401         rte_cryptodev_stats_get(ts_params->dev_id, &stats);
402
403         /* Stop the device */
404         rte_cryptodev_stop(ts_params->dev_id);
405 }
406
407 const char plaintext_quote[] =
408                 "THE COUNT OF MONTE CRISTO by Alexandre Dumas, Pere Chapter 1. "
409                 "Marseilles--The Arrival. On the 24th of February, 1815, the "
410                 "look-out at Notre-Dame de la Garde signalled the three-master,"
411                 " the Pharaon from Smyrna, Trieste, and Naples. As usual, a "
412                 "pilot put off immediately, and rounding the Chateau d'If, got "
413                 "on board the vessel between Cape Morgion and Rion island. "
414                 "Immediately, and according to custom, the ramparts of Fort "
415                 "Saint-Jean were covered with spectators; it is always an event "
416                 "at Marseilles for a ship to come into port, especially when "
417                 "this ship, like the Pharaon, has been built, rigged, and laden"
418                 " at the old Phocee docks, and belongs to an owner of the city."
419                 " The ship drew on and had safely passed the strait, which some"
420                 " volcanic shock has made between the Calasareigne and Jaros "
421                 "islands; had doubled Pomegue, and approached the harbor under"
422                 " topsails, jib, and spanker, but so slowly and sedately that"
423                 " the idlers, with that instinct which is the forerunner of "
424                 "evil, asked one another what misfortune could have happened "
425                 "on board. However, those experienced in navigation saw plainly"
426                 " that if any accident had occurred, it was not to the vessel "
427                 "herself, for she bore down with all the evidence of being "
428                 "skilfully handled, the anchor a-cockbill, the jib-boom guys "
429                 "already eased off, and standing by the side of the pilot, who"
430                 " was steering the Pharaon towards the narrow entrance of the"
431                 " inner port, was a young man, who, with activity and vigilant"
432                 " eye, watched every motion of the ship, and repeated each "
433                 "direction of the pilot. The vague disquietude which prevailed "
434                 "among the spectators had so much affected one of the crowd "
435                 "that he did not await the arrival of the vessel in harbor, but"
436                 " jumping into a small skiff, desired to be pulled alongside "
437                 "the Pharaon, which he reached as she rounded into La Reserve "
438                 "basin. When the young man on board saw this person approach, "
439                 "he left his station by the pilot, and, hat in hand, leaned "
440                 "over the ship's bulwarks. He was a fine, tall, slim young "
441                 "fellow of eighteen or twenty, with black eyes, and hair as "
442                 "dark as a raven's wing; and his whole appearance bespoke that "
443                 "calmness and resolution peculiar to men accustomed from their "
444                 "cradle to contend with danger. \"Ah, is it you, Dantes?\" "
445                 "cried the man in the skiff. \"What's the matter? and why have "
446                 "you such an air of sadness aboard?\" \"A great misfortune, M. "
447                 "Morrel,\" replied the young man,--\"a great misfortune, for me"
448                 " especially! Off Civita Vecchia we lost our brave Captain "
449                 "Leclere.\" \"And the cargo?\" inquired the owner, eagerly. "
450                 "\"Is all safe, M. Morrel; and I think you will be satisfied on"
451                 " that head. But poor Captain Leclere--\" \"What happened to "
452                 "him?\" asked the owner, with an air of considerable "
453                 "resignation. \"What happened to the worthy captain?\" \"He "
454                 "died.\" \"Fell into the sea?\" \"No, sir, he died of "
455                 "brain-fever in dreadful agony.\" Then turning to the crew, "
456                 "he said, \"Bear a hand there, to take in sail!\" All hands "
457                 "obeyed, and at once the eight or ten seamen who composed the "
458                 "crew, sprang to their respective stations at the spanker "
459                 "brails and outhaul, topsail sheets and halyards, the jib "
460                 "downhaul, and the topsail clewlines and buntlines. The young "
461                 "sailor gave a look to see that his orders were promptly and "
462                 "accurately obeyed, and then turned again to the owner. \"And "
463                 "how did this misfortune occur?\" inquired the latter, resuming"
464                 " the interrupted conversation. \"Alas, sir, in the most "
465                 "unexpected manner. After a long talk with the harbor-master, "
466                 "Captain Leclere left Naples greatly disturbed in mind. In "
467                 "twenty-four hours he was attacked by a fever, and died three "
468                 "days afterwards. We performed the usual burial service, and he"
469                 " is at his rest, sewn up in his hammock with a thirty-six "
470                 "pound shot at his head and his heels, off El Giglio island. "
471                 "We bring to his widow his sword and cross of honor. It was "
472                 "worth while, truly,\" added the young man with a melancholy "
473                 "smile, \"to make war against the English for ten years, and "
474                 "to die in his bed at last, like everybody else.";
475
476 #define QUOTE_LEN_64B           (64)
477 #define QUOTE_LEN_128B          (128)
478 #define QUOTE_LEN_256B          (256)
479 #define QUOTE_LEN_512B          (512)
480 #define QUOTE_LEN_768B          (768)
481 #define QUOTE_LEN_1024B         (1024)
482 #define QUOTE_LEN_1280B         (1280)
483 #define QUOTE_LEN_1536B         (1536)
484 #define QUOTE_LEN_1792B         (1792)
485 #define QUOTE_LEN_2048B         (2048)
486
487
488 /* ***** AES-CBC / HMAC-SHA256 Performance Tests ***** */
489
490 #define HMAC_KEY_LENGTH_SHA256  (DIGEST_BYTE_LENGTH_SHA256)
491
492 #define CIPHER_KEY_LENGTH_AES_CBC       (16)
493 #define CIPHER_IV_LENGTH_AES_CBC        (CIPHER_KEY_LENGTH_AES_CBC)
494
495 static uint8_t aes_cbc_128_key[] = {
496                 0xE4, 0x23, 0x33, 0x8A, 0x35, 0x64, 0x61, 0xE2,
497                 0xF1, 0x35, 0x5C, 0x3B, 0xDD, 0x9A, 0x65, 0xBA };
498
499 static uint8_t aes_cbc_128_iv[] = {
500                 0xf5, 0xd3, 0x89, 0x0f, 0x47, 0x00, 0xcb, 0x52,
501                 0x42, 0x1a, 0x7d, 0x3d, 0xf5, 0x82, 0x80, 0xf1 };
502
503 static uint8_t hmac_sha256_key[] = {
504                 0xff, 0xcb, 0x37, 0x30, 0x1d, 0x4a, 0xc2, 0x41,
505                 0x49, 0x03, 0xDD, 0xC6, 0xB8, 0xCA, 0x55, 0x7A,
506                 0x58, 0x34, 0x85, 0x61, 0x1C, 0x42, 0x10, 0x76,
507                 0x9a, 0x4f, 0x88, 0x1b, 0xb6, 0x8f, 0xd8, 0x60 };
508
509
510 /* Cipher text output */
511
512 static const uint8_t AES_CBC_ciphertext_64B[] = {
513                 0x05, 0x15, 0x77, 0x32, 0xc9, 0x66, 0x91, 0x50,
514                 0x93, 0x9f, 0xbb, 0x4e, 0x2e, 0x5a, 0x02, 0xd0,
515                 0x2d, 0x9d, 0x31, 0x5d, 0xc8, 0x9e, 0x86, 0x36,
516                 0x54, 0x5c, 0x50, 0xe8, 0x75, 0x54, 0x74, 0x5e,
517                 0xd5, 0xa2, 0x84, 0x21, 0x2d, 0xc5, 0xf8, 0x1c,
518                 0x55, 0x1a, 0xba, 0x91, 0xce, 0xb5, 0xa3, 0x1e,
519                 0x31, 0xbf, 0xe9, 0xa1, 0x97, 0x5c, 0x2b, 0xd6,
520                 0x57, 0xa5, 0x9f, 0xab, 0xbd, 0xb0, 0x9b, 0x9c
521 };
522
523 static const uint8_t AES_CBC_ciphertext_128B[] = {
524                 0x79, 0x92, 0x65, 0xc8, 0xfb, 0x0a, 0xc7, 0xc4,
525                 0x9b, 0x3b, 0xbe, 0x69, 0x7f, 0x7c, 0xf4, 0x4e,
526                 0xa5, 0x0d, 0xf6, 0x33, 0xc4, 0xdf, 0xf3, 0x0d,
527                 0xdb, 0xb9, 0x68, 0x34, 0xb0, 0x0d, 0xbd, 0xb9,
528                 0xa7, 0xf3, 0x86, 0x50, 0x2a, 0xbe, 0x50, 0x5d,
529                 0xb3, 0xbe, 0x72, 0xf9, 0x02, 0xb1, 0x69, 0x0b,
530                 0x8c, 0x96, 0x4c, 0x3c, 0x0c, 0x1e, 0x76, 0xe5,
531                 0x7e, 0x75, 0xdd, 0xd0, 0xa9, 0x75, 0x00, 0x13,
532                 0x6b, 0x1e, 0xc0, 0xad, 0xfc, 0x03, 0xb5, 0x99,
533                 0xdc, 0x37, 0x35, 0xfc, 0x16, 0x34, 0xfd, 0xb4,
534                 0xea, 0x1e, 0xb6, 0x51, 0xdf, 0xab, 0x87, 0xd6,
535                 0x87, 0x41, 0xfa, 0x1c, 0xc6, 0x78, 0xa6, 0x3c,
536                 0x1d, 0x76, 0xfe, 0xff, 0x65, 0xfc, 0x63, 0x1e,
537                 0x1f, 0xe2, 0x7c, 0x9b, 0xa2, 0x72, 0xc3, 0x34,
538                 0x23, 0xdf, 0x01, 0xf0, 0xfd, 0x02, 0x8b, 0x97,
539                 0x00, 0x2b, 0x97, 0x4e, 0xab, 0x98, 0x21, 0x3c
540 };
541
542 static const uint8_t AES_CBC_ciphertext_256B[] = {
543                 0xc7, 0x71, 0x2b, 0xed, 0x2c, 0x97, 0x59, 0xfa,
544                 0xcf, 0x5a, 0xb9, 0x31, 0x92, 0xe0, 0xc9, 0x92,
545                 0xc0, 0x2d, 0xd5, 0x9c, 0x84, 0xbf, 0x70, 0x36,
546                 0x13, 0x48, 0xe0, 0xb1, 0xbf, 0x6c, 0xcd, 0x91,
547                 0xa0, 0xc3, 0x57, 0x6c, 0x3f, 0x0e, 0x34, 0x41,
548                 0xe7, 0x9c, 0xc0, 0xec, 0x18, 0x0c, 0x05, 0x52,
549                 0x78, 0xe2, 0x3c, 0x6e, 0xdf, 0xa5, 0x49, 0xc7,
550                 0xf2, 0x55, 0x00, 0x8f, 0x65, 0x6d, 0x4b, 0xd0,
551                 0xcb, 0xd4, 0xd2, 0x0b, 0xea, 0xf4, 0xb0, 0x85,
552                 0x61, 0x9e, 0x36, 0xc0, 0x71, 0xb7, 0x80, 0xad,
553                 0x40, 0x78, 0xb4, 0x70, 0x2b, 0xe8, 0x80, 0xc5,
554                 0x19, 0x35, 0x96, 0x55, 0x3b, 0x40, 0x03, 0xbb,
555                 0x9f, 0xa6, 0xc2, 0x82, 0x92, 0x04, 0xc3, 0xa6,
556                 0x96, 0xc4, 0x7f, 0x4c, 0x3e, 0x3c, 0x79, 0x82,
557                 0x88, 0x8b, 0x3f, 0x8b, 0xc5, 0x9f, 0x44, 0xbe,
558                 0x71, 0xe7, 0x09, 0xa2, 0x40, 0xa2, 0x23, 0x4e,
559                 0x9f, 0x31, 0xab, 0x6f, 0xdf, 0x59, 0x40, 0xe1,
560                 0x12, 0x15, 0x55, 0x4b, 0xea, 0x3f, 0xa1, 0x41,
561                 0x4f, 0xaf, 0xcd, 0x27, 0x2a, 0x61, 0xa1, 0x9e,
562                 0x82, 0x30, 0x05, 0x05, 0x55, 0xce, 0x99, 0xd3,
563                 0x8f, 0x3f, 0x86, 0x79, 0xdc, 0x9f, 0x33, 0x07,
564                 0x75, 0x26, 0xc8, 0x72, 0x81, 0x0f, 0x9b, 0xf7,
565                 0xb1, 0xfb, 0xd3, 0x91, 0x36, 0x08, 0xab, 0x26,
566                 0x70, 0x53, 0x0c, 0x99, 0xfd, 0xa9, 0x07, 0xb4,
567                 0xe9, 0xce, 0xc1, 0xd6, 0xd2, 0x2c, 0x71, 0x80,
568                 0xec, 0x59, 0x61, 0x0b, 0x24, 0xf0, 0x6d, 0x33,
569                 0x73, 0x45, 0x6e, 0x80, 0x03, 0x45, 0xf2, 0x76,
570                 0xa5, 0x8a, 0xc9, 0xcf, 0xaf, 0x4a, 0xed, 0x35,
571                 0xc0, 0x97, 0x52, 0xc5, 0x00, 0xdf, 0xef, 0xc7,
572                 0x9f, 0xf2, 0xe8, 0x15, 0x3e, 0xb3, 0x30, 0xe7,
573                 0x00, 0xd0, 0x4e, 0xeb, 0x79, 0xf6, 0xf6, 0xcf,
574                 0xf0, 0xe7, 0x61, 0xd5, 0x3d, 0x6a, 0x73, 0x9d
575 };
576
577 static const uint8_t AES_CBC_ciphertext_512B[] = {
578                 0xb4, 0xc6, 0xc6, 0x5f, 0x7e, 0xca, 0x05, 0x70,
579                 0x21, 0x7b, 0x92, 0x9e, 0x23, 0xe7, 0x92, 0xb8,
580                 0x27, 0x3d, 0x20, 0x29, 0x57, 0xfa, 0x1f, 0x26,
581                 0x0a, 0x04, 0x34, 0xa6, 0xf2, 0xdc, 0x44, 0xb6,
582                 0x43, 0x40, 0x62, 0xde, 0x0c, 0xde, 0x1c, 0x30,
583                 0x43, 0x85, 0x0b, 0xe8, 0x93, 0x1f, 0xa1, 0x2a,
584                 0x8a, 0x27, 0x35, 0x39, 0x14, 0x9f, 0x37, 0x64,
585                 0x59, 0xb5, 0x0e, 0x96, 0x82, 0x5d, 0x63, 0x45,
586                 0xd6, 0x93, 0x89, 0x46, 0xe4, 0x71, 0x31, 0xeb,
587                 0x0e, 0xd1, 0x7b, 0xda, 0x90, 0xb5, 0x81, 0xac,
588                 0x76, 0x54, 0x54, 0x85, 0x0b, 0xa9, 0x46, 0x9c,
589                 0xf0, 0xfd, 0xde, 0x5d, 0xa8, 0xe3, 0xee, 0xe9,
590                 0xf4, 0x9d, 0x34, 0x76, 0x39, 0xe7, 0xc3, 0x4a,
591                 0x84, 0x38, 0x92, 0x61, 0xf1, 0x12, 0x9f, 0x05,
592                 0xda, 0xdb, 0xc1, 0xd4, 0xb0, 0xa0, 0x27, 0x19,
593                 0xa0, 0x56, 0x5d, 0x9b, 0xcc, 0x47, 0x7c, 0x15,
594                 0x1d, 0x52, 0x66, 0xd5, 0xff, 0xef, 0x12, 0x23,
595                 0x86, 0xe2, 0xee, 0x81, 0x2c, 0x3d, 0x7d, 0x28,
596                 0xd5, 0x42, 0xdf, 0xdb, 0x75, 0x1c, 0xeb, 0xdf,
597                 0x13, 0x23, 0xd5, 0x17, 0x89, 0xea, 0xd7, 0x01,
598                 0xff, 0x57, 0x6a, 0x44, 0x61, 0xf4, 0xea, 0xbe,
599                 0x97, 0x9b, 0xc2, 0xb1, 0x9c, 0x5d, 0xff, 0x4f,
600                 0x73, 0x2d, 0x3f, 0x57, 0x28, 0x38, 0xbf, 0x3d,
601                 0x9f, 0xda, 0x49, 0x55, 0x8f, 0xb2, 0x77, 0xec,
602                 0x0f, 0xbc, 0xce, 0xb8, 0xc6, 0xe1, 0x03, 0xed,
603                 0x35, 0x9c, 0xf2, 0x4d, 0xa4, 0x29, 0x6c, 0xd6,
604                 0x6e, 0x05, 0x53, 0x46, 0xc1, 0x41, 0x09, 0x36,
605                 0x0b, 0x7d, 0xf4, 0x9e, 0x0f, 0xba, 0x86, 0x33,
606                 0xdd, 0xf1, 0xa7, 0xf7, 0xd5, 0x29, 0xa8, 0xa7,
607                 0x4d, 0xce, 0x0c, 0xf5, 0xb4, 0x6c, 0xd8, 0x27,
608                 0xb0, 0x87, 0x2a, 0x6f, 0x7f, 0x3f, 0x8f, 0xc3,
609                 0xe2, 0x3e, 0x94, 0xcf, 0x61, 0x4a, 0x09, 0x3d,
610                 0xf9, 0x55, 0x19, 0x31, 0xf2, 0xd2, 0x4a, 0x3e,
611                 0xc1, 0xf5, 0xed, 0x7c, 0x45, 0xb0, 0x0c, 0x7b,
612                 0xdd, 0xa6, 0x0a, 0x26, 0x66, 0xec, 0x85, 0x49,
613                 0x00, 0x38, 0x05, 0x7c, 0x9c, 0x1c, 0x92, 0xf5,
614                 0xf7, 0xdb, 0x5d, 0xbd, 0x61, 0x0c, 0xc9, 0xaf,
615                 0xfd, 0x57, 0x3f, 0xee, 0x2b, 0xad, 0x73, 0xef,
616                 0xa3, 0xc1, 0x66, 0x26, 0x44, 0x5e, 0xf9, 0x12,
617                 0x86, 0x66, 0xa9, 0x61, 0x75, 0xa1, 0xbc, 0x40,
618                 0x7f, 0xa8, 0x08, 0x02, 0xc0, 0x76, 0x0e, 0x76,
619                 0xb3, 0x26, 0x3d, 0x1c, 0x40, 0x65, 0xe4, 0x18,
620                 0x0f, 0x62, 0x17, 0x8f, 0x1e, 0x61, 0xb8, 0x08,
621                 0x83, 0x54, 0x42, 0x11, 0x03, 0x30, 0x8e, 0xb7,
622                 0xc1, 0x9c, 0xec, 0x69, 0x52, 0x95, 0xfb, 0x7b,
623                 0x1a, 0x0c, 0x20, 0x24, 0xf7, 0xb8, 0x38, 0x0c,
624                 0xb8, 0x7b, 0xb6, 0x69, 0x70, 0xd0, 0x61, 0xb9,
625                 0x70, 0x06, 0xc2, 0x5b, 0x20, 0x47, 0xf7, 0xd9,
626                 0x32, 0xc2, 0xf2, 0x90, 0xb6, 0x4d, 0xcd, 0x3c,
627                 0x6d, 0x74, 0xea, 0x82, 0x35, 0x1b, 0x08, 0x44,
628                 0xba, 0xb7, 0x33, 0x82, 0x33, 0x27, 0x54, 0x77,
629                 0x6e, 0x58, 0xfe, 0x46, 0x5a, 0xb4, 0x88, 0x53,
630                 0x8d, 0x9b, 0xb1, 0xab, 0xdf, 0x04, 0xe1, 0xfb,
631                 0xd7, 0x1e, 0xd7, 0x38, 0x64, 0x54, 0xba, 0xb0,
632                 0x6c, 0x84, 0x7a, 0x0f, 0xa7, 0x80, 0x6b, 0x86,
633                 0xd9, 0xc9, 0xc6, 0x31, 0x95, 0xfa, 0x8a, 0x2c,
634                 0x14, 0xe1, 0x85, 0x66, 0x27, 0xfd, 0x63, 0x3e,
635                 0xf0, 0xfa, 0x81, 0xc9, 0x89, 0x4f, 0xe2, 0x6a,
636                 0x8c, 0x17, 0xb5, 0xc7, 0x9f, 0x5d, 0x3f, 0x6b,
637                 0x3f, 0xcd, 0x13, 0x7a, 0x3c, 0xe6, 0x4e, 0xfa,
638                 0x7a, 0x10, 0xb8, 0x7c, 0x40, 0xec, 0x93, 0x11,
639                 0x1f, 0xd0, 0x9e, 0xc3, 0x56, 0xb9, 0xf5, 0x21,
640                 0x18, 0x41, 0x31, 0xea, 0x01, 0x8d, 0xea, 0x1c,
641                 0x95, 0x5e, 0x56, 0x33, 0xbc, 0x7a, 0x3f, 0x6f
642 };
643
644 static const uint8_t AES_CBC_ciphertext_768B[] = {
645                 0x3e, 0x7f, 0x9e, 0x4c, 0x88, 0x15, 0x68, 0x69,
646                 0x10, 0x09, 0xe1, 0xa7, 0x0f, 0x27, 0x88, 0x2d,
647                 0x90, 0x73, 0x4f, 0x67, 0xd3, 0x8b, 0xaf, 0xa1,
648                 0x2c, 0x37, 0xa5, 0x6c, 0x7c, 0xbd, 0x95, 0x4c,
649                 0x82, 0xcf, 0x05, 0x49, 0x16, 0x5c, 0xe7, 0x06,
650                 0xd4, 0xcb, 0x55, 0x65, 0x9a, 0xd0, 0xe1, 0x46,
651                 0x3a, 0x37, 0x71, 0xad, 0xb0, 0xb4, 0x99, 0x1e,
652                 0x23, 0x57, 0x48, 0x96, 0x9c, 0xc5, 0xc4, 0xdb,
653                 0x64, 0x3e, 0xc9, 0x7f, 0x90, 0x5a, 0xa0, 0x08,
654                 0x75, 0x4c, 0x09, 0x06, 0x31, 0x6e, 0x59, 0x29,
655                 0xfc, 0x2f, 0x72, 0xde, 0xf2, 0x40, 0x5a, 0xfe,
656                 0xd3, 0x66, 0x64, 0xb8, 0x9c, 0xc9, 0xa6, 0x1f,
657                 0xc3, 0x52, 0xcd, 0xb5, 0xd1, 0x4f, 0x43, 0x3f,
658                 0xf4, 0x59, 0x25, 0xc4, 0xdd, 0x3e, 0x58, 0x7c,
659                 0x21, 0xd6, 0x21, 0xce, 0xa4, 0xbe, 0x08, 0x23,
660                 0x46, 0x68, 0xc0, 0x00, 0x91, 0x47, 0xca, 0x9b,
661                 0xe0, 0xb4, 0xe3, 0xab, 0xbf, 0xcf, 0x68, 0x26,
662                 0x97, 0x23, 0x09, 0x93, 0x64, 0x8f, 0x57, 0x59,
663                 0xe2, 0x41, 0x7c, 0xa2, 0x48, 0x7e, 0xd5, 0x2c,
664                 0x54, 0x09, 0x1b, 0x07, 0x94, 0xca, 0x39, 0x83,
665                 0xdd, 0xf4, 0x7a, 0x1d, 0x2d, 0xdd, 0x67, 0xf7,
666                 0x3c, 0x30, 0x89, 0x3e, 0xc1, 0xdc, 0x1d, 0x8f,
667                 0xfc, 0xb1, 0xe9, 0x13, 0x31, 0xb0, 0x16, 0xdb,
668                 0x88, 0xf2, 0x32, 0x7e, 0x73, 0xa3, 0xdf, 0x08,
669                 0x6b, 0x53, 0x92, 0x08, 0xc9, 0x9d, 0x98, 0xb2,
670                 0xf4, 0x8c, 0xb1, 0x95, 0xdc, 0xb6, 0xfc, 0xec,
671                 0xf1, 0xc9, 0x0d, 0x6d, 0x42, 0x2c, 0xf5, 0x38,
672                 0x29, 0xf4, 0xd8, 0x98, 0x0f, 0xb0, 0x81, 0xa5,
673                 0xaa, 0xe6, 0x1f, 0x6e, 0x87, 0x32, 0x1b, 0x02,
674                 0x07, 0x57, 0x38, 0x83, 0xf3, 0xe4, 0x54, 0x7c,
675                 0xa8, 0x43, 0xdf, 0x3f, 0x42, 0xfd, 0x67, 0x28,
676                 0x06, 0x4d, 0xea, 0xce, 0x1f, 0x84, 0x4a, 0xcd,
677                 0x8c, 0x61, 0x5e, 0x8f, 0x61, 0xed, 0x84, 0x03,
678                 0x53, 0x6a, 0x9e, 0xbf, 0x68, 0x83, 0xa7, 0x42,
679                 0x56, 0x57, 0xcd, 0x45, 0x29, 0xfc, 0x7b, 0x07,
680                 0xfc, 0xe9, 0xb9, 0x42, 0xfd, 0x29, 0xd5, 0xfd,
681                 0x98, 0x11, 0xd1, 0x8d, 0x67, 0x29, 0x47, 0x61,
682                 0xd8, 0x27, 0x37, 0x79, 0x29, 0xd1, 0x94, 0x6f,
683                 0x8d, 0xf3, 0x1b, 0x3d, 0x6a, 0xb1, 0x59, 0xef,
684                 0x1b, 0xd4, 0x70, 0x0e, 0xac, 0xab, 0xa0, 0x2b,
685                 0x1f, 0x5e, 0x04, 0xf0, 0x0e, 0x35, 0x72, 0x90,
686                 0xfc, 0xcf, 0x86, 0x43, 0xea, 0x45, 0x6d, 0x22,
687                 0x63, 0x06, 0x1a, 0x58, 0xd7, 0x2d, 0xc5, 0xb0,
688                 0x60, 0x69, 0xe8, 0x53, 0xc2, 0xa2, 0x57, 0x83,
689                 0xc4, 0x31, 0xb4, 0xc6, 0xb3, 0xa1, 0x77, 0xb3,
690                 0x1c, 0xca, 0x89, 0x3f, 0xf5, 0x10, 0x3b, 0x36,
691                 0x31, 0x7d, 0x00, 0x46, 0x00, 0x92, 0xa0, 0xa0,
692                 0x34, 0xd8, 0x5e, 0x62, 0xa9, 0xe0, 0x23, 0x37,
693                 0x50, 0x85, 0xc7, 0x3a, 0x20, 0xa3, 0x98, 0xc0,
694                 0xac, 0x20, 0x06, 0x0f, 0x17, 0x3c, 0xfc, 0x43,
695                 0x8c, 0x9d, 0xec, 0xf5, 0x9a, 0x35, 0x96, 0xf7,
696                 0xb7, 0x4c, 0xf9, 0x69, 0xf8, 0xd4, 0x1e, 0x9e,
697                 0xf9, 0x7c, 0xc4, 0xd2, 0x11, 0x14, 0x41, 0xb9,
698                 0x89, 0xd6, 0x07, 0xd2, 0x37, 0x07, 0x5e, 0x5e,
699                 0xae, 0x60, 0xdc, 0xe4, 0xeb, 0x38, 0x48, 0x6d,
700                 0x95, 0x8d, 0x71, 0xf2, 0xba, 0xda, 0x5f, 0x08,
701                 0x9d, 0x4a, 0x0f, 0x56, 0x90, 0x64, 0xab, 0xb6,
702                 0x88, 0x22, 0xa8, 0x90, 0x1f, 0x76, 0x2c, 0x83,
703                 0x43, 0xce, 0x32, 0x55, 0x45, 0x84, 0x57, 0x43,
704                 0xf9, 0xa8, 0xd1, 0x4f, 0xe3, 0xc1, 0x72, 0x9c,
705                 0xeb, 0x64, 0xf7, 0xe4, 0x61, 0x2b, 0x93, 0xd1,
706                 0x1f, 0xbb, 0x5c, 0xff, 0xa1, 0x59, 0x69, 0xcf,
707                 0xf7, 0xaf, 0x58, 0x45, 0xd5, 0x3e, 0x98, 0x7d,
708                 0x26, 0x39, 0x5c, 0x75, 0x3c, 0x4a, 0xbf, 0x5e,
709                 0x12, 0x10, 0xb0, 0x93, 0x0f, 0x86, 0x82, 0xcf,
710                 0xb2, 0xec, 0x70, 0x5c, 0x0b, 0xad, 0x5d, 0x63,
711                 0x65, 0x32, 0xa6, 0x04, 0x58, 0x03, 0x91, 0x2b,
712                 0xdb, 0x8f, 0xd3, 0xa3, 0x2b, 0x3a, 0xf5, 0xa1,
713                 0x62, 0x6c, 0xb6, 0xf0, 0x13, 0x3b, 0x8c, 0x07,
714                 0x10, 0x82, 0xc9, 0x56, 0x24, 0x87, 0xfc, 0x56,
715                 0xe8, 0xef, 0x90, 0x8b, 0xd6, 0x48, 0xda, 0x53,
716                 0x04, 0x49, 0x41, 0xa4, 0x67, 0xe0, 0x33, 0x24,
717                 0x6b, 0x9c, 0x07, 0x55, 0x4c, 0x5d, 0xe9, 0x35,
718                 0xfa, 0xbd, 0xea, 0xa8, 0x3f, 0xe9, 0xf5, 0x20,
719                 0x5c, 0x60, 0x0f, 0x0d, 0x24, 0xcb, 0x1a, 0xd6,
720                 0xe8, 0x5c, 0xa8, 0x42, 0xae, 0xd0, 0xd2, 0xf2,
721                 0xa8, 0xbe, 0xea, 0x0f, 0x8d, 0xfb, 0x81, 0xa3,
722                 0xa4, 0xef, 0xb7, 0x3e, 0x91, 0xbd, 0x26, 0x0f,
723                 0x8e, 0xf1, 0xb2, 0xa5, 0x47, 0x06, 0xfa, 0x40,
724                 0x8b, 0x31, 0x7a, 0x5a, 0x74, 0x2a, 0x0a, 0x7c,
725                 0x62, 0x5d, 0x39, 0xa4, 0xae, 0x14, 0x85, 0x08,
726                 0x5b, 0x20, 0x85, 0xf1, 0x57, 0x6e, 0x71, 0x13,
727                 0x4e, 0x2b, 0x49, 0x87, 0x01, 0xdf, 0x37, 0xed,
728                 0x28, 0xee, 0x4d, 0xa1, 0xf4, 0xb3, 0x3b, 0xba,
729                 0x2d, 0xb3, 0x46, 0x17, 0x84, 0x80, 0x9d, 0xd7,
730                 0x93, 0x1f, 0x28, 0x7c, 0xf5, 0xf9, 0xd6, 0x85,
731                 0x8c, 0xa5, 0x44, 0xe9, 0x2c, 0x65, 0x51, 0x5f,
732                 0x53, 0x7a, 0x09, 0xd9, 0x30, 0x16, 0x95, 0x89,
733                 0x9c, 0x0b, 0xef, 0x90, 0x6d, 0x23, 0xd3, 0x48,
734                 0x57, 0x3b, 0x55, 0x69, 0x96, 0xfc, 0xf7, 0x52,
735                 0x92, 0x38, 0x36, 0xbf, 0xa9, 0x0a, 0xbb, 0x68,
736                 0x45, 0x08, 0x25, 0xee, 0x59, 0xfe, 0xee, 0xf2,
737                 0x2c, 0xd4, 0x5f, 0x78, 0x59, 0x0d, 0x90, 0xf1,
738                 0xd7, 0xe4, 0x39, 0x0e, 0x46, 0x36, 0xf5, 0x75,
739                 0x03, 0x3c, 0x28, 0xfb, 0xfa, 0x8f, 0xef, 0xc9,
740                 0x61, 0x00, 0x94, 0xc3, 0xd2, 0x0f, 0xd9, 0xda
741 };
742
743 static const uint8_t AES_CBC_ciphertext_1024B[] = {
744                 0x7d, 0x01, 0x7e, 0x2f, 0x92, 0xb3, 0xea, 0x72,
745                 0x4a, 0x3f, 0x10, 0xf9, 0x2b, 0xb0, 0xd5, 0xb9,
746                 0x19, 0x68, 0x94, 0xe9, 0x93, 0xe9, 0xd5, 0x26,
747                 0x20, 0x44, 0xe2, 0x47, 0x15, 0x8d, 0x75, 0x48,
748                 0x8e, 0xe4, 0x40, 0x81, 0xb5, 0x06, 0xa8, 0xb8,
749                 0x0e, 0x0f, 0x3b, 0xbc, 0x5b, 0xbe, 0x3b, 0xa2,
750                 0x2a, 0x0c, 0x48, 0x98, 0x19, 0xdf, 0xe9, 0x25,
751                 0x75, 0xab, 0x93, 0x44, 0xb1, 0x72, 0x70, 0xbb,
752                 0x20, 0xcf, 0x78, 0xe9, 0x4d, 0xc6, 0xa9, 0xa9,
753                 0x84, 0x78, 0xc5, 0xc0, 0xc4, 0xc9, 0x79, 0x1a,
754                 0xbc, 0x61, 0x25, 0x5f, 0xac, 0x01, 0x03, 0xb7,
755                 0xef, 0x07, 0xf2, 0x62, 0x98, 0xee, 0xe3, 0xad,
756                 0x94, 0x75, 0x30, 0x67, 0xb9, 0x15, 0x00, 0xe7,
757                 0x11, 0x32, 0x2e, 0x6b, 0x55, 0x9f, 0xac, 0x68,
758                 0xde, 0x61, 0x05, 0x80, 0x01, 0xf3, 0xad, 0xab,
759                 0xaf, 0x45, 0xe0, 0xf4, 0x68, 0x5c, 0xc0, 0x52,
760                 0x92, 0xc8, 0x21, 0xb6, 0xf5, 0x8a, 0x1d, 0xbb,
761                 0xfc, 0x4a, 0x11, 0x62, 0xa2, 0xc4, 0xf1, 0x2d,
762                 0x0e, 0xb2, 0xc7, 0x17, 0x34, 0xb4, 0x2a, 0x54,
763                 0x81, 0xc2, 0x1e, 0xcf, 0x51, 0x0a, 0x76, 0x54,
764                 0xf1, 0x48, 0x0d, 0x5c, 0xcd, 0x38, 0x3e, 0x38,
765                 0x3e, 0xf8, 0x46, 0x1d, 0x00, 0xf5, 0x62, 0xe1,
766                 0x5c, 0xb7, 0x8d, 0xce, 0xd0, 0x3f, 0xbb, 0x22,
767                 0xf1, 0xe5, 0xb1, 0xa0, 0x58, 0x5e, 0x3c, 0x0f,
768                 0x15, 0xd1, 0xac, 0x3e, 0xc7, 0x72, 0xc4, 0xde,
769                 0x8b, 0x95, 0x3e, 0x91, 0xf7, 0x1d, 0x04, 0x9a,
770                 0xc8, 0xe4, 0xbf, 0xd3, 0x22, 0xca, 0x4a, 0xdc,
771                 0xb6, 0x16, 0x79, 0x81, 0x75, 0x2f, 0x6b, 0xa7,
772                 0x04, 0x98, 0xa7, 0x4e, 0xc1, 0x19, 0x90, 0x33,
773                 0x33, 0x3c, 0x7f, 0xdd, 0xac, 0x09, 0x0c, 0xc3,
774                 0x91, 0x34, 0x74, 0xab, 0xa5, 0x35, 0x0a, 0x13,
775                 0xc3, 0x56, 0x67, 0x6d, 0x1a, 0x3e, 0xbf, 0x56,
776                 0x06, 0x67, 0x15, 0x5f, 0xfc, 0x8b, 0xa2, 0x3c,
777                 0x5e, 0xaf, 0x56, 0x1f, 0xe3, 0x2e, 0x9d, 0x0a,
778                 0xf9, 0x9b, 0xc7, 0xb5, 0x03, 0x1c, 0x68, 0x99,
779                 0xfa, 0x3c, 0x37, 0x59, 0xc1, 0xf7, 0x6a, 0x83,
780                 0x22, 0xee, 0xca, 0x7f, 0x7d, 0x49, 0xe6, 0x48,
781                 0x84, 0x54, 0x7a, 0xff, 0xb3, 0x72, 0x21, 0xd8,
782                 0x7a, 0x5d, 0xb1, 0x4b, 0xcc, 0x01, 0x6f, 0x90,
783                 0xc6, 0x68, 0x1c, 0x2c, 0xa1, 0xe2, 0x74, 0x40,
784                 0x26, 0x9b, 0x57, 0x53, 0xa3, 0x7c, 0x0b, 0x0d,
785                 0xcf, 0x05, 0x5d, 0x62, 0x4f, 0x75, 0x06, 0x62,
786                 0x1f, 0x26, 0x32, 0xaa, 0x25, 0xcc, 0x26, 0x8d,
787                 0xae, 0x01, 0x47, 0xa3, 0x00, 0x42, 0xe2, 0x4c,
788                 0xee, 0x29, 0xa2, 0x81, 0xa0, 0xfd, 0xeb, 0xff,
789                 0x9a, 0x66, 0x6e, 0x47, 0x5b, 0xab, 0x93, 0x5a,
790                 0x02, 0x6d, 0x6f, 0xf2, 0x6e, 0x02, 0x9d, 0xb1,
791                 0xab, 0x56, 0xdc, 0x8b, 0x9b, 0x17, 0xa8, 0xfb,
792                 0x87, 0x42, 0x7c, 0x91, 0x1e, 0x14, 0xc6, 0x6f,
793                 0xdc, 0xf0, 0x27, 0x30, 0xfa, 0x3f, 0xc4, 0xad,
794                 0x57, 0x85, 0xd2, 0xc9, 0x32, 0x2c, 0x13, 0xa6,
795                 0x04, 0x04, 0x50, 0x05, 0x2f, 0x72, 0xd9, 0x44,
796                 0x55, 0x6e, 0x93, 0x40, 0xed, 0x7e, 0xd4, 0x40,
797                 0x3e, 0x88, 0x3b, 0x8b, 0xb6, 0xeb, 0xc6, 0x5d,
798                 0x9c, 0x99, 0xa1, 0xcf, 0x30, 0xb2, 0xdc, 0x48,
799                 0x8a, 0x01, 0xa7, 0x61, 0x77, 0x50, 0x14, 0xf3,
800                 0x0c, 0x49, 0x53, 0xb3, 0xb4, 0xb4, 0x28, 0x41,
801                 0x4a, 0x2d, 0xd2, 0x4d, 0x2a, 0x30, 0x31, 0x83,
802                 0x03, 0x5e, 0xaa, 0xd3, 0xa3, 0xd1, 0xa1, 0xca,
803                 0x62, 0xf0, 0xe1, 0xf2, 0xff, 0xf0, 0x19, 0xa6,
804                 0xde, 0x22, 0x47, 0xb5, 0x28, 0x7d, 0xf7, 0x07,
805                 0x16, 0x0d, 0xb1, 0x55, 0x81, 0x95, 0xe5, 0x1d,
806                 0x4d, 0x78, 0xa9, 0x3e, 0xce, 0xe3, 0x1c, 0xf9,
807                 0x47, 0xc8, 0xec, 0xc5, 0xc5, 0x93, 0x4c, 0x34,
808                 0x20, 0x6b, 0xee, 0x9a, 0xe6, 0x86, 0x57, 0x58,
809                 0xd5, 0x58, 0xf1, 0x33, 0x10, 0x29, 0x9e, 0x93,
810                 0x2f, 0xf5, 0x90, 0x00, 0x17, 0x67, 0x4f, 0x39,
811                 0x18, 0xe1, 0xcf, 0x55, 0x78, 0xbb, 0xe6, 0x29,
812                 0x3e, 0x77, 0xd5, 0x48, 0xb7, 0x42, 0x72, 0x53,
813                 0x27, 0xfa, 0x5b, 0xe0, 0x36, 0x14, 0x97, 0xb8,
814                 0x9b, 0x3c, 0x09, 0x77, 0xc1, 0x0a, 0xe4, 0xa2,
815                 0x63, 0xfc, 0xbe, 0x5c, 0x17, 0xcf, 0x01, 0xf5,
816                 0x03, 0x0f, 0x17, 0xbc, 0x93, 0xdd, 0x5f, 0xe2,
817                 0xf3, 0x08, 0xa8, 0xb1, 0x85, 0xb6, 0x34, 0x3f,
818                 0x87, 0x42, 0xa5, 0x42, 0x3b, 0x0e, 0xd6, 0x83,
819                 0x6a, 0xfd, 0x5d, 0xc9, 0x67, 0xd5, 0x51, 0xc9,
820                 0x2a, 0x4e, 0x91, 0xb0, 0x59, 0xb2, 0x0f, 0xa2,
821                 0xe6, 0x47, 0x73, 0xc2, 0xa2, 0xae, 0xbb, 0xc8,
822                 0x42, 0xa3, 0x2a, 0x27, 0x29, 0x48, 0x8c, 0x54,
823                 0x6c, 0xec, 0x00, 0x2a, 0x42, 0xa3, 0x7a, 0x0f,
824                 0x12, 0x66, 0x6b, 0x96, 0xf6, 0xd0, 0x56, 0x4f,
825                 0x49, 0x5c, 0x47, 0xec, 0x05, 0x62, 0x54, 0xb2,
826                 0x64, 0x5a, 0x69, 0x1f, 0x19, 0xb4, 0x84, 0x5c,
827                 0xbe, 0x48, 0x8e, 0xfc, 0x58, 0x21, 0xce, 0xfa,
828                 0xaa, 0x84, 0xd2, 0xc1, 0x08, 0xb3, 0x87, 0x0f,
829                 0x4f, 0xa3, 0x3a, 0xb6, 0x44, 0xbe, 0x2e, 0x9a,
830                 0xdd, 0xb5, 0x44, 0x80, 0xca, 0xf4, 0xc3, 0x6e,
831                 0xba, 0x93, 0x77, 0xe0, 0x53, 0xfb, 0x37, 0xfb,
832                 0x88, 0xc3, 0x1f, 0x25, 0xde, 0x3e, 0x11, 0xf4,
833                 0x89, 0xe7, 0xd1, 0x3b, 0xb4, 0x23, 0xcb, 0x70,
834                 0xba, 0x35, 0x97, 0x7c, 0xbe, 0x84, 0x13, 0xcf,
835                 0xe0, 0x4d, 0x33, 0x91, 0x71, 0x85, 0xbb, 0x4b,
836                 0x97, 0x32, 0x5d, 0xa0, 0xb9, 0x8f, 0xdc, 0x27,
837                 0x5a, 0xeb, 0x71, 0xf1, 0xd5, 0x0d, 0x65, 0xb4,
838                 0x22, 0x81, 0xde, 0xa7, 0x58, 0x20, 0x0b, 0x18,
839                 0x11, 0x76, 0x5c, 0xe6, 0x6a, 0x2c, 0x99, 0x69,
840                 0xdc, 0xed, 0x67, 0x08, 0x5d, 0x5e, 0xe9, 0x1e,
841                 0x55, 0x70, 0xc1, 0x5a, 0x76, 0x1b, 0x8d, 0x2e,
842                 0x0d, 0xf9, 0xcc, 0x30, 0x8c, 0x44, 0x0f, 0x63,
843                 0x8c, 0x42, 0x8a, 0x9f, 0x4c, 0xd1, 0x48, 0x28,
844                 0x8a, 0xf5, 0x56, 0x2e, 0x23, 0x12, 0xfe, 0x67,
845                 0x9a, 0x13, 0x65, 0x75, 0x83, 0xf1, 0x3c, 0x98,
846                 0x07, 0x6b, 0xb7, 0x27, 0x5b, 0xf0, 0x70, 0xda,
847                 0x30, 0xf8, 0x74, 0x4e, 0x7a, 0x32, 0x84, 0xcc,
848                 0x0e, 0xcd, 0x80, 0x8b, 0x82, 0x31, 0x9a, 0x48,
849                 0xcf, 0x75, 0x00, 0x1f, 0x4f, 0xe0, 0x8e, 0xa3,
850                 0x6a, 0x2c, 0xd4, 0x73, 0x4c, 0x63, 0x7c, 0xa6,
851                 0x4d, 0x5e, 0xfd, 0x43, 0x3b, 0x27, 0xe1, 0x5e,
852                 0xa3, 0xa9, 0x5c, 0x3b, 0x60, 0xdd, 0xc6, 0x8d,
853                 0x5a, 0xf1, 0x3e, 0x89, 0x4b, 0x24, 0xcf, 0x01,
854                 0x3a, 0x2d, 0x44, 0xe7, 0xda, 0xe7, 0xa1, 0xac,
855                 0x11, 0x05, 0x0c, 0xa9, 0x7a, 0x82, 0x8c, 0x5c,
856                 0x29, 0x68, 0x9c, 0x73, 0x13, 0xcc, 0x67, 0x32,
857                 0x11, 0x5e, 0xe5, 0xcc, 0x8c, 0xf5, 0xa7, 0x52,
858                 0x83, 0x9a, 0x70, 0xef, 0xde, 0x55, 0x9c, 0xc7,
859                 0x8a, 0xed, 0xad, 0x28, 0x4a, 0xc5, 0x92, 0x6d,
860                 0x8e, 0x47, 0xca, 0xe3, 0xf8, 0x77, 0xb5, 0x26,
861                 0x64, 0x84, 0xc2, 0xf1, 0xd7, 0xae, 0x0c, 0xb9,
862                 0x39, 0x0f, 0x43, 0x6b, 0xe9, 0xe0, 0x09, 0x4b,
863                 0xe5, 0xe3, 0x17, 0xa6, 0x68, 0x69, 0x46, 0xf4,
864                 0xf0, 0x68, 0x7f, 0x2f, 0x1c, 0x7e, 0x4c, 0xd2,
865                 0xb5, 0xc6, 0x16, 0x85, 0xcf, 0x02, 0x4c, 0x89,
866                 0x0b, 0x25, 0xb0, 0xeb, 0xf3, 0x77, 0x08, 0x6a,
867                 0x46, 0x5c, 0xf6, 0x2f, 0xf1, 0x24, 0xc3, 0x4d,
868                 0x80, 0x60, 0x4d, 0x69, 0x98, 0xde, 0xc7, 0xa1,
869                 0xf6, 0x4e, 0x18, 0x0c, 0x2a, 0xb0, 0xb2, 0xe0,
870                 0x46, 0xe7, 0x49, 0x37, 0xc8, 0x5a, 0x23, 0x24,
871                 0xe3, 0x0f, 0xcc, 0x92, 0xb4, 0x8d, 0xdc, 0x9e
872 };
873
874 static const uint8_t AES_CBC_ciphertext_1280B[] = {
875                 0x91, 0x99, 0x5e, 0x9e, 0x84, 0xff, 0x59, 0x45,
876                 0xc1, 0xf4, 0xbc, 0x9c, 0xb9, 0x30, 0x6c, 0x51,
877                 0x73, 0x52, 0xb4, 0x44, 0x09, 0x79, 0xe2, 0x89,
878                 0x75, 0xeb, 0x54, 0x26, 0xce, 0xd8, 0x24, 0x98,
879                 0xaa, 0xf8, 0x13, 0x16, 0x68, 0x58, 0xc4, 0x82,
880                 0x0e, 0x31, 0xd3, 0x6a, 0x13, 0x58, 0x31, 0xe9,
881                 0x3a, 0xc1, 0x8b, 0xc5, 0x3f, 0x50, 0x42, 0xd1,
882                 0x93, 0xe4, 0x9b, 0x65, 0x2b, 0xf4, 0x1d, 0x9e,
883                 0x2d, 0xdb, 0x48, 0xef, 0x9a, 0x01, 0x68, 0xb6,
884                 0xea, 0x7a, 0x2b, 0xad, 0xfe, 0x77, 0x44, 0x7e,
885                 0x5a, 0xc5, 0x64, 0xb4, 0xfe, 0x5c, 0x80, 0xf3,
886                 0x20, 0x7e, 0xaf, 0x5b, 0xf8, 0xd1, 0x38, 0xa0,
887                 0x8d, 0x09, 0x77, 0x06, 0xfe, 0xf5, 0xf4, 0xe4,
888                 0xee, 0xb8, 0x95, 0x27, 0xed, 0x07, 0xb8, 0xaa,
889                 0x25, 0xb4, 0xe1, 0x4c, 0xeb, 0x3f, 0xdb, 0x39,
890                 0x66, 0x28, 0x1b, 0x60, 0x42, 0x8b, 0x99, 0xd9,
891                 0x49, 0xd6, 0x8c, 0xa4, 0x9d, 0xd8, 0x93, 0x58,
892                 0x8f, 0xfa, 0xd3, 0xf7, 0x37, 0x9c, 0x88, 0xab,
893                 0x16, 0x50, 0xfe, 0x01, 0x1f, 0x88, 0x48, 0xbe,
894                 0x21, 0xa9, 0x90, 0x9e, 0x73, 0xe9, 0x82, 0xf7,
895                 0xbf, 0x4b, 0x43, 0xf4, 0xbf, 0x22, 0x3c, 0x45,
896                 0x47, 0x95, 0x5b, 0x49, 0x71, 0x07, 0x1c, 0x8b,
897                 0x49, 0xa4, 0xa3, 0x49, 0xc4, 0x5f, 0xb1, 0xf5,
898                 0xe3, 0x6b, 0xf1, 0xdc, 0xea, 0x92, 0x7b, 0x29,
899                 0x40, 0xc9, 0x39, 0x5f, 0xdb, 0xbd, 0xf3, 0x6a,
900                 0x09, 0x9b, 0x2a, 0x5e, 0xc7, 0x0b, 0x25, 0x94,
901                 0x55, 0x71, 0x9c, 0x7e, 0x0e, 0xb4, 0x08, 0x12,
902                 0x8c, 0x6e, 0x77, 0xb8, 0x29, 0xf1, 0xc6, 0x71,
903                 0x04, 0x40, 0x77, 0x18, 0x3f, 0x01, 0x09, 0x9c,
904                 0x23, 0x2b, 0x5d, 0x2a, 0x88, 0x20, 0x23, 0x59,
905                 0x74, 0x2a, 0x67, 0x8f, 0xb7, 0xba, 0x38, 0x9f,
906                 0x0f, 0xcf, 0x94, 0xdf, 0xe1, 0x8f, 0x35, 0x5e,
907                 0x34, 0x0c, 0x32, 0x92, 0x2b, 0x23, 0x81, 0xf4,
908                 0x73, 0xa0, 0x5a, 0x2a, 0xbd, 0xa6, 0x6b, 0xae,
909                 0x43, 0xe2, 0xdc, 0x01, 0xc1, 0xc6, 0xc3, 0x04,
910                 0x06, 0xbb, 0xb0, 0x89, 0xb3, 0x4e, 0xbd, 0x81,
911                 0x1b, 0x03, 0x63, 0x93, 0xed, 0x4e, 0xf6, 0xe5,
912                 0x94, 0x6f, 0xd6, 0xf3, 0x20, 0xf3, 0xbc, 0x30,
913                 0xc5, 0xd6, 0xbe, 0x1c, 0x05, 0x34, 0x26, 0x4d,
914                 0x46, 0x5e, 0x56, 0x63, 0xfb, 0xdb, 0xcd, 0xed,
915                 0xb0, 0x7f, 0x83, 0x94, 0x55, 0x54, 0x2f, 0xab,
916                 0xc9, 0xb7, 0x16, 0x4f, 0x9e, 0x93, 0x25, 0xd7,
917                 0x9f, 0x39, 0x2b, 0x63, 0xcf, 0x1e, 0xa3, 0x0e,
918                 0x28, 0x47, 0x8a, 0x5f, 0x40, 0x02, 0x89, 0x1f,
919                 0x83, 0xe7, 0x87, 0xd1, 0x90, 0x17, 0xb8, 0x27,
920                 0x64, 0xe1, 0xe1, 0x48, 0x5a, 0x55, 0x74, 0x99,
921                 0x27, 0x9d, 0x05, 0x67, 0xda, 0x70, 0x12, 0x8f,
922                 0x94, 0x96, 0xfd, 0x36, 0xa4, 0x1d, 0x22, 0xe5,
923                 0x0b, 0xe5, 0x2f, 0x38, 0x55, 0xa3, 0x5d, 0x0b,
924                 0xcf, 0xd4, 0xa9, 0xb8, 0xd6, 0x9a, 0x16, 0x2e,
925                 0x6c, 0x4a, 0x25, 0x51, 0x7a, 0x09, 0x48, 0xdd,
926                 0xf0, 0xa3, 0x5b, 0x08, 0x1e, 0x2f, 0x03, 0x91,
927                 0x80, 0xe8, 0x0f, 0xe9, 0x5a, 0x2f, 0x90, 0xd3,
928                 0x64, 0xed, 0xd7, 0x51, 0x17, 0x66, 0x53, 0x40,
929                 0x43, 0x74, 0xef, 0x0a, 0x0d, 0x49, 0x41, 0xf2,
930                 0x67, 0x6e, 0xea, 0x14, 0xc8, 0x74, 0xd6, 0xa9,
931                 0xb9, 0x6a, 0xe3, 0xec, 0x7d, 0xe8, 0x6a, 0x21,
932                 0x3a, 0x52, 0x42, 0xfe, 0x9a, 0x15, 0x6d, 0x60,
933                 0x64, 0x88, 0xc5, 0xb2, 0x8b, 0x15, 0x2c, 0xff,
934                 0xe2, 0x35, 0xc3, 0xee, 0x9f, 0xcd, 0x82, 0xd9,
935                 0x14, 0x35, 0x2a, 0xb7, 0xf5, 0x2f, 0x7b, 0xbc,
936                 0x01, 0xfd, 0xa8, 0xe0, 0x21, 0x4e, 0x73, 0xf9,
937                 0xf2, 0xb0, 0x79, 0xc9, 0x10, 0x52, 0x8f, 0xa8,
938                 0x3e, 0x3b, 0xbe, 0xc5, 0xde, 0xf6, 0x53, 0xe3,
939                 0x1c, 0x25, 0x3a, 0x1f, 0x13, 0xbf, 0x13, 0xbb,
940                 0x94, 0xc2, 0x97, 0x43, 0x64, 0x47, 0x8f, 0x76,
941                 0xd7, 0xaa, 0xeb, 0xa4, 0x03, 0x50, 0x0c, 0x10,
942                 0x50, 0xd8, 0xf7, 0x75, 0x52, 0x42, 0xe2, 0x94,
943                 0x67, 0xf4, 0x60, 0xfb, 0x21, 0x9b, 0x7a, 0x05,
944                 0x50, 0x7c, 0x1b, 0x4a, 0x8b, 0x29, 0xe1, 0xac,
945                 0xd7, 0x99, 0xfd, 0x0d, 0x65, 0x92, 0xcd, 0x23,
946                 0xa7, 0x35, 0x8e, 0x13, 0xf2, 0xe4, 0x10, 0x74,
947                 0xc6, 0x4f, 0x19, 0xf7, 0x01, 0x0b, 0x46, 0xab,
948                 0xef, 0x8d, 0x4a, 0x4a, 0xfa, 0xda, 0xf3, 0xfb,
949                 0x40, 0x28, 0x88, 0xa2, 0x65, 0x98, 0x4d, 0x88,
950                 0xc7, 0xbf, 0x00, 0xc8, 0xd0, 0x91, 0xcb, 0x89,
951                 0x2f, 0xb0, 0x85, 0xfc, 0xa1, 0xc1, 0x9e, 0x83,
952                 0x88, 0xad, 0x95, 0xc0, 0x31, 0xa0, 0xad, 0xa2,
953                 0x42, 0xb5, 0xe7, 0x55, 0xd4, 0x93, 0x5a, 0x74,
954                 0x4e, 0x41, 0xc3, 0xcf, 0x96, 0x83, 0x46, 0xa1,
955                 0xb7, 0x5b, 0xb1, 0x34, 0x67, 0x4e, 0xb1, 0xd7,
956                 0x40, 0x20, 0x72, 0xe9, 0xc8, 0x74, 0xb7, 0xde,
957                 0x72, 0x29, 0x77, 0x4c, 0x74, 0x7e, 0xcc, 0x18,
958                 0xa5, 0x8d, 0x79, 0x8c, 0xd6, 0x6e, 0xcb, 0xd9,
959                 0xe1, 0x61, 0xe7, 0x36, 0xbc, 0x37, 0xea, 0xee,
960                 0xd8, 0x3c, 0x5e, 0x7c, 0x47, 0x50, 0xd5, 0xec,
961                 0x37, 0xc5, 0x63, 0xc3, 0xc9, 0x99, 0x23, 0x9f,
962                 0x64, 0x39, 0xdf, 0x13, 0x96, 0x6d, 0xea, 0x08,
963                 0x0c, 0x27, 0x2d, 0xfe, 0x0f, 0xc2, 0xa3, 0x97,
964                 0x04, 0x12, 0x66, 0x0d, 0x94, 0xbf, 0xbe, 0x3e,
965                 0xb9, 0xcf, 0x8e, 0xc1, 0x9d, 0xb1, 0x64, 0x17,
966                 0x54, 0x92, 0x3f, 0x0a, 0x51, 0xc8, 0xf5, 0x82,
967                 0x98, 0x73, 0x03, 0xc0, 0x5a, 0x51, 0x01, 0x67,
968                 0xb4, 0x01, 0x04, 0x06, 0xbc, 0x37, 0xde, 0x96,
969                 0x23, 0x3c, 0xce, 0x98, 0x3f, 0xd6, 0x51, 0x1b,
970                 0x01, 0x83, 0x0a, 0x1c, 0xf9, 0xeb, 0x7e, 0x72,
971                 0xa9, 0x51, 0x23, 0xc8, 0xd7, 0x2f, 0x12, 0xbc,
972                 0x08, 0xac, 0x07, 0xe7, 0xa7, 0xe6, 0x46, 0xae,
973                 0x54, 0xa3, 0xc2, 0xf2, 0x05, 0x2d, 0x06, 0x5e,
974                 0xfc, 0xe2, 0xa2, 0x23, 0xac, 0x86, 0xf2, 0x54,
975                 0x83, 0x4a, 0xb6, 0x48, 0x93, 0xa1, 0x78, 0xc2,
976                 0x07, 0xec, 0x82, 0xf0, 0x74, 0xa9, 0x18, 0xe9,
977                 0x53, 0x44, 0x49, 0xc2, 0x94, 0xf8, 0x94, 0x92,
978                 0x08, 0x3f, 0xbf, 0xa6, 0xe5, 0xc6, 0x03, 0x8a,
979                 0xc6, 0x90, 0x48, 0x6c, 0xee, 0xbd, 0x44, 0x92,
980                 0x1f, 0x2a, 0xce, 0x1d, 0xb8, 0x31, 0xa2, 0x9d,
981                 0x24, 0x93, 0xa8, 0x9f, 0x36, 0x00, 0x04, 0x7b,
982                 0xcb, 0x93, 0x59, 0xa1, 0x53, 0xdb, 0x13, 0x7a,
983                 0x54, 0xb1, 0x04, 0xdb, 0xce, 0x48, 0x4f, 0xe5,
984                 0x2f, 0xcb, 0xdf, 0x8f, 0x50, 0x7c, 0xfc, 0x76,
985                 0x80, 0xb4, 0xdc, 0x3b, 0xc8, 0x98, 0x95, 0xf5,
986                 0x50, 0xba, 0x70, 0x5a, 0x97, 0xd5, 0xfc, 0x98,
987                 0x4d, 0xf3, 0x61, 0x0f, 0xcf, 0xac, 0x49, 0x0a,
988                 0xdb, 0xc1, 0x42, 0x8f, 0xb6, 0x29, 0xd5, 0x65,
989                 0xef, 0x83, 0xf1, 0x30, 0x4b, 0x84, 0xd0, 0x69,
990                 0xde, 0xd2, 0x99, 0xe5, 0xec, 0xd3, 0x90, 0x86,
991                 0x39, 0x2a, 0x6e, 0xd5, 0x32, 0xe3, 0x0d, 0x2d,
992                 0x01, 0x8b, 0x17, 0x55, 0x1d, 0x65, 0x57, 0xbf,
993                 0xd8, 0x75, 0xa4, 0x85, 0xb6, 0x4e, 0x35, 0x14,
994                 0x58, 0xe4, 0x89, 0xb8, 0x7a, 0x58, 0x86, 0x0c,
995                 0xbd, 0x8b, 0x05, 0x7b, 0x63, 0xc0, 0x86, 0x80,
996                 0x33, 0x46, 0xd4, 0x9b, 0xb6, 0x0a, 0xeb, 0x6c,
997                 0xae, 0xd6, 0x57, 0x7a, 0xc7, 0x59, 0x33, 0xa0,
998                 0xda, 0xa4, 0x12, 0xbf, 0x52, 0x22, 0x05, 0x8d,
999                 0xeb, 0xee, 0xd5, 0xec, 0xea, 0x29, 0x9b, 0x76,
1000                 0x95, 0x50, 0x6d, 0x99, 0xe1, 0x45, 0x63, 0x09,
1001                 0x16, 0x5f, 0xb0, 0xf2, 0x5b, 0x08, 0x33, 0xdd,
1002                 0x8f, 0xb7, 0x60, 0x7a, 0x8e, 0xc6, 0xfc, 0xac,
1003                 0xa9, 0x56, 0x2c, 0xa9, 0x8b, 0x74, 0x33, 0xad,
1004                 0x2a, 0x7e, 0x96, 0xb6, 0xba, 0x22, 0x28, 0xcf,
1005                 0x4d, 0x96, 0xb7, 0xd1, 0xfa, 0x99, 0x4a, 0x61,
1006                 0xe6, 0x84, 0xd1, 0x94, 0xca, 0xf5, 0x86, 0xb0,
1007                 0xba, 0x34, 0x7a, 0x04, 0xcc, 0xd4, 0x81, 0xcd,
1008                 0xd9, 0x86, 0xb6, 0xe0, 0x5a, 0x6f, 0x9b, 0x99,
1009                 0xf0, 0xdf, 0x49, 0xae, 0x6d, 0xc2, 0x54, 0x67,
1010                 0xe0, 0xb4, 0x34, 0x2d, 0x1c, 0x46, 0xdf, 0x73,
1011                 0x3b, 0x45, 0x43, 0xe7, 0x1f, 0xa3, 0x36, 0x35,
1012                 0x25, 0x33, 0xd9, 0xc0, 0x54, 0x38, 0x6e, 0x6b,
1013                 0x80, 0xcf, 0x50, 0xa4, 0xb6, 0x21, 0x17, 0xfd,
1014                 0x9b, 0x5c, 0x36, 0xca, 0xcc, 0x73, 0x73, 0xad,
1015                 0xe0, 0x57, 0x77, 0x90, 0x0e, 0x7f, 0x0f, 0x87,
1016                 0x7f, 0xdb, 0x73, 0xbf, 0xda, 0xc2, 0xb3, 0x05,
1017                 0x22, 0x06, 0xf5, 0xa3, 0xfc, 0x1e, 0x8f, 0xda,
1018                 0xcf, 0x49, 0xd6, 0xb3, 0x66, 0x2c, 0xb5, 0x00,
1019                 0xaf, 0x85, 0x6e, 0xb8, 0x5b, 0x8c, 0xa1, 0xa4,
1020                 0x21, 0xce, 0x40, 0xf3, 0x98, 0xac, 0xec, 0x88,
1021                 0x62, 0x43, 0x2a, 0xac, 0xca, 0xcf, 0xb9, 0x30,
1022                 0xeb, 0xfc, 0xef, 0xf0, 0x6e, 0x64, 0x6d, 0xe7,
1023                 0x54, 0x88, 0x6b, 0x22, 0x29, 0xbe, 0xa5, 0x8c,
1024                 0x31, 0x23, 0x3b, 0x4a, 0x80, 0x37, 0xe6, 0xd0,
1025                 0x05, 0xfc, 0x10, 0x0e, 0xdd, 0xbb, 0x00, 0xc5,
1026                 0x07, 0x20, 0x59, 0xd3, 0x41, 0x17, 0x86, 0x46,
1027                 0xab, 0x68, 0xf6, 0x48, 0x3c, 0xea, 0x5a, 0x06,
1028                 0x30, 0x21, 0x19, 0xed, 0x74, 0xbe, 0x0b, 0x97,
1029                 0xee, 0x91, 0x35, 0x94, 0x1f, 0xcb, 0x68, 0x7f,
1030                 0xe4, 0x48, 0xb0, 0x16, 0xfb, 0xf0, 0x74, 0xdb,
1031                 0x06, 0x59, 0x2e, 0x5a, 0x9c, 0xce, 0x8f, 0x7d,
1032                 0xba, 0x48, 0xd5, 0x3f, 0x5c, 0xb0, 0xc2, 0x33,
1033                 0x48, 0x60, 0x17, 0x08, 0x85, 0xba, 0xff, 0xb9,
1034                 0x34, 0x0a, 0x3d, 0x8f, 0x21, 0x13, 0x12, 0x1b
1035 };
1036
1037 static const uint8_t AES_CBC_ciphertext_1536B[] = {
1038                 0x89, 0x93, 0x05, 0x99, 0xa9, 0xed, 0xea, 0x62,
1039                 0xc9, 0xda, 0x51, 0x15, 0xce, 0x42, 0x91, 0xc3,
1040                 0x80, 0xc8, 0x03, 0x88, 0xc2, 0x63, 0xda, 0x53,
1041                 0x1a, 0xf3, 0xeb, 0xd5, 0xba, 0x6f, 0x23, 0xb2,
1042                 0xed, 0x8f, 0x89, 0xb1, 0xb3, 0xca, 0x90, 0x7a,
1043                 0xdd, 0x3f, 0xf6, 0xca, 0x86, 0x58, 0x54, 0xbc,
1044                 0xab, 0x0f, 0xf4, 0xab, 0x6d, 0x5d, 0x42, 0xd0,
1045                 0x17, 0x49, 0x17, 0xd1, 0x93, 0xea, 0xe8, 0x22,
1046                 0xc1, 0x34, 0x9f, 0x3a, 0x3b, 0xaa, 0xe9, 0x1b,
1047                 0x93, 0xff, 0x6b, 0x68, 0xba, 0xe6, 0xd2, 0x39,
1048                 0x3d, 0x55, 0x34, 0x8f, 0x98, 0x86, 0xb4, 0xd8,
1049                 0x7c, 0x0d, 0x3e, 0x01, 0x63, 0x04, 0x01, 0xff,
1050                 0x16, 0x0f, 0x51, 0x5f, 0x73, 0x53, 0xf0, 0x3a,
1051                 0x38, 0xb4, 0x4d, 0x8d, 0xaf, 0xa3, 0xca, 0x2f,
1052                 0x6f, 0xdf, 0xc0, 0x41, 0x6c, 0x48, 0x60, 0x1a,
1053                 0xe4, 0xe7, 0x8a, 0x65, 0x6f, 0x8d, 0xd7, 0xe1,
1054                 0x10, 0xab, 0x78, 0x5b, 0xb9, 0x69, 0x1f, 0xe0,
1055                 0x5c, 0xf1, 0x19, 0x12, 0x21, 0xc7, 0x51, 0xbc,
1056                 0x61, 0x5f, 0xc0, 0x36, 0x17, 0xc0, 0x28, 0xd9,
1057                 0x51, 0xcb, 0x43, 0xd9, 0xfa, 0xd1, 0xad, 0x79,
1058                 0x69, 0x86, 0x49, 0xc5, 0xe5, 0x69, 0x27, 0xce,
1059                 0x22, 0xd0, 0xe1, 0x6a, 0xf9, 0x02, 0xca, 0x6c,
1060                 0x34, 0xc7, 0xb8, 0x02, 0xc1, 0x38, 0x7f, 0xd5,
1061                 0x15, 0xf5, 0xd6, 0xeb, 0xf9, 0x30, 0x40, 0x43,
1062                 0xea, 0x87, 0xde, 0x35, 0xf6, 0x83, 0x59, 0x09,
1063                 0x68, 0x62, 0x00, 0x87, 0xb8, 0xe7, 0xca, 0x05,
1064                 0x0f, 0xac, 0x42, 0x58, 0x45, 0xaa, 0xc9, 0x9b,
1065                 0xfd, 0x2a, 0xda, 0x65, 0x33, 0x93, 0x9d, 0xc6,
1066                 0x93, 0x8d, 0xe2, 0xc5, 0x71, 0xc1, 0x5c, 0x13,
1067                 0xde, 0x7b, 0xd4, 0xb9, 0x4c, 0x35, 0x61, 0x85,
1068                 0x90, 0x78, 0xf7, 0x81, 0x98, 0x45, 0x99, 0x24,
1069                 0x58, 0x73, 0x28, 0xf8, 0x31, 0xab, 0x54, 0x2e,
1070                 0xc0, 0x38, 0x77, 0x25, 0x5c, 0x06, 0x9c, 0xc3,
1071                 0x69, 0x21, 0x92, 0x76, 0xe1, 0x16, 0xdc, 0xa9,
1072                 0xee, 0xb6, 0x80, 0x66, 0x43, 0x11, 0x24, 0xb3,
1073                 0x07, 0x17, 0x89, 0x0f, 0xcb, 0xe0, 0x60, 0xa8,
1074                 0x9d, 0x06, 0x4b, 0x6e, 0x72, 0xb7, 0xbc, 0x4f,
1075                 0xb8, 0xc0, 0x80, 0xa2, 0xfb, 0x46, 0x5b, 0x8f,
1076                 0x11, 0x01, 0x92, 0x9d, 0x37, 0x09, 0x98, 0xc8,
1077                 0x0a, 0x46, 0xae, 0x12, 0xac, 0x61, 0x3f, 0xe7,
1078                 0x41, 0x1a, 0xaa, 0x2e, 0xdc, 0xd7, 0x2a, 0x47,
1079                 0xee, 0xdf, 0x08, 0xd1, 0xff, 0xea, 0x13, 0xc6,
1080                 0x05, 0xdb, 0x29, 0xcc, 0x03, 0xba, 0x7b, 0x6d,
1081                 0x40, 0xc1, 0xc9, 0x76, 0x75, 0x03, 0x7a, 0x71,
1082                 0xc9, 0x5f, 0xd9, 0xe0, 0x61, 0x69, 0x36, 0x8f,
1083                 0xb2, 0xbc, 0x28, 0xf3, 0x90, 0x71, 0xda, 0x5f,
1084                 0x08, 0xd5, 0x0d, 0xc1, 0xe6, 0xbd, 0x2b, 0xc6,
1085                 0x6c, 0x42, 0xfd, 0xbf, 0x10, 0xe8, 0x5f, 0x87,
1086                 0x3d, 0x21, 0x42, 0x85, 0x01, 0x0a, 0xbf, 0x8e,
1087                 0x49, 0xd3, 0x9c, 0x89, 0x3b, 0xea, 0xe1, 0xbf,
1088                 0xe9, 0x9b, 0x5e, 0x0e, 0xb8, 0xeb, 0xcd, 0x3a,
1089                 0xf6, 0x29, 0x41, 0x35, 0xdd, 0x9b, 0x13, 0x24,
1090                 0xe0, 0x1d, 0x8a, 0xcb, 0x20, 0xf8, 0x41, 0x51,
1091                 0x3e, 0x23, 0x8c, 0x67, 0x98, 0x39, 0x53, 0x77,
1092                 0x2a, 0x68, 0xf4, 0x3c, 0x7e, 0xd6, 0xc4, 0x6e,
1093                 0xf1, 0x53, 0xe9, 0xd8, 0x5c, 0xc1, 0xa9, 0x38,
1094                 0x6f, 0x5e, 0xe4, 0xd4, 0x29, 0x1c, 0x6c, 0xee,
1095                 0x2f, 0xea, 0xde, 0x61, 0x71, 0x5a, 0xea, 0xce,
1096                 0x23, 0x6e, 0x1b, 0x16, 0x43, 0xb7, 0xc0, 0xe3,
1097                 0x87, 0xa1, 0x95, 0x1e, 0x97, 0x4d, 0xea, 0xa6,
1098                 0xf7, 0x25, 0xac, 0x82, 0x2a, 0xd3, 0xa6, 0x99,
1099                 0x75, 0xdd, 0xc1, 0x55, 0x32, 0x6b, 0xea, 0x33,
1100                 0x88, 0xce, 0x06, 0xac, 0x15, 0x39, 0x19, 0xa3,
1101                 0x59, 0xaf, 0x7a, 0x1f, 0xd9, 0x72, 0x5e, 0xf7,
1102                 0x4c, 0xf3, 0x5d, 0x6b, 0xf2, 0x16, 0x92, 0xa8,
1103                 0x9e, 0x3d, 0xd4, 0x4c, 0x72, 0x55, 0x4e, 0x4a,
1104                 0xf7, 0x8b, 0x2f, 0x67, 0x5a, 0x90, 0xb7, 0xcf,
1105                 0x16, 0xd3, 0x7b, 0x5a, 0x9a, 0xc8, 0x9f, 0xbf,
1106                 0x01, 0x76, 0x3b, 0x86, 0x2c, 0x2a, 0x78, 0x10,
1107                 0x70, 0x05, 0x38, 0xf9, 0xdd, 0x2a, 0x1d, 0x00,
1108                 0x25, 0xb7, 0x10, 0xac, 0x3b, 0x3c, 0x4d, 0x3c,
1109                 0x01, 0x68, 0x3c, 0x5a, 0x29, 0xc2, 0xa0, 0x1b,
1110                 0x95, 0x67, 0xf9, 0x0a, 0x60, 0xb7, 0x11, 0x9c,
1111                 0x40, 0x45, 0xd7, 0xb0, 0xda, 0x49, 0x87, 0xcd,
1112                 0xb0, 0x9b, 0x61, 0x8c, 0xf4, 0x0d, 0x94, 0x1d,
1113                 0x79, 0x66, 0x13, 0x0b, 0xc6, 0x6b, 0x19, 0xee,
1114                 0xa0, 0x6b, 0x64, 0x7d, 0xc4, 0xff, 0x98, 0x72,
1115                 0x60, 0xab, 0x7f, 0x0f, 0x4d, 0x5d, 0x6b, 0xc3,
1116                 0xba, 0x5e, 0x0d, 0x04, 0xd9, 0x59, 0x17, 0xd0,
1117                 0x64, 0xbe, 0xfb, 0x58, 0xfc, 0xed, 0x18, 0xf6,
1118                 0xac, 0x19, 0xa4, 0xfd, 0x16, 0x59, 0x80, 0x58,
1119                 0xb8, 0x0f, 0x79, 0x24, 0x60, 0x18, 0x62, 0xa9,
1120                 0xa3, 0xa0, 0xe8, 0x81, 0xd6, 0xec, 0x5b, 0xfe,
1121                 0x5b, 0xb8, 0xa4, 0x00, 0xa9, 0xd0, 0x90, 0x17,
1122                 0xe5, 0x50, 0x3d, 0x2b, 0x12, 0x6e, 0x2a, 0x13,
1123                 0x65, 0x7c, 0xdf, 0xdf, 0xa7, 0xdd, 0x9f, 0x78,
1124                 0x5f, 0x8f, 0x4e, 0x90, 0xa6, 0x10, 0xe4, 0x7b,
1125                 0x68, 0x6b, 0xfd, 0xa9, 0x6d, 0x47, 0xfa, 0xec,
1126                 0x42, 0x35, 0x07, 0x12, 0x3e, 0x78, 0x23, 0x15,
1127                 0xff, 0xe2, 0x65, 0xc7, 0x47, 0x89, 0x2f, 0x97,
1128                 0x7c, 0xd7, 0x6b, 0x69, 0x35, 0x79, 0x6f, 0x85,
1129                 0xb4, 0xa9, 0x75, 0x04, 0x32, 0x9a, 0xfe, 0xf0,
1130                 0xce, 0xe3, 0xf1, 0xab, 0x15, 0x47, 0xe4, 0x9c,
1131                 0xc1, 0x48, 0x32, 0x3c, 0xbe, 0x44, 0x72, 0xc9,
1132                 0xaa, 0x50, 0x37, 0xa6, 0xbe, 0x41, 0xcf, 0xe8,
1133                 0x17, 0x4e, 0x37, 0xbe, 0xf1, 0x34, 0x2c, 0xd9,
1134                 0x60, 0x48, 0x09, 0xa5, 0x26, 0x00, 0x31, 0x77,
1135                 0x4e, 0xac, 0x7c, 0x89, 0x75, 0xe3, 0xde, 0x26,
1136                 0x4c, 0x32, 0x54, 0x27, 0x8e, 0x92, 0x26, 0x42,
1137                 0x85, 0x76, 0x01, 0x76, 0x62, 0x4c, 0x29, 0xe9,
1138                 0x38, 0x05, 0x51, 0x54, 0x97, 0xa3, 0x03, 0x59,
1139                 0x5e, 0xec, 0x0c, 0xe4, 0x96, 0xb7, 0x15, 0xa8,
1140                 0x41, 0x06, 0x2b, 0x78, 0x95, 0x24, 0xf6, 0x32,
1141                 0xc5, 0xec, 0xd7, 0x89, 0x28, 0x1e, 0xec, 0xb1,
1142                 0xc7, 0x21, 0x0c, 0xd3, 0x80, 0x7c, 0x5a, 0xe6,
1143                 0xb1, 0x3a, 0x52, 0x33, 0x84, 0x4e, 0x32, 0x6e,
1144                 0x7a, 0xf6, 0x43, 0x15, 0x5b, 0xa6, 0xba, 0xeb,
1145                 0xa8, 0xe4, 0xff, 0x4f, 0xbd, 0xbd, 0xa8, 0x5e,
1146                 0xbe, 0x27, 0xaf, 0xc5, 0xf7, 0x9e, 0xdf, 0x48,
1147                 0x22, 0xca, 0x6a, 0x0b, 0x3c, 0xd7, 0xe0, 0xdc,
1148                 0xf3, 0x71, 0x08, 0xdc, 0x28, 0x13, 0x08, 0xf2,
1149                 0x08, 0x1d, 0x9d, 0x7b, 0xd9, 0xde, 0x6f, 0xe6,
1150                 0xe8, 0x88, 0x18, 0xc2, 0xcd, 0x93, 0xc5, 0x38,
1151                 0x21, 0x68, 0x4c, 0x9a, 0xfb, 0xb6, 0x18, 0x16,
1152                 0x73, 0x2c, 0x1d, 0x6f, 0x95, 0xfb, 0x65, 0x4f,
1153                 0x7c, 0xec, 0x8d, 0x6c, 0xa8, 0xc0, 0x55, 0x28,
1154                 0xc6, 0xc3, 0xea, 0xeb, 0x05, 0xf5, 0x65, 0xeb,
1155                 0x53, 0xe1, 0x54, 0xef, 0xb8, 0x64, 0x98, 0x2d,
1156                 0x98, 0x9e, 0xc8, 0xfe, 0xa2, 0x07, 0x30, 0xf7,
1157                 0xf7, 0xae, 0xdb, 0x32, 0xf8, 0x71, 0x9d, 0x06,
1158                 0xdf, 0x9b, 0xda, 0x61, 0x7d, 0xdb, 0xae, 0x06,
1159                 0x24, 0x63, 0x74, 0xb6, 0xf3, 0x1b, 0x66, 0x09,
1160                 0x60, 0xff, 0x2b, 0x29, 0xf5, 0xa9, 0x9d, 0x61,
1161                 0x5d, 0x55, 0x10, 0x82, 0x21, 0xbb, 0x64, 0x0d,
1162                 0xef, 0x5c, 0xe3, 0x30, 0x1b, 0x60, 0x1e, 0x5b,
1163                 0xfe, 0x6c, 0xf5, 0x15, 0xa3, 0x86, 0x27, 0x58,
1164                 0x46, 0x00, 0x20, 0xcb, 0x86, 0x9a, 0x52, 0x29,
1165                 0x20, 0x68, 0x4d, 0x67, 0x88, 0x70, 0xc2, 0x31,
1166                 0xd8, 0xbb, 0xa5, 0xa7, 0x88, 0x7f, 0x66, 0xbc,
1167                 0xaa, 0x0f, 0xe1, 0x78, 0x7b, 0x97, 0x3c, 0xb7,
1168                 0xd7, 0xd8, 0x04, 0xe0, 0x09, 0x60, 0xc8, 0xd0,
1169                 0x9e, 0xe5, 0x6b, 0x31, 0x7f, 0x88, 0xfe, 0xc3,
1170                 0xfd, 0x89, 0xec, 0x76, 0x4b, 0xb3, 0xa7, 0x37,
1171                 0x03, 0xb7, 0xc6, 0x10, 0x7c, 0x9d, 0x0c, 0x75,
1172                 0xd3, 0x08, 0x14, 0x94, 0x03, 0x42, 0x25, 0x26,
1173                 0x85, 0xf7, 0xf0, 0x90, 0x06, 0x3e, 0x6f, 0x60,
1174                 0x52, 0x55, 0xd5, 0x0f, 0x79, 0x64, 0x69, 0x69,
1175                 0x46, 0xf9, 0x7f, 0x7f, 0x03, 0xf1, 0x1f, 0xdb,
1176                 0x39, 0x05, 0xba, 0x4a, 0x8f, 0x17, 0xe7, 0xba,
1177                 0xe2, 0x07, 0x7c, 0x1d, 0x9e, 0xbc, 0x94, 0xc0,
1178                 0x61, 0x59, 0x8e, 0x72, 0xaf, 0xfc, 0x99, 0xe4,
1179                 0xd5, 0xa8, 0xee, 0x0a, 0x48, 0x2d, 0x82, 0x8b,
1180                 0x34, 0x54, 0x8a, 0xce, 0xc7, 0xfa, 0xdd, 0xba,
1181                 0x54, 0xdf, 0xb3, 0x30, 0x33, 0x73, 0x2e, 0xd5,
1182                 0x52, 0xab, 0x49, 0x91, 0x4e, 0x0a, 0xd6, 0x2f,
1183                 0x67, 0xe4, 0xdd, 0x64, 0x48, 0x16, 0xd9, 0x85,
1184                 0xaa, 0x52, 0xa5, 0x0b, 0xd3, 0xb4, 0x2d, 0x77,
1185                 0x5e, 0x52, 0x77, 0x17, 0xcf, 0xbe, 0x88, 0x04,
1186                 0x01, 0x52, 0xe2, 0xf1, 0x46, 0xe2, 0x91, 0x30,
1187                 0x65, 0xcf, 0xc0, 0x65, 0x45, 0xc3, 0x7e, 0xf4,
1188                 0x2e, 0xb5, 0xaf, 0x6f, 0xab, 0x1a, 0xfa, 0x70,
1189                 0x35, 0xb8, 0x4f, 0x2d, 0x78, 0x90, 0x33, 0xb5,
1190                 0x9a, 0x67, 0xdb, 0x2f, 0x28, 0x32, 0xb6, 0x54,
1191                 0xab, 0x4c, 0x6b, 0x85, 0xed, 0x6c, 0x3e, 0x05,
1192                 0x2a, 0xc7, 0x32, 0xe8, 0xf5, 0xa3, 0x7b, 0x4e,
1193                 0x7b, 0x58, 0x24, 0x73, 0xf7, 0xfd, 0xc7, 0xc8,
1194                 0x6c, 0x71, 0x68, 0xb1, 0xf6, 0xc5, 0x9e, 0x1e,
1195                 0xe3, 0x5c, 0x25, 0xc0, 0x5b, 0x3e, 0x59, 0xa1,
1196                 0x18, 0x5a, 0xe8, 0xb5, 0xd1, 0x44, 0x13, 0xa3,
1197                 0xe6, 0x05, 0x76, 0xd2, 0x8d, 0x6e, 0x54, 0x68,
1198                 0x0c, 0xa4, 0x7b, 0x8b, 0xd3, 0x8c, 0x42, 0x13,
1199                 0x87, 0xda, 0xdf, 0x8f, 0xa5, 0x83, 0x7a, 0x42,
1200                 0x99, 0xb7, 0xeb, 0xe2, 0x79, 0xe0, 0xdb, 0xda,
1201                 0x33, 0xa8, 0x50, 0x3a, 0xd7, 0xe7, 0xd3, 0x61,
1202                 0x18, 0xb8, 0xaa, 0x2d, 0xc8, 0xd8, 0x2c, 0x28,
1203                 0xe5, 0x97, 0x0a, 0x7c, 0x6c, 0x7f, 0x09, 0xd7,
1204                 0x88, 0x80, 0xac, 0x12, 0xed, 0xf8, 0xc6, 0xb5,
1205                 0x2d, 0xd6, 0x63, 0x9b, 0x98, 0x35, 0x26, 0xde,
1206                 0xf6, 0x31, 0xee, 0x7e, 0xa0, 0xfb, 0x16, 0x98,
1207                 0xb1, 0x96, 0x1d, 0xee, 0xe3, 0x2f, 0xfb, 0x41,
1208                 0xdd, 0xea, 0x10, 0x1e, 0x03, 0x89, 0x18, 0xd2,
1209                 0x47, 0x0c, 0xa0, 0x57, 0xda, 0x76, 0x3a, 0x37,
1210                 0x2c, 0xe4, 0xf9, 0x77, 0xc8, 0x43, 0x5f, 0xcb,
1211                 0xd6, 0x85, 0xf7, 0x22, 0xe4, 0x32, 0x25, 0xa8,
1212                 0xdc, 0x21, 0xc0, 0xf5, 0x95, 0xb2, 0xf8, 0x83,
1213                 0xf0, 0x65, 0x61, 0x15, 0x48, 0x94, 0xb7, 0x03,
1214                 0x7f, 0x66, 0xa1, 0x39, 0x1f, 0xdd, 0xce, 0x96,
1215                 0xfe, 0x58, 0x81, 0x3d, 0x41, 0x11, 0x87, 0x13,
1216                 0x26, 0x1b, 0x6d, 0xf3, 0xca, 0x2e, 0x2c, 0x76,
1217                 0xd3, 0x2f, 0x6d, 0x49, 0x70, 0x53, 0x05, 0x96,
1218                 0xcc, 0x30, 0x2b, 0x83, 0xf2, 0xc6, 0xb2, 0x4b,
1219                 0x22, 0x13, 0x95, 0x42, 0xeb, 0x56, 0x4d, 0x22,
1220                 0xe6, 0x43, 0x6f, 0xba, 0xe7, 0x3b, 0xe5, 0x59,
1221                 0xce, 0x57, 0x88, 0x85, 0xb6, 0xbf, 0x15, 0x37,
1222                 0xb3, 0x7a, 0x7e, 0xc4, 0xbc, 0x99, 0xfc, 0xe4,
1223                 0x89, 0x00, 0x68, 0x39, 0xbc, 0x5a, 0xba, 0xab,
1224                 0x52, 0xab, 0xe6, 0x81, 0xfd, 0x93, 0x62, 0xe9,
1225                 0xb7, 0x12, 0xd1, 0x18, 0x1a, 0xb9, 0x55, 0x4a,
1226                 0x0f, 0xae, 0x35, 0x11, 0x04, 0x27, 0xf3, 0x42,
1227                 0x4e, 0xca, 0xdf, 0x9f, 0x12, 0x62, 0xea, 0x03,
1228                 0xc0, 0xa9, 0x22, 0x7b, 0x6c, 0x6c, 0xe3, 0xdf,
1229                 0x16, 0xad, 0x03, 0xc9, 0xfe, 0xa4, 0xdd, 0x4f
1230 };
1231
1232 static const uint8_t AES_CBC_ciphertext_1792B[] = {
1233                 0x59, 0xcc, 0xfe, 0x8f, 0xb4, 0x9d, 0x0e, 0xd1,
1234                 0x85, 0xfc, 0x9b, 0x43, 0xc1, 0xb7, 0x54, 0x67,
1235                 0x01, 0xef, 0xb8, 0x71, 0x36, 0xdb, 0x50, 0x48,
1236                 0x7a, 0xea, 0xcf, 0xce, 0xba, 0x30, 0x10, 0x2e,
1237                 0x96, 0x2b, 0xfd, 0xcf, 0x00, 0xe3, 0x1f, 0xac,
1238                 0x66, 0x14, 0x30, 0x86, 0x49, 0xdb, 0x01, 0x8b,
1239                 0x07, 0xdd, 0x00, 0x9d, 0x0d, 0x5c, 0x19, 0x11,
1240                 0xe8, 0x44, 0x2b, 0x25, 0x70, 0xed, 0x7c, 0x33,
1241                 0x0d, 0xe3, 0x34, 0x93, 0x63, 0xad, 0x26, 0xb1,
1242                 0x11, 0x91, 0x34, 0x2e, 0x1d, 0x50, 0xaa, 0xd4,
1243                 0xef, 0x3a, 0x6d, 0xd7, 0x33, 0x20, 0x0d, 0x3f,
1244                 0x9b, 0xdd, 0xc3, 0xa5, 0xc5, 0xf1, 0x99, 0xdc,
1245                 0xea, 0x52, 0xda, 0x55, 0xea, 0xa2, 0x7a, 0xc5,
1246                 0x78, 0x44, 0x4a, 0x02, 0x33, 0x19, 0x62, 0x37,
1247                 0xf8, 0x8b, 0xd1, 0x0c, 0x21, 0xdf, 0x40, 0x19,
1248                 0x81, 0xea, 0xfb, 0x1c, 0xa7, 0xcc, 0x60, 0xfe,
1249                 0x63, 0x25, 0x8f, 0xf3, 0x73, 0x0f, 0x45, 0xe6,
1250                 0x6a, 0x18, 0xbf, 0xbe, 0xad, 0x92, 0x2a, 0x1e,
1251                 0x15, 0x65, 0x6f, 0xef, 0x92, 0xcd, 0x0e, 0x19,
1252                 0x3d, 0x42, 0xa8, 0xfc, 0x0d, 0x32, 0x58, 0xe0,
1253                 0x56, 0x9f, 0xd6, 0x9b, 0x8b, 0xec, 0xe0, 0x45,
1254                 0x4d, 0x7e, 0x73, 0x87, 0xff, 0x74, 0x92, 0x59,
1255                 0x60, 0x13, 0x93, 0xda, 0xec, 0xbf, 0xfa, 0x20,
1256                 0xb6, 0xe7, 0xdf, 0xc7, 0x10, 0xf5, 0x79, 0xb4,
1257                 0xd7, 0xac, 0xaf, 0x2b, 0x37, 0x52, 0x30, 0x1d,
1258                 0xbe, 0x0f, 0x60, 0x77, 0x3d, 0x03, 0x63, 0xa9,
1259                 0xae, 0xb1, 0xf3, 0xca, 0xca, 0xb4, 0x21, 0xd7,
1260                 0x6f, 0x2e, 0x5e, 0x9b, 0x68, 0x53, 0x80, 0xab,
1261                 0x30, 0x23, 0x0a, 0x72, 0x6b, 0xb1, 0xd8, 0x25,
1262                 0x5d, 0x3a, 0x62, 0x9b, 0x4f, 0x59, 0x3b, 0x79,
1263                 0xa8, 0x9e, 0x08, 0x6d, 0x37, 0xb0, 0xfc, 0x42,
1264                 0x51, 0x25, 0x86, 0xbd, 0x54, 0x5a, 0x95, 0x20,
1265                 0x6c, 0xac, 0xb9, 0x30, 0x1c, 0x03, 0xc9, 0x49,
1266                 0x38, 0x55, 0x31, 0x49, 0xed, 0xa9, 0x0e, 0xc3,
1267                 0x65, 0xb4, 0x68, 0x6b, 0x07, 0x4c, 0x0a, 0xf9,
1268                 0x21, 0x69, 0x7c, 0x9f, 0x28, 0x80, 0xe9, 0x49,
1269                 0x22, 0x7c, 0xec, 0x97, 0xf7, 0x70, 0xb4, 0xb8,
1270                 0x25, 0xe7, 0x80, 0x2c, 0x43, 0x24, 0x8a, 0x2e,
1271                 0xac, 0xa2, 0x84, 0x20, 0xe7, 0xf4, 0x6b, 0x86,
1272                 0x37, 0x05, 0xc7, 0x59, 0x04, 0x49, 0x2a, 0x99,
1273                 0x80, 0x46, 0x32, 0x19, 0xe6, 0x30, 0xce, 0xc0,
1274                 0xef, 0x6e, 0xec, 0xe5, 0x2f, 0x24, 0xc1, 0x78,
1275                 0x45, 0x02, 0xd3, 0x64, 0x99, 0xf5, 0xc7, 0xbc,
1276                 0x8f, 0x8c, 0x75, 0xb1, 0x0a, 0xc8, 0xc3, 0xbd,
1277                 0x5e, 0x7e, 0xbd, 0x0e, 0xdf, 0x4b, 0x96, 0x6a,
1278                 0xfd, 0x03, 0xdb, 0xd1, 0x31, 0x1e, 0x27, 0xf9,
1279                 0xe5, 0x83, 0x9a, 0xfc, 0x13, 0x4c, 0xd3, 0x04,
1280                 0xdb, 0xdb, 0x3f, 0x35, 0x93, 0x4e, 0x14, 0x6b,
1281                 0x00, 0x5c, 0xb6, 0x11, 0x50, 0xee, 0x61, 0x5c,
1282                 0x10, 0x5c, 0xd0, 0x90, 0x02, 0x2e, 0x12, 0xe0,
1283                 0x50, 0x44, 0xad, 0x75, 0xcd, 0x94, 0xcf, 0x92,
1284                 0xcb, 0xe3, 0xe8, 0x77, 0x4b, 0xd7, 0x1a, 0x7c,
1285                 0xdd, 0x6b, 0x49, 0x21, 0x7c, 0xe8, 0x2c, 0x25,
1286                 0x49, 0x86, 0x1e, 0x54, 0xae, 0xfc, 0x0e, 0x80,
1287                 0xb1, 0xd5, 0xa5, 0x23, 0xcf, 0xcc, 0x0e, 0x11,
1288                 0xe2, 0x7c, 0x3c, 0x25, 0x78, 0x64, 0x03, 0xa1,
1289                 0xdd, 0x9f, 0x74, 0x12, 0x7b, 0x21, 0xb5, 0x73,
1290                 0x15, 0x3c, 0xed, 0xad, 0x07, 0x62, 0x21, 0x79,
1291                 0xd4, 0x2f, 0x0d, 0x72, 0xe9, 0x7c, 0x6b, 0x96,
1292                 0x6e, 0xe5, 0x36, 0x4a, 0xd2, 0x38, 0xe1, 0xff,
1293                 0x6e, 0x26, 0xa4, 0xac, 0x83, 0x07, 0xe6, 0x67,
1294                 0x74, 0x6c, 0xec, 0x8b, 0x4b, 0x79, 0x33, 0x50,
1295                 0x2f, 0x8f, 0xa0, 0x8f, 0xfa, 0x38, 0x6a, 0xa2,
1296                 0x3a, 0x42, 0x85, 0x15, 0x90, 0xd0, 0xb3, 0x0d,
1297                 0x8a, 0xe4, 0x60, 0x03, 0xef, 0xf9, 0x65, 0x8a,
1298                 0x4e, 0x50, 0x8c, 0x65, 0xba, 0x61, 0x16, 0xc3,
1299                 0x93, 0xb7, 0x75, 0x21, 0x98, 0x25, 0x60, 0x6e,
1300                 0x3d, 0x68, 0xba, 0x7c, 0xe4, 0xf3, 0xd9, 0x9b,
1301                 0xfb, 0x7a, 0xed, 0x1f, 0xb3, 0x4b, 0x88, 0x74,
1302                 0x2c, 0xb8, 0x8c, 0x22, 0x95, 0xce, 0x90, 0xf1,
1303                 0xdb, 0x80, 0xa6, 0x39, 0xae, 0x82, 0xa1, 0xef,
1304                 0x75, 0xec, 0xfe, 0xf1, 0xe8, 0x04, 0xfd, 0x99,
1305                 0x1b, 0x5f, 0x45, 0x87, 0x4f, 0xfa, 0xa2, 0x3e,
1306                 0x3e, 0xb5, 0x01, 0x4b, 0x46, 0xeb, 0x13, 0x9a,
1307                 0xe4, 0x7d, 0x03, 0x87, 0xb1, 0x59, 0x91, 0x8e,
1308                 0x37, 0xd3, 0x16, 0xce, 0xef, 0x4b, 0xe9, 0x46,
1309                 0x8d, 0x2a, 0x50, 0x2f, 0x41, 0xd3, 0x7b, 0xcf,
1310                 0xf0, 0xb7, 0x8b, 0x65, 0x0f, 0xa3, 0x27, 0x10,
1311                 0xe9, 0xa9, 0xe9, 0x2c, 0xbe, 0xbb, 0x82, 0xe3,
1312                 0x7b, 0x0b, 0x81, 0x3e, 0xa4, 0x6a, 0x4f, 0x3b,
1313                 0xd5, 0x61, 0xf8, 0x47, 0x04, 0x99, 0x5b, 0xff,
1314                 0xf3, 0x14, 0x6e, 0x57, 0x5b, 0xbf, 0x1b, 0xb4,
1315                 0x3f, 0xf9, 0x31, 0xf6, 0x95, 0xd5, 0x10, 0xa9,
1316                 0x72, 0x28, 0x23, 0xa9, 0x6a, 0xa2, 0xcf, 0x7d,
1317                 0xe3, 0x18, 0x95, 0xda, 0xbc, 0x6f, 0xe9, 0xd8,
1318                 0xef, 0x49, 0x3f, 0xd3, 0xef, 0x1f, 0xe1, 0x50,
1319                 0xe8, 0x8a, 0xc0, 0xce, 0xcc, 0xb7, 0x5e, 0x0e,
1320                 0x8b, 0x95, 0x80, 0xfd, 0x58, 0x2a, 0x9b, 0xc8,
1321                 0xb4, 0x17, 0x04, 0x46, 0x74, 0xd4, 0x68, 0x91,
1322                 0x33, 0xc8, 0x31, 0x15, 0x84, 0x16, 0x35, 0x03,
1323                 0x64, 0x6d, 0xa9, 0x4e, 0x20, 0xeb, 0xa9, 0x3f,
1324                 0x21, 0x5e, 0x9b, 0x09, 0xc3, 0x45, 0xf8, 0x7c,
1325                 0x59, 0x62, 0x29, 0x9a, 0x5c, 0xcf, 0xb4, 0x27,
1326                 0x5e, 0x13, 0xea, 0xb3, 0xef, 0xd9, 0x01, 0x2a,
1327                 0x65, 0x5f, 0x14, 0xf4, 0xbf, 0x28, 0x89, 0x3d,
1328                 0xdd, 0x9d, 0x52, 0xbd, 0x9e, 0x5b, 0x3b, 0xd2,
1329                 0xc2, 0x81, 0x35, 0xb6, 0xac, 0xdd, 0x27, 0xc3,
1330                 0x7b, 0x01, 0x5a, 0x6d, 0x4c, 0x5e, 0x2c, 0x30,
1331                 0xcb, 0x3a, 0xfa, 0xc1, 0xd7, 0x31, 0x67, 0x3e,
1332                 0x08, 0x6a, 0xe8, 0x8c, 0x75, 0xac, 0x1a, 0x6a,
1333                 0x52, 0xf7, 0x51, 0xcd, 0x85, 0x3f, 0x3c, 0xa7,
1334                 0xea, 0xbc, 0xd7, 0x18, 0x9e, 0x27, 0x73, 0xe6,
1335                 0x2b, 0x58, 0xb6, 0xd2, 0x29, 0x68, 0xd5, 0x8f,
1336                 0x00, 0x4d, 0x55, 0xf6, 0x61, 0x5a, 0xcc, 0x51,
1337                 0xa6, 0x5e, 0x85, 0xcb, 0x0b, 0xfd, 0x06, 0xca,
1338                 0xf5, 0xbf, 0x0d, 0x13, 0x74, 0x78, 0x6d, 0x9e,
1339                 0x20, 0x11, 0x84, 0x3e, 0x78, 0x17, 0x04, 0x4f,
1340                 0x64, 0x2c, 0x3b, 0x3e, 0x93, 0x7b, 0x58, 0x33,
1341                 0x07, 0x52, 0xf7, 0x60, 0x6a, 0xa8, 0x3b, 0x19,
1342                 0x27, 0x7a, 0x93, 0xc5, 0x53, 0xad, 0xec, 0xf6,
1343                 0xc8, 0x94, 0xee, 0x92, 0xea, 0xee, 0x7e, 0xea,
1344                 0xb9, 0x5f, 0xac, 0x59, 0x5d, 0x2e, 0x78, 0x53,
1345                 0x72, 0x81, 0x92, 0xdd, 0x1c, 0x63, 0xbe, 0x02,
1346                 0xeb, 0xa8, 0x1b, 0x2a, 0x6e, 0x72, 0xe3, 0x2d,
1347                 0x84, 0x0d, 0x8a, 0x22, 0xf6, 0xba, 0xab, 0x04,
1348                 0x8e, 0x04, 0x24, 0xdb, 0xcc, 0xe2, 0x69, 0xeb,
1349                 0x4e, 0xfa, 0x6b, 0x5b, 0xc8, 0xc0, 0xd9, 0x25,
1350                 0xcb, 0x40, 0x8d, 0x4b, 0x8e, 0xa0, 0xd4, 0x72,
1351                 0x98, 0x36, 0x46, 0x3b, 0x4f, 0x5f, 0x96, 0x84,
1352                 0x03, 0x28, 0x86, 0x4d, 0xa1, 0x8a, 0xd7, 0xb2,
1353                 0x5b, 0x27, 0x01, 0x80, 0x62, 0x49, 0x56, 0xb9,
1354                 0xa0, 0xa1, 0xe3, 0x6e, 0x22, 0x2a, 0x5d, 0x03,
1355                 0x86, 0x40, 0x36, 0x22, 0x5e, 0xd2, 0xe5, 0xc0,
1356                 0x6b, 0xfa, 0xac, 0x80, 0x4e, 0x09, 0x99, 0xbc,
1357                 0x2f, 0x9b, 0xcc, 0xf3, 0x4e, 0xf7, 0x99, 0x98,
1358                 0x11, 0x6e, 0x6f, 0x62, 0x22, 0x6b, 0x92, 0x95,
1359                 0x3b, 0xc3, 0xd2, 0x8e, 0x0f, 0x07, 0xc2, 0x51,
1360                 0x5c, 0x4d, 0xb2, 0x6e, 0xc0, 0x27, 0x73, 0xcd,
1361                 0x57, 0xb7, 0xf0, 0xe9, 0x2e, 0xc8, 0xe2, 0x0c,
1362                 0xd1, 0xb5, 0x0f, 0xff, 0xf9, 0xec, 0x38, 0xba,
1363                 0x97, 0xd6, 0x94, 0x9b, 0xd1, 0x79, 0xb6, 0x6a,
1364                 0x01, 0x17, 0xe4, 0x7e, 0xa6, 0xd5, 0x86, 0x19,
1365                 0xae, 0xf3, 0xf0, 0x62, 0x73, 0xc0, 0xf0, 0x0a,
1366                 0x7a, 0x96, 0x93, 0x72, 0x89, 0x7e, 0x25, 0x57,
1367                 0xf8, 0xf7, 0xd5, 0x1e, 0xe5, 0xac, 0xd6, 0x38,
1368                 0x4f, 0xe8, 0x81, 0xd1, 0x53, 0x41, 0x07, 0x2d,
1369                 0x58, 0x34, 0x1c, 0xef, 0x74, 0x2e, 0x61, 0xca,
1370                 0xd3, 0xeb, 0xd6, 0x93, 0x0a, 0xf2, 0xf2, 0x86,
1371                 0x9c, 0xe3, 0x7a, 0x52, 0xf5, 0x42, 0xf1, 0x8b,
1372                 0x10, 0xf2, 0x25, 0x68, 0x7e, 0x61, 0xb1, 0x19,
1373                 0xcf, 0x8f, 0x5a, 0x53, 0xb7, 0x68, 0x4f, 0x1a,
1374                 0x71, 0xe9, 0x83, 0x91, 0x3a, 0x78, 0x0f, 0xf7,
1375                 0xd4, 0x74, 0xf5, 0x06, 0xd2, 0x88, 0xb0, 0x06,
1376                 0xe5, 0xc0, 0xfb, 0xb3, 0x91, 0xad, 0xc0, 0x84,
1377                 0x31, 0xf2, 0x3a, 0xcf, 0x63, 0xe6, 0x4a, 0xd3,
1378                 0x78, 0xbe, 0xde, 0x73, 0x3e, 0x02, 0x8e, 0xb8,
1379                 0x3a, 0xf6, 0x55, 0xa7, 0xf8, 0x5a, 0xb5, 0x0e,
1380                 0x0c, 0xc5, 0xe5, 0x66, 0xd5, 0xd2, 0x18, 0xf3,
1381                 0xef, 0xa5, 0xc9, 0x68, 0x69, 0xe0, 0xcd, 0x00,
1382                 0x33, 0x99, 0x6e, 0xea, 0xcb, 0x06, 0x7a, 0xe1,
1383                 0xe1, 0x19, 0x0b, 0xe7, 0x08, 0xcd, 0x09, 0x1b,
1384                 0x85, 0xec, 0xc4, 0xd4, 0x75, 0xf0, 0xd6, 0xfb,
1385                 0x84, 0x95, 0x07, 0x44, 0xca, 0xa5, 0x2a, 0x6c,
1386                 0xc2, 0x00, 0x58, 0x08, 0x87, 0x9e, 0x0a, 0xd4,
1387                 0x06, 0xe2, 0x91, 0x5f, 0xb7, 0x1b, 0x11, 0xfa,
1388                 0x85, 0xfc, 0x7c, 0xf2, 0x0f, 0x6e, 0x3c, 0x8a,
1389                 0xe1, 0x0f, 0xa0, 0x33, 0x84, 0xce, 0x81, 0x4d,
1390                 0x32, 0x4d, 0xeb, 0x41, 0xcf, 0x5a, 0x05, 0x60,
1391                 0x47, 0x6c, 0x2a, 0xc4, 0x17, 0xd5, 0x16, 0x3a,
1392                 0xe4, 0xe7, 0xab, 0x84, 0x94, 0x22, 0xff, 0x56,
1393                 0xb0, 0x0c, 0x92, 0x6c, 0x19, 0x11, 0x4c, 0xb3,
1394                 0xed, 0x58, 0x48, 0x84, 0x2a, 0xe2, 0x19, 0x2a,
1395                 0xe1, 0xc0, 0x56, 0x82, 0x3c, 0x83, 0xb4, 0x58,
1396                 0x2d, 0xf0, 0xb5, 0x1e, 0x76, 0x85, 0x51, 0xc2,
1397                 0xe4, 0x95, 0x27, 0x96, 0xd1, 0x90, 0xc3, 0x17,
1398                 0x75, 0xa1, 0xbb, 0x46, 0x5f, 0xa6, 0xf2, 0xef,
1399                 0x71, 0x56, 0x92, 0xc5, 0x8a, 0x85, 0x52, 0xe4,
1400                 0x63, 0x21, 0x6f, 0x55, 0x85, 0x2b, 0x6b, 0x0d,
1401                 0xc9, 0x92, 0x77, 0x67, 0xe3, 0xff, 0x2a, 0x2b,
1402                 0x90, 0x01, 0x3d, 0x74, 0x63, 0x04, 0x61, 0x3c,
1403                 0x8e, 0xf8, 0xfc, 0x04, 0xdd, 0x21, 0x85, 0x92,
1404                 0x1e, 0x4d, 0x51, 0x8d, 0xb5, 0x6b, 0xf1, 0xda,
1405                 0x96, 0xf5, 0x8e, 0x3c, 0x38, 0x5a, 0xac, 0x9b,
1406                 0xba, 0x0c, 0x84, 0x5d, 0x50, 0x12, 0xc7, 0xc5,
1407                 0x7a, 0xcb, 0xb1, 0xfa, 0x16, 0x93, 0xdf, 0x98,
1408                 0xda, 0x3f, 0x49, 0xa3, 0x94, 0x78, 0x70, 0xc7,
1409                 0x0b, 0xb6, 0x91, 0xa6, 0x16, 0x2e, 0xcf, 0xfd,
1410                 0x51, 0x6a, 0x5b, 0xad, 0x7a, 0xdd, 0xa9, 0x48,
1411                 0x48, 0xac, 0xd6, 0x45, 0xbc, 0x23, 0x31, 0x1d,
1412                 0x86, 0x54, 0x8a, 0x7f, 0x04, 0x97, 0x71, 0x9e,
1413                 0xbc, 0x2e, 0x6b, 0xd9, 0x33, 0xc8, 0x20, 0xc9,
1414                 0xe0, 0x25, 0x86, 0x59, 0x15, 0xcf, 0x63, 0xe5,
1415                 0x99, 0xf1, 0x24, 0xf1, 0xba, 0xc4, 0x15, 0x02,
1416                 0xe2, 0xdb, 0xfe, 0x4a, 0xf8, 0x3b, 0x91, 0x13,
1417                 0x8d, 0x03, 0x81, 0x9f, 0xb3, 0x3f, 0x04, 0x03,
1418                 0x58, 0xc0, 0xef, 0x27, 0x82, 0x14, 0xd2, 0x7f,
1419                 0x93, 0x70, 0xb7, 0xb2, 0x02, 0x21, 0xb3, 0x07,
1420                 0x7f, 0x1c, 0xef, 0x88, 0xee, 0x29, 0x7a, 0x0b,
1421                 0x3d, 0x75, 0x5a, 0x93, 0xfe, 0x7f, 0x14, 0xf7,
1422                 0x4e, 0x4b, 0x7f, 0x21, 0x02, 0xad, 0xf9, 0x43,
1423                 0x29, 0x1a, 0xe8, 0x1b, 0xf5, 0x32, 0xb2, 0x96,
1424                 0xe6, 0xe8, 0x96, 0x20, 0x9b, 0x96, 0x8e, 0x7b,
1425                 0xfe, 0xd8, 0xc9, 0x9c, 0x65, 0x16, 0xd6, 0x68,
1426                 0x95, 0xf8, 0x22, 0xe2, 0xae, 0x84, 0x03, 0xfd,
1427                 0x87, 0xa2, 0x72, 0x79, 0x74, 0x95, 0xfa, 0xe1,
1428                 0xfe, 0xd0, 0x4e, 0x3d, 0x39, 0x2e, 0x67, 0x55,
1429                 0x71, 0x6c, 0x89, 0x33, 0x49, 0x0c, 0x1b, 0x46,
1430                 0x92, 0x31, 0x6f, 0xa6, 0xf0, 0x09, 0xbd, 0x2d,
1431                 0xe2, 0xca, 0xda, 0x18, 0x33, 0xce, 0x67, 0x37,
1432                 0xfd, 0x6f, 0xcb, 0x9d, 0xbd, 0x42, 0xbc, 0xb2,
1433                 0x9c, 0x28, 0xcd, 0x65, 0x3c, 0x61, 0xbc, 0xde,
1434                 0x9d, 0xe1, 0x2a, 0x3e, 0xbf, 0xee, 0x3c, 0xcb,
1435                 0xb1, 0x50, 0xa9, 0x2c, 0xbe, 0xb5, 0x43, 0xd0,
1436                 0xec, 0x29, 0xf9, 0x16, 0x6f, 0x31, 0xd9, 0x9b,
1437                 0x92, 0xb1, 0x32, 0xae, 0x0f, 0xb6, 0x9d, 0x0e,
1438                 0x25, 0x7f, 0x89, 0x1f, 0x1d, 0x01, 0x68, 0xab,
1439                 0x3d, 0xd1, 0x74, 0x5b, 0x4c, 0x38, 0x7f, 0x3d,
1440                 0x33, 0xa5, 0xa2, 0x9f, 0xda, 0x84, 0xa5, 0x82,
1441                 0x2d, 0x16, 0x66, 0x46, 0x08, 0x30, 0x14, 0x48,
1442                 0x5e, 0xca, 0xe3, 0xf4, 0x8c, 0xcb, 0x32, 0xc6,
1443                 0xf1, 0x43, 0x62, 0xc6, 0xef, 0x16, 0xfa, 0x43,
1444                 0xae, 0x9c, 0x53, 0xe3, 0x49, 0x45, 0x80, 0xfd,
1445                 0x1d, 0x8c, 0xa9, 0x6d, 0x77, 0x76, 0xaa, 0x40,
1446                 0xc4, 0x4e, 0x7b, 0x78, 0x6b, 0xe0, 0x1d, 0xce,
1447                 0x56, 0x3d, 0xf0, 0x11, 0xfe, 0x4f, 0x6a, 0x6d,
1448                 0x0f, 0x4f, 0x90, 0x38, 0x92, 0x17, 0xfa, 0x56,
1449                 0x12, 0xa6, 0xa1, 0x0a, 0xea, 0x2f, 0x50, 0xf9,
1450                 0x60, 0x66, 0x6c, 0x7d, 0x5a, 0x08, 0x8e, 0x3c,
1451                 0xf3, 0xf0, 0x33, 0x02, 0x11, 0x02, 0xfe, 0x4c,
1452                 0x56, 0x2b, 0x9f, 0x0c, 0xbd, 0x65, 0x8a, 0x83,
1453                 0xde, 0x7c, 0x05, 0x26, 0x93, 0x19, 0xcc, 0xf3,
1454                 0x71, 0x0e, 0xad, 0x2f, 0xb3, 0xc9, 0x38, 0x50,
1455                 0x64, 0xd5, 0x4c, 0x60, 0x5f, 0x02, 0x13, 0x34,
1456                 0xc9, 0x75, 0xc4, 0x60, 0xab, 0x2e, 0x17, 0x7d
1457 };
1458
1459 static const uint8_t AES_CBC_ciphertext_2048B[] = {
1460                 0x8b, 0x55, 0xbd, 0xfd, 0x2b, 0x35, 0x76, 0x5c,
1461                 0xd1, 0x90, 0xd7, 0x6a, 0x63, 0x1e, 0x39, 0x71,
1462                 0x0d, 0x5c, 0xd8, 0x03, 0x00, 0x75, 0xf1, 0x07,
1463                 0x03, 0x8d, 0x76, 0xeb, 0x3b, 0x00, 0x1e, 0x33,
1464                 0x88, 0xfc, 0x8f, 0x08, 0x4d, 0x33, 0xf1, 0x3c,
1465                 0xee, 0xd0, 0x5d, 0x19, 0x8b, 0x3c, 0x50, 0x86,
1466                 0xfd, 0x8d, 0x58, 0x21, 0xb4, 0xae, 0x0f, 0x81,
1467                 0xe9, 0x9f, 0xc9, 0xc0, 0x90, 0xf7, 0x04, 0x6f,
1468                 0x39, 0x1d, 0x8a, 0x3f, 0x8d, 0x32, 0x23, 0xb5,
1469                 0x1f, 0xcc, 0x8a, 0x12, 0x2d, 0x46, 0x82, 0x5e,
1470                 0x6a, 0x34, 0x8c, 0xb1, 0x93, 0x70, 0x3b, 0xde,
1471                 0x55, 0xaf, 0x16, 0x35, 0x99, 0x84, 0xd5, 0x88,
1472                 0xc9, 0x54, 0xb1, 0xb2, 0xd3, 0xeb, 0x9e, 0x55,
1473                 0x9a, 0xa9, 0xa7, 0xf5, 0xda, 0x29, 0xcf, 0xe1,
1474                 0x98, 0x64, 0x45, 0x77, 0xf2, 0x12, 0x69, 0x8f,
1475                 0x78, 0xd8, 0x82, 0x41, 0xb2, 0x9f, 0xe2, 0x1c,
1476                 0x63, 0x9b, 0x24, 0x81, 0x67, 0x95, 0xa2, 0xff,
1477                 0x26, 0x9d, 0x65, 0x48, 0x61, 0x30, 0x66, 0x41,
1478                 0x68, 0x84, 0xbb, 0x59, 0x14, 0x8e, 0x9a, 0x62,
1479                 0xb6, 0xca, 0xda, 0xbe, 0x7c, 0x41, 0x52, 0x6e,
1480                 0x1b, 0x86, 0xbf, 0x08, 0xeb, 0x37, 0x84, 0x60,
1481                 0xe4, 0xc4, 0x1e, 0xa8, 0x4c, 0x84, 0x60, 0x2f,
1482                 0x70, 0x90, 0xf2, 0x26, 0xe7, 0x65, 0x0c, 0xc4,
1483                 0x58, 0x36, 0x8e, 0x4d, 0xdf, 0xff, 0x9a, 0x39,
1484                 0x93, 0x01, 0xcf, 0x6f, 0x6d, 0xde, 0xef, 0x79,
1485                 0xb0, 0xce, 0xe2, 0x98, 0xdb, 0x85, 0x8d, 0x62,
1486                 0x9d, 0xb9, 0x63, 0xfd, 0xf0, 0x35, 0xb5, 0xa9,
1487                 0x1b, 0xf9, 0xe5, 0xd4, 0x2e, 0x22, 0x2d, 0xcc,
1488                 0x42, 0xbf, 0x0e, 0x51, 0xf7, 0x15, 0x07, 0x32,
1489                 0x75, 0x5b, 0x74, 0xbb, 0x00, 0xef, 0xd4, 0x66,
1490                 0x8b, 0xad, 0x71, 0x53, 0x94, 0xd7, 0x7d, 0x2c,
1491                 0x40, 0x3e, 0x69, 0xa0, 0x4c, 0x86, 0x5e, 0x06,
1492                 0xed, 0xdf, 0x22, 0xe2, 0x24, 0x25, 0x4e, 0x9b,
1493                 0x5f, 0x49, 0x74, 0xba, 0xed, 0xb1, 0xa6, 0xeb,
1494                 0xae, 0x3f, 0xc6, 0x9e, 0x0b, 0x29, 0x28, 0x9a,
1495                 0xb6, 0xb2, 0x74, 0x58, 0xec, 0xa6, 0x4a, 0xed,
1496                 0xe5, 0x10, 0x00, 0x85, 0xe1, 0x63, 0x41, 0x61,
1497                 0x30, 0x7c, 0x97, 0xcf, 0x75, 0xcf, 0xb6, 0xf3,
1498                 0xf7, 0xda, 0x35, 0x3f, 0x85, 0x8c, 0x64, 0xca,
1499                 0xb7, 0xea, 0x7f, 0xe4, 0xa3, 0x4d, 0x30, 0x84,
1500                 0x8c, 0x9c, 0x80, 0x5a, 0x50, 0xa5, 0x64, 0xae,
1501                 0x26, 0xd3, 0xb5, 0x01, 0x73, 0x36, 0x8a, 0x92,
1502                 0x49, 0xc4, 0x1a, 0x94, 0x81, 0x9d, 0xf5, 0x6c,
1503                 0x50, 0xe1, 0x58, 0x0b, 0x75, 0xdd, 0x6b, 0x6a,
1504                 0xca, 0x69, 0xea, 0xc3, 0x33, 0x90, 0x9f, 0x3b,
1505                 0x65, 0x5d, 0x5e, 0xee, 0x31, 0xb7, 0x32, 0xfd,
1506                 0x56, 0x83, 0xb6, 0xfb, 0xa8, 0x04, 0xfc, 0x1e,
1507                 0x11, 0xfb, 0x02, 0x23, 0x53, 0x49, 0x45, 0xb1,
1508                 0x07, 0xfc, 0xba, 0xe7, 0x5f, 0x5d, 0x2d, 0x7f,
1509                 0x9e, 0x46, 0xba, 0xe9, 0xb0, 0xdb, 0x32, 0x04,
1510                 0xa4, 0xa7, 0x98, 0xab, 0x91, 0xcd, 0x02, 0x05,
1511                 0xf5, 0x74, 0x31, 0x98, 0x83, 0x3d, 0x33, 0x11,
1512                 0x0e, 0xe3, 0x8d, 0xa8, 0xc9, 0x0e, 0xf3, 0xb9,
1513                 0x47, 0x67, 0xe9, 0x79, 0x2b, 0x34, 0xcd, 0x9b,
1514                 0x45, 0x75, 0x29, 0xf0, 0xbf, 0xcc, 0xda, 0x3a,
1515                 0x91, 0xb2, 0x15, 0x27, 0x7a, 0xe5, 0xf5, 0x6a,
1516                 0x5e, 0xbe, 0x2c, 0x98, 0xe8, 0x40, 0x96, 0x4f,
1517                 0x8a, 0x09, 0xfd, 0xf6, 0xb2, 0xe7, 0x45, 0xb6,
1518                 0x08, 0xc1, 0x69, 0xe1, 0xb3, 0xc4, 0x24, 0x34,
1519                 0x07, 0x85, 0xd5, 0xa9, 0x78, 0xca, 0xfa, 0x4b,
1520                 0x01, 0x19, 0x4d, 0x95, 0xdc, 0xa5, 0xc1, 0x9c,
1521                 0xec, 0x27, 0x5b, 0xa6, 0x54, 0x25, 0xbd, 0xc8,
1522                 0x0a, 0xb7, 0x11, 0xfb, 0x4e, 0xeb, 0x65, 0x2e,
1523                 0xe1, 0x08, 0x9c, 0x3a, 0x45, 0x44, 0x33, 0xef,
1524                 0x0d, 0xb9, 0xff, 0x3e, 0x68, 0x9c, 0x61, 0x2b,
1525                 0x11, 0xb8, 0x5c, 0x47, 0x0f, 0x94, 0xf2, 0xf8,
1526                 0x0b, 0xbb, 0x99, 0x18, 0x85, 0xa3, 0xba, 0x44,
1527                 0xf3, 0x79, 0xb3, 0x63, 0x2c, 0x1f, 0x2a, 0x35,
1528                 0x3b, 0x23, 0x98, 0xab, 0xf4, 0x16, 0x36, 0xf8,
1529                 0xde, 0x86, 0xa4, 0xd4, 0x75, 0xff, 0x51, 0xf9,
1530                 0xeb, 0x42, 0x5f, 0x55, 0xe2, 0xbe, 0xd1, 0x5b,
1531                 0xb5, 0x38, 0xeb, 0xb4, 0x4d, 0xec, 0xec, 0x99,
1532                 0xe1, 0x39, 0x43, 0xaa, 0x64, 0xf7, 0xc9, 0xd8,
1533                 0xf2, 0x9a, 0x71, 0x43, 0x39, 0x17, 0xe8, 0xa8,
1534                 0xa2, 0xe2, 0xa4, 0x2c, 0x18, 0x11, 0x49, 0xdf,
1535                 0x18, 0xdd, 0x85, 0x6e, 0x65, 0x96, 0xe2, 0xba,
1536                 0xa1, 0x0a, 0x2c, 0xca, 0xdc, 0x5f, 0xe4, 0xf4,
1537                 0x35, 0x03, 0xb2, 0xa9, 0xda, 0xcf, 0xb7, 0x6d,
1538                 0x65, 0x82, 0x82, 0x67, 0x9d, 0x0e, 0xf3, 0xe8,
1539                 0x85, 0x6c, 0x69, 0xb8, 0x4c, 0xa6, 0xc6, 0x2e,
1540                 0x40, 0xb5, 0x54, 0x28, 0x95, 0xe4, 0x57, 0xe0,
1541                 0x5b, 0xf8, 0xde, 0x59, 0xe0, 0xfd, 0x89, 0x48,
1542                 0xac, 0x56, 0x13, 0x54, 0xb9, 0x1b, 0xf5, 0x59,
1543                 0x97, 0xb6, 0xb3, 0xe8, 0xac, 0x2d, 0xfc, 0xd2,
1544                 0xea, 0x57, 0x96, 0x57, 0xa8, 0x26, 0x97, 0x2c,
1545                 0x01, 0x89, 0x56, 0xea, 0xec, 0x8c, 0x53, 0xd5,
1546                 0xd7, 0x9e, 0xc9, 0x98, 0x0b, 0xad, 0x03, 0x75,
1547                 0xa0, 0x6e, 0x98, 0x8b, 0x97, 0x8d, 0x8d, 0x85,
1548                 0x7d, 0x74, 0xa7, 0x2d, 0xde, 0x67, 0x0c, 0xcd,
1549                 0x54, 0xb8, 0x15, 0x7b, 0xeb, 0xf5, 0x84, 0xb9,
1550                 0x78, 0xab, 0xd8, 0x68, 0x91, 0x1f, 0x6a, 0xa6,
1551                 0x28, 0x22, 0xf7, 0x00, 0x49, 0x00, 0xbe, 0x41,
1552                 0x71, 0x0a, 0xf5, 0xe7, 0x9f, 0xb4, 0x11, 0x41,
1553                 0x3f, 0xcd, 0xa9, 0xa9, 0x01, 0x8b, 0x6a, 0xeb,
1554                 0x54, 0x4c, 0x58, 0x92, 0x68, 0x02, 0x0e, 0xe9,
1555                 0xed, 0x65, 0x4c, 0xfb, 0x95, 0x48, 0x58, 0xa2,
1556                 0xaa, 0x57, 0x69, 0x13, 0x82, 0x0c, 0x2c, 0x4b,
1557                 0x5d, 0x4e, 0x18, 0x30, 0xef, 0x1c, 0xb1, 0x9d,
1558                 0x05, 0x05, 0x02, 0x1c, 0x97, 0xc9, 0x48, 0xfe,
1559                 0x5e, 0x7b, 0x77, 0xa3, 0x1f, 0x2a, 0x81, 0x42,
1560                 0xf0, 0x4b, 0x85, 0x12, 0x9c, 0x1f, 0x44, 0xb1,
1561                 0x14, 0x91, 0x92, 0x65, 0x77, 0xb1, 0x87, 0xa2,
1562                 0xfc, 0xa4, 0xe7, 0xd2, 0x9b, 0xf2, 0x17, 0xf0,
1563                 0x30, 0x1c, 0x8d, 0x33, 0xbc, 0x25, 0x28, 0x48,
1564                 0xfd, 0x30, 0x79, 0x0a, 0x99, 0x3e, 0xb4, 0x0f,
1565                 0x1e, 0xa6, 0x68, 0x76, 0x19, 0x76, 0x29, 0xac,
1566                 0x5d, 0xb8, 0x1e, 0x42, 0xd6, 0x85, 0x04, 0xbf,
1567                 0x64, 0x1c, 0x2d, 0x53, 0xe9, 0x92, 0x78, 0xf8,
1568                 0xc3, 0xda, 0x96, 0x92, 0x10, 0x6f, 0x45, 0x85,
1569                 0xaf, 0x5e, 0xcc, 0xa8, 0xc0, 0xc6, 0x2e, 0x73,
1570                 0x51, 0x3f, 0x5e, 0xd7, 0x52, 0x33, 0x71, 0x12,
1571                 0x6d, 0x85, 0xee, 0xea, 0x85, 0xa8, 0x48, 0x2b,
1572                 0x40, 0x64, 0x6d, 0x28, 0x73, 0x16, 0xd7, 0x82,
1573                 0xd9, 0x90, 0xed, 0x1f, 0xa7, 0x5c, 0xb1, 0x5c,
1574                 0x27, 0xb9, 0x67, 0x8b, 0xb4, 0x17, 0x13, 0x83,
1575                 0x5f, 0x09, 0x72, 0x0a, 0xd7, 0xa0, 0xec, 0x81,
1576                 0x59, 0x19, 0xb9, 0xa6, 0x5a, 0x37, 0x34, 0x14,
1577                 0x47, 0xf6, 0xe7, 0x6c, 0xd2, 0x09, 0x10, 0xe7,
1578                 0xdd, 0xbb, 0x02, 0xd1, 0x28, 0xfa, 0x01, 0x2c,
1579                 0x93, 0x64, 0x2e, 0x1b, 0x4c, 0x02, 0x52, 0xcb,
1580                 0x07, 0xa1, 0xb6, 0x46, 0x02, 0x80, 0xd9, 0x8f,
1581                 0x5c, 0x62, 0xbe, 0x78, 0x9e, 0x75, 0xc4, 0x97,
1582                 0x91, 0x39, 0x12, 0x65, 0xb9, 0x3b, 0xc2, 0xd1,
1583                 0xaf, 0xf2, 0x1f, 0x4e, 0x4d, 0xd1, 0xf0, 0x9f,
1584                 0xb7, 0x12, 0xfd, 0xe8, 0x75, 0x18, 0xc0, 0x9d,
1585                 0x8c, 0x70, 0xff, 0x77, 0x05, 0xb6, 0x1a, 0x1f,
1586                 0x96, 0x48, 0xf6, 0xfe, 0xd5, 0x5d, 0x98, 0xa5,
1587                 0x72, 0x1c, 0x84, 0x76, 0x3e, 0xb8, 0x87, 0x37,
1588                 0xdd, 0xd4, 0x3a, 0x45, 0xdd, 0x09, 0xd8, 0xe7,
1589                 0x09, 0x2f, 0x3e, 0x33, 0x9e, 0x7b, 0x8c, 0xe4,
1590                 0x85, 0x12, 0x4e, 0xf8, 0x06, 0xb7, 0xb1, 0x85,
1591                 0x24, 0x96, 0xd8, 0xfe, 0x87, 0x92, 0x81, 0xb1,
1592                 0xa3, 0x38, 0xb9, 0x56, 0xe1, 0xf6, 0x36, 0x41,
1593                 0xbb, 0xd6, 0x56, 0x69, 0x94, 0x57, 0xb3, 0xa4,
1594                 0xca, 0xa4, 0xe1, 0x02, 0x3b, 0x96, 0x71, 0xe0,
1595                 0xb2, 0x2f, 0x85, 0x48, 0x1b, 0x4a, 0x41, 0x80,
1596                 0x4b, 0x9c, 0xe0, 0xc9, 0x39, 0xb8, 0xb1, 0xca,
1597                 0x64, 0x77, 0x46, 0x58, 0xe6, 0x84, 0xd5, 0x2b,
1598                 0x65, 0xce, 0xe9, 0x09, 0xa3, 0xaa, 0xfb, 0x83,
1599                 0xa9, 0x28, 0x68, 0xfd, 0xcd, 0xfd, 0x76, 0x83,
1600                 0xe1, 0x20, 0x22, 0x77, 0x3a, 0xa3, 0xb2, 0x93,
1601                 0x14, 0x91, 0xfc, 0xe2, 0x17, 0x63, 0x2b, 0xa6,
1602                 0x29, 0x38, 0x7b, 0x9b, 0x8b, 0x15, 0x77, 0xd6,
1603                 0xaa, 0x92, 0x51, 0x53, 0x50, 0xff, 0xa0, 0x35,
1604                 0xa0, 0x59, 0x7d, 0xf0, 0x11, 0x23, 0x49, 0xdf,
1605                 0x5a, 0x21, 0xc2, 0xfe, 0x35, 0xa0, 0x1d, 0xe2,
1606                 0xae, 0xa2, 0x8a, 0x61, 0x5b, 0xf7, 0xf1, 0x1c,
1607                 0x1c, 0xec, 0xc4, 0xf6, 0xdc, 0xaa, 0xc8, 0xc2,
1608                 0xe5, 0xa1, 0x2e, 0x14, 0xe5, 0xc6, 0xc9, 0x73,
1609                 0x03, 0x78, 0xeb, 0xed, 0xe0, 0x3e, 0xc5, 0xf4,
1610                 0xf1, 0x50, 0xb2, 0x01, 0x91, 0x96, 0xf5, 0xbb,
1611                 0xe1, 0x32, 0xcd, 0xa8, 0x66, 0xbf, 0x73, 0x85,
1612                 0x94, 0xd6, 0x7e, 0x68, 0xc5, 0xe4, 0xed, 0xd5,
1613                 0xe3, 0x67, 0x4c, 0xa5, 0xb3, 0x1f, 0xdf, 0xf8,
1614                 0xb3, 0x73, 0x5a, 0xac, 0xeb, 0x46, 0x16, 0x24,
1615                 0xab, 0xca, 0xa4, 0xdd, 0x87, 0x0e, 0x24, 0x83,
1616                 0x32, 0x04, 0x4c, 0xd8, 0xda, 0x7d, 0xdc, 0xe3,
1617                 0x01, 0x93, 0xf3, 0xc1, 0x5b, 0xbd, 0xc3, 0x1d,
1618                 0x40, 0x62, 0xde, 0x94, 0x03, 0x85, 0x91, 0x2a,
1619                 0xa0, 0x25, 0x10, 0xd3, 0x32, 0x9f, 0x93, 0x00,
1620                 0xa7, 0x8a, 0xfa, 0x77, 0x7c, 0xaf, 0x4d, 0xc8,
1621                 0x7a, 0xf3, 0x16, 0x2b, 0xba, 0xeb, 0x74, 0x51,
1622                 0xb8, 0xdd, 0x32, 0xad, 0x68, 0x7d, 0xdd, 0xca,
1623                 0x60, 0x98, 0xc9, 0x9b, 0xb6, 0x5d, 0x4d, 0x3a,
1624                 0x66, 0x8a, 0xbe, 0x05, 0xf9, 0x0c, 0xc5, 0xba,
1625                 0x52, 0x82, 0x09, 0x1f, 0x5a, 0x66, 0x89, 0x69,
1626                 0xa3, 0x5d, 0x93, 0x50, 0x7d, 0x44, 0xc3, 0x2a,
1627                 0xb8, 0xab, 0xec, 0xa6, 0x5a, 0xae, 0x4a, 0x6a,
1628                 0xcd, 0xfd, 0xb6, 0xff, 0x3d, 0x98, 0x05, 0xd9,
1629                 0x5b, 0x29, 0xc4, 0x6f, 0xe0, 0x76, 0xe2, 0x3f,
1630                 0xec, 0xd7, 0xa4, 0x91, 0x63, 0xf5, 0x4e, 0x4b,
1631                 0xab, 0x20, 0x8c, 0x3a, 0x41, 0xed, 0x8b, 0x4b,
1632                 0xb9, 0x01, 0x21, 0xc0, 0x6d, 0xfd, 0x70, 0x5b,
1633                 0x20, 0x92, 0x41, 0x89, 0x74, 0xb7, 0xe9, 0x8b,
1634                 0xfc, 0x6d, 0x17, 0x3f, 0x7f, 0x89, 0x3d, 0x6b,
1635                 0x8f, 0xbc, 0xd2, 0x57, 0xe9, 0xc9, 0x6e, 0xa7,
1636                 0x19, 0x26, 0x18, 0xad, 0xef, 0xb5, 0x87, 0xbf,
1637                 0xb8, 0xa8, 0xd6, 0x7d, 0xdd, 0x5f, 0x94, 0x54,
1638                 0x09, 0x92, 0x2b, 0xf5, 0x04, 0xf7, 0x36, 0x69,
1639                 0x8e, 0xf4, 0xdc, 0x1d, 0x6e, 0x55, 0xbb, 0xe9,
1640                 0x13, 0x05, 0x83, 0x35, 0x9c, 0xed, 0xcf, 0x8c,
1641                 0x26, 0x8c, 0x7b, 0xc7, 0x0b, 0xba, 0xfd, 0xe2,
1642                 0x84, 0x5c, 0x2a, 0x79, 0x43, 0x99, 0xb2, 0xc3,
1643                 0x82, 0x87, 0xc8, 0xcd, 0x37, 0x6d, 0xa1, 0x2b,
1644                 0x39, 0xb2, 0x38, 0x99, 0xd9, 0xfc, 0x02, 0x15,
1645                 0x55, 0x21, 0x62, 0x59, 0xeb, 0x00, 0x86, 0x08,
1646                 0x20, 0xbe, 0x1a, 0x62, 0x4d, 0x7e, 0xdf, 0x68,
1647                 0x73, 0x5b, 0x5f, 0xaf, 0x84, 0x96, 0x2e, 0x1f,
1648                 0x6b, 0x03, 0xc9, 0xa6, 0x75, 0x18, 0xe9, 0xd4,
1649                 0xbd, 0xc8, 0xec, 0x9a, 0x5a, 0xb3, 0x99, 0xab,
1650                 0x5f, 0x7c, 0x08, 0x7f, 0x69, 0x4d, 0x52, 0xa2,
1651                 0x30, 0x17, 0x3b, 0x16, 0x15, 0x1b, 0x11, 0x62,
1652                 0x3e, 0x80, 0x4b, 0x85, 0x7c, 0x9c, 0xd1, 0x3a,
1653                 0x13, 0x01, 0x5e, 0x45, 0xf1, 0xc8, 0x5f, 0xcd,
1654                 0x0e, 0x21, 0xf5, 0x82, 0xd4, 0x7b, 0x5c, 0x45,
1655                 0x27, 0x6b, 0xef, 0xfe, 0xb8, 0xc0, 0x6f, 0xdc,
1656                 0x60, 0x7b, 0xe4, 0xd5, 0x75, 0x71, 0xe6, 0xe8,
1657                 0x7d, 0x6b, 0x6d, 0x80, 0xaf, 0x76, 0x41, 0x58,
1658                 0xb7, 0xac, 0xb7, 0x13, 0x2f, 0x81, 0xcc, 0xf9,
1659                 0x19, 0x97, 0xe8, 0xee, 0x40, 0x91, 0xfc, 0x89,
1660                 0x13, 0x1e, 0x67, 0x9a, 0xdb, 0x8f, 0x8f, 0xc7,
1661                 0x4a, 0xc9, 0xaf, 0x2f, 0x67, 0x01, 0x3c, 0xb8,
1662                 0xa8, 0x3e, 0x78, 0x93, 0x1b, 0xdf, 0xbb, 0x34,
1663                 0x0b, 0x1a, 0xfa, 0xc2, 0x2d, 0xc5, 0x1c, 0xec,
1664                 0x97, 0x4f, 0x48, 0x41, 0x15, 0x0e, 0x75, 0xed,
1665                 0x66, 0x8c, 0x17, 0x7f, 0xb1, 0x48, 0x13, 0xc1,
1666                 0xfb, 0x60, 0x06, 0xf9, 0x72, 0x41, 0x3e, 0xcf,
1667                 0x6e, 0xb6, 0xc8, 0xeb, 0x4b, 0x5a, 0xd2, 0x0c,
1668                 0x28, 0xda, 0x02, 0x7a, 0x46, 0x21, 0x42, 0xb5,
1669                 0x34, 0xda, 0xcb, 0x5e, 0xbd, 0x66, 0x5c, 0xca,
1670                 0xff, 0x52, 0x43, 0x89, 0xf9, 0x10, 0x9a, 0x9e,
1671                 0x9b, 0xe3, 0xb0, 0x51, 0xe9, 0xf3, 0x0a, 0x35,
1672                 0x77, 0x54, 0xcc, 0xac, 0xa6, 0xf1, 0x2e, 0x36,
1673                 0x89, 0xac, 0xc5, 0xc6, 0x62, 0x5a, 0xc0, 0x6d,
1674                 0xc4, 0xe1, 0xf7, 0x64, 0x30, 0xff, 0x11, 0x40,
1675                 0x13, 0x89, 0xd8, 0xd7, 0x73, 0x3f, 0x93, 0x08,
1676                 0x68, 0xab, 0x66, 0x09, 0x1a, 0xea, 0x78, 0xc9,
1677                 0x52, 0xf2, 0xfd, 0x93, 0x1b, 0x94, 0xbe, 0x5c,
1678                 0xe5, 0x00, 0x6e, 0x00, 0xb9, 0xea, 0x27, 0xaa,
1679                 0xb3, 0xee, 0xe3, 0xc8, 0x6a, 0xb0, 0xc1, 0x8e,
1680                 0x9b, 0x54, 0x40, 0x10, 0x96, 0x06, 0xe8, 0xb3,
1681                 0xf5, 0x55, 0x77, 0xd7, 0x5c, 0x94, 0xc1, 0x74,
1682                 0xf3, 0x07, 0x64, 0xac, 0x1c, 0xde, 0xc7, 0x22,
1683                 0xb0, 0xbf, 0x2a, 0x5a, 0xc0, 0x8f, 0x8a, 0x83,
1684                 0x50, 0xc2, 0x5e, 0x97, 0xa0, 0xbe, 0x49, 0x7e,
1685                 0x47, 0xaf, 0xa7, 0x20, 0x02, 0x35, 0xa4, 0x57,
1686                 0xd9, 0x26, 0x63, 0xdb, 0xf1, 0x34, 0x42, 0x89,
1687                 0x36, 0xd1, 0x77, 0x6f, 0xb1, 0xea, 0x79, 0x7e,
1688                 0x95, 0x10, 0x5a, 0xee, 0xa3, 0xae, 0x6f, 0xba,
1689                 0xa9, 0xef, 0x5a, 0x7e, 0x34, 0x03, 0x04, 0x07,
1690                 0x92, 0xd6, 0x07, 0x79, 0xaa, 0x14, 0x90, 0x97,
1691                 0x05, 0x4d, 0xa6, 0x27, 0x10, 0x5c, 0x25, 0x24,
1692                 0xcb, 0xcc, 0xf6, 0x77, 0x9e, 0x43, 0x23, 0xd4,
1693                 0x98, 0xef, 0x22, 0xa8, 0xad, 0xf2, 0x26, 0x08,
1694                 0x59, 0x69, 0xa4, 0xc3, 0x97, 0xe0, 0x5c, 0x6f,
1695                 0xeb, 0x3d, 0xd4, 0x62, 0x6e, 0x80, 0x61, 0x02,
1696                 0xf4, 0xfc, 0x94, 0x79, 0xbb, 0x4e, 0x6d, 0xd7,
1697                 0x30, 0x5b, 0x10, 0x11, 0x5a, 0x3d, 0xa7, 0x50,
1698                 0x1d, 0x9a, 0x13, 0x5f, 0x4f, 0xa8, 0xa7, 0xb6,
1699                 0x39, 0xc7, 0xea, 0xe6, 0x19, 0x61, 0x69, 0xc7,
1700                 0x9a, 0x3a, 0xeb, 0x9d, 0xdc, 0xf7, 0x06, 0x37,
1701                 0xbd, 0xac, 0xe3, 0x18, 0xff, 0xfe, 0x11, 0xdb,
1702                 0x67, 0x42, 0xb4, 0xea, 0xa8, 0xbd, 0xb0, 0x76,
1703                 0xd2, 0x74, 0x32, 0xc2, 0xa4, 0x9c, 0xe7, 0x60,
1704                 0xc5, 0x30, 0x9a, 0x57, 0x66, 0xcd, 0x0f, 0x02,
1705                 0x4c, 0xea, 0xe9, 0xd3, 0x2a, 0x5c, 0x09, 0xc2,
1706                 0xff, 0x6a, 0xde, 0x5d, 0xb7, 0xe9, 0x75, 0x6b,
1707                 0x29, 0x94, 0xd6, 0xf7, 0xc3, 0xdf, 0xfb, 0x70,
1708                 0xec, 0xb5, 0x8c, 0xb0, 0x78, 0x7a, 0xee, 0x52,
1709                 0x5f, 0x8c, 0xae, 0x85, 0xe5, 0x98, 0xa2, 0xb7,
1710                 0x7c, 0x02, 0x2a, 0xcc, 0x9e, 0xde, 0x99, 0x5f,
1711                 0x84, 0x20, 0xbb, 0xdc, 0xf2, 0xd2, 0x13, 0x46,
1712                 0x3c, 0xd6, 0x4d, 0xe7, 0x50, 0xef, 0x55, 0xc3,
1713                 0x96, 0x9f, 0xec, 0x6c, 0xd8, 0xe2, 0xea, 0xed,
1714                 0xc7, 0x33, 0xc9, 0xb3, 0x1c, 0x4f, 0x1d, 0x83,
1715                 0x1d, 0xe4, 0xdd, 0xb2, 0x24, 0x8f, 0xf9, 0xf5
1716 };
1717
1718
1719 static const uint8_t HMAC_SHA256_ciphertext_64B_digest[] = {
1720                 0xc5, 0x6d, 0x4f, 0x29, 0xf4, 0xd2, 0xcc, 0x87,
1721                 0x3c, 0x81, 0x02, 0x6d, 0x38, 0x7a, 0x67, 0x3e,
1722                 0x95, 0x9c, 0x5c, 0x8f, 0xda, 0x5c, 0x06, 0xe0,
1723                 0x65, 0xf1, 0x6c, 0x51, 0x52, 0x49, 0x3e, 0x5f
1724 };
1725
1726 static const uint8_t HMAC_SHA256_ciphertext_128B_digest[] = {
1727                 0x76, 0x64, 0x2d, 0x69, 0x71, 0x5d, 0x6a, 0xd8,
1728                 0x9f, 0x74, 0x11, 0x2f, 0x58, 0xe0, 0x4a, 0x2f,
1729                 0x6c, 0x88, 0x5e, 0x4d, 0x9c, 0x79, 0x83, 0x1c,
1730                 0x8a, 0x14, 0xd0, 0x07, 0xfb, 0xbf, 0x6c, 0x8f
1731 };
1732
1733 static const uint8_t HMAC_SHA256_ciphertext_256B_digest[] = {
1734                 0x05, 0xa7, 0x44, 0xcd, 0x91, 0x8c, 0x95, 0xcf,
1735                 0x7b, 0x8f, 0xd3, 0x90, 0x86, 0x7e, 0x7b, 0xb9,
1736                 0x05, 0xd6, 0x6e, 0x7a, 0xc1, 0x7b, 0x26, 0xff,
1737                 0xd3, 0x4b, 0xe0, 0x22, 0x8b, 0xa8, 0x47, 0x52
1738 };
1739
1740 static const uint8_t HMAC_SHA256_ciphertext_512B_digest[] = {
1741                 0x08, 0xb7, 0x29, 0x54, 0x18, 0x7e, 0x97, 0x49,
1742                 0xc6, 0x7c, 0x9f, 0x94, 0xa5, 0x4f, 0xa2, 0x25,
1743                 0xd0, 0xe2, 0x30, 0x7b, 0xad, 0x93, 0xc9, 0x12,
1744                 0x0f, 0xf0, 0xf0, 0x71, 0xc2, 0xf6, 0x53, 0x8f
1745 };
1746
1747 static const uint8_t HMAC_SHA256_ciphertext_768B_digest[] = {
1748                 0xe4, 0x3e, 0x73, 0x93, 0x03, 0xaf, 0x6f, 0x9c,
1749                 0xca, 0x57, 0x3b, 0x4a, 0x6e, 0x83, 0x58, 0xf5,
1750                 0x66, 0xc2, 0xb4, 0xa7, 0xe0, 0xee, 0x63, 0x6b,
1751                 0x48, 0xb7, 0x50, 0x45, 0x69, 0xdf, 0x5c, 0x5b
1752 };
1753
1754 static const uint8_t HMAC_SHA256_ciphertext_1024B_digest[] = {
1755                 0x03, 0xb9, 0x96, 0x26, 0xdc, 0x1c, 0xab, 0xe2,
1756                 0xf5, 0x70, 0x55, 0x15, 0x67, 0x6e, 0x48, 0x11,
1757                 0xe7, 0x67, 0xea, 0xfa, 0x5c, 0x6b, 0x28, 0x22,
1758                 0xc9, 0x0e, 0x67, 0x04, 0xb3, 0x71, 0x7f, 0x88
1759 };
1760
1761 static const uint8_t HMAC_SHA256_ciphertext_1280B_digest[] = {
1762                 0x01, 0x91, 0xb8, 0x78, 0xd3, 0x21, 0x74, 0xa5,
1763                 0x1c, 0x8b, 0xd4, 0xd2, 0xc0, 0x49, 0xd7, 0xd2,
1764                 0x16, 0x46, 0x66, 0x85, 0x50, 0x6d, 0x08, 0xcc,
1765                 0xc7, 0x0a, 0xa3, 0x71, 0xcc, 0xde, 0xee, 0xdc
1766 };
1767
1768 static const uint8_t HMAC_SHA256_ciphertext_1536B_digest[] = {
1769                 0xf2, 0xe5, 0xe9, 0x57, 0x53, 0xd7, 0x69, 0x28,
1770                 0x7b, 0x69, 0xb5, 0x49, 0xa3, 0x31, 0x56, 0x5f,
1771                 0xa4, 0xe9, 0x87, 0x26, 0x2f, 0xe0, 0x2d, 0xd6,
1772                 0x08, 0x44, 0x01, 0x71, 0x0c, 0x93, 0x85, 0x84
1773 };
1774
1775 static const uint8_t HMAC_SHA256_ciphertext_1792B_digest[] = {
1776                 0xf6, 0x57, 0x62, 0x01, 0xbf, 0x2d, 0xea, 0x4a,
1777                 0xef, 0x43, 0x85, 0x60, 0x18, 0xdf, 0x8b, 0xb4,
1778                 0x60, 0xc0, 0xfd, 0x2f, 0x90, 0x15, 0xe6, 0x91,
1779                 0x56, 0x61, 0x68, 0x7f, 0x5e, 0x92, 0xa8, 0xdd
1780 };
1781
1782 static const uint8_t HMAC_SHA256_ciphertext_2048B_digest[] = {
1783                 0x81, 0x1a, 0x29, 0xbc, 0x6b, 0x9f, 0xbb, 0xb8,
1784                 0xef, 0x71, 0x7b, 0x1f, 0x6f, 0xd4, 0x7e, 0x68,
1785                 0x3a, 0x9c, 0xb9, 0x98, 0x22, 0x81, 0xfa, 0x95,
1786                 0xee, 0xbc, 0x7f, 0x23, 0x29, 0x88, 0x76, 0xb8
1787 };
1788
1789 struct crypto_data_params {
1790         const char *name;
1791         uint16_t length;
1792         const char *plaintext;
1793         struct crypto_expected_output {
1794                 const uint8_t *ciphertext;
1795                 const uint8_t *digest;
1796         } expected;
1797 };
1798
1799 #define MAX_PACKET_SIZE_INDEX   10
1800
1801 struct crypto_data_params aes_cbc_hmac_sha256_output[MAX_PACKET_SIZE_INDEX] = {
1802         { "64B", 64, &plaintext_quote[sizeof(plaintext_quote) - 1 - 64],
1803                 { AES_CBC_ciphertext_64B, HMAC_SHA256_ciphertext_64B_digest } },
1804         { "128B", 128, &plaintext_quote[sizeof(plaintext_quote) - 1 - 128],
1805                 { AES_CBC_ciphertext_128B, HMAC_SHA256_ciphertext_128B_digest } },
1806         { "256B", 256, &plaintext_quote[sizeof(plaintext_quote) - 1 - 256],
1807                 { AES_CBC_ciphertext_256B, HMAC_SHA256_ciphertext_256B_digest } },
1808         { "512B", 512, &plaintext_quote[sizeof(plaintext_quote) - 1 - 512],
1809                 { AES_CBC_ciphertext_512B, HMAC_SHA256_ciphertext_512B_digest } },
1810         { "768B", 768, &plaintext_quote[sizeof(plaintext_quote) - 1 - 768],
1811                 { AES_CBC_ciphertext_768B, HMAC_SHA256_ciphertext_768B_digest } },
1812         { "1024B", 1024, &plaintext_quote[sizeof(plaintext_quote) - 1 - 1024],
1813                 { AES_CBC_ciphertext_1024B, HMAC_SHA256_ciphertext_1024B_digest } },
1814         { "1280B", 1280, &plaintext_quote[sizeof(plaintext_quote) - 1 - 1280],
1815                 { AES_CBC_ciphertext_1280B, HMAC_SHA256_ciphertext_1280B_digest } },
1816         { "1536B", 1536, &plaintext_quote[sizeof(plaintext_quote) - 1 - 1536],
1817                 { AES_CBC_ciphertext_1536B, HMAC_SHA256_ciphertext_1536B_digest } },
1818         { "1792B", 1792, &plaintext_quote[sizeof(plaintext_quote) - 1 - 1792],
1819                 { AES_CBC_ciphertext_1792B, HMAC_SHA256_ciphertext_1792B_digest } },
1820         { "2048B", 2048, &plaintext_quote[sizeof(plaintext_quote) - 1 - 2048],
1821                 { AES_CBC_ciphertext_2048B, HMAC_SHA256_ciphertext_2048B_digest } }
1822 };
1823
1824 static int
1825 test_perf_crypto_qp_vary_burst_size(uint16_t dev_num)
1826 {
1827         uint32_t num_to_submit = 4096;
1828         struct rte_crypto_op *c_ops[num_to_submit];
1829         struct rte_crypto_op *proc_ops[num_to_submit];
1830         uint64_t failed_polls, retries, start_cycles, end_cycles, total_cycles = 0;
1831         uint32_t burst_sent, burst_received;
1832         uint32_t i, burst_size, num_sent, num_received;
1833         struct crypto_testsuite_params *ts_params = &testsuite_params;
1834         struct crypto_unittest_params *ut_params = &unittest_params;
1835         struct crypto_data_params *data_params = aes_cbc_hmac_sha256_output;
1836
1837         if (rte_cryptodev_count() == 0) {
1838                 printf("\nNo crypto devices available. Is kernel driver loaded?\n");
1839                 return TEST_FAILED;
1840         }
1841
1842         /* Setup Cipher Parameters */
1843         ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
1844         ut_params->cipher_xform.next = &ut_params->auth_xform;
1845
1846         ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
1847         ut_params->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_DECRYPT;
1848         ut_params->cipher_xform.cipher.key.data = aes_cbc_128_key;
1849         ut_params->cipher_xform.cipher.key.length = CIPHER_IV_LENGTH_AES_CBC;
1850
1851
1852         /* Setup HMAC Parameters */
1853         ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
1854         ut_params->auth_xform.next = NULL;
1855
1856         ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_VERIFY;
1857         ut_params->auth_xform.auth.algo = RTE_CRYPTO_AUTH_SHA256_HMAC;
1858         ut_params->auth_xform.auth.key.data = hmac_sha256_key;
1859         ut_params->auth_xform.auth.key.length = HMAC_KEY_LENGTH_SHA256;
1860         ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_SHA256;
1861
1862         /* Create Crypto session*/
1863         ut_params->sess = rte_cryptodev_sym_session_create(ts_params->dev_id,
1864                 &ut_params->cipher_xform);
1865
1866         TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
1867
1868         /* Generate Crypto op data structure(s) */
1869         for (i = 0; i < num_to_submit ; i++) {
1870                 struct rte_mbuf *m = setup_test_string(ts_params->mbuf_mp,
1871                                 data_params[0].expected.ciphertext,
1872                                 data_params[0].length, 0);
1873                 TEST_ASSERT_NOT_NULL(m, "Failed to allocate tx_buf");
1874
1875                 ut_params->digest = (uint8_t *)rte_pktmbuf_append(m,
1876                                 DIGEST_BYTE_LENGTH_SHA256);
1877                 TEST_ASSERT_NOT_NULL(ut_params->digest,
1878                                 "no room to append digest");
1879
1880                 rte_memcpy(ut_params->digest, data_params[0].expected.digest,
1881                         DIGEST_BYTE_LENGTH_SHA256);
1882
1883
1884                 struct rte_crypto_op *op =
1885                                 rte_crypto_op_alloc(ts_params->op_mpool,
1886                                                 RTE_CRYPTO_OP_TYPE_SYMMETRIC);
1887
1888                 rte_crypto_op_attach_sym_session(op, ut_params->sess);
1889
1890                 op->sym->auth.digest.data = ut_params->digest;
1891                 op->sym->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(m,
1892                                 data_params[0].length);
1893                 op->sym->auth.digest.length = DIGEST_BYTE_LENGTH_SHA256;
1894
1895                 op->sym->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
1896                 op->sym->auth.data.length = data_params[0].length;
1897
1898
1899                 op->sym->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(m,
1900                                 CIPHER_IV_LENGTH_AES_CBC);
1901                 op->sym->cipher.iv.phys_addr = rte_pktmbuf_mtophys(m);
1902                 op->sym->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
1903
1904                 rte_memcpy(op->sym->cipher.iv.data, aes_cbc_128_iv,
1905                                 CIPHER_IV_LENGTH_AES_CBC);
1906
1907                 op->sym->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
1908                 op->sym->cipher.data.length = data_params[0].length;
1909
1910                 op->sym->m_src = m;
1911
1912                 c_ops[i] = op;
1913         }
1914
1915         printf("\nTest to measure the IA cycle cost using AES128_CBC_SHA256_HMAC "
1916                         "algorithm with a constant request size of %u.",
1917                         data_params[0].length);
1918         printf("\nThis test will keep retries at 0 and only measure IA cycle "
1919                         "cost for each request.");
1920         printf("\nDev No\tQP No\tNum Sent\tNum Received\tTx/Rx burst");
1921         printf("\tRetries (Device Busy)\tAverage IA cycle cost "
1922                         "(assuming 0 retries)");
1923         for (i = 2; i <= 128 ; i *= 2) {
1924                 num_sent = 0;
1925                 num_received = 0;
1926                 retries = 0;
1927                 failed_polls = 0;
1928                 burst_size = i;
1929                 total_cycles = 0;
1930                 while (num_sent < num_to_submit) {
1931                         start_cycles = rte_rdtsc_precise();
1932                         burst_sent = rte_cryptodev_enqueue_burst(dev_num,
1933                                         0, &c_ops[num_sent],
1934                                         ((num_to_submit-num_sent) < burst_size) ?
1935                                         num_to_submit-num_sent : burst_size);
1936                         if (burst_sent == 0)
1937                                 retries++;
1938                         else
1939                                 num_sent += burst_sent;
1940                         end_cycles = rte_rdtsc_precise();
1941                         total_cycles += (end_cycles - start_cycles);
1942                         /*
1943                          * Wait until requests have been sent.
1944                          */
1945                         rte_delay_ms(1);
1946
1947                         start_cycles = rte_rdtsc_precise();
1948                         burst_received = rte_cryptodev_dequeue_burst(
1949                                         dev_num, 0, proc_ops, burst_size);
1950                         if (burst_received == 0)
1951                                 failed_polls++;
1952                         else
1953                                 num_received += burst_received;
1954                         end_cycles = rte_rdtsc_precise();
1955                         total_cycles += end_cycles - start_cycles;
1956                 }
1957
1958                 while (num_received != num_to_submit) {
1959                         if (gbl_cryptodev_perftest_devtype ==
1960                                         RTE_CRYPTODEV_AESNI_MB_PMD)
1961                                 rte_cryptodev_enqueue_burst(dev_num, 0,
1962                                                 NULL, 0);
1963
1964                         burst_received = rte_cryptodev_dequeue_burst(
1965                                         dev_num, 0, proc_ops, burst_size);
1966                         if (burst_received == 0)
1967                                 failed_polls++;
1968                         else
1969                                 num_received += burst_received;
1970                 }
1971
1972                 printf("\n%u\t%u\t%u\t\t%u\t\t%u", dev_num, 0,
1973                                         num_sent, num_received, burst_size);
1974                 printf("\t\t%"PRIu64, retries);
1975                 printf("\t\t\t%"PRIu64, total_cycles/num_received);
1976         }
1977         printf("\n");
1978
1979         for (i = 0; i < num_to_submit ; i++) {
1980                 rte_pktmbuf_free(c_ops[i]->sym->m_src);
1981                 rte_crypto_op_free(c_ops[i]);
1982         }
1983         return TEST_SUCCESS;
1984 }
1985
1986 static int
1987 test_perf_snow3G_optimise_cyclecount(struct perf_test_params *pparams)
1988 {
1989         uint32_t num_to_submit = pparams->total_operations;
1990         struct rte_crypto_op *c_ops[num_to_submit];
1991         struct rte_crypto_op *proc_ops[num_to_submit];
1992         uint64_t failed_polls, retries, start_cycles, end_cycles, total_cycles = 0;
1993         uint32_t burst_sent = 0, burst_received = 0;
1994         uint32_t i, burst_size, num_sent, num_ops_received;
1995         struct crypto_testsuite_params *ts_params = &testsuite_params;
1996         static struct rte_cryptodev_sym_session *sess;
1997
1998         if (rte_cryptodev_count() == 0) {
1999                 printf("\nNo crypto devices found. Is PMD build configured?\n");
2000                 printf("\nAnd is kernel driver loaded for HW PMDs?\n");
2001                 return TEST_FAILED;
2002         }
2003
2004         /* Create Crypto session*/
2005         sess = test_perf_create_snow3g_session(ts_params->dev_id,
2006                         pparams->chain, pparams->cipher_algo,
2007                         pparams->cipher_key_length, pparams->auth_algo);
2008         TEST_ASSERT_NOT_NULL(sess, "Session creation failed");
2009
2010         /* Generate Crypto op data structure(s)*/
2011         for (i = 0; i < num_to_submit ; i++) {
2012                 struct rte_mbuf *m = test_perf_create_pktmbuf(
2013                                                 ts_params->mbuf_mp,
2014                                                 pparams->buf_size);
2015                 TEST_ASSERT_NOT_NULL(m, "Failed to allocate tx_buf");
2016
2017                 struct rte_crypto_op *op =
2018                                 rte_crypto_op_alloc(ts_params->op_mpool,
2019                                                 RTE_CRYPTO_OP_TYPE_SYMMETRIC);
2020                 TEST_ASSERT_NOT_NULL(op, "Failed to allocate op");
2021
2022                 op = test_perf_set_crypto_op_snow3g(op, m, sess, pparams->buf_size,
2023                                         get_auth_digest_length(pparams->auth_algo));
2024                 TEST_ASSERT_NOT_NULL(op, "Failed to attach op to session");
2025
2026                 c_ops[i] = op;
2027         }
2028
2029         printf("\nOn %s dev%u qp%u, %s, cipher algo:%s, auth_algo:%s, "
2030                         "Packet Size %u bytes",
2031                         pmd_name(gbl_cryptodev_perftest_devtype),
2032                         ts_params->dev_id, 0,
2033                         chain_mode_name(pparams->chain),
2034                         cipher_algo_name(pparams->cipher_algo),
2035                         auth_algo_name(pparams->auth_algo),
2036                         pparams->buf_size);
2037         printf("\nOps Tx\tOps Rx\tOps/burst  ");
2038         printf("Retries  EmptyPolls\tIACycles/CyOp\tIACycles/Burst\tIACycles/Byte");
2039
2040         for (i = 2; i <= 128 ; i *= 2) {
2041                 num_sent = 0;
2042                 num_ops_received = 0;
2043                 retries = 0;
2044                 failed_polls = 0;
2045                 burst_size = i;
2046                 total_cycles = 0;
2047                 while (num_sent < num_to_submit) {
2048                         start_cycles = rte_rdtsc_precise();
2049                         burst_sent = rte_cryptodev_enqueue_burst(ts_params->dev_id,
2050                                         0, &c_ops[num_sent],
2051                                         ((num_to_submit-num_sent) < burst_size) ?
2052                                         num_to_submit-num_sent : burst_size);
2053                         end_cycles = rte_rdtsc_precise();
2054                         if (burst_sent == 0)
2055                                 retries++;
2056                         num_sent += burst_sent;
2057                         total_cycles += (end_cycles - start_cycles);
2058
2059                         /* Wait until requests have been sent. */
2060
2061                         rte_delay_ms(1);
2062
2063                         start_cycles = rte_rdtsc_precise();
2064                         burst_received = rte_cryptodev_dequeue_burst(
2065                                         ts_params->dev_id, 0, proc_ops, burst_size);
2066                         end_cycles = rte_rdtsc_precise();
2067                         if (burst_received < burst_sent)
2068                                 failed_polls++;
2069                         num_ops_received += burst_received;
2070
2071                         total_cycles += end_cycles - start_cycles;
2072                 }
2073
2074                 while (num_ops_received != num_to_submit) {
2075                         if (gbl_cryptodev_perftest_devtype ==
2076                                         RTE_CRYPTODEV_AESNI_MB_PMD)
2077                                 rte_cryptodev_enqueue_burst(ts_params->dev_id, 0,
2078                                                 NULL, 0);
2079                         start_cycles = rte_rdtsc_precise();
2080                         burst_received = rte_cryptodev_dequeue_burst(
2081                                         ts_params->dev_id, 0, proc_ops, burst_size);
2082                         end_cycles = rte_rdtsc_precise();
2083                         total_cycles += end_cycles - start_cycles;
2084                         if (burst_received == 0)
2085                                 failed_polls++;
2086                         num_ops_received += burst_received;
2087                 }
2088
2089                 printf("\n%u\t%u\t%u", num_sent, num_ops_received, burst_size);
2090                 printf("\t\t%"PRIu64, retries);
2091                 printf("\t%"PRIu64, failed_polls);
2092                 printf("\t\t%"PRIu64, total_cycles/num_ops_received);
2093                 printf("\t\t%"PRIu64, (total_cycles/num_ops_received)*burst_size);
2094                 printf("\t\t%"PRIu64, total_cycles/(num_ops_received*pparams->buf_size));
2095         }
2096         printf("\n");
2097
2098         for (i = 0; i < num_to_submit ; i++) {
2099                 rte_pktmbuf_free(c_ops[i]->sym->m_src);
2100                 rte_crypto_op_free(c_ops[i]);
2101         }
2102
2103         return TEST_SUCCESS;
2104 }
2105
2106 static int
2107 test_perf_snow3G_vary_burst_size(void)
2108 {
2109         unsigned total_operations = 4096;
2110         /*no need to vary pkt size for QAT, should have no effect on IA cycles */
2111         uint16_t buf_lengths[] = {40};
2112         uint8_t i, j;
2113
2114         struct perf_test_params params_set[] = {
2115                         {
2116                                         .chain = CIPHER_ONLY,
2117                                         .cipher_algo  = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
2118                                         .cipher_key_length = 16,
2119                                         .auth_algo  = RTE_CRYPTO_AUTH_NULL,
2120                         },
2121                         {
2122                                         .chain = HASH_ONLY,
2123                                         .cipher_algo = RTE_CRYPTO_CIPHER_NULL,
2124                                         .auth_algo  = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
2125                                         .cipher_key_length = 16
2126                         },
2127         };
2128
2129         printf("\n\nStart %s.", __func__);
2130         printf("\nThis Test measures the average IA cycle cost using a "
2131                         "constant request(packet) size. ");
2132         printf("Cycle cost is only valid when indicators show device is not busy,"
2133                         " i.e. Retries and EmptyPolls = 0");
2134
2135         for (i = 0; i < RTE_DIM(params_set); i++) {
2136                 printf("\n");
2137                 params_set[i].total_operations = total_operations;
2138
2139                 for (j = 0;
2140                         j < RTE_DIM(buf_lengths);
2141                         j++) {
2142
2143                         params_set[i].buf_size = buf_lengths[j];
2144
2145                         test_perf_snow3G_optimise_cyclecount(&params_set[i]);
2146                 }
2147
2148         }
2149
2150         return 0;
2151 }
2152
2153 static uint32_t get_auth_key_max_length(enum rte_crypto_auth_algorithm algo)
2154 {
2155         switch (algo) {
2156         case RTE_CRYPTO_AUTH_SNOW3G_UIA2:
2157                 return 16;
2158         case RTE_CRYPTO_AUTH_SHA1_HMAC:
2159                 return 64;
2160         case RTE_CRYPTO_AUTH_SHA224_HMAC:
2161                 return 64;
2162         case RTE_CRYPTO_AUTH_SHA256_HMAC:
2163                 return 64;
2164         case RTE_CRYPTO_AUTH_SHA384_HMAC:
2165                 return 128;
2166         case RTE_CRYPTO_AUTH_SHA512_HMAC:
2167                 return 128;
2168         default:
2169                 return 0;
2170         }
2171 }
2172
2173 static uint32_t get_auth_digest_length(enum rte_crypto_auth_algorithm algo)
2174 {
2175         switch (algo) {
2176         case RTE_CRYPTO_AUTH_SNOW3G_UIA2:
2177                 return 4;
2178         case RTE_CRYPTO_AUTH_SHA1_HMAC:
2179                 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA1;
2180         case RTE_CRYPTO_AUTH_SHA224_HMAC:
2181                 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA224;
2182         case RTE_CRYPTO_AUTH_SHA256_HMAC:
2183                 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA256;
2184         case RTE_CRYPTO_AUTH_SHA384_HMAC:
2185                 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA384;
2186         case RTE_CRYPTO_AUTH_SHA512_HMAC:
2187                 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA512;
2188         default:
2189                 return 0;
2190         }
2191 }
2192
2193 static uint8_t aes_cbc_key[] = {
2194                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2195                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2196                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2197                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
2198 };
2199
2200 static uint8_t aes_cbc_iv[] = {
2201                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2202                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
2203 };
2204
2205 static uint8_t hmac_sha_key[] = {
2206                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2207                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2208                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2209                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2210                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2211                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2212                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2213                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2214                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2215                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2216                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2217                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2218                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2219                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2220                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2221                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
2222 };
2223
2224 static uint8_t snow3g_cipher_key[] = {
2225                 0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00,
2226                 0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48
2227 };
2228
2229 static uint8_t snow3g_iv[] = {
2230                 0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00,
2231                 0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00
2232 };
2233
2234 static uint8_t snow3g_hash_key[] = {
2235                 0xC7, 0x36, 0xC6, 0xAA, 0xB2, 0x2B, 0xFF, 0xF9,
2236                 0x1E, 0x26, 0x98, 0xD2, 0xE2, 0x2A, 0xD5, 0x7E
2237 };
2238
2239 static struct rte_cryptodev_sym_session *
2240 test_perf_create_aes_sha_session(uint8_t dev_id, enum chain_mode chain,
2241                 enum rte_crypto_cipher_algorithm cipher_algo,
2242                 unsigned cipher_key_len,
2243                 enum rte_crypto_auth_algorithm auth_algo)
2244 {
2245         struct rte_crypto_sym_xform cipher_xform = { 0 };
2246         struct rte_crypto_sym_xform auth_xform = { 0 };
2247
2248
2249         /* Setup Cipher Parameters */
2250         cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
2251         cipher_xform.cipher.algo = cipher_algo;
2252         cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
2253
2254         cipher_xform.cipher.key.data = aes_cbc_key;
2255         cipher_xform.cipher.key.length = cipher_key_len;
2256
2257         /* Setup HMAC Parameters */
2258         auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
2259         auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
2260         auth_xform.auth.algo = auth_algo;
2261
2262         auth_xform.auth.key.data = hmac_sha_key;
2263         auth_xform.auth.key.length =  get_auth_key_max_length(auth_algo);
2264         auth_xform.auth.digest_length = get_auth_digest_length(auth_algo);
2265
2266         switch (chain) {
2267         case CIPHER_HASH:
2268                 cipher_xform.next = &auth_xform;
2269                 auth_xform.next = NULL;
2270                 /* Create Crypto session*/
2271                 return rte_cryptodev_sym_session_create(dev_id, &cipher_xform);
2272         case HASH_CIPHER:
2273                 auth_xform.next = &cipher_xform;
2274                 cipher_xform.next = NULL;
2275                 /* Create Crypto session*/
2276                 return rte_cryptodev_sym_session_create(dev_id, &auth_xform);
2277         default:
2278                 return NULL;
2279         }
2280 }
2281
2282 static struct rte_cryptodev_sym_session *
2283 test_perf_create_snow3g_session(uint8_t dev_id, enum chain_mode chain,
2284                 enum rte_crypto_cipher_algorithm cipher_algo, unsigned cipher_key_len,
2285                 enum rte_crypto_auth_algorithm auth_algo)
2286 {
2287         struct rte_crypto_sym_xform cipher_xform = {0};
2288         struct rte_crypto_sym_xform auth_xform = {0};
2289
2290
2291         /* Setup Cipher Parameters */
2292         cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
2293         cipher_xform.cipher.algo = cipher_algo;
2294         cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
2295
2296         cipher_xform.cipher.key.data = snow3g_cipher_key;
2297         cipher_xform.cipher.key.length = cipher_key_len;
2298
2299         /* Setup HMAC Parameters */
2300         auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
2301         auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
2302         auth_xform.auth.algo = auth_algo;
2303
2304         auth_xform.auth.key.data = snow3g_hash_key;
2305         auth_xform.auth.key.length =  get_auth_key_max_length(auth_algo);
2306         auth_xform.auth.digest_length = get_auth_digest_length(auth_algo);
2307
2308         switch (chain) {
2309         case CIPHER_HASH:
2310                 cipher_xform.next = &auth_xform;
2311                 auth_xform.next = NULL;
2312                 /* Create Crypto session*/
2313                 return rte_cryptodev_sym_session_create(dev_id, &cipher_xform);
2314         case HASH_CIPHER:
2315                 auth_xform.next = &cipher_xform;
2316                 cipher_xform.next = NULL;
2317                 /* Create Crypto session*/
2318                 return rte_cryptodev_sym_session_create(dev_id, &auth_xform);
2319         case CIPHER_ONLY:
2320                 cipher_xform.next = NULL;
2321                 /* Create Crypto session*/
2322                 return rte_cryptodev_sym_session_create(dev_id, &cipher_xform);
2323         case HASH_ONLY:
2324                 auth_xform.next = NULL;
2325                 /* Create Crypto session */
2326                 return rte_cryptodev_sym_session_create(dev_id, &auth_xform);
2327         default:
2328                 return NULL;
2329         }
2330 }
2331
2332 #define AES_CBC_BLOCK_SIZE 16
2333 #define AES_CBC_CIPHER_IV_LENGTH 16
2334 #define SNOW3G_CIPHER_IV_LENGTH 16
2335
2336 static struct rte_mbuf *
2337 test_perf_create_pktmbuf(struct rte_mempool *mpool, unsigned buf_sz)
2338 {
2339         struct rte_mbuf *m = rte_pktmbuf_alloc(mpool);
2340
2341         if (rte_pktmbuf_append(m, buf_sz) == NULL) {
2342                 rte_pktmbuf_free(m);
2343                 return NULL;
2344         }
2345
2346         memset(rte_pktmbuf_mtod(m, uint8_t *), 0, buf_sz);
2347
2348         return m;
2349 }
2350
2351 static inline struct rte_crypto_op *
2352 test_perf_set_crypto_op(struct rte_crypto_op *op, struct rte_mbuf *m,
2353                 struct rte_cryptodev_sym_session *sess, unsigned data_len,
2354                 unsigned digest_len)
2355 {
2356         if (rte_crypto_op_attach_sym_session(op, sess) != 0) {
2357                 rte_crypto_op_free(op);
2358                 return NULL;
2359         }
2360
2361         /* Authentication Parameters */
2362         op->sym->auth.digest.data = (uint8_t *)m->buf_addr +
2363                                         (m->data_off + data_len);
2364         op->sym->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(m, data_len);
2365         op->sym->auth.digest.length = digest_len;
2366         op->sym->auth.aad.data = aes_cbc_iv;
2367         op->sym->auth.aad.length = AES_CBC_CIPHER_IV_LENGTH;
2368
2369         /* Cipher Parameters */
2370         op->sym->cipher.iv.data = aes_cbc_iv;
2371         op->sym->cipher.iv.length = AES_CBC_CIPHER_IV_LENGTH;
2372
2373         /* Data lengths/offsets Parameters */
2374         op->sym->auth.data.offset = 0;
2375         op->sym->auth.data.length = data_len;
2376
2377         op->sym->cipher.data.offset = AES_CBC_BLOCK_SIZE;
2378         op->sym->cipher.data.length = data_len - AES_CBC_BLOCK_SIZE;
2379
2380         op->sym->m_src = m;
2381
2382         return op;
2383 }
2384
2385 static inline struct rte_crypto_op *
2386 test_perf_set_crypto_op_snow3g(struct rte_crypto_op *op, struct rte_mbuf *m,
2387                 struct rte_cryptodev_sym_session *sess, unsigned data_len,
2388                 unsigned digest_len)
2389 {
2390         if (rte_crypto_op_attach_sym_session(op, sess) != 0) {
2391                 rte_crypto_op_free(op);
2392                 return NULL;
2393         }
2394
2395         /* Authentication Parameters */
2396         op->sym->auth.digest.data = (uint8_t *)m->buf_addr +
2397                                                 (m->data_off + data_len);
2398         op->sym->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(m, data_len);
2399         op->sym->auth.digest.length = digest_len;
2400         op->sym->auth.aad.data = snow3g_iv;
2401         op->sym->auth.aad.length = SNOW3G_CIPHER_IV_LENGTH;
2402
2403         /* Cipher Parameters */
2404         op->sym->cipher.iv.data = snow3g_iv;
2405         op->sym->cipher.iv.length = SNOW3G_CIPHER_IV_LENGTH;
2406
2407         /* Data lengths/offsets Parameters */
2408         op->sym->auth.data.offset = 0;
2409         op->sym->auth.data.length = data_len << 3;
2410
2411         op->sym->cipher.data.offset = 0;
2412         op->sym->cipher.data.length = data_len << 3;
2413
2414         op->sym->m_src = m;
2415
2416         return op;
2417 }
2418
2419
2420
2421 /* An mbuf set is used in each burst. An mbuf can be used by multiple bursts at
2422  * same time, i.e. as they're not dereferenced there's no need to wait until
2423  * finished with to re-use */
2424 #define NUM_MBUF_SETS 8
2425
2426 static int
2427 test_perf_aes_sha(uint8_t dev_id, uint16_t queue_id,
2428                 struct perf_test_params *pparams)
2429 {
2430         uint16_t i, k, l, m;
2431         uint16_t j = 0;
2432         uint16_t ops_unused = 0;
2433
2434         uint64_t burst_enqueued = 0, total_enqueued = 0, burst_dequeued = 0;
2435         uint64_t processed = 0, failed_polls = 0, retries = 0;
2436         uint64_t tsc_start = 0, tsc_end = 0;
2437
2438         uint16_t digest_length = get_auth_digest_length(pparams->auth_algo);
2439
2440         struct rte_crypto_op *ops[pparams->burst_size];
2441         struct rte_crypto_op *proc_ops[pparams->burst_size];
2442
2443         struct rte_mbuf *mbufs[pparams->burst_size * 8];
2444
2445         struct crypto_testsuite_params *ts_params = &testsuite_params;
2446
2447         static struct rte_cryptodev_sym_session *sess;
2448
2449         if (rte_cryptodev_count() == 0) {
2450                 printf("\nNo crypto devices available. Is kernel driver loaded?\n");
2451                 return TEST_FAILED;
2452         }
2453
2454         /* Create Crypto session*/
2455         sess = test_perf_create_aes_sha_session(ts_params->dev_id,
2456                         pparams->chain, pparams->cipher_algo,
2457                         pparams->cipher_key_length, pparams->auth_algo);
2458         TEST_ASSERT_NOT_NULL(sess, "Session creation failed");
2459
2460         /* Generate a burst of crypto operations */
2461         for (i = 0; i < (pparams->burst_size * NUM_MBUF_SETS); i++) {
2462                 struct rte_mbuf *m = test_perf_create_pktmbuf(
2463                                 ts_params->mbuf_mp,
2464                                 pparams->buf_size);
2465
2466                 if (m == NULL) {
2467                         printf("\nFailed to get mbuf - freeing the rest.\n");
2468                         for (k = 0; k < i; k++)
2469                                 rte_pktmbuf_free(mbufs[k]);
2470                         return -1;
2471                 }
2472
2473                 mbufs[i] = m;
2474         }
2475
2476
2477         tsc_start = rte_rdtsc_precise();
2478
2479         while (total_enqueued < pparams->total_operations) {
2480                 uint16_t burst_size =
2481                 total_enqueued+pparams->burst_size <= pparams->total_operations ?
2482                 pparams->burst_size : pparams->total_operations-total_enqueued;
2483                 uint16_t ops_needed = burst_size-ops_unused;
2484
2485                 if (ops_needed != rte_crypto_op_bulk_alloc(ts_params->op_mpool,
2486                                 RTE_CRYPTO_OP_TYPE_SYMMETRIC, ops, ops_needed)){
2487                         printf("\nFailed to alloc enough ops, finish dequeuing "
2488                                 "and free ops below.");
2489                 } else {
2490                         for (i = 0; i < ops_needed; i++)
2491                                 ops[i] = test_perf_set_crypto_op(ops[i],
2492                                         mbufs[i + (pparams->burst_size *
2493                                                 (j % NUM_MBUF_SETS))],
2494                                         sess, pparams->buf_size, digest_length);
2495
2496                         /* enqueue burst */
2497                         burst_enqueued = rte_cryptodev_enqueue_burst(dev_id,
2498                                         queue_id, ops, burst_size);
2499
2500                         if (burst_enqueued < burst_size)
2501                                 retries++;
2502
2503                         ops_unused = burst_size-burst_enqueued;
2504                         total_enqueued += burst_enqueued;
2505                 }
2506
2507                 /* dequeue burst */
2508                 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
2509                                 proc_ops, pparams->burst_size);
2510                 if (burst_dequeued == 0)
2511                         failed_polls++;
2512                 else {
2513                         processed += burst_dequeued;
2514
2515                         for (l = 0; l < burst_dequeued; l++)
2516                                 rte_crypto_op_free(proc_ops[l]);
2517                 }
2518                 j++;
2519         }
2520
2521         /* Dequeue any operations still in the crypto device */
2522         while (processed < pparams->total_operations) {
2523                 /* Sending 0 length burst to flush sw crypto device */
2524                 rte_cryptodev_enqueue_burst(dev_id, queue_id, NULL, 0);
2525
2526                 /* dequeue burst */
2527                 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
2528                                 proc_ops, pparams->burst_size);
2529                 if (burst_dequeued == 0)
2530                         failed_polls++;
2531                 else {
2532                         processed += burst_dequeued;
2533
2534                         for (m = 0; m < burst_dequeued; m++)
2535                                 rte_crypto_op_free(proc_ops[m]);
2536                 }
2537         }
2538
2539         tsc_end = rte_rdtsc_precise();
2540
2541         double ops_s = ((double)processed / (tsc_end - tsc_start)) * rte_get_tsc_hz();
2542         double throughput = (ops_s * pparams->buf_size * 8) / 1000000000;
2543
2544         printf("\t%u\t%6.2f\t%10.2f\t%8"PRIu64"\t%8"PRIu64, pparams->buf_size, ops_s/1000000,
2545                         throughput, retries, failed_polls);
2546
2547         for (i = 0; i < pparams->burst_size * NUM_MBUF_SETS; i++)
2548                 rte_pktmbuf_free(mbufs[i]);
2549
2550         printf("\n");
2551         return TEST_SUCCESS;
2552 }
2553
2554
2555 static int
2556 test_perf_snow3g(uint8_t dev_id, uint16_t queue_id,
2557                 struct perf_test_params *pparams)
2558 {
2559         uint16_t i, k, l, m;
2560         uint16_t j = 0;
2561         uint16_t ops_unused = 0;
2562         uint64_t burst_enqueued = 0, total_enqueued = 0, burst_dequeued = 0;
2563         uint64_t processed = 0, failed_polls = 0, retries = 0;
2564         uint64_t tsc_start = 0, tsc_end = 0;
2565
2566         uint16_t digest_length = get_auth_digest_length(pparams->auth_algo);
2567
2568         struct rte_crypto_op *ops[pparams->burst_size];
2569         struct rte_crypto_op *proc_ops[pparams->burst_size];
2570
2571         struct rte_mbuf *mbufs[pparams->burst_size * NUM_MBUF_SETS];
2572
2573         struct crypto_testsuite_params *ts_params = &testsuite_params;
2574
2575         static struct rte_cryptodev_sym_session *sess;
2576
2577         if (rte_cryptodev_count() == 0) {
2578                 printf("\nNo crypto devices found. Is PMD build configured?\n");
2579                 printf("\nAnd is kernel driver loaded for HW PMDs?\n");
2580                 return TEST_FAILED;
2581         }
2582
2583         /* Create Crypto session*/
2584         sess = test_perf_create_snow3g_session(ts_params->dev_id,
2585                         pparams->chain, pparams->cipher_algo,
2586                         pparams->cipher_key_length, pparams->auth_algo);
2587         TEST_ASSERT_NOT_NULL(sess, "Session creation failed");
2588
2589         /* Generate a burst of crypto operations */
2590         for (i = 0; i < (pparams->burst_size * NUM_MBUF_SETS); i++) {
2591                 struct rte_mbuf *m = test_perf_create_pktmbuf(
2592                                 ts_params->mbuf_mp,
2593                                 pparams->buf_size);
2594
2595                 if (m == NULL) {
2596                         printf("\nFailed to get mbuf - freeing the rest.\n");
2597                         for (k = 0; k < i; k++)
2598                                 rte_pktmbuf_free(mbufs[k]);
2599                         return -1;
2600                 }
2601
2602                 mbufs[i] = m;
2603         }
2604
2605         tsc_start = rte_rdtsc_precise();
2606
2607         while (total_enqueued < pparams->total_operations) {
2608                 uint16_t burst_size =
2609                                 (total_enqueued+pparams->burst_size)
2610                                                 <= pparams->total_operations ?
2611                 pparams->burst_size : pparams->total_operations-total_enqueued;
2612                 uint16_t ops_needed = burst_size-ops_unused;
2613                 /* Handle the last burst correctly */
2614                 uint16_t op_offset = pparams->burst_size - burst_size;
2615
2616                 if (ops_needed !=
2617                         rte_crypto_op_bulk_alloc(ts_params->op_mpool,
2618                                                 RTE_CRYPTO_OP_TYPE_SYMMETRIC,
2619                                                 ops+op_offset, ops_needed)) {
2620                         printf("\nFailed to alloc enough ops.");
2621                         /*Don't exit, dequeue, more ops should become available*/
2622                 } else {
2623                         for (i = 0; i < ops_needed; i++) {
2624                                 ops[i+op_offset] =
2625                                 test_perf_set_crypto_op_snow3g(ops[i+op_offset],
2626                                 mbufs[i +
2627                                   (pparams->burst_size * (j % NUM_MBUF_SETS))],
2628                                 sess,
2629                                 pparams->buf_size, digest_length);
2630                         }
2631
2632                         /* enqueue burst */
2633                         burst_enqueued =
2634                                 rte_cryptodev_enqueue_burst(dev_id, queue_id,
2635                                                 ops+op_offset, burst_size);
2636
2637                         if (burst_enqueued < burst_size)
2638                                 retries++;
2639
2640                         ops_unused = burst_size-burst_enqueued;
2641                         total_enqueued += burst_enqueued;
2642                 }
2643
2644                 /* dequeue burst */
2645                 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
2646                                         proc_ops, pparams->burst_size);
2647                 if (burst_dequeued == 0) {
2648                         failed_polls++;
2649                 } else {
2650                         processed += burst_dequeued;
2651                         for (l = 0; l < burst_dequeued; l++)
2652                                 rte_crypto_op_free(proc_ops[l]);
2653                 }
2654                 j++;
2655         }
2656
2657         /* Dequeue any operations still in the crypto device */
2658         while (processed < pparams->total_operations) {
2659                 /* Sending 0 length burst to flush sw crypto device */
2660                 rte_cryptodev_enqueue_burst(dev_id, queue_id, NULL, 0);
2661
2662                 /* dequeue burst */
2663                 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
2664                                 proc_ops, pparams->burst_size);
2665                 if (burst_dequeued == 0)
2666                         failed_polls++;
2667                 else {
2668                         processed += burst_dequeued;
2669                         for (m = 0; m < burst_dequeued; m++)
2670                                 rte_crypto_op_free(proc_ops[m]);
2671                 }
2672         }
2673
2674         tsc_end = rte_rdtsc_precise();
2675
2676         double ops_s = ((double)processed / (tsc_end - tsc_start)) * rte_get_tsc_hz();
2677         double cycles_burst = (double) (tsc_end - tsc_start) /
2678                                         (double) processed * pparams->burst_size;
2679         double cycles_buff = (double) (tsc_end - tsc_start) / (double) processed;
2680         double cycles_B = cycles_buff / pparams->buf_size;
2681         double throughput = (ops_s * pparams->buf_size * 8) / 1000000;
2682
2683         if (gbl_cryptodev_perftest_devtype == RTE_CRYPTODEV_QAT_SYM_PMD) {
2684                 /* Cycle count misleading on HW devices for this test, so don't print */
2685                 printf("%4u\t%6.2f\t%10.2f\t n/a \t\t n/a "
2686                         "\t\t n/a \t\t%8"PRIu64"\t%8"PRIu64,
2687                         pparams->buf_size, ops_s/1000000,
2688                         throughput, retries, failed_polls);
2689         } else {
2690                 printf("%4u\t%6.2f\t%10.2f\t%10.2f\t%8.2f"
2691                         "\t%8.2f\t%8"PRIu64"\t%8"PRIu64,
2692                         pparams->buf_size, ops_s/1000000, throughput, cycles_burst,
2693                         cycles_buff, cycles_B, retries, failed_polls);
2694         }
2695
2696         for (i = 0; i < pparams->burst_size * NUM_MBUF_SETS; i++)
2697                 rte_pktmbuf_free(mbufs[i]);
2698
2699         printf("\n");
2700         return TEST_SUCCESS;
2701 }
2702
2703 /*
2704
2705     perf_test_aes_sha("avx2", HASH_CIPHER, 16, CBC, SHA1);
2706     perf_test_aes_sha("avx2", HASH_CIPHER, 16, CBC, SHA_256);
2707     perf_test_aes_sha("avx2", HASH_CIPHER, 16, CBC, SHA_512);
2708
2709     perf_test_aes_sha("avx2", CIPHER_HASH, 32, CBC, SHA1);
2710     perf_test_aes_sha("avx2", CIPHER_HASH, 32, CBC, SHA_256);
2711     perf_test_aes_sha("avx2", CIPHER_HASH, 32, CBC, SHA_512);
2712
2713     perf_test_aes_sha("avx2", HASH_CIPHER, 32, CBC, SHA1);
2714     perf_test_aes_sha("avx2", HASH_CIPHER, 32, CBC, SHA_256);
2715     perf_test_aes_sha("avx2", HASH_CIPHER, 32, CBC, SHA_512);
2716  */
2717 static int
2718 test_perf_aes_cbc_encrypt_digest_vary_pkt_size(void)
2719 {
2720         unsigned total_operations = 1000000;
2721         unsigned burst_size = 32;
2722         unsigned buf_lengths[] = { 64, 128, 256, 512, 768, 1024, 1280, 1536, 1792, 2048 };
2723         uint8_t i, j;
2724
2725         struct perf_test_params params_set[] = {
2726                 {
2727                         .chain = CIPHER_HASH,
2728
2729                         .cipher_algo  = RTE_CRYPTO_CIPHER_AES_CBC,
2730                         .cipher_key_length = 16,
2731                         .auth_algo = RTE_CRYPTO_AUTH_SHA1_HMAC
2732                 },
2733                 {
2734                         .chain = CIPHER_HASH,
2735
2736                         .cipher_algo  = RTE_CRYPTO_CIPHER_AES_CBC,
2737                         .cipher_key_length = 16,
2738                         .auth_algo = RTE_CRYPTO_AUTH_SHA256_HMAC
2739                 },
2740                 {
2741                         .chain = CIPHER_HASH,
2742
2743                         .cipher_algo  = RTE_CRYPTO_CIPHER_AES_CBC,
2744                         .cipher_key_length = 16,
2745                         .auth_algo = RTE_CRYPTO_AUTH_SHA512_HMAC
2746                 },
2747                 {
2748                         .chain = CIPHER_HASH,
2749
2750                         .cipher_algo  = RTE_CRYPTO_CIPHER_AES_CBC,
2751                         .cipher_key_length = 32,
2752                         .auth_algo = RTE_CRYPTO_AUTH_SHA1_HMAC
2753                 },
2754                 {
2755                         .chain = CIPHER_HASH,
2756
2757                         .cipher_algo  = RTE_CRYPTO_CIPHER_AES_CBC,
2758                         .cipher_key_length = 32,
2759                         .auth_algo = RTE_CRYPTO_AUTH_SHA256_HMAC
2760                 },
2761                 {
2762                         .chain = CIPHER_HASH,
2763
2764                         .cipher_algo  = RTE_CRYPTO_CIPHER_AES_CBC,
2765                         .cipher_key_length = 32,
2766                         .auth_algo = RTE_CRYPTO_AUTH_SHA512_HMAC
2767                 },
2768         };
2769
2770         for (i = 0; i < RTE_DIM(params_set); i++) {
2771
2772                 params_set[i].total_operations = total_operations;
2773                 params_set[i].burst_size = burst_size;
2774                 printf("\n%s. cipher algo: %s auth algo: %s cipher key size=%u."
2775                                 " burst_size: %d ops\n",
2776                                 chain_mode_name(params_set[i].chain),
2777                                 cipher_algo_name(params_set[i].cipher_algo),
2778                                 auth_algo_name(params_set[i].auth_algo),
2779                                 params_set[i].cipher_key_length,
2780                                 burst_size);
2781                 printf("\nBuffer Size(B)\tOPS(M)\tThroughput(Gbps)\t"
2782                         "Retries\tEmptyPolls\n");
2783                 for (j = 0; j < RTE_DIM(buf_lengths); j++) {
2784                         params_set[i].buf_size = buf_lengths[j];
2785                         test_perf_aes_sha(testsuite_params.dev_id, 0,
2786                                         &params_set[i]);
2787                 }
2788         }
2789         return 0;
2790 }
2791
2792 static int
2793 test_perf_snow3G_vary_pkt_size(void)
2794 {
2795         unsigned total_operations = 1000000;
2796         uint8_t i, j;
2797         unsigned k;
2798         uint16_t burst_sizes[] = {64};
2799         uint16_t buf_lengths[] = {40, 64, 80, 120, 240, 256, 400, 512, 600, 1024, 2048};
2800
2801         struct perf_test_params params_set[] = {
2802                 {
2803                         .chain = CIPHER_ONLY,
2804                         .cipher_algo  = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
2805                         .cipher_key_length = 16,
2806                         .auth_algo  = RTE_CRYPTO_AUTH_NULL,
2807                 },
2808                 {
2809                         .chain = HASH_ONLY,
2810                         .cipher_algo = RTE_CRYPTO_CIPHER_NULL,
2811                         .auth_algo  = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
2812                         .cipher_key_length = 16
2813                 },
2814         };
2815
2816         printf("\n\nStart %s.", __func__);
2817         printf("\nTest to measure max throughput at various pkt sizes.");
2818         printf("\nOn HW devices t'put maximised when high Retries and EmptyPolls"
2819                         " so cycle cost not relevant (n/a displayed).");
2820
2821         for (i = 0; i < RTE_DIM(params_set); i++) {
2822                 printf("\n\n");
2823                 params_set[i].total_operations = total_operations;
2824                 for (k = 0; k < RTE_DIM(burst_sizes); k++) {
2825                         printf("\nOn %s dev%u qp%u, %s, "
2826                                 "cipher algo:%s, auth algo:%s, burst_size: %d ops",
2827                                 pmd_name(gbl_cryptodev_perftest_devtype),
2828                                 testsuite_params.dev_id, 0,
2829                                 chain_mode_name(params_set[i].chain),
2830                                 cipher_algo_name(params_set[i].cipher_algo),
2831                                 auth_algo_name(params_set[i].auth_algo),
2832                                 burst_sizes[k]);
2833
2834                         params_set[i].burst_size = burst_sizes[k];
2835                         printf("\nPktSzB\tOp/s(M)\tThruput(Mbps)\tCycles/Burst\t"
2836                                 "Cycles/buf\tCycles/B\tRetries\t\tEmptyPolls\n");
2837                         for (j = 0; j < RTE_DIM(buf_lengths); j++) {
2838
2839                                 params_set[i].buf_size = buf_lengths[j];
2840
2841                                 test_perf_snow3g(testsuite_params.dev_id, 0, &params_set[i]);
2842                         }
2843                 }
2844         }
2845
2846         return 0;
2847 }
2848
2849 static int
2850 test_perf_aes_cbc_vary_burst_size(void)
2851 {
2852         return test_perf_crypto_qp_vary_burst_size(testsuite_params.dev_id);
2853 }
2854
2855 #if 1
2856 static struct unit_test_suite cryptodev_testsuite  = {
2857         .suite_name = "Crypto Device Unit Test Suite",
2858         .setup = testsuite_setup,
2859         .teardown = testsuite_teardown,
2860         .unit_test_cases = {
2861                 TEST_CASE_ST(ut_setup, ut_teardown,
2862                                 test_perf_aes_cbc_encrypt_digest_vary_pkt_size),
2863                 TEST_CASE_ST(ut_setup, ut_teardown,
2864                                 test_perf_aes_cbc_vary_burst_size),
2865                 TEST_CASES_END() /**< NULL terminate unit test array */
2866         }
2867 };
2868 #endif
2869 static struct unit_test_suite cryptodev_aes_testsuite  = {
2870         .suite_name = "Crypto Device AESNI MB Unit Test Suite",
2871         .setup = testsuite_setup,
2872         .teardown = testsuite_teardown,
2873         .unit_test_cases = {
2874                 TEST_CASE_ST(ut_setup, ut_teardown,
2875                                 test_perf_aes_cbc_encrypt_digest_vary_pkt_size),
2876                 TEST_CASES_END() /**< NULL terminate unit test array */
2877         }
2878 };
2879
2880 static struct unit_test_suite cryptodev_snow3g_testsuite  = {
2881         .suite_name = "Crypto Device Snow3G Unit Test Suite",
2882         .setup = testsuite_setup,
2883         .teardown = testsuite_teardown,
2884         .unit_test_cases = {
2885                 TEST_CASE_ST(ut_setup, ut_teardown,
2886                                 test_perf_snow3G_vary_pkt_size),
2887                 TEST_CASE_ST(ut_setup, ut_teardown,
2888                                 test_perf_snow3G_vary_burst_size),
2889                 TEST_CASES_END() /**< NULL terminate unit test array */
2890         }
2891 };
2892
2893 static int
2894 perftest_aesni_mb_cryptodev(void /*argv __rte_unused, int argc __rte_unused*/)
2895 {
2896         gbl_cryptodev_perftest_devtype = RTE_CRYPTODEV_AESNI_MB_PMD;
2897
2898         return unit_test_suite_runner(&cryptodev_aes_testsuite);
2899 }
2900
2901 static int
2902 perftest_qat_cryptodev(void /*argv __rte_unused, int argc __rte_unused*/)
2903 {
2904         gbl_cryptodev_perftest_devtype = RTE_CRYPTODEV_QAT_SYM_PMD;
2905
2906         return unit_test_suite_runner(&cryptodev_testsuite);
2907 }
2908
2909 static int
2910 perftest_sw_snow3g_cryptodev(void /*argv __rte_unused, int argc __rte_unused*/)
2911 {
2912         gbl_cryptodev_perftest_devtype = RTE_CRYPTODEV_SNOW3G_PMD;
2913
2914         return unit_test_suite_runner(&cryptodev_snow3g_testsuite);
2915 }
2916
2917 static int
2918 perftest_qat_snow3g_cryptodev(void /*argv __rte_unused, int argc __rte_unused*/)
2919 {
2920         gbl_cryptodev_perftest_devtype = RTE_CRYPTODEV_QAT_SYM_PMD;
2921
2922         return unit_test_suite_runner(&cryptodev_snow3g_testsuite);
2923 }
2924
2925 static struct test_command cryptodev_aesni_mb_perf_cmd = {
2926         .command = "cryptodev_aesni_mb_perftest",
2927         .callback = perftest_aesni_mb_cryptodev,
2928 };
2929
2930 static struct test_command cryptodev_qat_perf_cmd = {
2931         .command = "cryptodev_qat_perftest",
2932         .callback = perftest_qat_cryptodev,
2933 };
2934
2935 static struct test_command cryptodev_sw_snow3g_perf_cmd = {
2936         .command = "cryptodev_sw_snow3g_perftest",
2937         .callback = perftest_sw_snow3g_cryptodev,
2938 };
2939
2940 static struct test_command cryptodev_qat_snow3g_perf_cmd = {
2941         .command = "cryptodev_qat_snow3g_perftest",
2942         .callback = perftest_qat_snow3g_cryptodev,
2943 };
2944
2945 REGISTER_TEST_COMMAND(cryptodev_aesni_mb_perf_cmd);
2946 REGISTER_TEST_COMMAND(cryptodev_qat_perf_cmd);
2947 REGISTER_TEST_COMMAND(cryptodev_sw_snow3g_perf_cmd);
2948 REGISTER_TEST_COMMAND(cryptodev_qat_snow3g_perf_cmd);