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