4 * Copyright(c) 2015-2016 Intel Corporation. All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
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
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.
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.
33 #include <rte_common.h>
35 #include <rte_malloc.h>
36 #include <rte_memcpy.h>
38 #include <rte_crypto.h>
39 #include <rte_cryptodev.h>
40 #include <rte_cycles.h>
43 #include "test_cryptodev.h"
44 #include "test_cryptodev_gcm_test_vectors.h"
47 #define PERF_NUM_OPS_INFLIGHT (128)
48 #define DEFAULT_NUM_REQS_TO_SUBMIT (10000000)
50 struct crypto_testsuite_params {
51 struct rte_mempool *mbuf_mp;
52 struct rte_mempool *op_mpool;
54 uint16_t nb_queue_pairs;
56 struct rte_cryptodev_config conf;
57 struct rte_cryptodev_qp_conf qp_conf;
70 const uint8_t *iv_data;
73 const uint8_t *aad_data;
76 const uint8_t *p_data;
79 const uint8_t *c_data;
82 const uint8_t *t_data;
87 struct symmetric_session_attrs {
88 enum rte_crypto_cipher_operation cipher;
89 enum rte_crypto_auth_operation auth;
91 enum rte_crypto_cipher_algorithm cipher_algorithm;
92 const uint8_t *key_cipher_data;
93 uint32_t key_cipher_len;
95 enum rte_crypto_auth_algorithm auth_algorithm;
96 const uint8_t *key_auth_data;
97 uint32_t key_auth_len;
102 #define ALIGN_POW2_ROUNDUP(num, align) \
103 (((num) + (align) - 1) & ~((align) - 1))
106 * This struct is needed to avoid unnecessary allocation or checking
107 * of allocation of crypto params with current alloc on the fly
111 struct crypto_params {
117 struct perf_test_params {
119 unsigned total_operations;
123 enum chain_mode chain;
125 enum rte_crypto_cipher_algorithm cipher_algo;
126 unsigned cipher_key_length;
127 enum rte_crypto_auth_algorithm auth_algo;
129 struct symmetric_session_attrs *session_attrs;
131 struct symmetric_op *symmetric_op;
134 #define MAX_NUM_OF_OPS_PER_UT (128)
136 struct crypto_unittest_params {
137 struct rte_crypto_sym_xform cipher_xform;
138 struct rte_crypto_sym_xform auth_xform;
140 struct rte_cryptodev_sym_session *sess;
142 struct rte_crypto_op *op;
144 struct rte_mbuf *obuf[MAX_NUM_OF_OPS_PER_UT];
145 struct rte_mbuf *ibuf[MAX_NUM_OF_OPS_PER_UT];
150 static struct rte_cryptodev_sym_session *
151 test_perf_create_snow3g_session(uint8_t dev_id, enum chain_mode chain,
152 enum rte_crypto_cipher_algorithm cipher_algo, unsigned cipher_key_len,
153 enum rte_crypto_auth_algorithm auth_algo);
154 static struct rte_mbuf *
155 test_perf_create_pktmbuf(struct rte_mempool *mpool, unsigned buf_sz);
156 static inline struct rte_crypto_op *
157 test_perf_set_crypto_op_snow3g(struct rte_crypto_op *op, struct rte_mbuf *m,
158 struct rte_cryptodev_sym_session *sess, unsigned data_len,
159 unsigned digest_len);
160 static uint32_t get_auth_digest_length(enum rte_crypto_auth_algorithm algo);
163 static const char *chain_mode_name(enum chain_mode mode)
166 case CIPHER_HASH: return "cipher_hash"; break;
167 case HASH_CIPHER: return "hash_cipher"; break;
168 case CIPHER_ONLY: return "cipher_only"; break;
169 case HASH_ONLY: return "hash_only"; break;
170 default: return ""; break;
174 static const char *pmd_name(enum rte_cryptodev_type pmd)
177 case RTE_CRYPTODEV_NULL_PMD: return RTE_STR(CRYPTODEV_NAME_NULL_PMD); break;
178 case RTE_CRYPTODEV_AESNI_GCM_PMD:
179 return RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD);
180 case RTE_CRYPTODEV_AESNI_MB_PMD:
181 return RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD);
182 case RTE_CRYPTODEV_QAT_SYM_PMD:
183 return RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD);
184 case RTE_CRYPTODEV_SNOW3G_PMD:
185 return RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD);
191 static const char *cipher_algo_name(enum rte_crypto_cipher_algorithm cipher_algo)
193 switch (cipher_algo) {
194 case RTE_CRYPTO_CIPHER_NULL: return "NULL";
195 case RTE_CRYPTO_CIPHER_3DES_CBC: return "3DES_CBC";
196 case RTE_CRYPTO_CIPHER_3DES_CTR: return "3DES_CTR";
197 case RTE_CRYPTO_CIPHER_3DES_ECB: return "3DES_ECB";
198 case RTE_CRYPTO_CIPHER_AES_CBC: return "AES_CBC";
199 case RTE_CRYPTO_CIPHER_AES_CCM: return "AES_CCM";
200 case RTE_CRYPTO_CIPHER_AES_CTR: return "AES_CTR";
201 case RTE_CRYPTO_CIPHER_AES_ECB: return "AES_ECB";
202 case RTE_CRYPTO_CIPHER_AES_F8: return "AES_F8";
203 case RTE_CRYPTO_CIPHER_AES_GCM: return "AES_GCM";
204 case RTE_CRYPTO_CIPHER_AES_XTS: return "AES_XTS";
205 case RTE_CRYPTO_CIPHER_ARC4: return "ARC4";
206 case RTE_CRYPTO_CIPHER_KASUMI_F8: return "KASUMI_F8";
207 case RTE_CRYPTO_CIPHER_SNOW3G_UEA2: return "SNOW3G_UEA2";
208 case RTE_CRYPTO_CIPHER_ZUC_EEA3: return "ZUC_EEA3";
209 default: return "Another cipher algo";
213 static const char *auth_algo_name(enum rte_crypto_auth_algorithm auth_algo)
216 case RTE_CRYPTO_AUTH_NULL: return "NULL"; break;
217 case RTE_CRYPTO_AUTH_AES_CBC_MAC: return "AES_CBC_MAC"; break;
218 case RTE_CRYPTO_AUTH_AES_CCM: return "AES_CCM"; break;
219 case RTE_CRYPTO_AUTH_AES_CMAC: return "AES_CMAC,"; break;
220 case RTE_CRYPTO_AUTH_AES_GCM: return "AES_GCM"; break;
221 case RTE_CRYPTO_AUTH_AES_GMAC: return "AES_GMAC"; break;
222 case RTE_CRYPTO_AUTH_AES_XCBC_MAC: return "AES_XCBC_MAC"; break;
223 case RTE_CRYPTO_AUTH_KASUMI_F9: return "KASUMI_F9"; break;
224 case RTE_CRYPTO_AUTH_MD5: return "MD5"; break;
225 case RTE_CRYPTO_AUTH_MD5_HMAC: return "MD5_HMAC,"; break;
226 case RTE_CRYPTO_AUTH_SHA1: return "SHA1"; break;
227 case RTE_CRYPTO_AUTH_SHA1_HMAC: return "SHA1_HMAC"; break;
228 case RTE_CRYPTO_AUTH_SHA224: return "SHA224"; break;
229 case RTE_CRYPTO_AUTH_SHA224_HMAC: return "SHA224_HMAC"; break;
230 case RTE_CRYPTO_AUTH_SHA256: return "SHA256"; break;
231 case RTE_CRYPTO_AUTH_SHA256_HMAC: return "SHA256_HMAC"; break;
232 case RTE_CRYPTO_AUTH_SHA384: return "SHA384,"; break;
233 case RTE_CRYPTO_AUTH_SHA384_HMAC: return "SHA384_HMAC,"; break;
234 case RTE_CRYPTO_AUTH_SHA512: return "SHA512,"; break;
235 case RTE_CRYPTO_AUTH_SHA512_HMAC: return "SHA512_HMAC,"; break;
236 case RTE_CRYPTO_AUTH_SNOW3G_UIA2: return "SNOW3G_UIA2"; break;
237 case RTE_CRYPTO_AUTH_ZUC_EIA3: return "RTE_CRYPTO_AUTH_ZUC_EIA3"; break;
238 default: return "Another auth algo"; break;
242 static struct rte_mbuf *
243 setup_test_string(struct rte_mempool *mpool,
244 const uint8_t *data, size_t len, uint8_t blocksize)
246 struct rte_mbuf *m = rte_pktmbuf_alloc(mpool);
247 size_t t_len = len - (blocksize ? (len % blocksize) : 0);
250 char *dst = rte_pktmbuf_append(m, t_len);
257 rte_memcpy(dst, (const void *)data, t_len);
262 static struct crypto_testsuite_params testsuite_params = { NULL };
263 static struct crypto_unittest_params unittest_params;
264 static enum rte_cryptodev_type gbl_cryptodev_perftest_devtype;
267 testsuite_setup(void)
269 struct crypto_testsuite_params *ts_params = &testsuite_params;
270 struct rte_cryptodev_info info;
271 unsigned i, nb_devs, valid_dev_id = 0;
275 ts_params->mbuf_mp = rte_mempool_lookup("CRYPTO_PERF_MBUFPOOL");
276 if (ts_params->mbuf_mp == NULL) {
277 /* Not already created so create */
278 ts_params->mbuf_mp = rte_pktmbuf_pool_create(
279 "CRYPTO_PERF_MBUFPOOL",
280 NUM_MBUFS, MBUF_CACHE_SIZE, 0, MBUF_SIZE,
282 if (ts_params->mbuf_mp == NULL) {
283 RTE_LOG(ERR, USER1, "Can't create CRYPTO_PERF_MBUFPOOL\n");
289 ts_params->op_mpool = rte_crypto_op_pool_create("CRYPTO_OP_POOL",
290 RTE_CRYPTO_OP_TYPE_SYMMETRIC,
291 NUM_MBUFS, MBUF_CACHE_SIZE,
293 sizeof(struct rte_crypto_sym_xform),
295 if (ts_params->op_mpool == NULL) {
296 RTE_LOG(ERR, USER1, "Can't create CRYPTO_OP_POOL\n");
300 /* Create 2 AESNI MB devices if required */
301 if (gbl_cryptodev_perftest_devtype == RTE_CRYPTODEV_AESNI_MB_PMD) {
302 #ifndef RTE_LIBRTE_PMD_AESNI_MB
303 RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_AESNI_MB must be"
304 " enabled in config file to run this testsuite.\n");
307 nb_devs = rte_cryptodev_count_devtype(RTE_CRYPTODEV_AESNI_MB_PMD);
309 for (i = nb_devs; i < 2; i++) {
310 ret = rte_eal_vdev_init(
311 RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD), NULL);
313 TEST_ASSERT(ret == 0,
314 "Failed to create instance %u of pmd : %s",
315 i, RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD));
320 /* Create 2 AESNI GCM devices if required */
321 if (gbl_cryptodev_perftest_devtype == RTE_CRYPTODEV_AESNI_GCM_PMD) {
322 #ifndef RTE_LIBRTE_PMD_AESNI_GCM
323 RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_AESNI_GCM must be"
324 " enabled in config file to run this testsuite.\n");
327 nb_devs = rte_cryptodev_count_devtype(RTE_CRYPTODEV_AESNI_GCM_PMD);
329 for (i = nb_devs; i < 2; i++) {
330 ret = rte_eal_vdev_init(
331 RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD), NULL);
333 TEST_ASSERT(ret == 0,
334 "Failed to create instance %u of pmd : %s",
335 i, RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD));
340 /* Create 2 SNOW3G devices if required */
341 if (gbl_cryptodev_perftest_devtype == RTE_CRYPTODEV_SNOW3G_PMD) {
342 #ifndef RTE_LIBRTE_PMD_SNOW3G
343 RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_SNOW3G must be"
344 " enabled in config file to run this testsuite.\n");
347 nb_devs = rte_cryptodev_count_devtype(RTE_CRYPTODEV_SNOW3G_PMD);
349 for (i = nb_devs; i < 2; i++) {
350 ret = rte_eal_vdev_init(
351 RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD), NULL);
353 TEST_ASSERT(ret == 0,
354 "Failed to create instance %u of pmd : %s",
355 i, RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD));
360 #ifndef RTE_LIBRTE_PMD_QAT
361 if (gbl_cryptodev_perftest_devtype == RTE_CRYPTODEV_QAT_SYM_PMD) {
362 RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_QAT must be enabled "
363 "in config file to run this testsuite.\n");
368 nb_devs = rte_cryptodev_count();
370 RTE_LOG(ERR, USER1, "No crypto devices found?");
374 /* Search for the first valid */
375 for (i = 0; i < nb_devs; i++) {
376 rte_cryptodev_info_get(i, &info);
377 if (info.dev_type == gbl_cryptodev_perftest_devtype) {
378 ts_params->dev_id = i;
388 * Using Crypto Device Id 0 by default.
389 * Since we can't free and re-allocate queue memory always set the queues
390 * on this device up to max size first so enough memory is allocated for
391 * any later re-configures needed by other tests
394 rte_cryptodev_info_get(ts_params->dev_id, &info);
396 ts_params->conf.nb_queue_pairs = DEFAULT_NUM_QPS_PER_QAT_DEVICE;
397 ts_params->conf.socket_id = SOCKET_ID_ANY;
398 ts_params->conf.session_mp.nb_objs = info.sym.max_nb_sessions;
400 TEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->dev_id,
402 "Failed to configure cryptodev %u",
406 ts_params->qp_conf.nb_descriptors = MAX_NUM_OPS_INFLIGHT;
408 for (qp_id = 0; qp_id < ts_params->conf.nb_queue_pairs ; qp_id++) {
409 TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
410 ts_params->dev_id, qp_id,
412 rte_cryptodev_socket_id(ts_params->dev_id)),
413 "Failed to setup queue pair %u on cryptodev %u",
414 qp_id, ts_params->dev_id);
417 /*Now reconfigure queues to size we actually want to use in this testsuite.*/
418 ts_params->qp_conf.nb_descriptors = PERF_NUM_OPS_INFLIGHT;
419 for (qp_id = 0; qp_id < ts_params->conf.nb_queue_pairs ; qp_id++) {
421 TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
422 ts_params->dev_id, qp_id,
424 rte_cryptodev_socket_id(ts_params->dev_id)),
425 "Failed to setup queue pair %u on cryptodev %u",
426 qp_id, ts_params->dev_id);
432 testsuite_teardown(void)
434 struct crypto_testsuite_params *ts_params =
437 if (ts_params->mbuf_mp != NULL)
438 RTE_LOG(DEBUG, USER1, "CRYPTO_PERF_MBUFPOOL count %u\n",
439 rte_mempool_avail_count(ts_params->mbuf_mp));
440 if (ts_params->op_mpool != NULL)
441 RTE_LOG(DEBUG, USER1, "CRYPTO_PERF_OP POOL count %u\n",
442 rte_mempool_avail_count(ts_params->op_mpool));
448 struct crypto_testsuite_params *ts_params = &testsuite_params;
449 struct crypto_unittest_params *ut_params = &unittest_params;
451 /* Clear unit test parameters before running test */
452 memset(ut_params, 0, sizeof(*ut_params));
454 rte_cryptodev_stats_reset(ts_params->dev_id);
456 /* Start the device */
457 TEST_ASSERT_SUCCESS(rte_cryptodev_start(ts_params->dev_id),
458 "Failed to start cryptodev %u",
467 struct crypto_testsuite_params *ts_params = &testsuite_params;
468 struct crypto_unittest_params *ut_params = &unittest_params;
469 struct rte_cryptodev_stats stats;
473 /* free crypto session structure */
475 rte_cryptodev_sym_session_free(ts_params->dev_id,
478 /* free crypto operation structure */
480 rte_crypto_op_free(ut_params->op);
482 for (i = 0; i < MAX_NUM_OF_OPS_PER_UT; i++) {
483 if (ut_params->obuf[i])
484 rte_pktmbuf_free(ut_params->obuf[i]);
485 else if (ut_params->ibuf[i])
486 rte_pktmbuf_free(ut_params->ibuf[i]);
489 if (ts_params->mbuf_mp != NULL)
490 RTE_LOG(DEBUG, USER1, "CRYPTO_PERF_MBUFPOOL count %u\n",
491 rte_mempool_avail_count(ts_params->mbuf_mp));
493 rte_cryptodev_stats_get(ts_params->dev_id, &stats);
495 /* Stop the device */
496 rte_cryptodev_stop(ts_params->dev_id);
499 const char plaintext_quote[] =
500 "THE COUNT OF MONTE CRISTO by Alexandre Dumas, Pere Chapter 1. "
501 "Marseilles--The Arrival. On the 24th of February, 1815, the "
502 "look-out at Notre-Dame de la Garde signalled the three-master,"
503 " the Pharaon from Smyrna, Trieste, and Naples. As usual, a "
504 "pilot put off immediately, and rounding the Chateau d'If, got "
505 "on board the vessel between Cape Morgion and Rion island. "
506 "Immediately, and according to custom, the ramparts of Fort "
507 "Saint-Jean were covered with spectators; it is always an event "
508 "at Marseilles for a ship to come into port, especially when "
509 "this ship, like the Pharaon, has been built, rigged, and laden"
510 " at the old Phocee docks, and belongs to an owner of the city."
511 " The ship drew on and had safely passed the strait, which some"
512 " volcanic shock has made between the Calasareigne and Jaros "
513 "islands; had doubled Pomegue, and approached the harbor under"
514 " topsails, jib, and spanker, but so slowly and sedately that"
515 " the idlers, with that instinct which is the forerunner of "
516 "evil, asked one another what misfortune could have happened "
517 "on board. However, those experienced in navigation saw plainly"
518 " that if any accident had occurred, it was not to the vessel "
519 "herself, for she bore down with all the evidence of being "
520 "skilfully handled, the anchor a-cockbill, the jib-boom guys "
521 "already eased off, and standing by the side of the pilot, who"
522 " was steering the Pharaon towards the narrow entrance of the"
523 " inner port, was a young man, who, with activity and vigilant"
524 " eye, watched every motion of the ship, and repeated each "
525 "direction of the pilot. The vague disquietude which prevailed "
526 "among the spectators had so much affected one of the crowd "
527 "that he did not await the arrival of the vessel in harbor, but"
528 " jumping into a small skiff, desired to be pulled alongside "
529 "the Pharaon, which he reached as she rounded into La Reserve "
530 "basin. When the young man on board saw this person approach, "
531 "he left his station by the pilot, and, hat in hand, leaned "
532 "over the ship's bulwarks. He was a fine, tall, slim young "
533 "fellow of eighteen or twenty, with black eyes, and hair as "
534 "dark as a raven's wing; and his whole appearance bespoke that "
535 "calmness and resolution peculiar to men accustomed from their "
536 "cradle to contend with danger. \"Ah, is it you, Dantes?\" "
537 "cried the man in the skiff. \"What's the matter? and why have "
538 "you such an air of sadness aboard?\" \"A great misfortune, M. "
539 "Morrel,\" replied the young man,--\"a great misfortune, for me"
540 " especially! Off Civita Vecchia we lost our brave Captain "
541 "Leclere.\" \"And the cargo?\" inquired the owner, eagerly. "
542 "\"Is all safe, M. Morrel; and I think you will be satisfied on"
543 " that head. But poor Captain Leclere--\" \"What happened to "
544 "him?\" asked the owner, with an air of considerable "
545 "resignation. \"What happened to the worthy captain?\" \"He "
546 "died.\" \"Fell into the sea?\" \"No, sir, he died of "
547 "brain-fever in dreadful agony.\" Then turning to the crew, "
548 "he said, \"Bear a hand there, to take in sail!\" All hands "
549 "obeyed, and at once the eight or ten seamen who composed the "
550 "crew, sprang to their respective stations at the spanker "
551 "brails and outhaul, topsail sheets and halyards, the jib "
552 "downhaul, and the topsail clewlines and buntlines. The young "
553 "sailor gave a look to see that his orders were promptly and "
554 "accurately obeyed, and then turned again to the owner. \"And "
555 "how did this misfortune occur?\" inquired the latter, resuming"
556 " the interrupted conversation. \"Alas, sir, in the most "
557 "unexpected manner. After a long talk with the harbor-master, "
558 "Captain Leclere left Naples greatly disturbed in mind. In "
559 "twenty-four hours he was attacked by a fever, and died three "
560 "days afterwards. We performed the usual burial service, and he"
561 " is at his rest, sewn up in his hammock with a thirty-six "
562 "pound shot at his head and his heels, off El Giglio island. "
563 "We bring to his widow his sword and cross of honor. It was "
564 "worth while, truly,\" added the young man with a melancholy "
565 "smile, \"to make war against the English for ten years, and "
566 "to die in his bed at last, like everybody else.";
568 #define QUOTE_LEN_64B (64)
569 #define QUOTE_LEN_128B (128)
570 #define QUOTE_LEN_256B (256)
571 #define QUOTE_LEN_512B (512)
572 #define QUOTE_LEN_768B (768)
573 #define QUOTE_LEN_1024B (1024)
574 #define QUOTE_LEN_1280B (1280)
575 #define QUOTE_LEN_1536B (1536)
576 #define QUOTE_LEN_1792B (1792)
577 #define QUOTE_LEN_2048B (2048)
580 /* ***** AES-CBC / HMAC-SHA256 Performance Tests ***** */
582 #define HMAC_KEY_LENGTH_SHA256 (DIGEST_BYTE_LENGTH_SHA256)
584 #define CIPHER_KEY_LENGTH_AES_CBC (16)
585 #define CIPHER_IV_LENGTH_AES_CBC (CIPHER_KEY_LENGTH_AES_CBC)
587 static uint8_t aes_cbc_128_key[] = {
588 0xE4, 0x23, 0x33, 0x8A, 0x35, 0x64, 0x61, 0xE2,
589 0xF1, 0x35, 0x5C, 0x3B, 0xDD, 0x9A, 0x65, 0xBA };
591 static uint8_t aes_cbc_128_iv[] = {
592 0xf5, 0xd3, 0x89, 0x0f, 0x47, 0x00, 0xcb, 0x52,
593 0x42, 0x1a, 0x7d, 0x3d, 0xf5, 0x82, 0x80, 0xf1 };
595 static uint8_t hmac_sha256_key[] = {
596 0xff, 0xcb, 0x37, 0x30, 0x1d, 0x4a, 0xc2, 0x41,
597 0x49, 0x03, 0xDD, 0xC6, 0xB8, 0xCA, 0x55, 0x7A,
598 0x58, 0x34, 0x85, 0x61, 0x1C, 0x42, 0x10, 0x76,
599 0x9a, 0x4f, 0x88, 0x1b, 0xb6, 0x8f, 0xd8, 0x60 };
602 /* Cipher text output */
604 static const uint8_t AES_CBC_ciphertext_64B[] = {
605 0x05, 0x15, 0x77, 0x32, 0xc9, 0x66, 0x91, 0x50,
606 0x93, 0x9f, 0xbb, 0x4e, 0x2e, 0x5a, 0x02, 0xd0,
607 0x2d, 0x9d, 0x31, 0x5d, 0xc8, 0x9e, 0x86, 0x36,
608 0x54, 0x5c, 0x50, 0xe8, 0x75, 0x54, 0x74, 0x5e,
609 0xd5, 0xa2, 0x84, 0x21, 0x2d, 0xc5, 0xf8, 0x1c,
610 0x55, 0x1a, 0xba, 0x91, 0xce, 0xb5, 0xa3, 0x1e,
611 0x31, 0xbf, 0xe9, 0xa1, 0x97, 0x5c, 0x2b, 0xd6,
612 0x57, 0xa5, 0x9f, 0xab, 0xbd, 0xb0, 0x9b, 0x9c
615 static const uint8_t AES_CBC_ciphertext_128B[] = {
616 0x79, 0x92, 0x65, 0xc8, 0xfb, 0x0a, 0xc7, 0xc4,
617 0x9b, 0x3b, 0xbe, 0x69, 0x7f, 0x7c, 0xf4, 0x4e,
618 0xa5, 0x0d, 0xf6, 0x33, 0xc4, 0xdf, 0xf3, 0x0d,
619 0xdb, 0xb9, 0x68, 0x34, 0xb0, 0x0d, 0xbd, 0xb9,
620 0xa7, 0xf3, 0x86, 0x50, 0x2a, 0xbe, 0x50, 0x5d,
621 0xb3, 0xbe, 0x72, 0xf9, 0x02, 0xb1, 0x69, 0x0b,
622 0x8c, 0x96, 0x4c, 0x3c, 0x0c, 0x1e, 0x76, 0xe5,
623 0x7e, 0x75, 0xdd, 0xd0, 0xa9, 0x75, 0x00, 0x13,
624 0x6b, 0x1e, 0xc0, 0xad, 0xfc, 0x03, 0xb5, 0x99,
625 0xdc, 0x37, 0x35, 0xfc, 0x16, 0x34, 0xfd, 0xb4,
626 0xea, 0x1e, 0xb6, 0x51, 0xdf, 0xab, 0x87, 0xd6,
627 0x87, 0x41, 0xfa, 0x1c, 0xc6, 0x78, 0xa6, 0x3c,
628 0x1d, 0x76, 0xfe, 0xff, 0x65, 0xfc, 0x63, 0x1e,
629 0x1f, 0xe2, 0x7c, 0x9b, 0xa2, 0x72, 0xc3, 0x34,
630 0x23, 0xdf, 0x01, 0xf0, 0xfd, 0x02, 0x8b, 0x97,
631 0x00, 0x2b, 0x97, 0x4e, 0xab, 0x98, 0x21, 0x3c
634 static const uint8_t AES_CBC_ciphertext_256B[] = {
635 0xc7, 0x71, 0x2b, 0xed, 0x2c, 0x97, 0x59, 0xfa,
636 0xcf, 0x5a, 0xb9, 0x31, 0x92, 0xe0, 0xc9, 0x92,
637 0xc0, 0x2d, 0xd5, 0x9c, 0x84, 0xbf, 0x70, 0x36,
638 0x13, 0x48, 0xe0, 0xb1, 0xbf, 0x6c, 0xcd, 0x91,
639 0xa0, 0xc3, 0x57, 0x6c, 0x3f, 0x0e, 0x34, 0x41,
640 0xe7, 0x9c, 0xc0, 0xec, 0x18, 0x0c, 0x05, 0x52,
641 0x78, 0xe2, 0x3c, 0x6e, 0xdf, 0xa5, 0x49, 0xc7,
642 0xf2, 0x55, 0x00, 0x8f, 0x65, 0x6d, 0x4b, 0xd0,
643 0xcb, 0xd4, 0xd2, 0x0b, 0xea, 0xf4, 0xb0, 0x85,
644 0x61, 0x9e, 0x36, 0xc0, 0x71, 0xb7, 0x80, 0xad,
645 0x40, 0x78, 0xb4, 0x70, 0x2b, 0xe8, 0x80, 0xc5,
646 0x19, 0x35, 0x96, 0x55, 0x3b, 0x40, 0x03, 0xbb,
647 0x9f, 0xa6, 0xc2, 0x82, 0x92, 0x04, 0xc3, 0xa6,
648 0x96, 0xc4, 0x7f, 0x4c, 0x3e, 0x3c, 0x79, 0x82,
649 0x88, 0x8b, 0x3f, 0x8b, 0xc5, 0x9f, 0x44, 0xbe,
650 0x71, 0xe7, 0x09, 0xa2, 0x40, 0xa2, 0x23, 0x4e,
651 0x9f, 0x31, 0xab, 0x6f, 0xdf, 0x59, 0x40, 0xe1,
652 0x12, 0x15, 0x55, 0x4b, 0xea, 0x3f, 0xa1, 0x41,
653 0x4f, 0xaf, 0xcd, 0x27, 0x2a, 0x61, 0xa1, 0x9e,
654 0x82, 0x30, 0x05, 0x05, 0x55, 0xce, 0x99, 0xd3,
655 0x8f, 0x3f, 0x86, 0x79, 0xdc, 0x9f, 0x33, 0x07,
656 0x75, 0x26, 0xc8, 0x72, 0x81, 0x0f, 0x9b, 0xf7,
657 0xb1, 0xfb, 0xd3, 0x91, 0x36, 0x08, 0xab, 0x26,
658 0x70, 0x53, 0x0c, 0x99, 0xfd, 0xa9, 0x07, 0xb4,
659 0xe9, 0xce, 0xc1, 0xd6, 0xd2, 0x2c, 0x71, 0x80,
660 0xec, 0x59, 0x61, 0x0b, 0x24, 0xf0, 0x6d, 0x33,
661 0x73, 0x45, 0x6e, 0x80, 0x03, 0x45, 0xf2, 0x76,
662 0xa5, 0x8a, 0xc9, 0xcf, 0xaf, 0x4a, 0xed, 0x35,
663 0xc0, 0x97, 0x52, 0xc5, 0x00, 0xdf, 0xef, 0xc7,
664 0x9f, 0xf2, 0xe8, 0x15, 0x3e, 0xb3, 0x30, 0xe7,
665 0x00, 0xd0, 0x4e, 0xeb, 0x79, 0xf6, 0xf6, 0xcf,
666 0xf0, 0xe7, 0x61, 0xd5, 0x3d, 0x6a, 0x73, 0x9d
669 static const uint8_t AES_CBC_ciphertext_512B[] = {
670 0xb4, 0xc6, 0xc6, 0x5f, 0x7e, 0xca, 0x05, 0x70,
671 0x21, 0x7b, 0x92, 0x9e, 0x23, 0xe7, 0x92, 0xb8,
672 0x27, 0x3d, 0x20, 0x29, 0x57, 0xfa, 0x1f, 0x26,
673 0x0a, 0x04, 0x34, 0xa6, 0xf2, 0xdc, 0x44, 0xb6,
674 0x43, 0x40, 0x62, 0xde, 0x0c, 0xde, 0x1c, 0x30,
675 0x43, 0x85, 0x0b, 0xe8, 0x93, 0x1f, 0xa1, 0x2a,
676 0x8a, 0x27, 0x35, 0x39, 0x14, 0x9f, 0x37, 0x64,
677 0x59, 0xb5, 0x0e, 0x96, 0x82, 0x5d, 0x63, 0x45,
678 0xd6, 0x93, 0x89, 0x46, 0xe4, 0x71, 0x31, 0xeb,
679 0x0e, 0xd1, 0x7b, 0xda, 0x90, 0xb5, 0x81, 0xac,
680 0x76, 0x54, 0x54, 0x85, 0x0b, 0xa9, 0x46, 0x9c,
681 0xf0, 0xfd, 0xde, 0x5d, 0xa8, 0xe3, 0xee, 0xe9,
682 0xf4, 0x9d, 0x34, 0x76, 0x39, 0xe7, 0xc3, 0x4a,
683 0x84, 0x38, 0x92, 0x61, 0xf1, 0x12, 0x9f, 0x05,
684 0xda, 0xdb, 0xc1, 0xd4, 0xb0, 0xa0, 0x27, 0x19,
685 0xa0, 0x56, 0x5d, 0x9b, 0xcc, 0x47, 0x7c, 0x15,
686 0x1d, 0x52, 0x66, 0xd5, 0xff, 0xef, 0x12, 0x23,
687 0x86, 0xe2, 0xee, 0x81, 0x2c, 0x3d, 0x7d, 0x28,
688 0xd5, 0x42, 0xdf, 0xdb, 0x75, 0x1c, 0xeb, 0xdf,
689 0x13, 0x23, 0xd5, 0x17, 0x89, 0xea, 0xd7, 0x01,
690 0xff, 0x57, 0x6a, 0x44, 0x61, 0xf4, 0xea, 0xbe,
691 0x97, 0x9b, 0xc2, 0xb1, 0x9c, 0x5d, 0xff, 0x4f,
692 0x73, 0x2d, 0x3f, 0x57, 0x28, 0x38, 0xbf, 0x3d,
693 0x9f, 0xda, 0x49, 0x55, 0x8f, 0xb2, 0x77, 0xec,
694 0x0f, 0xbc, 0xce, 0xb8, 0xc6, 0xe1, 0x03, 0xed,
695 0x35, 0x9c, 0xf2, 0x4d, 0xa4, 0x29, 0x6c, 0xd6,
696 0x6e, 0x05, 0x53, 0x46, 0xc1, 0x41, 0x09, 0x36,
697 0x0b, 0x7d, 0xf4, 0x9e, 0x0f, 0xba, 0x86, 0x33,
698 0xdd, 0xf1, 0xa7, 0xf7, 0xd5, 0x29, 0xa8, 0xa7,
699 0x4d, 0xce, 0x0c, 0xf5, 0xb4, 0x6c, 0xd8, 0x27,
700 0xb0, 0x87, 0x2a, 0x6f, 0x7f, 0x3f, 0x8f, 0xc3,
701 0xe2, 0x3e, 0x94, 0xcf, 0x61, 0x4a, 0x09, 0x3d,
702 0xf9, 0x55, 0x19, 0x31, 0xf2, 0xd2, 0x4a, 0x3e,
703 0xc1, 0xf5, 0xed, 0x7c, 0x45, 0xb0, 0x0c, 0x7b,
704 0xdd, 0xa6, 0x0a, 0x26, 0x66, 0xec, 0x85, 0x49,
705 0x00, 0x38, 0x05, 0x7c, 0x9c, 0x1c, 0x92, 0xf5,
706 0xf7, 0xdb, 0x5d, 0xbd, 0x61, 0x0c, 0xc9, 0xaf,
707 0xfd, 0x57, 0x3f, 0xee, 0x2b, 0xad, 0x73, 0xef,
708 0xa3, 0xc1, 0x66, 0x26, 0x44, 0x5e, 0xf9, 0x12,
709 0x86, 0x66, 0xa9, 0x61, 0x75, 0xa1, 0xbc, 0x40,
710 0x7f, 0xa8, 0x08, 0x02, 0xc0, 0x76, 0x0e, 0x76,
711 0xb3, 0x26, 0x3d, 0x1c, 0x40, 0x65, 0xe4, 0x18,
712 0x0f, 0x62, 0x17, 0x8f, 0x1e, 0x61, 0xb8, 0x08,
713 0x83, 0x54, 0x42, 0x11, 0x03, 0x30, 0x8e, 0xb7,
714 0xc1, 0x9c, 0xec, 0x69, 0x52, 0x95, 0xfb, 0x7b,
715 0x1a, 0x0c, 0x20, 0x24, 0xf7, 0xb8, 0x38, 0x0c,
716 0xb8, 0x7b, 0xb6, 0x69, 0x70, 0xd0, 0x61, 0xb9,
717 0x70, 0x06, 0xc2, 0x5b, 0x20, 0x47, 0xf7, 0xd9,
718 0x32, 0xc2, 0xf2, 0x90, 0xb6, 0x4d, 0xcd, 0x3c,
719 0x6d, 0x74, 0xea, 0x82, 0x35, 0x1b, 0x08, 0x44,
720 0xba, 0xb7, 0x33, 0x82, 0x33, 0x27, 0x54, 0x77,
721 0x6e, 0x58, 0xfe, 0x46, 0x5a, 0xb4, 0x88, 0x53,
722 0x8d, 0x9b, 0xb1, 0xab, 0xdf, 0x04, 0xe1, 0xfb,
723 0xd7, 0x1e, 0xd7, 0x38, 0x64, 0x54, 0xba, 0xb0,
724 0x6c, 0x84, 0x7a, 0x0f, 0xa7, 0x80, 0x6b, 0x86,
725 0xd9, 0xc9, 0xc6, 0x31, 0x95, 0xfa, 0x8a, 0x2c,
726 0x14, 0xe1, 0x85, 0x66, 0x27, 0xfd, 0x63, 0x3e,
727 0xf0, 0xfa, 0x81, 0xc9, 0x89, 0x4f, 0xe2, 0x6a,
728 0x8c, 0x17, 0xb5, 0xc7, 0x9f, 0x5d, 0x3f, 0x6b,
729 0x3f, 0xcd, 0x13, 0x7a, 0x3c, 0xe6, 0x4e, 0xfa,
730 0x7a, 0x10, 0xb8, 0x7c, 0x40, 0xec, 0x93, 0x11,
731 0x1f, 0xd0, 0x9e, 0xc3, 0x56, 0xb9, 0xf5, 0x21,
732 0x18, 0x41, 0x31, 0xea, 0x01, 0x8d, 0xea, 0x1c,
733 0x95, 0x5e, 0x56, 0x33, 0xbc, 0x7a, 0x3f, 0x6f
736 static const uint8_t AES_CBC_ciphertext_768B[] = {
737 0x3e, 0x7f, 0x9e, 0x4c, 0x88, 0x15, 0x68, 0x69,
738 0x10, 0x09, 0xe1, 0xa7, 0x0f, 0x27, 0x88, 0x2d,
739 0x90, 0x73, 0x4f, 0x67, 0xd3, 0x8b, 0xaf, 0xa1,
740 0x2c, 0x37, 0xa5, 0x6c, 0x7c, 0xbd, 0x95, 0x4c,
741 0x82, 0xcf, 0x05, 0x49, 0x16, 0x5c, 0xe7, 0x06,
742 0xd4, 0xcb, 0x55, 0x65, 0x9a, 0xd0, 0xe1, 0x46,
743 0x3a, 0x37, 0x71, 0xad, 0xb0, 0xb4, 0x99, 0x1e,
744 0x23, 0x57, 0x48, 0x96, 0x9c, 0xc5, 0xc4, 0xdb,
745 0x64, 0x3e, 0xc9, 0x7f, 0x90, 0x5a, 0xa0, 0x08,
746 0x75, 0x4c, 0x09, 0x06, 0x31, 0x6e, 0x59, 0x29,
747 0xfc, 0x2f, 0x72, 0xde, 0xf2, 0x40, 0x5a, 0xfe,
748 0xd3, 0x66, 0x64, 0xb8, 0x9c, 0xc9, 0xa6, 0x1f,
749 0xc3, 0x52, 0xcd, 0xb5, 0xd1, 0x4f, 0x43, 0x3f,
750 0xf4, 0x59, 0x25, 0xc4, 0xdd, 0x3e, 0x58, 0x7c,
751 0x21, 0xd6, 0x21, 0xce, 0xa4, 0xbe, 0x08, 0x23,
752 0x46, 0x68, 0xc0, 0x00, 0x91, 0x47, 0xca, 0x9b,
753 0xe0, 0xb4, 0xe3, 0xab, 0xbf, 0xcf, 0x68, 0x26,
754 0x97, 0x23, 0x09, 0x93, 0x64, 0x8f, 0x57, 0x59,
755 0xe2, 0x41, 0x7c, 0xa2, 0x48, 0x7e, 0xd5, 0x2c,
756 0x54, 0x09, 0x1b, 0x07, 0x94, 0xca, 0x39, 0x83,
757 0xdd, 0xf4, 0x7a, 0x1d, 0x2d, 0xdd, 0x67, 0xf7,
758 0x3c, 0x30, 0x89, 0x3e, 0xc1, 0xdc, 0x1d, 0x8f,
759 0xfc, 0xb1, 0xe9, 0x13, 0x31, 0xb0, 0x16, 0xdb,
760 0x88, 0xf2, 0x32, 0x7e, 0x73, 0xa3, 0xdf, 0x08,
761 0x6b, 0x53, 0x92, 0x08, 0xc9, 0x9d, 0x98, 0xb2,
762 0xf4, 0x8c, 0xb1, 0x95, 0xdc, 0xb6, 0xfc, 0xec,
763 0xf1, 0xc9, 0x0d, 0x6d, 0x42, 0x2c, 0xf5, 0x38,
764 0x29, 0xf4, 0xd8, 0x98, 0x0f, 0xb0, 0x81, 0xa5,
765 0xaa, 0xe6, 0x1f, 0x6e, 0x87, 0x32, 0x1b, 0x02,
766 0x07, 0x57, 0x38, 0x83, 0xf3, 0xe4, 0x54, 0x7c,
767 0xa8, 0x43, 0xdf, 0x3f, 0x42, 0xfd, 0x67, 0x28,
768 0x06, 0x4d, 0xea, 0xce, 0x1f, 0x84, 0x4a, 0xcd,
769 0x8c, 0x61, 0x5e, 0x8f, 0x61, 0xed, 0x84, 0x03,
770 0x53, 0x6a, 0x9e, 0xbf, 0x68, 0x83, 0xa7, 0x42,
771 0x56, 0x57, 0xcd, 0x45, 0x29, 0xfc, 0x7b, 0x07,
772 0xfc, 0xe9, 0xb9, 0x42, 0xfd, 0x29, 0xd5, 0xfd,
773 0x98, 0x11, 0xd1, 0x8d, 0x67, 0x29, 0x47, 0x61,
774 0xd8, 0x27, 0x37, 0x79, 0x29, 0xd1, 0x94, 0x6f,
775 0x8d, 0xf3, 0x1b, 0x3d, 0x6a, 0xb1, 0x59, 0xef,
776 0x1b, 0xd4, 0x70, 0x0e, 0xac, 0xab, 0xa0, 0x2b,
777 0x1f, 0x5e, 0x04, 0xf0, 0x0e, 0x35, 0x72, 0x90,
778 0xfc, 0xcf, 0x86, 0x43, 0xea, 0x45, 0x6d, 0x22,
779 0x63, 0x06, 0x1a, 0x58, 0xd7, 0x2d, 0xc5, 0xb0,
780 0x60, 0x69, 0xe8, 0x53, 0xc2, 0xa2, 0x57, 0x83,
781 0xc4, 0x31, 0xb4, 0xc6, 0xb3, 0xa1, 0x77, 0xb3,
782 0x1c, 0xca, 0x89, 0x3f, 0xf5, 0x10, 0x3b, 0x36,
783 0x31, 0x7d, 0x00, 0x46, 0x00, 0x92, 0xa0, 0xa0,
784 0x34, 0xd8, 0x5e, 0x62, 0xa9, 0xe0, 0x23, 0x37,
785 0x50, 0x85, 0xc7, 0x3a, 0x20, 0xa3, 0x98, 0xc0,
786 0xac, 0x20, 0x06, 0x0f, 0x17, 0x3c, 0xfc, 0x43,
787 0x8c, 0x9d, 0xec, 0xf5, 0x9a, 0x35, 0x96, 0xf7,
788 0xb7, 0x4c, 0xf9, 0x69, 0xf8, 0xd4, 0x1e, 0x9e,
789 0xf9, 0x7c, 0xc4, 0xd2, 0x11, 0x14, 0x41, 0xb9,
790 0x89, 0xd6, 0x07, 0xd2, 0x37, 0x07, 0x5e, 0x5e,
791 0xae, 0x60, 0xdc, 0xe4, 0xeb, 0x38, 0x48, 0x6d,
792 0x95, 0x8d, 0x71, 0xf2, 0xba, 0xda, 0x5f, 0x08,
793 0x9d, 0x4a, 0x0f, 0x56, 0x90, 0x64, 0xab, 0xb6,
794 0x88, 0x22, 0xa8, 0x90, 0x1f, 0x76, 0x2c, 0x83,
795 0x43, 0xce, 0x32, 0x55, 0x45, 0x84, 0x57, 0x43,
796 0xf9, 0xa8, 0xd1, 0x4f, 0xe3, 0xc1, 0x72, 0x9c,
797 0xeb, 0x64, 0xf7, 0xe4, 0x61, 0x2b, 0x93, 0xd1,
798 0x1f, 0xbb, 0x5c, 0xff, 0xa1, 0x59, 0x69, 0xcf,
799 0xf7, 0xaf, 0x58, 0x45, 0xd5, 0x3e, 0x98, 0x7d,
800 0x26, 0x39, 0x5c, 0x75, 0x3c, 0x4a, 0xbf, 0x5e,
801 0x12, 0x10, 0xb0, 0x93, 0x0f, 0x86, 0x82, 0xcf,
802 0xb2, 0xec, 0x70, 0x5c, 0x0b, 0xad, 0x5d, 0x63,
803 0x65, 0x32, 0xa6, 0x04, 0x58, 0x03, 0x91, 0x2b,
804 0xdb, 0x8f, 0xd3, 0xa3, 0x2b, 0x3a, 0xf5, 0xa1,
805 0x62, 0x6c, 0xb6, 0xf0, 0x13, 0x3b, 0x8c, 0x07,
806 0x10, 0x82, 0xc9, 0x56, 0x24, 0x87, 0xfc, 0x56,
807 0xe8, 0xef, 0x90, 0x8b, 0xd6, 0x48, 0xda, 0x53,
808 0x04, 0x49, 0x41, 0xa4, 0x67, 0xe0, 0x33, 0x24,
809 0x6b, 0x9c, 0x07, 0x55, 0x4c, 0x5d, 0xe9, 0x35,
810 0xfa, 0xbd, 0xea, 0xa8, 0x3f, 0xe9, 0xf5, 0x20,
811 0x5c, 0x60, 0x0f, 0x0d, 0x24, 0xcb, 0x1a, 0xd6,
812 0xe8, 0x5c, 0xa8, 0x42, 0xae, 0xd0, 0xd2, 0xf2,
813 0xa8, 0xbe, 0xea, 0x0f, 0x8d, 0xfb, 0x81, 0xa3,
814 0xa4, 0xef, 0xb7, 0x3e, 0x91, 0xbd, 0x26, 0x0f,
815 0x8e, 0xf1, 0xb2, 0xa5, 0x47, 0x06, 0xfa, 0x40,
816 0x8b, 0x31, 0x7a, 0x5a, 0x74, 0x2a, 0x0a, 0x7c,
817 0x62, 0x5d, 0x39, 0xa4, 0xae, 0x14, 0x85, 0x08,
818 0x5b, 0x20, 0x85, 0xf1, 0x57, 0x6e, 0x71, 0x13,
819 0x4e, 0x2b, 0x49, 0x87, 0x01, 0xdf, 0x37, 0xed,
820 0x28, 0xee, 0x4d, 0xa1, 0xf4, 0xb3, 0x3b, 0xba,
821 0x2d, 0xb3, 0x46, 0x17, 0x84, 0x80, 0x9d, 0xd7,
822 0x93, 0x1f, 0x28, 0x7c, 0xf5, 0xf9, 0xd6, 0x85,
823 0x8c, 0xa5, 0x44, 0xe9, 0x2c, 0x65, 0x51, 0x5f,
824 0x53, 0x7a, 0x09, 0xd9, 0x30, 0x16, 0x95, 0x89,
825 0x9c, 0x0b, 0xef, 0x90, 0x6d, 0x23, 0xd3, 0x48,
826 0x57, 0x3b, 0x55, 0x69, 0x96, 0xfc, 0xf7, 0x52,
827 0x92, 0x38, 0x36, 0xbf, 0xa9, 0x0a, 0xbb, 0x68,
828 0x45, 0x08, 0x25, 0xee, 0x59, 0xfe, 0xee, 0xf2,
829 0x2c, 0xd4, 0x5f, 0x78, 0x59, 0x0d, 0x90, 0xf1,
830 0xd7, 0xe4, 0x39, 0x0e, 0x46, 0x36, 0xf5, 0x75,
831 0x03, 0x3c, 0x28, 0xfb, 0xfa, 0x8f, 0xef, 0xc9,
832 0x61, 0x00, 0x94, 0xc3, 0xd2, 0x0f, 0xd9, 0xda
835 static const uint8_t AES_CBC_ciphertext_1024B[] = {
836 0x7d, 0x01, 0x7e, 0x2f, 0x92, 0xb3, 0xea, 0x72,
837 0x4a, 0x3f, 0x10, 0xf9, 0x2b, 0xb0, 0xd5, 0xb9,
838 0x19, 0x68, 0x94, 0xe9, 0x93, 0xe9, 0xd5, 0x26,
839 0x20, 0x44, 0xe2, 0x47, 0x15, 0x8d, 0x75, 0x48,
840 0x8e, 0xe4, 0x40, 0x81, 0xb5, 0x06, 0xa8, 0xb8,
841 0x0e, 0x0f, 0x3b, 0xbc, 0x5b, 0xbe, 0x3b, 0xa2,
842 0x2a, 0x0c, 0x48, 0x98, 0x19, 0xdf, 0xe9, 0x25,
843 0x75, 0xab, 0x93, 0x44, 0xb1, 0x72, 0x70, 0xbb,
844 0x20, 0xcf, 0x78, 0xe9, 0x4d, 0xc6, 0xa9, 0xa9,
845 0x84, 0x78, 0xc5, 0xc0, 0xc4, 0xc9, 0x79, 0x1a,
846 0xbc, 0x61, 0x25, 0x5f, 0xac, 0x01, 0x03, 0xb7,
847 0xef, 0x07, 0xf2, 0x62, 0x98, 0xee, 0xe3, 0xad,
848 0x94, 0x75, 0x30, 0x67, 0xb9, 0x15, 0x00, 0xe7,
849 0x11, 0x32, 0x2e, 0x6b, 0x55, 0x9f, 0xac, 0x68,
850 0xde, 0x61, 0x05, 0x80, 0x01, 0xf3, 0xad, 0xab,
851 0xaf, 0x45, 0xe0, 0xf4, 0x68, 0x5c, 0xc0, 0x52,
852 0x92, 0xc8, 0x21, 0xb6, 0xf5, 0x8a, 0x1d, 0xbb,
853 0xfc, 0x4a, 0x11, 0x62, 0xa2, 0xc4, 0xf1, 0x2d,
854 0x0e, 0xb2, 0xc7, 0x17, 0x34, 0xb4, 0x2a, 0x54,
855 0x81, 0xc2, 0x1e, 0xcf, 0x51, 0x0a, 0x76, 0x54,
856 0xf1, 0x48, 0x0d, 0x5c, 0xcd, 0x38, 0x3e, 0x38,
857 0x3e, 0xf8, 0x46, 0x1d, 0x00, 0xf5, 0x62, 0xe1,
858 0x5c, 0xb7, 0x8d, 0xce, 0xd0, 0x3f, 0xbb, 0x22,
859 0xf1, 0xe5, 0xb1, 0xa0, 0x58, 0x5e, 0x3c, 0x0f,
860 0x15, 0xd1, 0xac, 0x3e, 0xc7, 0x72, 0xc4, 0xde,
861 0x8b, 0x95, 0x3e, 0x91, 0xf7, 0x1d, 0x04, 0x9a,
862 0xc8, 0xe4, 0xbf, 0xd3, 0x22, 0xca, 0x4a, 0xdc,
863 0xb6, 0x16, 0x79, 0x81, 0x75, 0x2f, 0x6b, 0xa7,
864 0x04, 0x98, 0xa7, 0x4e, 0xc1, 0x19, 0x90, 0x33,
865 0x33, 0x3c, 0x7f, 0xdd, 0xac, 0x09, 0x0c, 0xc3,
866 0x91, 0x34, 0x74, 0xab, 0xa5, 0x35, 0x0a, 0x13,
867 0xc3, 0x56, 0x67, 0x6d, 0x1a, 0x3e, 0xbf, 0x56,
868 0x06, 0x67, 0x15, 0x5f, 0xfc, 0x8b, 0xa2, 0x3c,
869 0x5e, 0xaf, 0x56, 0x1f, 0xe3, 0x2e, 0x9d, 0x0a,
870 0xf9, 0x9b, 0xc7, 0xb5, 0x03, 0x1c, 0x68, 0x99,
871 0xfa, 0x3c, 0x37, 0x59, 0xc1, 0xf7, 0x6a, 0x83,
872 0x22, 0xee, 0xca, 0x7f, 0x7d, 0x49, 0xe6, 0x48,
873 0x84, 0x54, 0x7a, 0xff, 0xb3, 0x72, 0x21, 0xd8,
874 0x7a, 0x5d, 0xb1, 0x4b, 0xcc, 0x01, 0x6f, 0x90,
875 0xc6, 0x68, 0x1c, 0x2c, 0xa1, 0xe2, 0x74, 0x40,
876 0x26, 0x9b, 0x57, 0x53, 0xa3, 0x7c, 0x0b, 0x0d,
877 0xcf, 0x05, 0x5d, 0x62, 0x4f, 0x75, 0x06, 0x62,
878 0x1f, 0x26, 0x32, 0xaa, 0x25, 0xcc, 0x26, 0x8d,
879 0xae, 0x01, 0x47, 0xa3, 0x00, 0x42, 0xe2, 0x4c,
880 0xee, 0x29, 0xa2, 0x81, 0xa0, 0xfd, 0xeb, 0xff,
881 0x9a, 0x66, 0x6e, 0x47, 0x5b, 0xab, 0x93, 0x5a,
882 0x02, 0x6d, 0x6f, 0xf2, 0x6e, 0x02, 0x9d, 0xb1,
883 0xab, 0x56, 0xdc, 0x8b, 0x9b, 0x17, 0xa8, 0xfb,
884 0x87, 0x42, 0x7c, 0x91, 0x1e, 0x14, 0xc6, 0x6f,
885 0xdc, 0xf0, 0x27, 0x30, 0xfa, 0x3f, 0xc4, 0xad,
886 0x57, 0x85, 0xd2, 0xc9, 0x32, 0x2c, 0x13, 0xa6,
887 0x04, 0x04, 0x50, 0x05, 0x2f, 0x72, 0xd9, 0x44,
888 0x55, 0x6e, 0x93, 0x40, 0xed, 0x7e, 0xd4, 0x40,
889 0x3e, 0x88, 0x3b, 0x8b, 0xb6, 0xeb, 0xc6, 0x5d,
890 0x9c, 0x99, 0xa1, 0xcf, 0x30, 0xb2, 0xdc, 0x48,
891 0x8a, 0x01, 0xa7, 0x61, 0x77, 0x50, 0x14, 0xf3,
892 0x0c, 0x49, 0x53, 0xb3, 0xb4, 0xb4, 0x28, 0x41,
893 0x4a, 0x2d, 0xd2, 0x4d, 0x2a, 0x30, 0x31, 0x83,
894 0x03, 0x5e, 0xaa, 0xd3, 0xa3, 0xd1, 0xa1, 0xca,
895 0x62, 0xf0, 0xe1, 0xf2, 0xff, 0xf0, 0x19, 0xa6,
896 0xde, 0x22, 0x47, 0xb5, 0x28, 0x7d, 0xf7, 0x07,
897 0x16, 0x0d, 0xb1, 0x55, 0x81, 0x95, 0xe5, 0x1d,
898 0x4d, 0x78, 0xa9, 0x3e, 0xce, 0xe3, 0x1c, 0xf9,
899 0x47, 0xc8, 0xec, 0xc5, 0xc5, 0x93, 0x4c, 0x34,
900 0x20, 0x6b, 0xee, 0x9a, 0xe6, 0x86, 0x57, 0x58,
901 0xd5, 0x58, 0xf1, 0x33, 0x10, 0x29, 0x9e, 0x93,
902 0x2f, 0xf5, 0x90, 0x00, 0x17, 0x67, 0x4f, 0x39,
903 0x18, 0xe1, 0xcf, 0x55, 0x78, 0xbb, 0xe6, 0x29,
904 0x3e, 0x77, 0xd5, 0x48, 0xb7, 0x42, 0x72, 0x53,
905 0x27, 0xfa, 0x5b, 0xe0, 0x36, 0x14, 0x97, 0xb8,
906 0x9b, 0x3c, 0x09, 0x77, 0xc1, 0x0a, 0xe4, 0xa2,
907 0x63, 0xfc, 0xbe, 0x5c, 0x17, 0xcf, 0x01, 0xf5,
908 0x03, 0x0f, 0x17, 0xbc, 0x93, 0xdd, 0x5f, 0xe2,
909 0xf3, 0x08, 0xa8, 0xb1, 0x85, 0xb6, 0x34, 0x3f,
910 0x87, 0x42, 0xa5, 0x42, 0x3b, 0x0e, 0xd6, 0x83,
911 0x6a, 0xfd, 0x5d, 0xc9, 0x67, 0xd5, 0x51, 0xc9,
912 0x2a, 0x4e, 0x91, 0xb0, 0x59, 0xb2, 0x0f, 0xa2,
913 0xe6, 0x47, 0x73, 0xc2, 0xa2, 0xae, 0xbb, 0xc8,
914 0x42, 0xa3, 0x2a, 0x27, 0x29, 0x48, 0x8c, 0x54,
915 0x6c, 0xec, 0x00, 0x2a, 0x42, 0xa3, 0x7a, 0x0f,
916 0x12, 0x66, 0x6b, 0x96, 0xf6, 0xd0, 0x56, 0x4f,
917 0x49, 0x5c, 0x47, 0xec, 0x05, 0x62, 0x54, 0xb2,
918 0x64, 0x5a, 0x69, 0x1f, 0x19, 0xb4, 0x84, 0x5c,
919 0xbe, 0x48, 0x8e, 0xfc, 0x58, 0x21, 0xce, 0xfa,
920 0xaa, 0x84, 0xd2, 0xc1, 0x08, 0xb3, 0x87, 0x0f,
921 0x4f, 0xa3, 0x3a, 0xb6, 0x44, 0xbe, 0x2e, 0x9a,
922 0xdd, 0xb5, 0x44, 0x80, 0xca, 0xf4, 0xc3, 0x6e,
923 0xba, 0x93, 0x77, 0xe0, 0x53, 0xfb, 0x37, 0xfb,
924 0x88, 0xc3, 0x1f, 0x25, 0xde, 0x3e, 0x11, 0xf4,
925 0x89, 0xe7, 0xd1, 0x3b, 0xb4, 0x23, 0xcb, 0x70,
926 0xba, 0x35, 0x97, 0x7c, 0xbe, 0x84, 0x13, 0xcf,
927 0xe0, 0x4d, 0x33, 0x91, 0x71, 0x85, 0xbb, 0x4b,
928 0x97, 0x32, 0x5d, 0xa0, 0xb9, 0x8f, 0xdc, 0x27,
929 0x5a, 0xeb, 0x71, 0xf1, 0xd5, 0x0d, 0x65, 0xb4,
930 0x22, 0x81, 0xde, 0xa7, 0x58, 0x20, 0x0b, 0x18,
931 0x11, 0x76, 0x5c, 0xe6, 0x6a, 0x2c, 0x99, 0x69,
932 0xdc, 0xed, 0x67, 0x08, 0x5d, 0x5e, 0xe9, 0x1e,
933 0x55, 0x70, 0xc1, 0x5a, 0x76, 0x1b, 0x8d, 0x2e,
934 0x0d, 0xf9, 0xcc, 0x30, 0x8c, 0x44, 0x0f, 0x63,
935 0x8c, 0x42, 0x8a, 0x9f, 0x4c, 0xd1, 0x48, 0x28,
936 0x8a, 0xf5, 0x56, 0x2e, 0x23, 0x12, 0xfe, 0x67,
937 0x9a, 0x13, 0x65, 0x75, 0x83, 0xf1, 0x3c, 0x98,
938 0x07, 0x6b, 0xb7, 0x27, 0x5b, 0xf0, 0x70, 0xda,
939 0x30, 0xf8, 0x74, 0x4e, 0x7a, 0x32, 0x84, 0xcc,
940 0x0e, 0xcd, 0x80, 0x8b, 0x82, 0x31, 0x9a, 0x48,
941 0xcf, 0x75, 0x00, 0x1f, 0x4f, 0xe0, 0x8e, 0xa3,
942 0x6a, 0x2c, 0xd4, 0x73, 0x4c, 0x63, 0x7c, 0xa6,
943 0x4d, 0x5e, 0xfd, 0x43, 0x3b, 0x27, 0xe1, 0x5e,
944 0xa3, 0xa9, 0x5c, 0x3b, 0x60, 0xdd, 0xc6, 0x8d,
945 0x5a, 0xf1, 0x3e, 0x89, 0x4b, 0x24, 0xcf, 0x01,
946 0x3a, 0x2d, 0x44, 0xe7, 0xda, 0xe7, 0xa1, 0xac,
947 0x11, 0x05, 0x0c, 0xa9, 0x7a, 0x82, 0x8c, 0x5c,
948 0x29, 0x68, 0x9c, 0x73, 0x13, 0xcc, 0x67, 0x32,
949 0x11, 0x5e, 0xe5, 0xcc, 0x8c, 0xf5, 0xa7, 0x52,
950 0x83, 0x9a, 0x70, 0xef, 0xde, 0x55, 0x9c, 0xc7,
951 0x8a, 0xed, 0xad, 0x28, 0x4a, 0xc5, 0x92, 0x6d,
952 0x8e, 0x47, 0xca, 0xe3, 0xf8, 0x77, 0xb5, 0x26,
953 0x64, 0x84, 0xc2, 0xf1, 0xd7, 0xae, 0x0c, 0xb9,
954 0x39, 0x0f, 0x43, 0x6b, 0xe9, 0xe0, 0x09, 0x4b,
955 0xe5, 0xe3, 0x17, 0xa6, 0x68, 0x69, 0x46, 0xf4,
956 0xf0, 0x68, 0x7f, 0x2f, 0x1c, 0x7e, 0x4c, 0xd2,
957 0xb5, 0xc6, 0x16, 0x85, 0xcf, 0x02, 0x4c, 0x89,
958 0x0b, 0x25, 0xb0, 0xeb, 0xf3, 0x77, 0x08, 0x6a,
959 0x46, 0x5c, 0xf6, 0x2f, 0xf1, 0x24, 0xc3, 0x4d,
960 0x80, 0x60, 0x4d, 0x69, 0x98, 0xde, 0xc7, 0xa1,
961 0xf6, 0x4e, 0x18, 0x0c, 0x2a, 0xb0, 0xb2, 0xe0,
962 0x46, 0xe7, 0x49, 0x37, 0xc8, 0x5a, 0x23, 0x24,
963 0xe3, 0x0f, 0xcc, 0x92, 0xb4, 0x8d, 0xdc, 0x9e
966 static const uint8_t AES_CBC_ciphertext_1280B[] = {
967 0x91, 0x99, 0x5e, 0x9e, 0x84, 0xff, 0x59, 0x45,
968 0xc1, 0xf4, 0xbc, 0x9c, 0xb9, 0x30, 0x6c, 0x51,
969 0x73, 0x52, 0xb4, 0x44, 0x09, 0x79, 0xe2, 0x89,
970 0x75, 0xeb, 0x54, 0x26, 0xce, 0xd8, 0x24, 0x98,
971 0xaa, 0xf8, 0x13, 0x16, 0x68, 0x58, 0xc4, 0x82,
972 0x0e, 0x31, 0xd3, 0x6a, 0x13, 0x58, 0x31, 0xe9,
973 0x3a, 0xc1, 0x8b, 0xc5, 0x3f, 0x50, 0x42, 0xd1,
974 0x93, 0xe4, 0x9b, 0x65, 0x2b, 0xf4, 0x1d, 0x9e,
975 0x2d, 0xdb, 0x48, 0xef, 0x9a, 0x01, 0x68, 0xb6,
976 0xea, 0x7a, 0x2b, 0xad, 0xfe, 0x77, 0x44, 0x7e,
977 0x5a, 0xc5, 0x64, 0xb4, 0xfe, 0x5c, 0x80, 0xf3,
978 0x20, 0x7e, 0xaf, 0x5b, 0xf8, 0xd1, 0x38, 0xa0,
979 0x8d, 0x09, 0x77, 0x06, 0xfe, 0xf5, 0xf4, 0xe4,
980 0xee, 0xb8, 0x95, 0x27, 0xed, 0x07, 0xb8, 0xaa,
981 0x25, 0xb4, 0xe1, 0x4c, 0xeb, 0x3f, 0xdb, 0x39,
982 0x66, 0x28, 0x1b, 0x60, 0x42, 0x8b, 0x99, 0xd9,
983 0x49, 0xd6, 0x8c, 0xa4, 0x9d, 0xd8, 0x93, 0x58,
984 0x8f, 0xfa, 0xd3, 0xf7, 0x37, 0x9c, 0x88, 0xab,
985 0x16, 0x50, 0xfe, 0x01, 0x1f, 0x88, 0x48, 0xbe,
986 0x21, 0xa9, 0x90, 0x9e, 0x73, 0xe9, 0x82, 0xf7,
987 0xbf, 0x4b, 0x43, 0xf4, 0xbf, 0x22, 0x3c, 0x45,
988 0x47, 0x95, 0x5b, 0x49, 0x71, 0x07, 0x1c, 0x8b,
989 0x49, 0xa4, 0xa3, 0x49, 0xc4, 0x5f, 0xb1, 0xf5,
990 0xe3, 0x6b, 0xf1, 0xdc, 0xea, 0x92, 0x7b, 0x29,
991 0x40, 0xc9, 0x39, 0x5f, 0xdb, 0xbd, 0xf3, 0x6a,
992 0x09, 0x9b, 0x2a, 0x5e, 0xc7, 0x0b, 0x25, 0x94,
993 0x55, 0x71, 0x9c, 0x7e, 0x0e, 0xb4, 0x08, 0x12,
994 0x8c, 0x6e, 0x77, 0xb8, 0x29, 0xf1, 0xc6, 0x71,
995 0x04, 0x40, 0x77, 0x18, 0x3f, 0x01, 0x09, 0x9c,
996 0x23, 0x2b, 0x5d, 0x2a, 0x88, 0x20, 0x23, 0x59,
997 0x74, 0x2a, 0x67, 0x8f, 0xb7, 0xba, 0x38, 0x9f,
998 0x0f, 0xcf, 0x94, 0xdf, 0xe1, 0x8f, 0x35, 0x5e,
999 0x34, 0x0c, 0x32, 0x92, 0x2b, 0x23, 0x81, 0xf4,
1000 0x73, 0xa0, 0x5a, 0x2a, 0xbd, 0xa6, 0x6b, 0xae,
1001 0x43, 0xe2, 0xdc, 0x01, 0xc1, 0xc6, 0xc3, 0x04,
1002 0x06, 0xbb, 0xb0, 0x89, 0xb3, 0x4e, 0xbd, 0x81,
1003 0x1b, 0x03, 0x63, 0x93, 0xed, 0x4e, 0xf6, 0xe5,
1004 0x94, 0x6f, 0xd6, 0xf3, 0x20, 0xf3, 0xbc, 0x30,
1005 0xc5, 0xd6, 0xbe, 0x1c, 0x05, 0x34, 0x26, 0x4d,
1006 0x46, 0x5e, 0x56, 0x63, 0xfb, 0xdb, 0xcd, 0xed,
1007 0xb0, 0x7f, 0x83, 0x94, 0x55, 0x54, 0x2f, 0xab,
1008 0xc9, 0xb7, 0x16, 0x4f, 0x9e, 0x93, 0x25, 0xd7,
1009 0x9f, 0x39, 0x2b, 0x63, 0xcf, 0x1e, 0xa3, 0x0e,
1010 0x28, 0x47, 0x8a, 0x5f, 0x40, 0x02, 0x89, 0x1f,
1011 0x83, 0xe7, 0x87, 0xd1, 0x90, 0x17, 0xb8, 0x27,
1012 0x64, 0xe1, 0xe1, 0x48, 0x5a, 0x55, 0x74, 0x99,
1013 0x27, 0x9d, 0x05, 0x67, 0xda, 0x70, 0x12, 0x8f,
1014 0x94, 0x96, 0xfd, 0x36, 0xa4, 0x1d, 0x22, 0xe5,
1015 0x0b, 0xe5, 0x2f, 0x38, 0x55, 0xa3, 0x5d, 0x0b,
1016 0xcf, 0xd4, 0xa9, 0xb8, 0xd6, 0x9a, 0x16, 0x2e,
1017 0x6c, 0x4a, 0x25, 0x51, 0x7a, 0x09, 0x48, 0xdd,
1018 0xf0, 0xa3, 0x5b, 0x08, 0x1e, 0x2f, 0x03, 0x91,
1019 0x80, 0xe8, 0x0f, 0xe9, 0x5a, 0x2f, 0x90, 0xd3,
1020 0x64, 0xed, 0xd7, 0x51, 0x17, 0x66, 0x53, 0x40,
1021 0x43, 0x74, 0xef, 0x0a, 0x0d, 0x49, 0x41, 0xf2,
1022 0x67, 0x6e, 0xea, 0x14, 0xc8, 0x74, 0xd6, 0xa9,
1023 0xb9, 0x6a, 0xe3, 0xec, 0x7d, 0xe8, 0x6a, 0x21,
1024 0x3a, 0x52, 0x42, 0xfe, 0x9a, 0x15, 0x6d, 0x60,
1025 0x64, 0x88, 0xc5, 0xb2, 0x8b, 0x15, 0x2c, 0xff,
1026 0xe2, 0x35, 0xc3, 0xee, 0x9f, 0xcd, 0x82, 0xd9,
1027 0x14, 0x35, 0x2a, 0xb7, 0xf5, 0x2f, 0x7b, 0xbc,
1028 0x01, 0xfd, 0xa8, 0xe0, 0x21, 0x4e, 0x73, 0xf9,
1029 0xf2, 0xb0, 0x79, 0xc9, 0x10, 0x52, 0x8f, 0xa8,
1030 0x3e, 0x3b, 0xbe, 0xc5, 0xde, 0xf6, 0x53, 0xe3,
1031 0x1c, 0x25, 0x3a, 0x1f, 0x13, 0xbf, 0x13, 0xbb,
1032 0x94, 0xc2, 0x97, 0x43, 0x64, 0x47, 0x8f, 0x76,
1033 0xd7, 0xaa, 0xeb, 0xa4, 0x03, 0x50, 0x0c, 0x10,
1034 0x50, 0xd8, 0xf7, 0x75, 0x52, 0x42, 0xe2, 0x94,
1035 0x67, 0xf4, 0x60, 0xfb, 0x21, 0x9b, 0x7a, 0x05,
1036 0x50, 0x7c, 0x1b, 0x4a, 0x8b, 0x29, 0xe1, 0xac,
1037 0xd7, 0x99, 0xfd, 0x0d, 0x65, 0x92, 0xcd, 0x23,
1038 0xa7, 0x35, 0x8e, 0x13, 0xf2, 0xe4, 0x10, 0x74,
1039 0xc6, 0x4f, 0x19, 0xf7, 0x01, 0x0b, 0x46, 0xab,
1040 0xef, 0x8d, 0x4a, 0x4a, 0xfa, 0xda, 0xf3, 0xfb,
1041 0x40, 0x28, 0x88, 0xa2, 0x65, 0x98, 0x4d, 0x88,
1042 0xc7, 0xbf, 0x00, 0xc8, 0xd0, 0x91, 0xcb, 0x89,
1043 0x2f, 0xb0, 0x85, 0xfc, 0xa1, 0xc1, 0x9e, 0x83,
1044 0x88, 0xad, 0x95, 0xc0, 0x31, 0xa0, 0xad, 0xa2,
1045 0x42, 0xb5, 0xe7, 0x55, 0xd4, 0x93, 0x5a, 0x74,
1046 0x4e, 0x41, 0xc3, 0xcf, 0x96, 0x83, 0x46, 0xa1,
1047 0xb7, 0x5b, 0xb1, 0x34, 0x67, 0x4e, 0xb1, 0xd7,
1048 0x40, 0x20, 0x72, 0xe9, 0xc8, 0x74, 0xb7, 0xde,
1049 0x72, 0x29, 0x77, 0x4c, 0x74, 0x7e, 0xcc, 0x18,
1050 0xa5, 0x8d, 0x79, 0x8c, 0xd6, 0x6e, 0xcb, 0xd9,
1051 0xe1, 0x61, 0xe7, 0x36, 0xbc, 0x37, 0xea, 0xee,
1052 0xd8, 0x3c, 0x5e, 0x7c, 0x47, 0x50, 0xd5, 0xec,
1053 0x37, 0xc5, 0x63, 0xc3, 0xc9, 0x99, 0x23, 0x9f,
1054 0x64, 0x39, 0xdf, 0x13, 0x96, 0x6d, 0xea, 0x08,
1055 0x0c, 0x27, 0x2d, 0xfe, 0x0f, 0xc2, 0xa3, 0x97,
1056 0x04, 0x12, 0x66, 0x0d, 0x94, 0xbf, 0xbe, 0x3e,
1057 0xb9, 0xcf, 0x8e, 0xc1, 0x9d, 0xb1, 0x64, 0x17,
1058 0x54, 0x92, 0x3f, 0x0a, 0x51, 0xc8, 0xf5, 0x82,
1059 0x98, 0x73, 0x03, 0xc0, 0x5a, 0x51, 0x01, 0x67,
1060 0xb4, 0x01, 0x04, 0x06, 0xbc, 0x37, 0xde, 0x96,
1061 0x23, 0x3c, 0xce, 0x98, 0x3f, 0xd6, 0x51, 0x1b,
1062 0x01, 0x83, 0x0a, 0x1c, 0xf9, 0xeb, 0x7e, 0x72,
1063 0xa9, 0x51, 0x23, 0xc8, 0xd7, 0x2f, 0x12, 0xbc,
1064 0x08, 0xac, 0x07, 0xe7, 0xa7, 0xe6, 0x46, 0xae,
1065 0x54, 0xa3, 0xc2, 0xf2, 0x05, 0x2d, 0x06, 0x5e,
1066 0xfc, 0xe2, 0xa2, 0x23, 0xac, 0x86, 0xf2, 0x54,
1067 0x83, 0x4a, 0xb6, 0x48, 0x93, 0xa1, 0x78, 0xc2,
1068 0x07, 0xec, 0x82, 0xf0, 0x74, 0xa9, 0x18, 0xe9,
1069 0x53, 0x44, 0x49, 0xc2, 0x94, 0xf8, 0x94, 0x92,
1070 0x08, 0x3f, 0xbf, 0xa6, 0xe5, 0xc6, 0x03, 0x8a,
1071 0xc6, 0x90, 0x48, 0x6c, 0xee, 0xbd, 0x44, 0x92,
1072 0x1f, 0x2a, 0xce, 0x1d, 0xb8, 0x31, 0xa2, 0x9d,
1073 0x24, 0x93, 0xa8, 0x9f, 0x36, 0x00, 0x04, 0x7b,
1074 0xcb, 0x93, 0x59, 0xa1, 0x53, 0xdb, 0x13, 0x7a,
1075 0x54, 0xb1, 0x04, 0xdb, 0xce, 0x48, 0x4f, 0xe5,
1076 0x2f, 0xcb, 0xdf, 0x8f, 0x50, 0x7c, 0xfc, 0x76,
1077 0x80, 0xb4, 0xdc, 0x3b, 0xc8, 0x98, 0x95, 0xf5,
1078 0x50, 0xba, 0x70, 0x5a, 0x97, 0xd5, 0xfc, 0x98,
1079 0x4d, 0xf3, 0x61, 0x0f, 0xcf, 0xac, 0x49, 0x0a,
1080 0xdb, 0xc1, 0x42, 0x8f, 0xb6, 0x29, 0xd5, 0x65,
1081 0xef, 0x83, 0xf1, 0x30, 0x4b, 0x84, 0xd0, 0x69,
1082 0xde, 0xd2, 0x99, 0xe5, 0xec, 0xd3, 0x90, 0x86,
1083 0x39, 0x2a, 0x6e, 0xd5, 0x32, 0xe3, 0x0d, 0x2d,
1084 0x01, 0x8b, 0x17, 0x55, 0x1d, 0x65, 0x57, 0xbf,
1085 0xd8, 0x75, 0xa4, 0x85, 0xb6, 0x4e, 0x35, 0x14,
1086 0x58, 0xe4, 0x89, 0xb8, 0x7a, 0x58, 0x86, 0x0c,
1087 0xbd, 0x8b, 0x05, 0x7b, 0x63, 0xc0, 0x86, 0x80,
1088 0x33, 0x46, 0xd4, 0x9b, 0xb6, 0x0a, 0xeb, 0x6c,
1089 0xae, 0xd6, 0x57, 0x7a, 0xc7, 0x59, 0x33, 0xa0,
1090 0xda, 0xa4, 0x12, 0xbf, 0x52, 0x22, 0x05, 0x8d,
1091 0xeb, 0xee, 0xd5, 0xec, 0xea, 0x29, 0x9b, 0x76,
1092 0x95, 0x50, 0x6d, 0x99, 0xe1, 0x45, 0x63, 0x09,
1093 0x16, 0x5f, 0xb0, 0xf2, 0x5b, 0x08, 0x33, 0xdd,
1094 0x8f, 0xb7, 0x60, 0x7a, 0x8e, 0xc6, 0xfc, 0xac,
1095 0xa9, 0x56, 0x2c, 0xa9, 0x8b, 0x74, 0x33, 0xad,
1096 0x2a, 0x7e, 0x96, 0xb6, 0xba, 0x22, 0x28, 0xcf,
1097 0x4d, 0x96, 0xb7, 0xd1, 0xfa, 0x99, 0x4a, 0x61,
1098 0xe6, 0x84, 0xd1, 0x94, 0xca, 0xf5, 0x86, 0xb0,
1099 0xba, 0x34, 0x7a, 0x04, 0xcc, 0xd4, 0x81, 0xcd,
1100 0xd9, 0x86, 0xb6, 0xe0, 0x5a, 0x6f, 0x9b, 0x99,
1101 0xf0, 0xdf, 0x49, 0xae, 0x6d, 0xc2, 0x54, 0x67,
1102 0xe0, 0xb4, 0x34, 0x2d, 0x1c, 0x46, 0xdf, 0x73,
1103 0x3b, 0x45, 0x43, 0xe7, 0x1f, 0xa3, 0x36, 0x35,
1104 0x25, 0x33, 0xd9, 0xc0, 0x54, 0x38, 0x6e, 0x6b,
1105 0x80, 0xcf, 0x50, 0xa4, 0xb6, 0x21, 0x17, 0xfd,
1106 0x9b, 0x5c, 0x36, 0xca, 0xcc, 0x73, 0x73, 0xad,
1107 0xe0, 0x57, 0x77, 0x90, 0x0e, 0x7f, 0x0f, 0x87,
1108 0x7f, 0xdb, 0x73, 0xbf, 0xda, 0xc2, 0xb3, 0x05,
1109 0x22, 0x06, 0xf5, 0xa3, 0xfc, 0x1e, 0x8f, 0xda,
1110 0xcf, 0x49, 0xd6, 0xb3, 0x66, 0x2c, 0xb5, 0x00,
1111 0xaf, 0x85, 0x6e, 0xb8, 0x5b, 0x8c, 0xa1, 0xa4,
1112 0x21, 0xce, 0x40, 0xf3, 0x98, 0xac, 0xec, 0x88,
1113 0x62, 0x43, 0x2a, 0xac, 0xca, 0xcf, 0xb9, 0x30,
1114 0xeb, 0xfc, 0xef, 0xf0, 0x6e, 0x64, 0x6d, 0xe7,
1115 0x54, 0x88, 0x6b, 0x22, 0x29, 0xbe, 0xa5, 0x8c,
1116 0x31, 0x23, 0x3b, 0x4a, 0x80, 0x37, 0xe6, 0xd0,
1117 0x05, 0xfc, 0x10, 0x0e, 0xdd, 0xbb, 0x00, 0xc5,
1118 0x07, 0x20, 0x59, 0xd3, 0x41, 0x17, 0x86, 0x46,
1119 0xab, 0x68, 0xf6, 0x48, 0x3c, 0xea, 0x5a, 0x06,
1120 0x30, 0x21, 0x19, 0xed, 0x74, 0xbe, 0x0b, 0x97,
1121 0xee, 0x91, 0x35, 0x94, 0x1f, 0xcb, 0x68, 0x7f,
1122 0xe4, 0x48, 0xb0, 0x16, 0xfb, 0xf0, 0x74, 0xdb,
1123 0x06, 0x59, 0x2e, 0x5a, 0x9c, 0xce, 0x8f, 0x7d,
1124 0xba, 0x48, 0xd5, 0x3f, 0x5c, 0xb0, 0xc2, 0x33,
1125 0x48, 0x60, 0x17, 0x08, 0x85, 0xba, 0xff, 0xb9,
1126 0x34, 0x0a, 0x3d, 0x8f, 0x21, 0x13, 0x12, 0x1b
1129 static const uint8_t AES_CBC_ciphertext_1536B[] = {
1130 0x89, 0x93, 0x05, 0x99, 0xa9, 0xed, 0xea, 0x62,
1131 0xc9, 0xda, 0x51, 0x15, 0xce, 0x42, 0x91, 0xc3,
1132 0x80, 0xc8, 0x03, 0x88, 0xc2, 0x63, 0xda, 0x53,
1133 0x1a, 0xf3, 0xeb, 0xd5, 0xba, 0x6f, 0x23, 0xb2,
1134 0xed, 0x8f, 0x89, 0xb1, 0xb3, 0xca, 0x90, 0x7a,
1135 0xdd, 0x3f, 0xf6, 0xca, 0x86, 0x58, 0x54, 0xbc,
1136 0xab, 0x0f, 0xf4, 0xab, 0x6d, 0x5d, 0x42, 0xd0,
1137 0x17, 0x49, 0x17, 0xd1, 0x93, 0xea, 0xe8, 0x22,
1138 0xc1, 0x34, 0x9f, 0x3a, 0x3b, 0xaa, 0xe9, 0x1b,
1139 0x93, 0xff, 0x6b, 0x68, 0xba, 0xe6, 0xd2, 0x39,
1140 0x3d, 0x55, 0x34, 0x8f, 0x98, 0x86, 0xb4, 0xd8,
1141 0x7c, 0x0d, 0x3e, 0x01, 0x63, 0x04, 0x01, 0xff,
1142 0x16, 0x0f, 0x51, 0x5f, 0x73, 0x53, 0xf0, 0x3a,
1143 0x38, 0xb4, 0x4d, 0x8d, 0xaf, 0xa3, 0xca, 0x2f,
1144 0x6f, 0xdf, 0xc0, 0x41, 0x6c, 0x48, 0x60, 0x1a,
1145 0xe4, 0xe7, 0x8a, 0x65, 0x6f, 0x8d, 0xd7, 0xe1,
1146 0x10, 0xab, 0x78, 0x5b, 0xb9, 0x69, 0x1f, 0xe0,
1147 0x5c, 0xf1, 0x19, 0x12, 0x21, 0xc7, 0x51, 0xbc,
1148 0x61, 0x5f, 0xc0, 0x36, 0x17, 0xc0, 0x28, 0xd9,
1149 0x51, 0xcb, 0x43, 0xd9, 0xfa, 0xd1, 0xad, 0x79,
1150 0x69, 0x86, 0x49, 0xc5, 0xe5, 0x69, 0x27, 0xce,
1151 0x22, 0xd0, 0xe1, 0x6a, 0xf9, 0x02, 0xca, 0x6c,
1152 0x34, 0xc7, 0xb8, 0x02, 0xc1, 0x38, 0x7f, 0xd5,
1153 0x15, 0xf5, 0xd6, 0xeb, 0xf9, 0x30, 0x40, 0x43,
1154 0xea, 0x87, 0xde, 0x35, 0xf6, 0x83, 0x59, 0x09,
1155 0x68, 0x62, 0x00, 0x87, 0xb8, 0xe7, 0xca, 0x05,
1156 0x0f, 0xac, 0x42, 0x58, 0x45, 0xaa, 0xc9, 0x9b,
1157 0xfd, 0x2a, 0xda, 0x65, 0x33, 0x93, 0x9d, 0xc6,
1158 0x93, 0x8d, 0xe2, 0xc5, 0x71, 0xc1, 0x5c, 0x13,
1159 0xde, 0x7b, 0xd4, 0xb9, 0x4c, 0x35, 0x61, 0x85,
1160 0x90, 0x78, 0xf7, 0x81, 0x98, 0x45, 0x99, 0x24,
1161 0x58, 0x73, 0x28, 0xf8, 0x31, 0xab, 0x54, 0x2e,
1162 0xc0, 0x38, 0x77, 0x25, 0x5c, 0x06, 0x9c, 0xc3,
1163 0x69, 0x21, 0x92, 0x76, 0xe1, 0x16, 0xdc, 0xa9,
1164 0xee, 0xb6, 0x80, 0x66, 0x43, 0x11, 0x24, 0xb3,
1165 0x07, 0x17, 0x89, 0x0f, 0xcb, 0xe0, 0x60, 0xa8,
1166 0x9d, 0x06, 0x4b, 0x6e, 0x72, 0xb7, 0xbc, 0x4f,
1167 0xb8, 0xc0, 0x80, 0xa2, 0xfb, 0x46, 0x5b, 0x8f,
1168 0x11, 0x01, 0x92, 0x9d, 0x37, 0x09, 0x98, 0xc8,
1169 0x0a, 0x46, 0xae, 0x12, 0xac, 0x61, 0x3f, 0xe7,
1170 0x41, 0x1a, 0xaa, 0x2e, 0xdc, 0xd7, 0x2a, 0x47,
1171 0xee, 0xdf, 0x08, 0xd1, 0xff, 0xea, 0x13, 0xc6,
1172 0x05, 0xdb, 0x29, 0xcc, 0x03, 0xba, 0x7b, 0x6d,
1173 0x40, 0xc1, 0xc9, 0x76, 0x75, 0x03, 0x7a, 0x71,
1174 0xc9, 0x5f, 0xd9, 0xe0, 0x61, 0x69, 0x36, 0x8f,
1175 0xb2, 0xbc, 0x28, 0xf3, 0x90, 0x71, 0xda, 0x5f,
1176 0x08, 0xd5, 0x0d, 0xc1, 0xe6, 0xbd, 0x2b, 0xc6,
1177 0x6c, 0x42, 0xfd, 0xbf, 0x10, 0xe8, 0x5f, 0x87,
1178 0x3d, 0x21, 0x42, 0x85, 0x01, 0x0a, 0xbf, 0x8e,
1179 0x49, 0xd3, 0x9c, 0x89, 0x3b, 0xea, 0xe1, 0xbf,
1180 0xe9, 0x9b, 0x5e, 0x0e, 0xb8, 0xeb, 0xcd, 0x3a,
1181 0xf6, 0x29, 0x41, 0x35, 0xdd, 0x9b, 0x13, 0x24,
1182 0xe0, 0x1d, 0x8a, 0xcb, 0x20, 0xf8, 0x41, 0x51,
1183 0x3e, 0x23, 0x8c, 0x67, 0x98, 0x39, 0x53, 0x77,
1184 0x2a, 0x68, 0xf4, 0x3c, 0x7e, 0xd6, 0xc4, 0x6e,
1185 0xf1, 0x53, 0xe9, 0xd8, 0x5c, 0xc1, 0xa9, 0x38,
1186 0x6f, 0x5e, 0xe4, 0xd4, 0x29, 0x1c, 0x6c, 0xee,
1187 0x2f, 0xea, 0xde, 0x61, 0x71, 0x5a, 0xea, 0xce,
1188 0x23, 0x6e, 0x1b, 0x16, 0x43, 0xb7, 0xc0, 0xe3,
1189 0x87, 0xa1, 0x95, 0x1e, 0x97, 0x4d, 0xea, 0xa6,
1190 0xf7, 0x25, 0xac, 0x82, 0x2a, 0xd3, 0xa6, 0x99,
1191 0x75, 0xdd, 0xc1, 0x55, 0x32, 0x6b, 0xea, 0x33,
1192 0x88, 0xce, 0x06, 0xac, 0x15, 0x39, 0x19, 0xa3,
1193 0x59, 0xaf, 0x7a, 0x1f, 0xd9, 0x72, 0x5e, 0xf7,
1194 0x4c, 0xf3, 0x5d, 0x6b, 0xf2, 0x16, 0x92, 0xa8,
1195 0x9e, 0x3d, 0xd4, 0x4c, 0x72, 0x55, 0x4e, 0x4a,
1196 0xf7, 0x8b, 0x2f, 0x67, 0x5a, 0x90, 0xb7, 0xcf,
1197 0x16, 0xd3, 0x7b, 0x5a, 0x9a, 0xc8, 0x9f, 0xbf,
1198 0x01, 0x76, 0x3b, 0x86, 0x2c, 0x2a, 0x78, 0x10,
1199 0x70, 0x05, 0x38, 0xf9, 0xdd, 0x2a, 0x1d, 0x00,
1200 0x25, 0xb7, 0x10, 0xac, 0x3b, 0x3c, 0x4d, 0x3c,
1201 0x01, 0x68, 0x3c, 0x5a, 0x29, 0xc2, 0xa0, 0x1b,
1202 0x95, 0x67, 0xf9, 0x0a, 0x60, 0xb7, 0x11, 0x9c,
1203 0x40, 0x45, 0xd7, 0xb0, 0xda, 0x49, 0x87, 0xcd,
1204 0xb0, 0x9b, 0x61, 0x8c, 0xf4, 0x0d, 0x94, 0x1d,
1205 0x79, 0x66, 0x13, 0x0b, 0xc6, 0x6b, 0x19, 0xee,
1206 0xa0, 0x6b, 0x64, 0x7d, 0xc4, 0xff, 0x98, 0x72,
1207 0x60, 0xab, 0x7f, 0x0f, 0x4d, 0x5d, 0x6b, 0xc3,
1208 0xba, 0x5e, 0x0d, 0x04, 0xd9, 0x59, 0x17, 0xd0,
1209 0x64, 0xbe, 0xfb, 0x58, 0xfc, 0xed, 0x18, 0xf6,
1210 0xac, 0x19, 0xa4, 0xfd, 0x16, 0x59, 0x80, 0x58,
1211 0xb8, 0x0f, 0x79, 0x24, 0x60, 0x18, 0x62, 0xa9,
1212 0xa3, 0xa0, 0xe8, 0x81, 0xd6, 0xec, 0x5b, 0xfe,
1213 0x5b, 0xb8, 0xa4, 0x00, 0xa9, 0xd0, 0x90, 0x17,
1214 0xe5, 0x50, 0x3d, 0x2b, 0x12, 0x6e, 0x2a, 0x13,
1215 0x65, 0x7c, 0xdf, 0xdf, 0xa7, 0xdd, 0x9f, 0x78,
1216 0x5f, 0x8f, 0x4e, 0x90, 0xa6, 0x10, 0xe4, 0x7b,
1217 0x68, 0x6b, 0xfd, 0xa9, 0x6d, 0x47, 0xfa, 0xec,
1218 0x42, 0x35, 0x07, 0x12, 0x3e, 0x78, 0x23, 0x15,
1219 0xff, 0xe2, 0x65, 0xc7, 0x47, 0x89, 0x2f, 0x97,
1220 0x7c, 0xd7, 0x6b, 0x69, 0x35, 0x79, 0x6f, 0x85,
1221 0xb4, 0xa9, 0x75, 0x04, 0x32, 0x9a, 0xfe, 0xf0,
1222 0xce, 0xe3, 0xf1, 0xab, 0x15, 0x47, 0xe4, 0x9c,
1223 0xc1, 0x48, 0x32, 0x3c, 0xbe, 0x44, 0x72, 0xc9,
1224 0xaa, 0x50, 0x37, 0xa6, 0xbe, 0x41, 0xcf, 0xe8,
1225 0x17, 0x4e, 0x37, 0xbe, 0xf1, 0x34, 0x2c, 0xd9,
1226 0x60, 0x48, 0x09, 0xa5, 0x26, 0x00, 0x31, 0x77,
1227 0x4e, 0xac, 0x7c, 0x89, 0x75, 0xe3, 0xde, 0x26,
1228 0x4c, 0x32, 0x54, 0x27, 0x8e, 0x92, 0x26, 0x42,
1229 0x85, 0x76, 0x01, 0x76, 0x62, 0x4c, 0x29, 0xe9,
1230 0x38, 0x05, 0x51, 0x54, 0x97, 0xa3, 0x03, 0x59,
1231 0x5e, 0xec, 0x0c, 0xe4, 0x96, 0xb7, 0x15, 0xa8,
1232 0x41, 0x06, 0x2b, 0x78, 0x95, 0x24, 0xf6, 0x32,
1233 0xc5, 0xec, 0xd7, 0x89, 0x28, 0x1e, 0xec, 0xb1,
1234 0xc7, 0x21, 0x0c, 0xd3, 0x80, 0x7c, 0x5a, 0xe6,
1235 0xb1, 0x3a, 0x52, 0x33, 0x84, 0x4e, 0x32, 0x6e,
1236 0x7a, 0xf6, 0x43, 0x15, 0x5b, 0xa6, 0xba, 0xeb,
1237 0xa8, 0xe4, 0xff, 0x4f, 0xbd, 0xbd, 0xa8, 0x5e,
1238 0xbe, 0x27, 0xaf, 0xc5, 0xf7, 0x9e, 0xdf, 0x48,
1239 0x22, 0xca, 0x6a, 0x0b, 0x3c, 0xd7, 0xe0, 0xdc,
1240 0xf3, 0x71, 0x08, 0xdc, 0x28, 0x13, 0x08, 0xf2,
1241 0x08, 0x1d, 0x9d, 0x7b, 0xd9, 0xde, 0x6f, 0xe6,
1242 0xe8, 0x88, 0x18, 0xc2, 0xcd, 0x93, 0xc5, 0x38,
1243 0x21, 0x68, 0x4c, 0x9a, 0xfb, 0xb6, 0x18, 0x16,
1244 0x73, 0x2c, 0x1d, 0x6f, 0x95, 0xfb, 0x65, 0x4f,
1245 0x7c, 0xec, 0x8d, 0x6c, 0xa8, 0xc0, 0x55, 0x28,
1246 0xc6, 0xc3, 0xea, 0xeb, 0x05, 0xf5, 0x65, 0xeb,
1247 0x53, 0xe1, 0x54, 0xef, 0xb8, 0x64, 0x98, 0x2d,
1248 0x98, 0x9e, 0xc8, 0xfe, 0xa2, 0x07, 0x30, 0xf7,
1249 0xf7, 0xae, 0xdb, 0x32, 0xf8, 0x71, 0x9d, 0x06,
1250 0xdf, 0x9b, 0xda, 0x61, 0x7d, 0xdb, 0xae, 0x06,
1251 0x24, 0x63, 0x74, 0xb6, 0xf3, 0x1b, 0x66, 0x09,
1252 0x60, 0xff, 0x2b, 0x29, 0xf5, 0xa9, 0x9d, 0x61,
1253 0x5d, 0x55, 0x10, 0x82, 0x21, 0xbb, 0x64, 0x0d,
1254 0xef, 0x5c, 0xe3, 0x30, 0x1b, 0x60, 0x1e, 0x5b,
1255 0xfe, 0x6c, 0xf5, 0x15, 0xa3, 0x86, 0x27, 0x58,
1256 0x46, 0x00, 0x20, 0xcb, 0x86, 0x9a, 0x52, 0x29,
1257 0x20, 0x68, 0x4d, 0x67, 0x88, 0x70, 0xc2, 0x31,
1258 0xd8, 0xbb, 0xa5, 0xa7, 0x88, 0x7f, 0x66, 0xbc,
1259 0xaa, 0x0f, 0xe1, 0x78, 0x7b, 0x97, 0x3c, 0xb7,
1260 0xd7, 0xd8, 0x04, 0xe0, 0x09, 0x60, 0xc8, 0xd0,
1261 0x9e, 0xe5, 0x6b, 0x31, 0x7f, 0x88, 0xfe, 0xc3,
1262 0xfd, 0x89, 0xec, 0x76, 0x4b, 0xb3, 0xa7, 0x37,
1263 0x03, 0xb7, 0xc6, 0x10, 0x7c, 0x9d, 0x0c, 0x75,
1264 0xd3, 0x08, 0x14, 0x94, 0x03, 0x42, 0x25, 0x26,
1265 0x85, 0xf7, 0xf0, 0x90, 0x06, 0x3e, 0x6f, 0x60,
1266 0x52, 0x55, 0xd5, 0x0f, 0x79, 0x64, 0x69, 0x69,
1267 0x46, 0xf9, 0x7f, 0x7f, 0x03, 0xf1, 0x1f, 0xdb,
1268 0x39, 0x05, 0xba, 0x4a, 0x8f, 0x17, 0xe7, 0xba,
1269 0xe2, 0x07, 0x7c, 0x1d, 0x9e, 0xbc, 0x94, 0xc0,
1270 0x61, 0x59, 0x8e, 0x72, 0xaf, 0xfc, 0x99, 0xe4,
1271 0xd5, 0xa8, 0xee, 0x0a, 0x48, 0x2d, 0x82, 0x8b,
1272 0x34, 0x54, 0x8a, 0xce, 0xc7, 0xfa, 0xdd, 0xba,
1273 0x54, 0xdf, 0xb3, 0x30, 0x33, 0x73, 0x2e, 0xd5,
1274 0x52, 0xab, 0x49, 0x91, 0x4e, 0x0a, 0xd6, 0x2f,
1275 0x67, 0xe4, 0xdd, 0x64, 0x48, 0x16, 0xd9, 0x85,
1276 0xaa, 0x52, 0xa5, 0x0b, 0xd3, 0xb4, 0x2d, 0x77,
1277 0x5e, 0x52, 0x77, 0x17, 0xcf, 0xbe, 0x88, 0x04,
1278 0x01, 0x52, 0xe2, 0xf1, 0x46, 0xe2, 0x91, 0x30,
1279 0x65, 0xcf, 0xc0, 0x65, 0x45, 0xc3, 0x7e, 0xf4,
1280 0x2e, 0xb5, 0xaf, 0x6f, 0xab, 0x1a, 0xfa, 0x70,
1281 0x35, 0xb8, 0x4f, 0x2d, 0x78, 0x90, 0x33, 0xb5,
1282 0x9a, 0x67, 0xdb, 0x2f, 0x28, 0x32, 0xb6, 0x54,
1283 0xab, 0x4c, 0x6b, 0x85, 0xed, 0x6c, 0x3e, 0x05,
1284 0x2a, 0xc7, 0x32, 0xe8, 0xf5, 0xa3, 0x7b, 0x4e,
1285 0x7b, 0x58, 0x24, 0x73, 0xf7, 0xfd, 0xc7, 0xc8,
1286 0x6c, 0x71, 0x68, 0xb1, 0xf6, 0xc5, 0x9e, 0x1e,
1287 0xe3, 0x5c, 0x25, 0xc0, 0x5b, 0x3e, 0x59, 0xa1,
1288 0x18, 0x5a, 0xe8, 0xb5, 0xd1, 0x44, 0x13, 0xa3,
1289 0xe6, 0x05, 0x76, 0xd2, 0x8d, 0x6e, 0x54, 0x68,
1290 0x0c, 0xa4, 0x7b, 0x8b, 0xd3, 0x8c, 0x42, 0x13,
1291 0x87, 0xda, 0xdf, 0x8f, 0xa5, 0x83, 0x7a, 0x42,
1292 0x99, 0xb7, 0xeb, 0xe2, 0x79, 0xe0, 0xdb, 0xda,
1293 0x33, 0xa8, 0x50, 0x3a, 0xd7, 0xe7, 0xd3, 0x61,
1294 0x18, 0xb8, 0xaa, 0x2d, 0xc8, 0xd8, 0x2c, 0x28,
1295 0xe5, 0x97, 0x0a, 0x7c, 0x6c, 0x7f, 0x09, 0xd7,
1296 0x88, 0x80, 0xac, 0x12, 0xed, 0xf8, 0xc6, 0xb5,
1297 0x2d, 0xd6, 0x63, 0x9b, 0x98, 0x35, 0x26, 0xde,
1298 0xf6, 0x31, 0xee, 0x7e, 0xa0, 0xfb, 0x16, 0x98,
1299 0xb1, 0x96, 0x1d, 0xee, 0xe3, 0x2f, 0xfb, 0x41,
1300 0xdd, 0xea, 0x10, 0x1e, 0x03, 0x89, 0x18, 0xd2,
1301 0x47, 0x0c, 0xa0, 0x57, 0xda, 0x76, 0x3a, 0x37,
1302 0x2c, 0xe4, 0xf9, 0x77, 0xc8, 0x43, 0x5f, 0xcb,
1303 0xd6, 0x85, 0xf7, 0x22, 0xe4, 0x32, 0x25, 0xa8,
1304 0xdc, 0x21, 0xc0, 0xf5, 0x95, 0xb2, 0xf8, 0x83,
1305 0xf0, 0x65, 0x61, 0x15, 0x48, 0x94, 0xb7, 0x03,
1306 0x7f, 0x66, 0xa1, 0x39, 0x1f, 0xdd, 0xce, 0x96,
1307 0xfe, 0x58, 0x81, 0x3d, 0x41, 0x11, 0x87, 0x13,
1308 0x26, 0x1b, 0x6d, 0xf3, 0xca, 0x2e, 0x2c, 0x76,
1309 0xd3, 0x2f, 0x6d, 0x49, 0x70, 0x53, 0x05, 0x96,
1310 0xcc, 0x30, 0x2b, 0x83, 0xf2, 0xc6, 0xb2, 0x4b,
1311 0x22, 0x13, 0x95, 0x42, 0xeb, 0x56, 0x4d, 0x22,
1312 0xe6, 0x43, 0x6f, 0xba, 0xe7, 0x3b, 0xe5, 0x59,
1313 0xce, 0x57, 0x88, 0x85, 0xb6, 0xbf, 0x15, 0x37,
1314 0xb3, 0x7a, 0x7e, 0xc4, 0xbc, 0x99, 0xfc, 0xe4,
1315 0x89, 0x00, 0x68, 0x39, 0xbc, 0x5a, 0xba, 0xab,
1316 0x52, 0xab, 0xe6, 0x81, 0xfd, 0x93, 0x62, 0xe9,
1317 0xb7, 0x12, 0xd1, 0x18, 0x1a, 0xb9, 0x55, 0x4a,
1318 0x0f, 0xae, 0x35, 0x11, 0x04, 0x27, 0xf3, 0x42,
1319 0x4e, 0xca, 0xdf, 0x9f, 0x12, 0x62, 0xea, 0x03,
1320 0xc0, 0xa9, 0x22, 0x7b, 0x6c, 0x6c, 0xe3, 0xdf,
1321 0x16, 0xad, 0x03, 0xc9, 0xfe, 0xa4, 0xdd, 0x4f
1324 static const uint8_t AES_CBC_ciphertext_1792B[] = {
1325 0x59, 0xcc, 0xfe, 0x8f, 0xb4, 0x9d, 0x0e, 0xd1,
1326 0x85, 0xfc, 0x9b, 0x43, 0xc1, 0xb7, 0x54, 0x67,
1327 0x01, 0xef, 0xb8, 0x71, 0x36, 0xdb, 0x50, 0x48,
1328 0x7a, 0xea, 0xcf, 0xce, 0xba, 0x30, 0x10, 0x2e,
1329 0x96, 0x2b, 0xfd, 0xcf, 0x00, 0xe3, 0x1f, 0xac,
1330 0x66, 0x14, 0x30, 0x86, 0x49, 0xdb, 0x01, 0x8b,
1331 0x07, 0xdd, 0x00, 0x9d, 0x0d, 0x5c, 0x19, 0x11,
1332 0xe8, 0x44, 0x2b, 0x25, 0x70, 0xed, 0x7c, 0x33,
1333 0x0d, 0xe3, 0x34, 0x93, 0x63, 0xad, 0x26, 0xb1,
1334 0x11, 0x91, 0x34, 0x2e, 0x1d, 0x50, 0xaa, 0xd4,
1335 0xef, 0x3a, 0x6d, 0xd7, 0x33, 0x20, 0x0d, 0x3f,
1336 0x9b, 0xdd, 0xc3, 0xa5, 0xc5, 0xf1, 0x99, 0xdc,
1337 0xea, 0x52, 0xda, 0x55, 0xea, 0xa2, 0x7a, 0xc5,
1338 0x78, 0x44, 0x4a, 0x02, 0x33, 0x19, 0x62, 0x37,
1339 0xf8, 0x8b, 0xd1, 0x0c, 0x21, 0xdf, 0x40, 0x19,
1340 0x81, 0xea, 0xfb, 0x1c, 0xa7, 0xcc, 0x60, 0xfe,
1341 0x63, 0x25, 0x8f, 0xf3, 0x73, 0x0f, 0x45, 0xe6,
1342 0x6a, 0x18, 0xbf, 0xbe, 0xad, 0x92, 0x2a, 0x1e,
1343 0x15, 0x65, 0x6f, 0xef, 0x92, 0xcd, 0x0e, 0x19,
1344 0x3d, 0x42, 0xa8, 0xfc, 0x0d, 0x32, 0x58, 0xe0,
1345 0x56, 0x9f, 0xd6, 0x9b, 0x8b, 0xec, 0xe0, 0x45,
1346 0x4d, 0x7e, 0x73, 0x87, 0xff, 0x74, 0x92, 0x59,
1347 0x60, 0x13, 0x93, 0xda, 0xec, 0xbf, 0xfa, 0x20,
1348 0xb6, 0xe7, 0xdf, 0xc7, 0x10, 0xf5, 0x79, 0xb4,
1349 0xd7, 0xac, 0xaf, 0x2b, 0x37, 0x52, 0x30, 0x1d,
1350 0xbe, 0x0f, 0x60, 0x77, 0x3d, 0x03, 0x63, 0xa9,
1351 0xae, 0xb1, 0xf3, 0xca, 0xca, 0xb4, 0x21, 0xd7,
1352 0x6f, 0x2e, 0x5e, 0x9b, 0x68, 0x53, 0x80, 0xab,
1353 0x30, 0x23, 0x0a, 0x72, 0x6b, 0xb1, 0xd8, 0x25,
1354 0x5d, 0x3a, 0x62, 0x9b, 0x4f, 0x59, 0x3b, 0x79,
1355 0xa8, 0x9e, 0x08, 0x6d, 0x37, 0xb0, 0xfc, 0x42,
1356 0x51, 0x25, 0x86, 0xbd, 0x54, 0x5a, 0x95, 0x20,
1357 0x6c, 0xac, 0xb9, 0x30, 0x1c, 0x03, 0xc9, 0x49,
1358 0x38, 0x55, 0x31, 0x49, 0xed, 0xa9, 0x0e, 0xc3,
1359 0x65, 0xb4, 0x68, 0x6b, 0x07, 0x4c, 0x0a, 0xf9,
1360 0x21, 0x69, 0x7c, 0x9f, 0x28, 0x80, 0xe9, 0x49,
1361 0x22, 0x7c, 0xec, 0x97, 0xf7, 0x70, 0xb4, 0xb8,
1362 0x25, 0xe7, 0x80, 0x2c, 0x43, 0x24, 0x8a, 0x2e,
1363 0xac, 0xa2, 0x84, 0x20, 0xe7, 0xf4, 0x6b, 0x86,
1364 0x37, 0x05, 0xc7, 0x59, 0x04, 0x49, 0x2a, 0x99,
1365 0x80, 0x46, 0x32, 0x19, 0xe6, 0x30, 0xce, 0xc0,
1366 0xef, 0x6e, 0xec, 0xe5, 0x2f, 0x24, 0xc1, 0x78,
1367 0x45, 0x02, 0xd3, 0x64, 0x99, 0xf5, 0xc7, 0xbc,
1368 0x8f, 0x8c, 0x75, 0xb1, 0x0a, 0xc8, 0xc3, 0xbd,
1369 0x5e, 0x7e, 0xbd, 0x0e, 0xdf, 0x4b, 0x96, 0x6a,
1370 0xfd, 0x03, 0xdb, 0xd1, 0x31, 0x1e, 0x27, 0xf9,
1371 0xe5, 0x83, 0x9a, 0xfc, 0x13, 0x4c, 0xd3, 0x04,
1372 0xdb, 0xdb, 0x3f, 0x35, 0x93, 0x4e, 0x14, 0x6b,
1373 0x00, 0x5c, 0xb6, 0x11, 0x50, 0xee, 0x61, 0x5c,
1374 0x10, 0x5c, 0xd0, 0x90, 0x02, 0x2e, 0x12, 0xe0,
1375 0x50, 0x44, 0xad, 0x75, 0xcd, 0x94, 0xcf, 0x92,
1376 0xcb, 0xe3, 0xe8, 0x77, 0x4b, 0xd7, 0x1a, 0x7c,
1377 0xdd, 0x6b, 0x49, 0x21, 0x7c, 0xe8, 0x2c, 0x25,
1378 0x49, 0x86, 0x1e, 0x54, 0xae, 0xfc, 0x0e, 0x80,
1379 0xb1, 0xd5, 0xa5, 0x23, 0xcf, 0xcc, 0x0e, 0x11,
1380 0xe2, 0x7c, 0x3c, 0x25, 0x78, 0x64, 0x03, 0xa1,
1381 0xdd, 0x9f, 0x74, 0x12, 0x7b, 0x21, 0xb5, 0x73,
1382 0x15, 0x3c, 0xed, 0xad, 0x07, 0x62, 0x21, 0x79,
1383 0xd4, 0x2f, 0x0d, 0x72, 0xe9, 0x7c, 0x6b, 0x96,
1384 0x6e, 0xe5, 0x36, 0x4a, 0xd2, 0x38, 0xe1, 0xff,
1385 0x6e, 0x26, 0xa4, 0xac, 0x83, 0x07, 0xe6, 0x67,
1386 0x74, 0x6c, 0xec, 0x8b, 0x4b, 0x79, 0x33, 0x50,
1387 0x2f, 0x8f, 0xa0, 0x8f, 0xfa, 0x38, 0x6a, 0xa2,
1388 0x3a, 0x42, 0x85, 0x15, 0x90, 0xd0, 0xb3, 0x0d,
1389 0x8a, 0xe4, 0x60, 0x03, 0xef, 0xf9, 0x65, 0x8a,
1390 0x4e, 0x50, 0x8c, 0x65, 0xba, 0x61, 0x16, 0xc3,
1391 0x93, 0xb7, 0x75, 0x21, 0x98, 0x25, 0x60, 0x6e,
1392 0x3d, 0x68, 0xba, 0x7c, 0xe4, 0xf3, 0xd9, 0x9b,
1393 0xfb, 0x7a, 0xed, 0x1f, 0xb3, 0x4b, 0x88, 0x74,
1394 0x2c, 0xb8, 0x8c, 0x22, 0x95, 0xce, 0x90, 0xf1,
1395 0xdb, 0x80, 0xa6, 0x39, 0xae, 0x82, 0xa1, 0xef,
1396 0x75, 0xec, 0xfe, 0xf1, 0xe8, 0x04, 0xfd, 0x99,
1397 0x1b, 0x5f, 0x45, 0x87, 0x4f, 0xfa, 0xa2, 0x3e,
1398 0x3e, 0xb5, 0x01, 0x4b, 0x46, 0xeb, 0x13, 0x9a,
1399 0xe4, 0x7d, 0x03, 0x87, 0xb1, 0x59, 0x91, 0x8e,
1400 0x37, 0xd3, 0x16, 0xce, 0xef, 0x4b, 0xe9, 0x46,
1401 0x8d, 0x2a, 0x50, 0x2f, 0x41, 0xd3, 0x7b, 0xcf,
1402 0xf0, 0xb7, 0x8b, 0x65, 0x0f, 0xa3, 0x27, 0x10,
1403 0xe9, 0xa9, 0xe9, 0x2c, 0xbe, 0xbb, 0x82, 0xe3,
1404 0x7b, 0x0b, 0x81, 0x3e, 0xa4, 0x6a, 0x4f, 0x3b,
1405 0xd5, 0x61, 0xf8, 0x47, 0x04, 0x99, 0x5b, 0xff,
1406 0xf3, 0x14, 0x6e, 0x57, 0x5b, 0xbf, 0x1b, 0xb4,
1407 0x3f, 0xf9, 0x31, 0xf6, 0x95, 0xd5, 0x10, 0xa9,
1408 0x72, 0x28, 0x23, 0xa9, 0x6a, 0xa2, 0xcf, 0x7d,
1409 0xe3, 0x18, 0x95, 0xda, 0xbc, 0x6f, 0xe9, 0xd8,
1410 0xef, 0x49, 0x3f, 0xd3, 0xef, 0x1f, 0xe1, 0x50,
1411 0xe8, 0x8a, 0xc0, 0xce, 0xcc, 0xb7, 0x5e, 0x0e,
1412 0x8b, 0x95, 0x80, 0xfd, 0x58, 0x2a, 0x9b, 0xc8,
1413 0xb4, 0x17, 0x04, 0x46, 0x74, 0xd4, 0x68, 0x91,
1414 0x33, 0xc8, 0x31, 0x15, 0x84, 0x16, 0x35, 0x03,
1415 0x64, 0x6d, 0xa9, 0x4e, 0x20, 0xeb, 0xa9, 0x3f,
1416 0x21, 0x5e, 0x9b, 0x09, 0xc3, 0x45, 0xf8, 0x7c,
1417 0x59, 0x62, 0x29, 0x9a, 0x5c, 0xcf, 0xb4, 0x27,
1418 0x5e, 0x13, 0xea, 0xb3, 0xef, 0xd9, 0x01, 0x2a,
1419 0x65, 0x5f, 0x14, 0xf4, 0xbf, 0x28, 0x89, 0x3d,
1420 0xdd, 0x9d, 0x52, 0xbd, 0x9e, 0x5b, 0x3b, 0xd2,
1421 0xc2, 0x81, 0x35, 0xb6, 0xac, 0xdd, 0x27, 0xc3,
1422 0x7b, 0x01, 0x5a, 0x6d, 0x4c, 0x5e, 0x2c, 0x30,
1423 0xcb, 0x3a, 0xfa, 0xc1, 0xd7, 0x31, 0x67, 0x3e,
1424 0x08, 0x6a, 0xe8, 0x8c, 0x75, 0xac, 0x1a, 0x6a,
1425 0x52, 0xf7, 0x51, 0xcd, 0x85, 0x3f, 0x3c, 0xa7,
1426 0xea, 0xbc, 0xd7, 0x18, 0x9e, 0x27, 0x73, 0xe6,
1427 0x2b, 0x58, 0xb6, 0xd2, 0x29, 0x68, 0xd5, 0x8f,
1428 0x00, 0x4d, 0x55, 0xf6, 0x61, 0x5a, 0xcc, 0x51,
1429 0xa6, 0x5e, 0x85, 0xcb, 0x0b, 0xfd, 0x06, 0xca,
1430 0xf5, 0xbf, 0x0d, 0x13, 0x74, 0x78, 0x6d, 0x9e,
1431 0x20, 0x11, 0x84, 0x3e, 0x78, 0x17, 0x04, 0x4f,
1432 0x64, 0x2c, 0x3b, 0x3e, 0x93, 0x7b, 0x58, 0x33,
1433 0x07, 0x52, 0xf7, 0x60, 0x6a, 0xa8, 0x3b, 0x19,
1434 0x27, 0x7a, 0x93, 0xc5, 0x53, 0xad, 0xec, 0xf6,
1435 0xc8, 0x94, 0xee, 0x92, 0xea, 0xee, 0x7e, 0xea,
1436 0xb9, 0x5f, 0xac, 0x59, 0x5d, 0x2e, 0x78, 0x53,
1437 0x72, 0x81, 0x92, 0xdd, 0x1c, 0x63, 0xbe, 0x02,
1438 0xeb, 0xa8, 0x1b, 0x2a, 0x6e, 0x72, 0xe3, 0x2d,
1439 0x84, 0x0d, 0x8a, 0x22, 0xf6, 0xba, 0xab, 0x04,
1440 0x8e, 0x04, 0x24, 0xdb, 0xcc, 0xe2, 0x69, 0xeb,
1441 0x4e, 0xfa, 0x6b, 0x5b, 0xc8, 0xc0, 0xd9, 0x25,
1442 0xcb, 0x40, 0x8d, 0x4b, 0x8e, 0xa0, 0xd4, 0x72,
1443 0x98, 0x36, 0x46, 0x3b, 0x4f, 0x5f, 0x96, 0x84,
1444 0x03, 0x28, 0x86, 0x4d, 0xa1, 0x8a, 0xd7, 0xb2,
1445 0x5b, 0x27, 0x01, 0x80, 0x62, 0x49, 0x56, 0xb9,
1446 0xa0, 0xa1, 0xe3, 0x6e, 0x22, 0x2a, 0x5d, 0x03,
1447 0x86, 0x40, 0x36, 0x22, 0x5e, 0xd2, 0xe5, 0xc0,
1448 0x6b, 0xfa, 0xac, 0x80, 0x4e, 0x09, 0x99, 0xbc,
1449 0x2f, 0x9b, 0xcc, 0xf3, 0x4e, 0xf7, 0x99, 0x98,
1450 0x11, 0x6e, 0x6f, 0x62, 0x22, 0x6b, 0x92, 0x95,
1451 0x3b, 0xc3, 0xd2, 0x8e, 0x0f, 0x07, 0xc2, 0x51,
1452 0x5c, 0x4d, 0xb2, 0x6e, 0xc0, 0x27, 0x73, 0xcd,
1453 0x57, 0xb7, 0xf0, 0xe9, 0x2e, 0xc8, 0xe2, 0x0c,
1454 0xd1, 0xb5, 0x0f, 0xff, 0xf9, 0xec, 0x38, 0xba,
1455 0x97, 0xd6, 0x94, 0x9b, 0xd1, 0x79, 0xb6, 0x6a,
1456 0x01, 0x17, 0xe4, 0x7e, 0xa6, 0xd5, 0x86, 0x19,
1457 0xae, 0xf3, 0xf0, 0x62, 0x73, 0xc0, 0xf0, 0x0a,
1458 0x7a, 0x96, 0x93, 0x72, 0x89, 0x7e, 0x25, 0x57,
1459 0xf8, 0xf7, 0xd5, 0x1e, 0xe5, 0xac, 0xd6, 0x38,
1460 0x4f, 0xe8, 0x81, 0xd1, 0x53, 0x41, 0x07, 0x2d,
1461 0x58, 0x34, 0x1c, 0xef, 0x74, 0x2e, 0x61, 0xca,
1462 0xd3, 0xeb, 0xd6, 0x93, 0x0a, 0xf2, 0xf2, 0x86,
1463 0x9c, 0xe3, 0x7a, 0x52, 0xf5, 0x42, 0xf1, 0x8b,
1464 0x10, 0xf2, 0x25, 0x68, 0x7e, 0x61, 0xb1, 0x19,
1465 0xcf, 0x8f, 0x5a, 0x53, 0xb7, 0x68, 0x4f, 0x1a,
1466 0x71, 0xe9, 0x83, 0x91, 0x3a, 0x78, 0x0f, 0xf7,
1467 0xd4, 0x74, 0xf5, 0x06, 0xd2, 0x88, 0xb0, 0x06,
1468 0xe5, 0xc0, 0xfb, 0xb3, 0x91, 0xad, 0xc0, 0x84,
1469 0x31, 0xf2, 0x3a, 0xcf, 0x63, 0xe6, 0x4a, 0xd3,
1470 0x78, 0xbe, 0xde, 0x73, 0x3e, 0x02, 0x8e, 0xb8,
1471 0x3a, 0xf6, 0x55, 0xa7, 0xf8, 0x5a, 0xb5, 0x0e,
1472 0x0c, 0xc5, 0xe5, 0x66, 0xd5, 0xd2, 0x18, 0xf3,
1473 0xef, 0xa5, 0xc9, 0x68, 0x69, 0xe0, 0xcd, 0x00,
1474 0x33, 0x99, 0x6e, 0xea, 0xcb, 0x06, 0x7a, 0xe1,
1475 0xe1, 0x19, 0x0b, 0xe7, 0x08, 0xcd, 0x09, 0x1b,
1476 0x85, 0xec, 0xc4, 0xd4, 0x75, 0xf0, 0xd6, 0xfb,
1477 0x84, 0x95, 0x07, 0x44, 0xca, 0xa5, 0x2a, 0x6c,
1478 0xc2, 0x00, 0x58, 0x08, 0x87, 0x9e, 0x0a, 0xd4,
1479 0x06, 0xe2, 0x91, 0x5f, 0xb7, 0x1b, 0x11, 0xfa,
1480 0x85, 0xfc, 0x7c, 0xf2, 0x0f, 0x6e, 0x3c, 0x8a,
1481 0xe1, 0x0f, 0xa0, 0x33, 0x84, 0xce, 0x81, 0x4d,
1482 0x32, 0x4d, 0xeb, 0x41, 0xcf, 0x5a, 0x05, 0x60,
1483 0x47, 0x6c, 0x2a, 0xc4, 0x17, 0xd5, 0x16, 0x3a,
1484 0xe4, 0xe7, 0xab, 0x84, 0x94, 0x22, 0xff, 0x56,
1485 0xb0, 0x0c, 0x92, 0x6c, 0x19, 0x11, 0x4c, 0xb3,
1486 0xed, 0x58, 0x48, 0x84, 0x2a, 0xe2, 0x19, 0x2a,
1487 0xe1, 0xc0, 0x56, 0x82, 0x3c, 0x83, 0xb4, 0x58,
1488 0x2d, 0xf0, 0xb5, 0x1e, 0x76, 0x85, 0x51, 0xc2,
1489 0xe4, 0x95, 0x27, 0x96, 0xd1, 0x90, 0xc3, 0x17,
1490 0x75, 0xa1, 0xbb, 0x46, 0x5f, 0xa6, 0xf2, 0xef,
1491 0x71, 0x56, 0x92, 0xc5, 0x8a, 0x85, 0x52, 0xe4,
1492 0x63, 0x21, 0x6f, 0x55, 0x85, 0x2b, 0x6b, 0x0d,
1493 0xc9, 0x92, 0x77, 0x67, 0xe3, 0xff, 0x2a, 0x2b,
1494 0x90, 0x01, 0x3d, 0x74, 0x63, 0x04, 0x61, 0x3c,
1495 0x8e, 0xf8, 0xfc, 0x04, 0xdd, 0x21, 0x85, 0x92,
1496 0x1e, 0x4d, 0x51, 0x8d, 0xb5, 0x6b, 0xf1, 0xda,
1497 0x96, 0xf5, 0x8e, 0x3c, 0x38, 0x5a, 0xac, 0x9b,
1498 0xba, 0x0c, 0x84, 0x5d, 0x50, 0x12, 0xc7, 0xc5,
1499 0x7a, 0xcb, 0xb1, 0xfa, 0x16, 0x93, 0xdf, 0x98,
1500 0xda, 0x3f, 0x49, 0xa3, 0x94, 0x78, 0x70, 0xc7,
1501 0x0b, 0xb6, 0x91, 0xa6, 0x16, 0x2e, 0xcf, 0xfd,
1502 0x51, 0x6a, 0x5b, 0xad, 0x7a, 0xdd, 0xa9, 0x48,
1503 0x48, 0xac, 0xd6, 0x45, 0xbc, 0x23, 0x31, 0x1d,
1504 0x86, 0x54, 0x8a, 0x7f, 0x04, 0x97, 0x71, 0x9e,
1505 0xbc, 0x2e, 0x6b, 0xd9, 0x33, 0xc8, 0x20, 0xc9,
1506 0xe0, 0x25, 0x86, 0x59, 0x15, 0xcf, 0x63, 0xe5,
1507 0x99, 0xf1, 0x24, 0xf1, 0xba, 0xc4, 0x15, 0x02,
1508 0xe2, 0xdb, 0xfe, 0x4a, 0xf8, 0x3b, 0x91, 0x13,
1509 0x8d, 0x03, 0x81, 0x9f, 0xb3, 0x3f, 0x04, 0x03,
1510 0x58, 0xc0, 0xef, 0x27, 0x82, 0x14, 0xd2, 0x7f,
1511 0x93, 0x70, 0xb7, 0xb2, 0x02, 0x21, 0xb3, 0x07,
1512 0x7f, 0x1c, 0xef, 0x88, 0xee, 0x29, 0x7a, 0x0b,
1513 0x3d, 0x75, 0x5a, 0x93, 0xfe, 0x7f, 0x14, 0xf7,
1514 0x4e, 0x4b, 0x7f, 0x21, 0x02, 0xad, 0xf9, 0x43,
1515 0x29, 0x1a, 0xe8, 0x1b, 0xf5, 0x32, 0xb2, 0x96,
1516 0xe6, 0xe8, 0x96, 0x20, 0x9b, 0x96, 0x8e, 0x7b,
1517 0xfe, 0xd8, 0xc9, 0x9c, 0x65, 0x16, 0xd6, 0x68,
1518 0x95, 0xf8, 0x22, 0xe2, 0xae, 0x84, 0x03, 0xfd,
1519 0x87, 0xa2, 0x72, 0x79, 0x74, 0x95, 0xfa, 0xe1,
1520 0xfe, 0xd0, 0x4e, 0x3d, 0x39, 0x2e, 0x67, 0x55,
1521 0x71, 0x6c, 0x89, 0x33, 0x49, 0x0c, 0x1b, 0x46,
1522 0x92, 0x31, 0x6f, 0xa6, 0xf0, 0x09, 0xbd, 0x2d,
1523 0xe2, 0xca, 0xda, 0x18, 0x33, 0xce, 0x67, 0x37,
1524 0xfd, 0x6f, 0xcb, 0x9d, 0xbd, 0x42, 0xbc, 0xb2,
1525 0x9c, 0x28, 0xcd, 0x65, 0x3c, 0x61, 0xbc, 0xde,
1526 0x9d, 0xe1, 0x2a, 0x3e, 0xbf, 0xee, 0x3c, 0xcb,
1527 0xb1, 0x50, 0xa9, 0x2c, 0xbe, 0xb5, 0x43, 0xd0,
1528 0xec, 0x29, 0xf9, 0x16, 0x6f, 0x31, 0xd9, 0x9b,
1529 0x92, 0xb1, 0x32, 0xae, 0x0f, 0xb6, 0x9d, 0x0e,
1530 0x25, 0x7f, 0x89, 0x1f, 0x1d, 0x01, 0x68, 0xab,
1531 0x3d, 0xd1, 0x74, 0x5b, 0x4c, 0x38, 0x7f, 0x3d,
1532 0x33, 0xa5, 0xa2, 0x9f, 0xda, 0x84, 0xa5, 0x82,
1533 0x2d, 0x16, 0x66, 0x46, 0x08, 0x30, 0x14, 0x48,
1534 0x5e, 0xca, 0xe3, 0xf4, 0x8c, 0xcb, 0x32, 0xc6,
1535 0xf1, 0x43, 0x62, 0xc6, 0xef, 0x16, 0xfa, 0x43,
1536 0xae, 0x9c, 0x53, 0xe3, 0x49, 0x45, 0x80, 0xfd,
1537 0x1d, 0x8c, 0xa9, 0x6d, 0x77, 0x76, 0xaa, 0x40,
1538 0xc4, 0x4e, 0x7b, 0x78, 0x6b, 0xe0, 0x1d, 0xce,
1539 0x56, 0x3d, 0xf0, 0x11, 0xfe, 0x4f, 0x6a, 0x6d,
1540 0x0f, 0x4f, 0x90, 0x38, 0x92, 0x17, 0xfa, 0x56,
1541 0x12, 0xa6, 0xa1, 0x0a, 0xea, 0x2f, 0x50, 0xf9,
1542 0x60, 0x66, 0x6c, 0x7d, 0x5a, 0x08, 0x8e, 0x3c,
1543 0xf3, 0xf0, 0x33, 0x02, 0x11, 0x02, 0xfe, 0x4c,
1544 0x56, 0x2b, 0x9f, 0x0c, 0xbd, 0x65, 0x8a, 0x83,
1545 0xde, 0x7c, 0x05, 0x26, 0x93, 0x19, 0xcc, 0xf3,
1546 0x71, 0x0e, 0xad, 0x2f, 0xb3, 0xc9, 0x38, 0x50,
1547 0x64, 0xd5, 0x4c, 0x60, 0x5f, 0x02, 0x13, 0x34,
1548 0xc9, 0x75, 0xc4, 0x60, 0xab, 0x2e, 0x17, 0x7d
1551 static const uint8_t AES_CBC_ciphertext_2048B[] = {
1552 0x8b, 0x55, 0xbd, 0xfd, 0x2b, 0x35, 0x76, 0x5c,
1553 0xd1, 0x90, 0xd7, 0x6a, 0x63, 0x1e, 0x39, 0x71,
1554 0x0d, 0x5c, 0xd8, 0x03, 0x00, 0x75, 0xf1, 0x07,
1555 0x03, 0x8d, 0x76, 0xeb, 0x3b, 0x00, 0x1e, 0x33,
1556 0x88, 0xfc, 0x8f, 0x08, 0x4d, 0x33, 0xf1, 0x3c,
1557 0xee, 0xd0, 0x5d, 0x19, 0x8b, 0x3c, 0x50, 0x86,
1558 0xfd, 0x8d, 0x58, 0x21, 0xb4, 0xae, 0x0f, 0x81,
1559 0xe9, 0x9f, 0xc9, 0xc0, 0x90, 0xf7, 0x04, 0x6f,
1560 0x39, 0x1d, 0x8a, 0x3f, 0x8d, 0x32, 0x23, 0xb5,
1561 0x1f, 0xcc, 0x8a, 0x12, 0x2d, 0x46, 0x82, 0x5e,
1562 0x6a, 0x34, 0x8c, 0xb1, 0x93, 0x70, 0x3b, 0xde,
1563 0x55, 0xaf, 0x16, 0x35, 0x99, 0x84, 0xd5, 0x88,
1564 0xc9, 0x54, 0xb1, 0xb2, 0xd3, 0xeb, 0x9e, 0x55,
1565 0x9a, 0xa9, 0xa7, 0xf5, 0xda, 0x29, 0xcf, 0xe1,
1566 0x98, 0x64, 0x45, 0x77, 0xf2, 0x12, 0x69, 0x8f,
1567 0x78, 0xd8, 0x82, 0x41, 0xb2, 0x9f, 0xe2, 0x1c,
1568 0x63, 0x9b, 0x24, 0x81, 0x67, 0x95, 0xa2, 0xff,
1569 0x26, 0x9d, 0x65, 0x48, 0x61, 0x30, 0x66, 0x41,
1570 0x68, 0x84, 0xbb, 0x59, 0x14, 0x8e, 0x9a, 0x62,
1571 0xb6, 0xca, 0xda, 0xbe, 0x7c, 0x41, 0x52, 0x6e,
1572 0x1b, 0x86, 0xbf, 0x08, 0xeb, 0x37, 0x84, 0x60,
1573 0xe4, 0xc4, 0x1e, 0xa8, 0x4c, 0x84, 0x60, 0x2f,
1574 0x70, 0x90, 0xf2, 0x26, 0xe7, 0x65, 0x0c, 0xc4,
1575 0x58, 0x36, 0x8e, 0x4d, 0xdf, 0xff, 0x9a, 0x39,
1576 0x93, 0x01, 0xcf, 0x6f, 0x6d, 0xde, 0xef, 0x79,
1577 0xb0, 0xce, 0xe2, 0x98, 0xdb, 0x85, 0x8d, 0x62,
1578 0x9d, 0xb9, 0x63, 0xfd, 0xf0, 0x35, 0xb5, 0xa9,
1579 0x1b, 0xf9, 0xe5, 0xd4, 0x2e, 0x22, 0x2d, 0xcc,
1580 0x42, 0xbf, 0x0e, 0x51, 0xf7, 0x15, 0x07, 0x32,
1581 0x75, 0x5b, 0x74, 0xbb, 0x00, 0xef, 0xd4, 0x66,
1582 0x8b, 0xad, 0x71, 0x53, 0x94, 0xd7, 0x7d, 0x2c,
1583 0x40, 0x3e, 0x69, 0xa0, 0x4c, 0x86, 0x5e, 0x06,
1584 0xed, 0xdf, 0x22, 0xe2, 0x24, 0x25, 0x4e, 0x9b,
1585 0x5f, 0x49, 0x74, 0xba, 0xed, 0xb1, 0xa6, 0xeb,
1586 0xae, 0x3f, 0xc6, 0x9e, 0x0b, 0x29, 0x28, 0x9a,
1587 0xb6, 0xb2, 0x74, 0x58, 0xec, 0xa6, 0x4a, 0xed,
1588 0xe5, 0x10, 0x00, 0x85, 0xe1, 0x63, 0x41, 0x61,
1589 0x30, 0x7c, 0x97, 0xcf, 0x75, 0xcf, 0xb6, 0xf3,
1590 0xf7, 0xda, 0x35, 0x3f, 0x85, 0x8c, 0x64, 0xca,
1591 0xb7, 0xea, 0x7f, 0xe4, 0xa3, 0x4d, 0x30, 0x84,
1592 0x8c, 0x9c, 0x80, 0x5a, 0x50, 0xa5, 0x64, 0xae,
1593 0x26, 0xd3, 0xb5, 0x01, 0x73, 0x36, 0x8a, 0x92,
1594 0x49, 0xc4, 0x1a, 0x94, 0x81, 0x9d, 0xf5, 0x6c,
1595 0x50, 0xe1, 0x58, 0x0b, 0x75, 0xdd, 0x6b, 0x6a,
1596 0xca, 0x69, 0xea, 0xc3, 0x33, 0x90, 0x9f, 0x3b,
1597 0x65, 0x5d, 0x5e, 0xee, 0x31, 0xb7, 0x32, 0xfd,
1598 0x56, 0x83, 0xb6, 0xfb, 0xa8, 0x04, 0xfc, 0x1e,
1599 0x11, 0xfb, 0x02, 0x23, 0x53, 0x49, 0x45, 0xb1,
1600 0x07, 0xfc, 0xba, 0xe7, 0x5f, 0x5d, 0x2d, 0x7f,
1601 0x9e, 0x46, 0xba, 0xe9, 0xb0, 0xdb, 0x32, 0x04,
1602 0xa4, 0xa7, 0x98, 0xab, 0x91, 0xcd, 0x02, 0x05,
1603 0xf5, 0x74, 0x31, 0x98, 0x83, 0x3d, 0x33, 0x11,
1604 0x0e, 0xe3, 0x8d, 0xa8, 0xc9, 0x0e, 0xf3, 0xb9,
1605 0x47, 0x67, 0xe9, 0x79, 0x2b, 0x34, 0xcd, 0x9b,
1606 0x45, 0x75, 0x29, 0xf0, 0xbf, 0xcc, 0xda, 0x3a,
1607 0x91, 0xb2, 0x15, 0x27, 0x7a, 0xe5, 0xf5, 0x6a,
1608 0x5e, 0xbe, 0x2c, 0x98, 0xe8, 0x40, 0x96, 0x4f,
1609 0x8a, 0x09, 0xfd, 0xf6, 0xb2, 0xe7, 0x45, 0xb6,
1610 0x08, 0xc1, 0x69, 0xe1, 0xb3, 0xc4, 0x24, 0x34,
1611 0x07, 0x85, 0xd5, 0xa9, 0x78, 0xca, 0xfa, 0x4b,
1612 0x01, 0x19, 0x4d, 0x95, 0xdc, 0xa5, 0xc1, 0x9c,
1613 0xec, 0x27, 0x5b, 0xa6, 0x54, 0x25, 0xbd, 0xc8,
1614 0x0a, 0xb7, 0x11, 0xfb, 0x4e, 0xeb, 0x65, 0x2e,
1615 0xe1, 0x08, 0x9c, 0x3a, 0x45, 0x44, 0x33, 0xef,
1616 0x0d, 0xb9, 0xff, 0x3e, 0x68, 0x9c, 0x61, 0x2b,
1617 0x11, 0xb8, 0x5c, 0x47, 0x0f, 0x94, 0xf2, 0xf8,
1618 0x0b, 0xbb, 0x99, 0x18, 0x85, 0xa3, 0xba, 0x44,
1619 0xf3, 0x79, 0xb3, 0x63, 0x2c, 0x1f, 0x2a, 0x35,
1620 0x3b, 0x23, 0x98, 0xab, 0xf4, 0x16, 0x36, 0xf8,
1621 0xde, 0x86, 0xa4, 0xd4, 0x75, 0xff, 0x51, 0xf9,
1622 0xeb, 0x42, 0x5f, 0x55, 0xe2, 0xbe, 0xd1, 0x5b,
1623 0xb5, 0x38, 0xeb, 0xb4, 0x4d, 0xec, 0xec, 0x99,
1624 0xe1, 0x39, 0x43, 0xaa, 0x64, 0xf7, 0xc9, 0xd8,
1625 0xf2, 0x9a, 0x71, 0x43, 0x39, 0x17, 0xe8, 0xa8,
1626 0xa2, 0xe2, 0xa4, 0x2c, 0x18, 0x11, 0x49, 0xdf,
1627 0x18, 0xdd, 0x85, 0x6e, 0x65, 0x96, 0xe2, 0xba,
1628 0xa1, 0x0a, 0x2c, 0xca, 0xdc, 0x5f, 0xe4, 0xf4,
1629 0x35, 0x03, 0xb2, 0xa9, 0xda, 0xcf, 0xb7, 0x6d,
1630 0x65, 0x82, 0x82, 0x67, 0x9d, 0x0e, 0xf3, 0xe8,
1631 0x85, 0x6c, 0x69, 0xb8, 0x4c, 0xa6, 0xc6, 0x2e,
1632 0x40, 0xb5, 0x54, 0x28, 0x95, 0xe4, 0x57, 0xe0,
1633 0x5b, 0xf8, 0xde, 0x59, 0xe0, 0xfd, 0x89, 0x48,
1634 0xac, 0x56, 0x13, 0x54, 0xb9, 0x1b, 0xf5, 0x59,
1635 0x97, 0xb6, 0xb3, 0xe8, 0xac, 0x2d, 0xfc, 0xd2,
1636 0xea, 0x57, 0x96, 0x57, 0xa8, 0x26, 0x97, 0x2c,
1637 0x01, 0x89, 0x56, 0xea, 0xec, 0x8c, 0x53, 0xd5,
1638 0xd7, 0x9e, 0xc9, 0x98, 0x0b, 0xad, 0x03, 0x75,
1639 0xa0, 0x6e, 0x98, 0x8b, 0x97, 0x8d, 0x8d, 0x85,
1640 0x7d, 0x74, 0xa7, 0x2d, 0xde, 0x67, 0x0c, 0xcd,
1641 0x54, 0xb8, 0x15, 0x7b, 0xeb, 0xf5, 0x84, 0xb9,
1642 0x78, 0xab, 0xd8, 0x68, 0x91, 0x1f, 0x6a, 0xa6,
1643 0x28, 0x22, 0xf7, 0x00, 0x49, 0x00, 0xbe, 0x41,
1644 0x71, 0x0a, 0xf5, 0xe7, 0x9f, 0xb4, 0x11, 0x41,
1645 0x3f, 0xcd, 0xa9, 0xa9, 0x01, 0x8b, 0x6a, 0xeb,
1646 0x54, 0x4c, 0x58, 0x92, 0x68, 0x02, 0x0e, 0xe9,
1647 0xed, 0x65, 0x4c, 0xfb, 0x95, 0x48, 0x58, 0xa2,
1648 0xaa, 0x57, 0x69, 0x13, 0x82, 0x0c, 0x2c, 0x4b,
1649 0x5d, 0x4e, 0x18, 0x30, 0xef, 0x1c, 0xb1, 0x9d,
1650 0x05, 0x05, 0x02, 0x1c, 0x97, 0xc9, 0x48, 0xfe,
1651 0x5e, 0x7b, 0x77, 0xa3, 0x1f, 0x2a, 0x81, 0x42,
1652 0xf0, 0x4b, 0x85, 0x12, 0x9c, 0x1f, 0x44, 0xb1,
1653 0x14, 0x91, 0x92, 0x65, 0x77, 0xb1, 0x87, 0xa2,
1654 0xfc, 0xa4, 0xe7, 0xd2, 0x9b, 0xf2, 0x17, 0xf0,
1655 0x30, 0x1c, 0x8d, 0x33, 0xbc, 0x25, 0x28, 0x48,
1656 0xfd, 0x30, 0x79, 0x0a, 0x99, 0x3e, 0xb4, 0x0f,
1657 0x1e, 0xa6, 0x68, 0x76, 0x19, 0x76, 0x29, 0xac,
1658 0x5d, 0xb8, 0x1e, 0x42, 0xd6, 0x85, 0x04, 0xbf,
1659 0x64, 0x1c, 0x2d, 0x53, 0xe9, 0x92, 0x78, 0xf8,
1660 0xc3, 0xda, 0x96, 0x92, 0x10, 0x6f, 0x45, 0x85,
1661 0xaf, 0x5e, 0xcc, 0xa8, 0xc0, 0xc6, 0x2e, 0x73,
1662 0x51, 0x3f, 0x5e, 0xd7, 0x52, 0x33, 0x71, 0x12,
1663 0x6d, 0x85, 0xee, 0xea, 0x85, 0xa8, 0x48, 0x2b,
1664 0x40, 0x64, 0x6d, 0x28, 0x73, 0x16, 0xd7, 0x82,
1665 0xd9, 0x90, 0xed, 0x1f, 0xa7, 0x5c, 0xb1, 0x5c,
1666 0x27, 0xb9, 0x67, 0x8b, 0xb4, 0x17, 0x13, 0x83,
1667 0x5f, 0x09, 0x72, 0x0a, 0xd7, 0xa0, 0xec, 0x81,
1668 0x59, 0x19, 0xb9, 0xa6, 0x5a, 0x37, 0x34, 0x14,
1669 0x47, 0xf6, 0xe7, 0x6c, 0xd2, 0x09, 0x10, 0xe7,
1670 0xdd, 0xbb, 0x02, 0xd1, 0x28, 0xfa, 0x01, 0x2c,
1671 0x93, 0x64, 0x2e, 0x1b, 0x4c, 0x02, 0x52, 0xcb,
1672 0x07, 0xa1, 0xb6, 0x46, 0x02, 0x80, 0xd9, 0x8f,
1673 0x5c, 0x62, 0xbe, 0x78, 0x9e, 0x75, 0xc4, 0x97,
1674 0x91, 0x39, 0x12, 0x65, 0xb9, 0x3b, 0xc2, 0xd1,
1675 0xaf, 0xf2, 0x1f, 0x4e, 0x4d, 0xd1, 0xf0, 0x9f,
1676 0xb7, 0x12, 0xfd, 0xe8, 0x75, 0x18, 0xc0, 0x9d,
1677 0x8c, 0x70, 0xff, 0x77, 0x05, 0xb6, 0x1a, 0x1f,
1678 0x96, 0x48, 0xf6, 0xfe, 0xd5, 0x5d, 0x98, 0xa5,
1679 0x72, 0x1c, 0x84, 0x76, 0x3e, 0xb8, 0x87, 0x37,
1680 0xdd, 0xd4, 0x3a, 0x45, 0xdd, 0x09, 0xd8, 0xe7,
1681 0x09, 0x2f, 0x3e, 0x33, 0x9e, 0x7b, 0x8c, 0xe4,
1682 0x85, 0x12, 0x4e, 0xf8, 0x06, 0xb7, 0xb1, 0x85,
1683 0x24, 0x96, 0xd8, 0xfe, 0x87, 0x92, 0x81, 0xb1,
1684 0xa3, 0x38, 0xb9, 0x56, 0xe1, 0xf6, 0x36, 0x41,
1685 0xbb, 0xd6, 0x56, 0x69, 0x94, 0x57, 0xb3, 0xa4,
1686 0xca, 0xa4, 0xe1, 0x02, 0x3b, 0x96, 0x71, 0xe0,
1687 0xb2, 0x2f, 0x85, 0x48, 0x1b, 0x4a, 0x41, 0x80,
1688 0x4b, 0x9c, 0xe0, 0xc9, 0x39, 0xb8, 0xb1, 0xca,
1689 0x64, 0x77, 0x46, 0x58, 0xe6, 0x84, 0xd5, 0x2b,
1690 0x65, 0xce, 0xe9, 0x09, 0xa3, 0xaa, 0xfb, 0x83,
1691 0xa9, 0x28, 0x68, 0xfd, 0xcd, 0xfd, 0x76, 0x83,
1692 0xe1, 0x20, 0x22, 0x77, 0x3a, 0xa3, 0xb2, 0x93,
1693 0x14, 0x91, 0xfc, 0xe2, 0x17, 0x63, 0x2b, 0xa6,
1694 0x29, 0x38, 0x7b, 0x9b, 0x8b, 0x15, 0x77, 0xd6,
1695 0xaa, 0x92, 0x51, 0x53, 0x50, 0xff, 0xa0, 0x35,
1696 0xa0, 0x59, 0x7d, 0xf0, 0x11, 0x23, 0x49, 0xdf,
1697 0x5a, 0x21, 0xc2, 0xfe, 0x35, 0xa0, 0x1d, 0xe2,
1698 0xae, 0xa2, 0x8a, 0x61, 0x5b, 0xf7, 0xf1, 0x1c,
1699 0x1c, 0xec, 0xc4, 0xf6, 0xdc, 0xaa, 0xc8, 0xc2,
1700 0xe5, 0xa1, 0x2e, 0x14, 0xe5, 0xc6, 0xc9, 0x73,
1701 0x03, 0x78, 0xeb, 0xed, 0xe0, 0x3e, 0xc5, 0xf4,
1702 0xf1, 0x50, 0xb2, 0x01, 0x91, 0x96, 0xf5, 0xbb,
1703 0xe1, 0x32, 0xcd, 0xa8, 0x66, 0xbf, 0x73, 0x85,
1704 0x94, 0xd6, 0x7e, 0x68, 0xc5, 0xe4, 0xed, 0xd5,
1705 0xe3, 0x67, 0x4c, 0xa5, 0xb3, 0x1f, 0xdf, 0xf8,
1706 0xb3, 0x73, 0x5a, 0xac, 0xeb, 0x46, 0x16, 0x24,
1707 0xab, 0xca, 0xa4, 0xdd, 0x87, 0x0e, 0x24, 0x83,
1708 0x32, 0x04, 0x4c, 0xd8, 0xda, 0x7d, 0xdc, 0xe3,
1709 0x01, 0x93, 0xf3, 0xc1, 0x5b, 0xbd, 0xc3, 0x1d,
1710 0x40, 0x62, 0xde, 0x94, 0x03, 0x85, 0x91, 0x2a,
1711 0xa0, 0x25, 0x10, 0xd3, 0x32, 0x9f, 0x93, 0x00,
1712 0xa7, 0x8a, 0xfa, 0x77, 0x7c, 0xaf, 0x4d, 0xc8,
1713 0x7a, 0xf3, 0x16, 0x2b, 0xba, 0xeb, 0x74, 0x51,
1714 0xb8, 0xdd, 0x32, 0xad, 0x68, 0x7d, 0xdd, 0xca,
1715 0x60, 0x98, 0xc9, 0x9b, 0xb6, 0x5d, 0x4d, 0x3a,
1716 0x66, 0x8a, 0xbe, 0x05, 0xf9, 0x0c, 0xc5, 0xba,
1717 0x52, 0x82, 0x09, 0x1f, 0x5a, 0x66, 0x89, 0x69,
1718 0xa3, 0x5d, 0x93, 0x50, 0x7d, 0x44, 0xc3, 0x2a,
1719 0xb8, 0xab, 0xec, 0xa6, 0x5a, 0xae, 0x4a, 0x6a,
1720 0xcd, 0xfd, 0xb6, 0xff, 0x3d, 0x98, 0x05, 0xd9,
1721 0x5b, 0x29, 0xc4, 0x6f, 0xe0, 0x76, 0xe2, 0x3f,
1722 0xec, 0xd7, 0xa4, 0x91, 0x63, 0xf5, 0x4e, 0x4b,
1723 0xab, 0x20, 0x8c, 0x3a, 0x41, 0xed, 0x8b, 0x4b,
1724 0xb9, 0x01, 0x21, 0xc0, 0x6d, 0xfd, 0x70, 0x5b,
1725 0x20, 0x92, 0x41, 0x89, 0x74, 0xb7, 0xe9, 0x8b,
1726 0xfc, 0x6d, 0x17, 0x3f, 0x7f, 0x89, 0x3d, 0x6b,
1727 0x8f, 0xbc, 0xd2, 0x57, 0xe9, 0xc9, 0x6e, 0xa7,
1728 0x19, 0x26, 0x18, 0xad, 0xef, 0xb5, 0x87, 0xbf,
1729 0xb8, 0xa8, 0xd6, 0x7d, 0xdd, 0x5f, 0x94, 0x54,
1730 0x09, 0x92, 0x2b, 0xf5, 0x04, 0xf7, 0x36, 0x69,
1731 0x8e, 0xf4, 0xdc, 0x1d, 0x6e, 0x55, 0xbb, 0xe9,
1732 0x13, 0x05, 0x83, 0x35, 0x9c, 0xed, 0xcf, 0x8c,
1733 0x26, 0x8c, 0x7b, 0xc7, 0x0b, 0xba, 0xfd, 0xe2,
1734 0x84, 0x5c, 0x2a, 0x79, 0x43, 0x99, 0xb2, 0xc3,
1735 0x82, 0x87, 0xc8, 0xcd, 0x37, 0x6d, 0xa1, 0x2b,
1736 0x39, 0xb2, 0x38, 0x99, 0xd9, 0xfc, 0x02, 0x15,
1737 0x55, 0x21, 0x62, 0x59, 0xeb, 0x00, 0x86, 0x08,
1738 0x20, 0xbe, 0x1a, 0x62, 0x4d, 0x7e, 0xdf, 0x68,
1739 0x73, 0x5b, 0x5f, 0xaf, 0x84, 0x96, 0x2e, 0x1f,
1740 0x6b, 0x03, 0xc9, 0xa6, 0x75, 0x18, 0xe9, 0xd4,
1741 0xbd, 0xc8, 0xec, 0x9a, 0x5a, 0xb3, 0x99, 0xab,
1742 0x5f, 0x7c, 0x08, 0x7f, 0x69, 0x4d, 0x52, 0xa2,
1743 0x30, 0x17, 0x3b, 0x16, 0x15, 0x1b, 0x11, 0x62,
1744 0x3e, 0x80, 0x4b, 0x85, 0x7c, 0x9c, 0xd1, 0x3a,
1745 0x13, 0x01, 0x5e, 0x45, 0xf1, 0xc8, 0x5f, 0xcd,
1746 0x0e, 0x21, 0xf5, 0x82, 0xd4, 0x7b, 0x5c, 0x45,
1747 0x27, 0x6b, 0xef, 0xfe, 0xb8, 0xc0, 0x6f, 0xdc,
1748 0x60, 0x7b, 0xe4, 0xd5, 0x75, 0x71, 0xe6, 0xe8,
1749 0x7d, 0x6b, 0x6d, 0x80, 0xaf, 0x76, 0x41, 0x58,
1750 0xb7, 0xac, 0xb7, 0x13, 0x2f, 0x81, 0xcc, 0xf9,
1751 0x19, 0x97, 0xe8, 0xee, 0x40, 0x91, 0xfc, 0x89,
1752 0x13, 0x1e, 0x67, 0x9a, 0xdb, 0x8f, 0x8f, 0xc7,
1753 0x4a, 0xc9, 0xaf, 0x2f, 0x67, 0x01, 0x3c, 0xb8,
1754 0xa8, 0x3e, 0x78, 0x93, 0x1b, 0xdf, 0xbb, 0x34,
1755 0x0b, 0x1a, 0xfa, 0xc2, 0x2d, 0xc5, 0x1c, 0xec,
1756 0x97, 0x4f, 0x48, 0x41, 0x15, 0x0e, 0x75, 0xed,
1757 0x66, 0x8c, 0x17, 0x7f, 0xb1, 0x48, 0x13, 0xc1,
1758 0xfb, 0x60, 0x06, 0xf9, 0x72, 0x41, 0x3e, 0xcf,
1759 0x6e, 0xb6, 0xc8, 0xeb, 0x4b, 0x5a, 0xd2, 0x0c,
1760 0x28, 0xda, 0x02, 0x7a, 0x46, 0x21, 0x42, 0xb5,
1761 0x34, 0xda, 0xcb, 0x5e, 0xbd, 0x66, 0x5c, 0xca,
1762 0xff, 0x52, 0x43, 0x89, 0xf9, 0x10, 0x9a, 0x9e,
1763 0x9b, 0xe3, 0xb0, 0x51, 0xe9, 0xf3, 0x0a, 0x35,
1764 0x77, 0x54, 0xcc, 0xac, 0xa6, 0xf1, 0x2e, 0x36,
1765 0x89, 0xac, 0xc5, 0xc6, 0x62, 0x5a, 0xc0, 0x6d,
1766 0xc4, 0xe1, 0xf7, 0x64, 0x30, 0xff, 0x11, 0x40,
1767 0x13, 0x89, 0xd8, 0xd7, 0x73, 0x3f, 0x93, 0x08,
1768 0x68, 0xab, 0x66, 0x09, 0x1a, 0xea, 0x78, 0xc9,
1769 0x52, 0xf2, 0xfd, 0x93, 0x1b, 0x94, 0xbe, 0x5c,
1770 0xe5, 0x00, 0x6e, 0x00, 0xb9, 0xea, 0x27, 0xaa,
1771 0xb3, 0xee, 0xe3, 0xc8, 0x6a, 0xb0, 0xc1, 0x8e,
1772 0x9b, 0x54, 0x40, 0x10, 0x96, 0x06, 0xe8, 0xb3,
1773 0xf5, 0x55, 0x77, 0xd7, 0x5c, 0x94, 0xc1, 0x74,
1774 0xf3, 0x07, 0x64, 0xac, 0x1c, 0xde, 0xc7, 0x22,
1775 0xb0, 0xbf, 0x2a, 0x5a, 0xc0, 0x8f, 0x8a, 0x83,
1776 0x50, 0xc2, 0x5e, 0x97, 0xa0, 0xbe, 0x49, 0x7e,
1777 0x47, 0xaf, 0xa7, 0x20, 0x02, 0x35, 0xa4, 0x57,
1778 0xd9, 0x26, 0x63, 0xdb, 0xf1, 0x34, 0x42, 0x89,
1779 0x36, 0xd1, 0x77, 0x6f, 0xb1, 0xea, 0x79, 0x7e,
1780 0x95, 0x10, 0x5a, 0xee, 0xa3, 0xae, 0x6f, 0xba,
1781 0xa9, 0xef, 0x5a, 0x7e, 0x34, 0x03, 0x04, 0x07,
1782 0x92, 0xd6, 0x07, 0x79, 0xaa, 0x14, 0x90, 0x97,
1783 0x05, 0x4d, 0xa6, 0x27, 0x10, 0x5c, 0x25, 0x24,
1784 0xcb, 0xcc, 0xf6, 0x77, 0x9e, 0x43, 0x23, 0xd4,
1785 0x98, 0xef, 0x22, 0xa8, 0xad, 0xf2, 0x26, 0x08,
1786 0x59, 0x69, 0xa4, 0xc3, 0x97, 0xe0, 0x5c, 0x6f,
1787 0xeb, 0x3d, 0xd4, 0x62, 0x6e, 0x80, 0x61, 0x02,
1788 0xf4, 0xfc, 0x94, 0x79, 0xbb, 0x4e, 0x6d, 0xd7,
1789 0x30, 0x5b, 0x10, 0x11, 0x5a, 0x3d, 0xa7, 0x50,
1790 0x1d, 0x9a, 0x13, 0x5f, 0x4f, 0xa8, 0xa7, 0xb6,
1791 0x39, 0xc7, 0xea, 0xe6, 0x19, 0x61, 0x69, 0xc7,
1792 0x9a, 0x3a, 0xeb, 0x9d, 0xdc, 0xf7, 0x06, 0x37,
1793 0xbd, 0xac, 0xe3, 0x18, 0xff, 0xfe, 0x11, 0xdb,
1794 0x67, 0x42, 0xb4, 0xea, 0xa8, 0xbd, 0xb0, 0x76,
1795 0xd2, 0x74, 0x32, 0xc2, 0xa4, 0x9c, 0xe7, 0x60,
1796 0xc5, 0x30, 0x9a, 0x57, 0x66, 0xcd, 0x0f, 0x02,
1797 0x4c, 0xea, 0xe9, 0xd3, 0x2a, 0x5c, 0x09, 0xc2,
1798 0xff, 0x6a, 0xde, 0x5d, 0xb7, 0xe9, 0x75, 0x6b,
1799 0x29, 0x94, 0xd6, 0xf7, 0xc3, 0xdf, 0xfb, 0x70,
1800 0xec, 0xb5, 0x8c, 0xb0, 0x78, 0x7a, 0xee, 0x52,
1801 0x5f, 0x8c, 0xae, 0x85, 0xe5, 0x98, 0xa2, 0xb7,
1802 0x7c, 0x02, 0x2a, 0xcc, 0x9e, 0xde, 0x99, 0x5f,
1803 0x84, 0x20, 0xbb, 0xdc, 0xf2, 0xd2, 0x13, 0x46,
1804 0x3c, 0xd6, 0x4d, 0xe7, 0x50, 0xef, 0x55, 0xc3,
1805 0x96, 0x9f, 0xec, 0x6c, 0xd8, 0xe2, 0xea, 0xed,
1806 0xc7, 0x33, 0xc9, 0xb3, 0x1c, 0x4f, 0x1d, 0x83,
1807 0x1d, 0xe4, 0xdd, 0xb2, 0x24, 0x8f, 0xf9, 0xf5
1811 static const uint8_t HMAC_SHA256_ciphertext_64B_digest[] = {
1812 0xc5, 0x6d, 0x4f, 0x29, 0xf4, 0xd2, 0xcc, 0x87,
1813 0x3c, 0x81, 0x02, 0x6d, 0x38, 0x7a, 0x67, 0x3e,
1814 0x95, 0x9c, 0x5c, 0x8f, 0xda, 0x5c, 0x06, 0xe0,
1815 0x65, 0xf1, 0x6c, 0x51, 0x52, 0x49, 0x3e, 0x5f
1818 static const uint8_t HMAC_SHA256_ciphertext_128B_digest[] = {
1819 0x76, 0x64, 0x2d, 0x69, 0x71, 0x5d, 0x6a, 0xd8,
1820 0x9f, 0x74, 0x11, 0x2f, 0x58, 0xe0, 0x4a, 0x2f,
1821 0x6c, 0x88, 0x5e, 0x4d, 0x9c, 0x79, 0x83, 0x1c,
1822 0x8a, 0x14, 0xd0, 0x07, 0xfb, 0xbf, 0x6c, 0x8f
1825 static const uint8_t HMAC_SHA256_ciphertext_256B_digest[] = {
1826 0x05, 0xa7, 0x44, 0xcd, 0x91, 0x8c, 0x95, 0xcf,
1827 0x7b, 0x8f, 0xd3, 0x90, 0x86, 0x7e, 0x7b, 0xb9,
1828 0x05, 0xd6, 0x6e, 0x7a, 0xc1, 0x7b, 0x26, 0xff,
1829 0xd3, 0x4b, 0xe0, 0x22, 0x8b, 0xa8, 0x47, 0x52
1832 static const uint8_t HMAC_SHA256_ciphertext_512B_digest[] = {
1833 0x08, 0xb7, 0x29, 0x54, 0x18, 0x7e, 0x97, 0x49,
1834 0xc6, 0x7c, 0x9f, 0x94, 0xa5, 0x4f, 0xa2, 0x25,
1835 0xd0, 0xe2, 0x30, 0x7b, 0xad, 0x93, 0xc9, 0x12,
1836 0x0f, 0xf0, 0xf0, 0x71, 0xc2, 0xf6, 0x53, 0x8f
1839 static const uint8_t HMAC_SHA256_ciphertext_768B_digest[] = {
1840 0xe4, 0x3e, 0x73, 0x93, 0x03, 0xaf, 0x6f, 0x9c,
1841 0xca, 0x57, 0x3b, 0x4a, 0x6e, 0x83, 0x58, 0xf5,
1842 0x66, 0xc2, 0xb4, 0xa7, 0xe0, 0xee, 0x63, 0x6b,
1843 0x48, 0xb7, 0x50, 0x45, 0x69, 0xdf, 0x5c, 0x5b
1846 static const uint8_t HMAC_SHA256_ciphertext_1024B_digest[] = {
1847 0x03, 0xb9, 0x96, 0x26, 0xdc, 0x1c, 0xab, 0xe2,
1848 0xf5, 0x70, 0x55, 0x15, 0x67, 0x6e, 0x48, 0x11,
1849 0xe7, 0x67, 0xea, 0xfa, 0x5c, 0x6b, 0x28, 0x22,
1850 0xc9, 0x0e, 0x67, 0x04, 0xb3, 0x71, 0x7f, 0x88
1853 static const uint8_t HMAC_SHA256_ciphertext_1280B_digest[] = {
1854 0x01, 0x91, 0xb8, 0x78, 0xd3, 0x21, 0x74, 0xa5,
1855 0x1c, 0x8b, 0xd4, 0xd2, 0xc0, 0x49, 0xd7, 0xd2,
1856 0x16, 0x46, 0x66, 0x85, 0x50, 0x6d, 0x08, 0xcc,
1857 0xc7, 0x0a, 0xa3, 0x71, 0xcc, 0xde, 0xee, 0xdc
1860 static const uint8_t HMAC_SHA256_ciphertext_1536B_digest[] = {
1861 0xf2, 0xe5, 0xe9, 0x57, 0x53, 0xd7, 0x69, 0x28,
1862 0x7b, 0x69, 0xb5, 0x49, 0xa3, 0x31, 0x56, 0x5f,
1863 0xa4, 0xe9, 0x87, 0x26, 0x2f, 0xe0, 0x2d, 0xd6,
1864 0x08, 0x44, 0x01, 0x71, 0x0c, 0x93, 0x85, 0x84
1867 static const uint8_t HMAC_SHA256_ciphertext_1792B_digest[] = {
1868 0xf6, 0x57, 0x62, 0x01, 0xbf, 0x2d, 0xea, 0x4a,
1869 0xef, 0x43, 0x85, 0x60, 0x18, 0xdf, 0x8b, 0xb4,
1870 0x60, 0xc0, 0xfd, 0x2f, 0x90, 0x15, 0xe6, 0x91,
1871 0x56, 0x61, 0x68, 0x7f, 0x5e, 0x92, 0xa8, 0xdd
1874 static const uint8_t HMAC_SHA256_ciphertext_2048B_digest[] = {
1875 0x81, 0x1a, 0x29, 0xbc, 0x6b, 0x9f, 0xbb, 0xb8,
1876 0xef, 0x71, 0x7b, 0x1f, 0x6f, 0xd4, 0x7e, 0x68,
1877 0x3a, 0x9c, 0xb9, 0x98, 0x22, 0x81, 0xfa, 0x95,
1878 0xee, 0xbc, 0x7f, 0x23, 0x29, 0x88, 0x76, 0xb8
1881 struct crypto_data_params {
1884 const char *plaintext;
1885 struct crypto_expected_output {
1886 const uint8_t *ciphertext;
1887 const uint8_t *digest;
1891 #define MAX_PACKET_SIZE_INDEX 10
1893 struct crypto_data_params aes_cbc_hmac_sha256_output[MAX_PACKET_SIZE_INDEX] = {
1894 { "64B", 64, &plaintext_quote[sizeof(plaintext_quote) - 1 - 64],
1895 { AES_CBC_ciphertext_64B, HMAC_SHA256_ciphertext_64B_digest } },
1896 { "128B", 128, &plaintext_quote[sizeof(plaintext_quote) - 1 - 128],
1897 { AES_CBC_ciphertext_128B, HMAC_SHA256_ciphertext_128B_digest } },
1898 { "256B", 256, &plaintext_quote[sizeof(plaintext_quote) - 1 - 256],
1899 { AES_CBC_ciphertext_256B, HMAC_SHA256_ciphertext_256B_digest } },
1900 { "512B", 512, &plaintext_quote[sizeof(plaintext_quote) - 1 - 512],
1901 { AES_CBC_ciphertext_512B, HMAC_SHA256_ciphertext_512B_digest } },
1902 { "768B", 768, &plaintext_quote[sizeof(plaintext_quote) - 1 - 768],
1903 { AES_CBC_ciphertext_768B, HMAC_SHA256_ciphertext_768B_digest } },
1904 { "1024B", 1024, &plaintext_quote[sizeof(plaintext_quote) - 1 - 1024],
1905 { AES_CBC_ciphertext_1024B, HMAC_SHA256_ciphertext_1024B_digest } },
1906 { "1280B", 1280, &plaintext_quote[sizeof(plaintext_quote) - 1 - 1280],
1907 { AES_CBC_ciphertext_1280B, HMAC_SHA256_ciphertext_1280B_digest } },
1908 { "1536B", 1536, &plaintext_quote[sizeof(plaintext_quote) - 1 - 1536],
1909 { AES_CBC_ciphertext_1536B, HMAC_SHA256_ciphertext_1536B_digest } },
1910 { "1792B", 1792, &plaintext_quote[sizeof(plaintext_quote) - 1 - 1792],
1911 { AES_CBC_ciphertext_1792B, HMAC_SHA256_ciphertext_1792B_digest } },
1912 { "2048B", 2048, &plaintext_quote[sizeof(plaintext_quote) - 1 - 2048],
1913 { AES_CBC_ciphertext_2048B, HMAC_SHA256_ciphertext_2048B_digest } }
1917 test_perf_crypto_qp_vary_burst_size(uint16_t dev_num)
1919 uint32_t num_to_submit = 4096;
1920 struct rte_crypto_op *c_ops[num_to_submit];
1921 struct rte_crypto_op *proc_ops[num_to_submit];
1922 uint64_t failed_polls, retries, start_cycles, end_cycles, total_cycles = 0;
1923 uint32_t burst_sent, burst_received;
1924 uint32_t i, burst_size, num_sent, num_received;
1925 struct crypto_testsuite_params *ts_params = &testsuite_params;
1926 struct crypto_unittest_params *ut_params = &unittest_params;
1927 struct crypto_data_params *data_params = aes_cbc_hmac_sha256_output;
1929 if (rte_cryptodev_count() == 0) {
1930 printf("\nNo crypto devices available. Is kernel driver loaded?\n");
1934 /* Setup Cipher Parameters */
1935 ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
1936 ut_params->cipher_xform.next = &ut_params->auth_xform;
1938 ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
1939 ut_params->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_DECRYPT;
1940 ut_params->cipher_xform.cipher.key.data = aes_cbc_128_key;
1941 ut_params->cipher_xform.cipher.key.length = CIPHER_IV_LENGTH_AES_CBC;
1944 /* Setup HMAC Parameters */
1945 ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
1946 ut_params->auth_xform.next = NULL;
1948 ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_VERIFY;
1949 ut_params->auth_xform.auth.algo = RTE_CRYPTO_AUTH_SHA256_HMAC;
1950 ut_params->auth_xform.auth.key.data = hmac_sha256_key;
1951 ut_params->auth_xform.auth.key.length = HMAC_KEY_LENGTH_SHA256;
1952 ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_SHA256;
1954 /* Create Crypto session*/
1955 ut_params->sess = rte_cryptodev_sym_session_create(ts_params->dev_id,
1956 &ut_params->cipher_xform);
1958 TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
1960 /* Generate Crypto op data structure(s) */
1961 for (i = 0; i < num_to_submit ; i++) {
1962 struct rte_mbuf *m = setup_test_string(ts_params->mbuf_mp,
1963 data_params[0].expected.ciphertext,
1964 data_params[0].length, 0);
1965 TEST_ASSERT_NOT_NULL(m, "Failed to allocate tx_buf");
1967 ut_params->digest = (uint8_t *)rte_pktmbuf_append(m,
1968 DIGEST_BYTE_LENGTH_SHA256);
1969 TEST_ASSERT_NOT_NULL(ut_params->digest,
1970 "no room to append digest");
1972 rte_memcpy(ut_params->digest, data_params[0].expected.digest,
1973 DIGEST_BYTE_LENGTH_SHA256);
1976 struct rte_crypto_op *op =
1977 rte_crypto_op_alloc(ts_params->op_mpool,
1978 RTE_CRYPTO_OP_TYPE_SYMMETRIC);
1980 rte_crypto_op_attach_sym_session(op, ut_params->sess);
1982 op->sym->auth.digest.data = ut_params->digest;
1983 op->sym->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(m,
1984 data_params[0].length);
1985 op->sym->auth.digest.length = DIGEST_BYTE_LENGTH_SHA256;
1987 op->sym->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
1988 op->sym->auth.data.length = data_params[0].length;
1991 op->sym->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(m,
1992 CIPHER_IV_LENGTH_AES_CBC);
1993 op->sym->cipher.iv.phys_addr = rte_pktmbuf_mtophys(m);
1994 op->sym->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
1996 rte_memcpy(op->sym->cipher.iv.data, aes_cbc_128_iv,
1997 CIPHER_IV_LENGTH_AES_CBC);
1999 op->sym->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
2000 op->sym->cipher.data.length = data_params[0].length;
2007 printf("\nTest to measure the IA cycle cost using AES128_CBC_SHA256_HMAC "
2008 "algorithm with a constant request size of %u.",
2009 data_params[0].length);
2010 printf("\nThis test will keep retries at 0 and only measure IA cycle "
2011 "cost for each request.");
2012 printf("\nDev No\tQP No\tNum Sent\tNum Received\tTx/Rx burst");
2013 printf("\tRetries (Device Busy)\tAverage IA cycle cost "
2014 "(assuming 0 retries)");
2015 for (i = 2; i <= 128 ; i *= 2) {
2022 while (num_sent < num_to_submit) {
2023 start_cycles = rte_rdtsc_precise();
2024 burst_sent = rte_cryptodev_enqueue_burst(dev_num,
2025 0, &c_ops[num_sent],
2026 ((num_to_submit-num_sent) < burst_size) ?
2027 num_to_submit-num_sent : burst_size);
2028 if (burst_sent == 0)
2031 num_sent += burst_sent;
2032 end_cycles = rte_rdtsc_precise();
2033 total_cycles += (end_cycles - start_cycles);
2035 * Wait until requests have been sent.
2039 start_cycles = rte_rdtsc_precise();
2040 burst_received = rte_cryptodev_dequeue_burst(
2041 dev_num, 0, proc_ops, burst_size);
2042 if (burst_received == 0)
2045 num_received += burst_received;
2046 end_cycles = rte_rdtsc_precise();
2047 total_cycles += end_cycles - start_cycles;
2050 while (num_received != num_to_submit) {
2051 if (gbl_cryptodev_perftest_devtype ==
2052 RTE_CRYPTODEV_AESNI_MB_PMD)
2053 rte_cryptodev_enqueue_burst(dev_num, 0,
2056 burst_received = rte_cryptodev_dequeue_burst(
2057 dev_num, 0, proc_ops, burst_size);
2058 if (burst_received == 0)
2061 num_received += burst_received;
2064 printf("\n%u\t%u\t%u\t\t%u\t\t%u", dev_num, 0,
2065 num_sent, num_received, burst_size);
2066 printf("\t\t%"PRIu64, retries);
2067 printf("\t\t\t%"PRIu64, total_cycles/num_received);
2071 for (i = 0; i < num_to_submit ; i++) {
2072 rte_pktmbuf_free(c_ops[i]->sym->m_src);
2073 rte_crypto_op_free(c_ops[i]);
2075 return TEST_SUCCESS;
2079 test_perf_snow3G_optimise_cyclecount(struct perf_test_params *pparams)
2081 uint32_t num_to_submit = pparams->total_operations;
2082 struct rte_crypto_op *c_ops[num_to_submit];
2083 struct rte_crypto_op *proc_ops[num_to_submit];
2084 uint64_t failed_polls, retries, start_cycles, end_cycles, total_cycles = 0;
2085 uint32_t burst_sent = 0, burst_received = 0;
2086 uint32_t i, burst_size, num_sent, num_ops_received;
2087 struct crypto_testsuite_params *ts_params = &testsuite_params;
2088 static struct rte_cryptodev_sym_session *sess;
2090 if (rte_cryptodev_count() == 0) {
2091 printf("\nNo crypto devices found. Is PMD build configured?\n");
2092 printf("\nAnd is kernel driver loaded for HW PMDs?\n");
2096 /* Create Crypto session*/
2097 sess = test_perf_create_snow3g_session(ts_params->dev_id,
2098 pparams->chain, pparams->cipher_algo,
2099 pparams->cipher_key_length, pparams->auth_algo);
2100 TEST_ASSERT_NOT_NULL(sess, "Session creation failed");
2102 /* Generate Crypto op data structure(s)*/
2103 for (i = 0; i < num_to_submit ; i++) {
2104 struct rte_mbuf *m = test_perf_create_pktmbuf(
2107 TEST_ASSERT_NOT_NULL(m, "Failed to allocate tx_buf");
2109 struct rte_crypto_op *op =
2110 rte_crypto_op_alloc(ts_params->op_mpool,
2111 RTE_CRYPTO_OP_TYPE_SYMMETRIC);
2112 TEST_ASSERT_NOT_NULL(op, "Failed to allocate op");
2114 op = test_perf_set_crypto_op_snow3g(op, m, sess, pparams->buf_size,
2115 get_auth_digest_length(pparams->auth_algo));
2116 TEST_ASSERT_NOT_NULL(op, "Failed to attach op to session");
2121 printf("\nOn %s dev%u qp%u, %s, cipher algo:%s, auth_algo:%s, "
2122 "Packet Size %u bytes",
2123 pmd_name(gbl_cryptodev_perftest_devtype),
2124 ts_params->dev_id, 0,
2125 chain_mode_name(pparams->chain),
2126 cipher_algo_name(pparams->cipher_algo),
2127 auth_algo_name(pparams->auth_algo),
2129 printf("\nOps Tx\tOps Rx\tOps/burst ");
2130 printf("Retries EmptyPolls\tIACycles/CyOp\tIACycles/Burst\tIACycles/Byte");
2132 for (i = 2; i <= 128 ; i *= 2) {
2134 num_ops_received = 0;
2139 while (num_sent < num_to_submit) {
2140 start_cycles = rte_rdtsc_precise();
2141 burst_sent = rte_cryptodev_enqueue_burst(ts_params->dev_id,
2142 0, &c_ops[num_sent],
2143 ((num_to_submit-num_sent) < burst_size) ?
2144 num_to_submit-num_sent : burst_size);
2145 end_cycles = rte_rdtsc_precise();
2146 if (burst_sent == 0)
2148 num_sent += burst_sent;
2149 total_cycles += (end_cycles - start_cycles);
2151 /* Wait until requests have been sent. */
2155 start_cycles = rte_rdtsc_precise();
2156 burst_received = rte_cryptodev_dequeue_burst(
2157 ts_params->dev_id, 0, proc_ops, burst_size);
2158 end_cycles = rte_rdtsc_precise();
2159 if (burst_received < burst_sent)
2161 num_ops_received += burst_received;
2163 total_cycles += end_cycles - start_cycles;
2166 while (num_ops_received != num_to_submit) {
2167 if (gbl_cryptodev_perftest_devtype ==
2168 RTE_CRYPTODEV_AESNI_MB_PMD)
2169 rte_cryptodev_enqueue_burst(ts_params->dev_id, 0,
2171 start_cycles = rte_rdtsc_precise();
2172 burst_received = rte_cryptodev_dequeue_burst(
2173 ts_params->dev_id, 0, proc_ops, burst_size);
2174 end_cycles = rte_rdtsc_precise();
2175 total_cycles += end_cycles - start_cycles;
2176 if (burst_received == 0)
2178 num_ops_received += burst_received;
2181 printf("\n%u\t%u\t%u", num_sent, num_ops_received, burst_size);
2182 printf("\t\t%"PRIu64, retries);
2183 printf("\t%"PRIu64, failed_polls);
2184 printf("\t\t%"PRIu64, total_cycles/num_ops_received);
2185 printf("\t\t%"PRIu64, (total_cycles/num_ops_received)*burst_size);
2186 printf("\t\t%"PRIu64, total_cycles/(num_ops_received*pparams->buf_size));
2190 for (i = 0; i < num_to_submit ; i++) {
2191 rte_pktmbuf_free(c_ops[i]->sym->m_src);
2192 rte_crypto_op_free(c_ops[i]);
2195 return TEST_SUCCESS;
2199 test_perf_snow3G_vary_burst_size(void)
2201 unsigned total_operations = 4096;
2202 /*no need to vary pkt size for QAT, should have no effect on IA cycles */
2203 uint16_t buf_lengths[] = {40};
2206 struct perf_test_params params_set[] = {
2208 .chain = CIPHER_ONLY,
2209 .cipher_algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
2210 .cipher_key_length = 16,
2211 .auth_algo = RTE_CRYPTO_AUTH_NULL,
2215 .cipher_algo = RTE_CRYPTO_CIPHER_NULL,
2216 .auth_algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
2217 .cipher_key_length = 16
2221 printf("\n\nStart %s.", __func__);
2222 printf("\nThis Test measures the average IA cycle cost using a "
2223 "constant request(packet) size. ");
2224 printf("Cycle cost is only valid when indicators show device is not busy,"
2225 " i.e. Retries and EmptyPolls = 0");
2227 for (i = 0; i < RTE_DIM(params_set); i++) {
2229 params_set[i].total_operations = total_operations;
2232 j < RTE_DIM(buf_lengths);
2235 params_set[i].buf_size = buf_lengths[j];
2237 test_perf_snow3G_optimise_cyclecount(¶ms_set[i]);
2245 static uint32_t get_auth_key_max_length(enum rte_crypto_auth_algorithm algo)
2248 case RTE_CRYPTO_AUTH_SNOW3G_UIA2:
2250 case RTE_CRYPTO_AUTH_SHA1_HMAC:
2252 case RTE_CRYPTO_AUTH_SHA224_HMAC:
2254 case RTE_CRYPTO_AUTH_SHA256_HMAC:
2256 case RTE_CRYPTO_AUTH_SHA384_HMAC:
2258 case RTE_CRYPTO_AUTH_SHA512_HMAC:
2265 static uint32_t get_auth_digest_length(enum rte_crypto_auth_algorithm algo)
2268 case RTE_CRYPTO_AUTH_SNOW3G_UIA2:
2270 case RTE_CRYPTO_AUTH_SHA1_HMAC:
2271 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA1;
2272 case RTE_CRYPTO_AUTH_SHA224_HMAC:
2273 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA224;
2274 case RTE_CRYPTO_AUTH_SHA256_HMAC:
2275 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA256;
2276 case RTE_CRYPTO_AUTH_SHA384_HMAC:
2277 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA384;
2278 case RTE_CRYPTO_AUTH_SHA512_HMAC:
2279 return TRUNCATED_DIGEST_BYTE_LENGTH_SHA512;
2285 static uint8_t aes_cbc_key[] = {
2286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2287 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2288 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2289 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
2292 static uint8_t aes_cbc_iv[] = {
2293 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2294 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
2297 static uint8_t hmac_sha_key[] = {
2298 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2299 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2300 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2301 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2303 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2304 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2305 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2306 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2307 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2308 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2309 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2310 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2311 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2312 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2313 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
2316 static uint8_t snow3g_cipher_key[] = {
2317 0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00,
2318 0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48
2321 static uint8_t snow3g_iv[] = {
2322 0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00,
2323 0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00
2326 static uint8_t snow3g_hash_key[] = {
2327 0xC7, 0x36, 0xC6, 0xAA, 0xB2, 0x2B, 0xFF, 0xF9,
2328 0x1E, 0x26, 0x98, 0xD2, 0xE2, 0x2A, 0xD5, 0x7E
2331 static struct rte_cryptodev_sym_session *
2332 test_perf_create_aes_sha_session(uint8_t dev_id, enum chain_mode chain,
2333 enum rte_crypto_cipher_algorithm cipher_algo,
2334 unsigned cipher_key_len,
2335 enum rte_crypto_auth_algorithm auth_algo)
2337 struct rte_crypto_sym_xform cipher_xform = { 0 };
2338 struct rte_crypto_sym_xform auth_xform = { 0 };
2341 /* Setup Cipher Parameters */
2342 cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
2343 cipher_xform.cipher.algo = cipher_algo;
2344 cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
2346 cipher_xform.cipher.key.data = aes_cbc_key;
2347 cipher_xform.cipher.key.length = cipher_key_len;
2349 /* Setup HMAC Parameters */
2350 auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
2351 auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
2352 auth_xform.auth.algo = auth_algo;
2354 auth_xform.auth.key.data = hmac_sha_key;
2355 auth_xform.auth.key.length = get_auth_key_max_length(auth_algo);
2356 auth_xform.auth.digest_length = get_auth_digest_length(auth_algo);
2360 cipher_xform.next = &auth_xform;
2361 auth_xform.next = NULL;
2362 /* Create Crypto session*/
2363 return rte_cryptodev_sym_session_create(dev_id, &cipher_xform);
2365 auth_xform.next = &cipher_xform;
2366 cipher_xform.next = NULL;
2367 /* Create Crypto session*/
2368 return rte_cryptodev_sym_session_create(dev_id, &auth_xform);
2374 static struct rte_cryptodev_sym_session *
2375 test_perf_create_snow3g_session(uint8_t dev_id, enum chain_mode chain,
2376 enum rte_crypto_cipher_algorithm cipher_algo, unsigned cipher_key_len,
2377 enum rte_crypto_auth_algorithm auth_algo)
2379 struct rte_crypto_sym_xform cipher_xform = {0};
2380 struct rte_crypto_sym_xform auth_xform = {0};
2383 /* Setup Cipher Parameters */
2384 cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
2385 cipher_xform.cipher.algo = cipher_algo;
2386 cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
2388 cipher_xform.cipher.key.data = snow3g_cipher_key;
2389 cipher_xform.cipher.key.length = cipher_key_len;
2391 /* Setup HMAC Parameters */
2392 auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
2393 auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
2394 auth_xform.auth.algo = auth_algo;
2396 auth_xform.auth.key.data = snow3g_hash_key;
2397 auth_xform.auth.key.length = get_auth_key_max_length(auth_algo);
2398 auth_xform.auth.digest_length = get_auth_digest_length(auth_algo);
2402 cipher_xform.next = &auth_xform;
2403 auth_xform.next = NULL;
2404 /* Create Crypto session*/
2405 return rte_cryptodev_sym_session_create(dev_id, &cipher_xform);
2407 auth_xform.next = &cipher_xform;
2408 cipher_xform.next = NULL;
2409 /* Create Crypto session*/
2410 return rte_cryptodev_sym_session_create(dev_id, &auth_xform);
2412 cipher_xform.next = NULL;
2413 /* Create Crypto session*/
2414 return rte_cryptodev_sym_session_create(dev_id, &cipher_xform);
2416 auth_xform.next = NULL;
2417 /* Create Crypto session */
2418 return rte_cryptodev_sym_session_create(dev_id, &auth_xform);
2424 #define AES_CBC_BLOCK_SIZE 16
2425 #define AES_CBC_CIPHER_IV_LENGTH 16
2426 #define SNOW3G_CIPHER_IV_LENGTH 16
2428 static struct rte_mbuf *
2429 test_perf_create_pktmbuf(struct rte_mempool *mpool, unsigned buf_sz)
2431 struct rte_mbuf *m = rte_pktmbuf_alloc(mpool);
2433 if (rte_pktmbuf_append(m, buf_sz) == NULL) {
2434 rte_pktmbuf_free(m);
2438 memset(rte_pktmbuf_mtod(m, uint8_t *), 0, buf_sz);
2443 static inline struct rte_crypto_op *
2444 test_perf_set_crypto_op(struct rte_crypto_op *op, struct rte_mbuf *m,
2445 struct rte_cryptodev_sym_session *sess, unsigned data_len,
2446 unsigned digest_len)
2448 if (rte_crypto_op_attach_sym_session(op, sess) != 0) {
2449 rte_crypto_op_free(op);
2453 /* Authentication Parameters */
2454 op->sym->auth.digest.data = (uint8_t *)m->buf_addr +
2455 (m->data_off + data_len);
2456 op->sym->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(m, data_len);
2457 op->sym->auth.digest.length = digest_len;
2458 op->sym->auth.aad.data = aes_cbc_iv;
2459 op->sym->auth.aad.length = AES_CBC_CIPHER_IV_LENGTH;
2461 /* Cipher Parameters */
2462 op->sym->cipher.iv.data = aes_cbc_iv;
2463 op->sym->cipher.iv.length = AES_CBC_CIPHER_IV_LENGTH;
2465 /* Data lengths/offsets Parameters */
2466 op->sym->auth.data.offset = 0;
2467 op->sym->auth.data.length = data_len;
2469 op->sym->cipher.data.offset = AES_CBC_BLOCK_SIZE;
2470 op->sym->cipher.data.length = data_len - AES_CBC_BLOCK_SIZE;
2477 static inline struct rte_crypto_op *
2478 test_perf_set_crypto_op_snow3g(struct rte_crypto_op *op, struct rte_mbuf *m,
2479 struct rte_cryptodev_sym_session *sess, unsigned data_len,
2480 unsigned digest_len)
2482 if (rte_crypto_op_attach_sym_session(op, sess) != 0) {
2483 rte_crypto_op_free(op);
2487 /* Authentication Parameters */
2488 op->sym->auth.digest.data = (uint8_t *)m->buf_addr +
2489 (m->data_off + data_len);
2490 op->sym->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(m, data_len);
2491 op->sym->auth.digest.length = digest_len;
2492 op->sym->auth.aad.data = snow3g_iv;
2493 op->sym->auth.aad.length = SNOW3G_CIPHER_IV_LENGTH;
2495 /* Cipher Parameters */
2496 op->sym->cipher.iv.data = snow3g_iv;
2497 op->sym->cipher.iv.length = SNOW3G_CIPHER_IV_LENGTH;
2499 /* Data lengths/offsets Parameters */
2500 op->sym->auth.data.offset = 0;
2501 op->sym->auth.data.length = data_len << 3;
2503 op->sym->cipher.data.offset = 0;
2504 op->sym->cipher.data.length = data_len << 3;
2513 /* An mbuf set is used in each burst. An mbuf can be used by multiple bursts at
2514 * same time, i.e. as they're not dereferenced there's no need to wait until
2515 * finished with to re-use */
2516 #define NUM_MBUF_SETS 8
2519 test_perf_aes_sha(uint8_t dev_id, uint16_t queue_id,
2520 struct perf_test_params *pparams)
2522 uint16_t i, k, l, m;
2524 uint16_t ops_unused = 0;
2526 uint64_t burst_enqueued = 0, total_enqueued = 0, burst_dequeued = 0;
2527 uint64_t processed = 0, failed_polls = 0, retries = 0;
2528 uint64_t tsc_start = 0, tsc_end = 0;
2530 uint16_t digest_length = get_auth_digest_length(pparams->auth_algo);
2532 struct rte_crypto_op *ops[pparams->burst_size];
2533 struct rte_crypto_op *proc_ops[pparams->burst_size];
2535 struct rte_mbuf *mbufs[pparams->burst_size * 8];
2537 struct crypto_testsuite_params *ts_params = &testsuite_params;
2539 static struct rte_cryptodev_sym_session *sess;
2541 if (rte_cryptodev_count() == 0) {
2542 printf("\nNo crypto devices available. Is kernel driver loaded?\n");
2546 /* Create Crypto session*/
2547 sess = test_perf_create_aes_sha_session(ts_params->dev_id,
2548 pparams->chain, pparams->cipher_algo,
2549 pparams->cipher_key_length, pparams->auth_algo);
2550 TEST_ASSERT_NOT_NULL(sess, "Session creation failed");
2552 /* Generate a burst of crypto operations */
2553 for (i = 0; i < (pparams->burst_size * NUM_MBUF_SETS); i++) {
2554 mbufs[i] = test_perf_create_pktmbuf(
2558 if (mbufs[i] == NULL) {
2559 printf("\nFailed to get mbuf - freeing the rest.\n");
2560 for (k = 0; k < i; k++)
2561 rte_pktmbuf_free(mbufs[k]);
2568 tsc_start = rte_rdtsc_precise();
2570 while (total_enqueued < pparams->total_operations) {
2571 uint16_t burst_size =
2572 total_enqueued+pparams->burst_size <= pparams->total_operations ?
2573 pparams->burst_size : pparams->total_operations-total_enqueued;
2574 uint16_t ops_needed = burst_size-ops_unused;
2576 if (ops_needed != rte_crypto_op_bulk_alloc(ts_params->op_mpool,
2577 RTE_CRYPTO_OP_TYPE_SYMMETRIC, ops, ops_needed)){
2578 printf("\nFailed to alloc enough ops, finish dequeuing "
2579 "and free ops below.");
2581 for (i = 0; i < ops_needed; i++)
2582 ops[i] = test_perf_set_crypto_op(ops[i],
2583 mbufs[i + (pparams->burst_size *
2584 (j % NUM_MBUF_SETS))],
2585 sess, pparams->buf_size, digest_length);
2588 burst_enqueued = rte_cryptodev_enqueue_burst(dev_id,
2589 queue_id, ops, burst_size);
2591 if (burst_enqueued < burst_size)
2594 ops_unused = burst_size-burst_enqueued;
2595 total_enqueued += burst_enqueued;
2599 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
2600 proc_ops, pparams->burst_size);
2601 if (burst_dequeued == 0)
2604 processed += burst_dequeued;
2606 for (l = 0; l < burst_dequeued; l++)
2607 rte_crypto_op_free(proc_ops[l]);
2612 /* Dequeue any operations still in the crypto device */
2613 while (processed < pparams->total_operations) {
2614 /* Sending 0 length burst to flush sw crypto device */
2615 rte_cryptodev_enqueue_burst(dev_id, queue_id, NULL, 0);
2618 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
2619 proc_ops, pparams->burst_size);
2620 if (burst_dequeued == 0)
2623 processed += burst_dequeued;
2625 for (m = 0; m < burst_dequeued; m++)
2626 rte_crypto_op_free(proc_ops[m]);
2630 tsc_end = rte_rdtsc_precise();
2632 double ops_s = ((double)processed / (tsc_end - tsc_start)) * rte_get_tsc_hz();
2633 double throughput = (ops_s * pparams->buf_size * 8) / 1000000000;
2635 printf("\t%u\t%6.2f\t%10.2f\t%8"PRIu64"\t%8"PRIu64, pparams->buf_size, ops_s/1000000,
2636 throughput, retries, failed_polls);
2638 for (i = 0; i < pparams->burst_size * NUM_MBUF_SETS; i++)
2639 rte_pktmbuf_free(mbufs[i]);
2642 return TEST_SUCCESS;
2647 test_perf_snow3g(uint8_t dev_id, uint16_t queue_id,
2648 struct perf_test_params *pparams)
2650 uint16_t i, k, l, m;
2652 uint16_t ops_unused = 0;
2653 uint64_t burst_enqueued = 0, total_enqueued = 0, burst_dequeued = 0;
2654 uint64_t processed = 0, failed_polls = 0, retries = 0;
2655 uint64_t tsc_start = 0, tsc_end = 0;
2657 uint16_t digest_length = get_auth_digest_length(pparams->auth_algo);
2659 struct rte_crypto_op *ops[pparams->burst_size];
2660 struct rte_crypto_op *proc_ops[pparams->burst_size];
2662 struct rte_mbuf *mbufs[pparams->burst_size * NUM_MBUF_SETS];
2664 struct crypto_testsuite_params *ts_params = &testsuite_params;
2666 static struct rte_cryptodev_sym_session *sess;
2668 if (rte_cryptodev_count() == 0) {
2669 printf("\nNo crypto devices found. Is PMD build configured?\n");
2670 printf("\nAnd is kernel driver loaded for HW PMDs?\n");
2674 /* Create Crypto session*/
2675 sess = test_perf_create_snow3g_session(ts_params->dev_id,
2676 pparams->chain, pparams->cipher_algo,
2677 pparams->cipher_key_length, pparams->auth_algo);
2678 TEST_ASSERT_NOT_NULL(sess, "Session creation failed");
2680 /* Generate a burst of crypto operations */
2681 for (i = 0; i < (pparams->burst_size * NUM_MBUF_SETS); i++) {
2682 mbufs[i] = test_perf_create_pktmbuf(
2686 if (mbufs[i] == NULL) {
2687 printf("\nFailed to get mbuf - freeing the rest.\n");
2688 for (k = 0; k < i; k++)
2689 rte_pktmbuf_free(mbufs[k]);
2695 tsc_start = rte_rdtsc_precise();
2697 while (total_enqueued < pparams->total_operations) {
2698 uint16_t burst_size =
2699 (total_enqueued+pparams->burst_size)
2700 <= pparams->total_operations ?
2701 pparams->burst_size : pparams->total_operations-total_enqueued;
2702 uint16_t ops_needed = burst_size-ops_unused;
2703 /* Handle the last burst correctly */
2704 uint16_t op_offset = pparams->burst_size - burst_size;
2707 rte_crypto_op_bulk_alloc(ts_params->op_mpool,
2708 RTE_CRYPTO_OP_TYPE_SYMMETRIC,
2709 ops+op_offset, ops_needed)) {
2710 printf("\nFailed to alloc enough ops.");
2711 /*Don't exit, dequeue, more ops should become available*/
2713 for (i = 0; i < ops_needed; i++) {
2715 test_perf_set_crypto_op_snow3g(ops[i+op_offset],
2717 (pparams->burst_size * (j % NUM_MBUF_SETS))],
2719 pparams->buf_size, digest_length);
2724 rte_cryptodev_enqueue_burst(dev_id, queue_id,
2725 ops+op_offset, burst_size);
2727 if (burst_enqueued < burst_size)
2730 ops_unused = burst_size-burst_enqueued;
2731 total_enqueued += burst_enqueued;
2735 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
2736 proc_ops, pparams->burst_size);
2737 if (burst_dequeued == 0) {
2740 processed += burst_dequeued;
2741 for (l = 0; l < burst_dequeued; l++)
2742 rte_crypto_op_free(proc_ops[l]);
2747 /* Dequeue any operations still in the crypto device */
2748 while (processed < pparams->total_operations) {
2749 /* Sending 0 length burst to flush sw crypto device */
2750 rte_cryptodev_enqueue_burst(dev_id, queue_id, NULL, 0);
2753 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
2754 proc_ops, pparams->burst_size);
2755 if (burst_dequeued == 0)
2758 processed += burst_dequeued;
2759 for (m = 0; m < burst_dequeued; m++)
2760 rte_crypto_op_free(proc_ops[m]);
2764 tsc_end = rte_rdtsc_precise();
2766 double ops_s = ((double)processed / (tsc_end - tsc_start)) * rte_get_tsc_hz();
2767 double cycles_burst = (double) (tsc_end - tsc_start) /
2768 (double) processed * pparams->burst_size;
2769 double cycles_buff = (double) (tsc_end - tsc_start) / (double) processed;
2770 double cycles_B = cycles_buff / pparams->buf_size;
2771 double throughput = (ops_s * pparams->buf_size * 8) / 1000000;
2773 if (gbl_cryptodev_perftest_devtype == RTE_CRYPTODEV_QAT_SYM_PMD) {
2774 /* Cycle count misleading on HW devices for this test, so don't print */
2775 printf("%4u\t%6.2f\t%10.2f\t n/a \t\t n/a "
2776 "\t\t n/a \t\t%8"PRIu64"\t%8"PRIu64,
2777 pparams->buf_size, ops_s/1000000,
2778 throughput, retries, failed_polls);
2780 printf("%4u\t%6.2f\t%10.2f\t%10.2f\t%8.2f"
2781 "\t%8.2f\t%8"PRIu64"\t%8"PRIu64,
2782 pparams->buf_size, ops_s/1000000, throughput, cycles_burst,
2783 cycles_buff, cycles_B, retries, failed_polls);
2786 for (i = 0; i < pparams->burst_size * NUM_MBUF_SETS; i++)
2787 rte_pktmbuf_free(mbufs[i]);
2790 return TEST_SUCCESS;
2795 perf_test_aes_sha("avx2", HASH_CIPHER, 16, CBC, SHA1);
2796 perf_test_aes_sha("avx2", HASH_CIPHER, 16, CBC, SHA_256);
2797 perf_test_aes_sha("avx2", HASH_CIPHER, 16, CBC, SHA_512);
2799 perf_test_aes_sha("avx2", CIPHER_HASH, 32, CBC, SHA1);
2800 perf_test_aes_sha("avx2", CIPHER_HASH, 32, CBC, SHA_256);
2801 perf_test_aes_sha("avx2", CIPHER_HASH, 32, CBC, SHA_512);
2803 perf_test_aes_sha("avx2", HASH_CIPHER, 32, CBC, SHA1);
2804 perf_test_aes_sha("avx2", HASH_CIPHER, 32, CBC, SHA_256);
2805 perf_test_aes_sha("avx2", HASH_CIPHER, 32, CBC, SHA_512);
2808 test_perf_aes_cbc_encrypt_digest_vary_pkt_size(void)
2810 unsigned total_operations = 1000000;
2811 unsigned burst_size = 32;
2812 unsigned buf_lengths[] = { 64, 128, 256, 512, 768, 1024, 1280, 1536, 1792, 2048 };
2815 struct perf_test_params params_set[] = {
2817 .chain = CIPHER_HASH,
2819 .cipher_algo = RTE_CRYPTO_CIPHER_AES_CBC,
2820 .cipher_key_length = 16,
2821 .auth_algo = RTE_CRYPTO_AUTH_SHA1_HMAC
2824 .chain = CIPHER_HASH,
2826 .cipher_algo = RTE_CRYPTO_CIPHER_AES_CBC,
2827 .cipher_key_length = 16,
2828 .auth_algo = RTE_CRYPTO_AUTH_SHA256_HMAC
2831 .chain = CIPHER_HASH,
2833 .cipher_algo = RTE_CRYPTO_CIPHER_AES_CBC,
2834 .cipher_key_length = 16,
2835 .auth_algo = RTE_CRYPTO_AUTH_SHA512_HMAC
2838 .chain = CIPHER_HASH,
2840 .cipher_algo = RTE_CRYPTO_CIPHER_AES_CBC,
2841 .cipher_key_length = 32,
2842 .auth_algo = RTE_CRYPTO_AUTH_SHA1_HMAC
2845 .chain = CIPHER_HASH,
2847 .cipher_algo = RTE_CRYPTO_CIPHER_AES_CBC,
2848 .cipher_key_length = 32,
2849 .auth_algo = RTE_CRYPTO_AUTH_SHA256_HMAC
2852 .chain = CIPHER_HASH,
2854 .cipher_algo = RTE_CRYPTO_CIPHER_AES_CBC,
2855 .cipher_key_length = 32,
2856 .auth_algo = RTE_CRYPTO_AUTH_SHA512_HMAC
2860 for (i = 0; i < RTE_DIM(params_set); i++) {
2862 params_set[i].total_operations = total_operations;
2863 params_set[i].burst_size = burst_size;
2864 printf("\n%s. cipher algo: %s auth algo: %s cipher key size=%u."
2865 " burst_size: %d ops\n",
2866 chain_mode_name(params_set[i].chain),
2867 cipher_algo_name(params_set[i].cipher_algo),
2868 auth_algo_name(params_set[i].auth_algo),
2869 params_set[i].cipher_key_length,
2871 printf("\nBuffer Size(B)\tOPS(M)\tThroughput(Gbps)\t"
2872 "Retries\tEmptyPolls\n");
2873 for (j = 0; j < RTE_DIM(buf_lengths); j++) {
2874 params_set[i].buf_size = buf_lengths[j];
2875 test_perf_aes_sha(testsuite_params.dev_id, 0,
2883 test_perf_snow3G_vary_pkt_size(void)
2885 unsigned total_operations = 1000000;
2888 uint16_t burst_sizes[] = {64};
2889 uint16_t buf_lengths[] = {40, 64, 80, 120, 240, 256, 400, 512, 600, 1024, 2048};
2891 struct perf_test_params params_set[] = {
2893 .chain = CIPHER_ONLY,
2894 .cipher_algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
2895 .cipher_key_length = 16,
2896 .auth_algo = RTE_CRYPTO_AUTH_NULL,
2900 .cipher_algo = RTE_CRYPTO_CIPHER_NULL,
2901 .auth_algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
2902 .cipher_key_length = 16
2906 printf("\n\nStart %s.", __func__);
2907 printf("\nTest to measure max throughput at various pkt sizes.");
2908 printf("\nOn HW devices t'put maximised when high Retries and EmptyPolls"
2909 " so cycle cost not relevant (n/a displayed).");
2911 for (i = 0; i < RTE_DIM(params_set); i++) {
2913 params_set[i].total_operations = total_operations;
2914 for (k = 0; k < RTE_DIM(burst_sizes); k++) {
2915 printf("\nOn %s dev%u qp%u, %s, "
2916 "cipher algo:%s, auth algo:%s, burst_size: %d ops",
2917 pmd_name(gbl_cryptodev_perftest_devtype),
2918 testsuite_params.dev_id, 0,
2919 chain_mode_name(params_set[i].chain),
2920 cipher_algo_name(params_set[i].cipher_algo),
2921 auth_algo_name(params_set[i].auth_algo),
2924 params_set[i].burst_size = burst_sizes[k];
2925 printf("\nPktSzB\tOp/s(M)\tThruput(Mbps)\tCycles/Burst\t"
2926 "Cycles/buf\tCycles/B\tRetries\t\tEmptyPolls\n");
2927 for (j = 0; j < RTE_DIM(buf_lengths); j++) {
2929 params_set[i].buf_size = buf_lengths[j];
2931 test_perf_snow3g(testsuite_params.dev_id, 0, ¶ms_set[i]);
2940 test_perf_aes_cbc_vary_burst_size(void)
2942 return test_perf_crypto_qp_vary_burst_size(testsuite_params.dev_id);
2946 static struct rte_cryptodev_sym_session *
2947 test_perf_create_session(uint8_t dev_id, struct perf_test_params *pparams)
2949 static struct rte_cryptodev_sym_session *sess;
2950 struct rte_crypto_sym_xform cipher_xform = { 0 };
2951 struct rte_crypto_sym_xform auth_xform = { 0 };
2953 uint8_t cipher_key[pparams->session_attrs->key_cipher_len];
2954 uint8_t auth_key[pparams->session_attrs->key_auth_len];
2956 memcpy(cipher_key, pparams->session_attrs->key_cipher_data,
2957 pparams->session_attrs->key_cipher_len);
2958 memcpy(auth_key, pparams->session_attrs->key_auth_data,
2959 pparams->session_attrs->key_auth_len);
2961 cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
2962 cipher_xform.next = NULL;
2964 cipher_xform.cipher.algo = pparams->session_attrs->cipher_algorithm;
2965 cipher_xform.cipher.op = pparams->session_attrs->cipher;
2966 cipher_xform.cipher.key.data = cipher_key;
2967 cipher_xform.cipher.key.length = pparams->session_attrs->key_cipher_len;
2969 auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
2970 auth_xform.next = NULL;
2972 auth_xform.auth.op = pparams->session_attrs->auth;
2973 auth_xform.auth.algo = pparams->session_attrs->auth_algorithm;
2975 auth_xform.auth.digest_length = pparams->session_attrs->digest_len;
2976 auth_xform.auth.key.length = pparams->session_attrs->key_auth_len;
2979 cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
2980 if (cipher_xform.cipher.op == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
2981 cipher_xform.next = &auth_xform;
2982 sess = rte_cryptodev_sym_session_create(dev_id,
2985 auth_xform.next = &cipher_xform;
2986 sess = rte_cryptodev_sym_session_create(dev_id,
2993 static inline struct rte_crypto_op *
2994 perf_gcm_set_crypto_op(struct rte_crypto_op *op, struct rte_mbuf *m,
2995 struct rte_cryptodev_sym_session *sess,
2996 struct crypto_params *m_hlp,
2997 struct perf_test_params *params)
2999 if (rte_crypto_op_attach_sym_session(op, sess) != 0) {
3000 rte_crypto_op_free(op);
3004 uint16_t iv_pad_len = ALIGN_POW2_ROUNDUP(params->symmetric_op->iv_len,
3007 op->sym->auth.digest.data = m_hlp->digest;
3008 op->sym->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
3010 params->symmetric_op->aad_len +
3012 params->symmetric_op->p_len);
3014 op->sym->auth.digest.length = params->symmetric_op->t_len;
3016 op->sym->auth.aad.data = m_hlp->aad;
3017 op->sym->auth.aad.length = params->symmetric_op->aad_len;
3018 op->sym->auth.aad.phys_addr = rte_pktmbuf_mtophys_offset(
3022 rte_memcpy(op->sym->auth.aad.data, params->symmetric_op->aad_data,
3023 params->symmetric_op->aad_len);
3025 op->sym->cipher.iv.data = m_hlp->iv;
3026 rte_memcpy(op->sym->cipher.iv.data, params->symmetric_op->iv_data,
3027 params->symmetric_op->iv_len);
3028 if (params->symmetric_op->iv_len == 12)
3029 op->sym->cipher.iv.data[15] = 1;
3031 op->sym->cipher.iv.length = params->symmetric_op->iv_len;
3033 op->sym->auth.data.offset =
3034 iv_pad_len + params->symmetric_op->aad_len;
3035 op->sym->auth.data.length = params->symmetric_op->p_len;
3037 op->sym->cipher.data.offset =
3038 iv_pad_len + params->symmetric_op->aad_len;
3039 op->sym->cipher.data.length = params->symmetric_op->p_len;
3046 static struct rte_mbuf *
3047 test_perf_create_pktmbuf_fill(struct rte_mempool *mpool,
3048 struct perf_test_params *params,
3049 unsigned buf_sz, struct crypto_params *m_hlp)
3051 struct rte_mbuf *m = rte_pktmbuf_alloc(mpool);
3052 uint16_t iv_pad_len =
3053 ALIGN_POW2_ROUNDUP(params->symmetric_op->iv_len, 16);
3054 uint16_t aad_len = params->symmetric_op->aad_len;
3055 uint16_t digest_size = params->symmetric_op->t_len;
3058 p = rte_pktmbuf_append(m, aad_len);
3060 rte_pktmbuf_free(m);
3063 m_hlp->aad = (uint8_t *)p;
3065 p = rte_pktmbuf_append(m, iv_pad_len);
3067 rte_pktmbuf_free(m);
3070 m_hlp->iv = (uint8_t *)p;
3072 p = rte_pktmbuf_append(m, buf_sz);
3074 rte_pktmbuf_free(m);
3077 rte_memcpy(p, params->symmetric_op->p_data, buf_sz);
3079 p = rte_pktmbuf_append(m, digest_size);
3081 rte_pktmbuf_free(m);
3084 m_hlp->digest = (uint8_t *)p;
3090 perf_AES_GCM(uint8_t dev_id, uint16_t queue_id,
3091 struct perf_test_params *pparams, uint32_t test_ops)
3094 struct crypto_testsuite_params *ts_params = &testsuite_params;
3095 struct rte_cryptodev_sym_session *sess;
3096 struct rte_crypto_op *ops[pparams->burst_size];
3097 struct rte_crypto_op *proc_ops[pparams->burst_size];
3098 uint32_t total_operations = pparams->total_operations;
3100 uint64_t burst_enqueued = 0, total_enqueued = 0, burst_dequeued = 0;
3101 uint64_t processed = 0, failed_polls = 0, retries = 0;
3102 uint64_t tsc_start = 0, tsc_end = 0;
3104 uint16_t i = 0, l = 0, m = 0;
3105 uint16_t burst = pparams->burst_size * NUM_MBUF_SETS;
3106 uint16_t ops_unused = 0;
3108 struct rte_mbuf *mbufs[burst];
3109 struct crypto_params m_hlp[burst];
3111 if (rte_cryptodev_count() == 0) {
3112 printf("\nNo crypto devices available. "
3113 "Is kernel driver loaded?\n");
3117 sess = test_perf_create_session(dev_id, pparams);
3118 TEST_ASSERT_NOT_NULL(sess, "Session creation failed");
3120 for (i = 0; i < burst; i++) {
3121 mbufs[i] = test_perf_create_pktmbuf_fill(
3123 pparams, pparams->symmetric_op->p_len,
3128 total_operations = test_ops;
3130 tsc_start = rte_rdtsc_precise();
3131 while (total_enqueued < total_operations) {
3132 uint16_t burst_size =
3133 total_enqueued+pparams->burst_size <= total_operations ?
3134 pparams->burst_size : total_operations-total_enqueued;
3135 uint16_t ops_needed = burst_size-ops_unused;
3137 if (ops_needed != rte_crypto_op_bulk_alloc(ts_params->op_mpool,
3138 RTE_CRYPTO_OP_TYPE_SYMMETRIC, ops, ops_needed)){
3139 printf("\nFailed to alloc enough ops, "
3140 "finish dequeuing");
3142 for (i = 0; i < ops_needed; i++)
3143 ops[i] = perf_gcm_set_crypto_op(ops[i],
3144 mbufs[i + (pparams->burst_size *
3145 (j % NUM_MBUF_SETS))],
3146 sess, &m_hlp[i + (pparams->burst_size *
3147 (j % NUM_MBUF_SETS))], pparams);
3150 burst_enqueued = rte_cryptodev_enqueue_burst(dev_id,
3151 queue_id, ops, burst_size);
3153 if (burst_enqueued < burst_size)
3156 ops_unused = burst_size-burst_enqueued;
3157 total_enqueued += burst_enqueued;
3161 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
3162 proc_ops, pparams->burst_size);
3163 if (burst_dequeued == 0)
3166 processed += burst_dequeued;
3168 for (l = 0; l < burst_dequeued; l++)
3169 rte_crypto_op_free(proc_ops[l]);
3175 /* Dequeue any operations still in the crypto device */
3176 while (processed < total_operations) {
3177 /* Sending 0 length burst to flush sw crypto device */
3178 rte_cryptodev_enqueue_burst(dev_id, queue_id, NULL, 0);
3181 burst_dequeued = rte_cryptodev_dequeue_burst(dev_id, queue_id,
3182 proc_ops, pparams->burst_size);
3183 if (burst_dequeued == 0)
3186 processed += burst_dequeued;
3188 for (m = 0; m < burst_dequeued; m++) {
3190 uint16_t iv_pad_len = ALIGN_POW2_ROUNDUP
3191 (pparams->symmetric_op->iv_len, 16);
3192 uint8_t *pkt = rte_pktmbuf_mtod(
3193 proc_ops[m]->sym->m_src,
3196 TEST_ASSERT_BUFFERS_ARE_EQUAL(
3197 pparams->symmetric_op->c_data,
3199 pparams->symmetric_op->aad_len,
3200 pparams->symmetric_op->c_len,
3201 "GCM Ciphertext data not as expected");
3203 TEST_ASSERT_BUFFERS_ARE_EQUAL(
3204 pparams->symmetric_op->t_data,
3206 pparams->symmetric_op->aad_len +
3207 pparams->symmetric_op->c_len,
3208 pparams->symmetric_op->t_len,
3209 "GCM MAC data not as expected");
3212 rte_crypto_op_free(proc_ops[m]);
3217 tsc_end = rte_rdtsc_precise();
3219 double ops_s = ((double)processed / (tsc_end - tsc_start))
3221 double throughput = (ops_s * pparams->symmetric_op->p_len * 8)
3225 printf("\n%u\t\t%6.2f\t%16.2f\t%8"PRIu64"\t%10"PRIu64,
3226 pparams->symmetric_op->p_len,
3227 ops_s/1000000, throughput, retries, failed_polls);
3230 for (i = 0; i < burst; i++)
3231 rte_pktmbuf_free(mbufs[i]);
3237 test_perf_AES_GCM(void)
3241 uint16_t buf_lengths[] = { 64, 128, 256, 512, 1024, 1536, 2048 };
3243 static const struct cryptodev_perf_test_data *gcm_tests[] = {
3244 &AES_GCM_128_12IV_0AAD
3247 int TEST_CASES_GCM = RTE_DIM(gcm_tests);
3249 const unsigned burst_size = 32;
3251 struct symmetric_op ops_set[TEST_CASES_GCM];
3252 struct perf_test_params params_set[TEST_CASES_GCM];
3253 struct symmetric_session_attrs session_attrs[TEST_CASES_GCM];
3254 static const struct cryptodev_perf_test_data *gcm_test;
3256 for (i = 0; i < TEST_CASES_GCM; ++i) {
3258 gcm_test = gcm_tests[i];
3260 session_attrs[i].cipher =
3261 RTE_CRYPTO_CIPHER_OP_ENCRYPT;
3262 session_attrs[i].cipher_algorithm =
3263 RTE_CRYPTO_CIPHER_AES_GCM;
3264 session_attrs[i].key_cipher_data =
3266 session_attrs[i].key_cipher_len =
3268 session_attrs[i].auth_algorithm =
3269 RTE_CRYPTO_AUTH_AES_GCM;
3270 session_attrs[i].auth =
3271 RTE_CRYPTO_AUTH_OP_GENERATE;
3272 session_attrs[i].key_auth_data = NULL;
3273 session_attrs[i].key_auth_len = 0;
3274 session_attrs[i].digest_len =
3275 gcm_test->auth_tag.len;
3277 ops_set[i].aad_data = gcm_test->aad.data;
3278 ops_set[i].aad_len = gcm_test->aad.len;
3279 ops_set[i].iv_data = gcm_test->iv.data;
3280 ops_set[i].iv_len = gcm_test->iv.len;
3281 ops_set[i].p_data = gcm_test->plaintext.data;
3282 ops_set[i].p_len = buf_lengths[i];
3283 ops_set[i].c_data = gcm_test->ciphertext.data;
3284 ops_set[i].c_len = buf_lengths[i];
3285 ops_set[i].t_data = gcm_test->auth_tags[i].data;
3286 ops_set[i].t_len = gcm_test->auth_tags[i].len;
3288 params_set[i].chain = CIPHER_HASH;
3289 params_set[i].session_attrs = &session_attrs[i];
3290 params_set[i].symmetric_op = &ops_set[i];
3291 params_set[i].total_operations = 1000000;
3292 params_set[i].burst_size = burst_size;
3296 for (i = 0; i < RTE_DIM(gcm_tests); i++) {
3298 printf("\nCipher algo: %s Cipher hash: %s cipher key size: %ub"
3299 " burst size: %u", "AES_GCM", "AES_GCM",
3300 gcm_test->key.len << 3, burst_size
3302 printf("\nBuffer Size(B)\tOPS(M)\tThroughput(Gbps)\t"
3303 " Retries\tEmptyPolls");
3305 for (j = 0; j < RTE_DIM(buf_lengths); ++j) {
3307 params_set[i].symmetric_op->c_len = buf_lengths[j];
3308 params_set[i].symmetric_op->p_len = buf_lengths[j];
3310 ops_set[i].t_data = gcm_tests[i]->auth_tags[j].data;
3311 ops_set[i].t_len = gcm_tests[i]->auth_tags[j].len;
3313 /* Run is twice, one for encryption/hash checks,
3316 if (perf_AES_GCM(testsuite_params.dev_id, 0,
3320 if (perf_AES_GCM(testsuite_params.dev_id, 0,
3330 static struct unit_test_suite cryptodev_testsuite = {
3331 .suite_name = "Crypto Device Unit Test Suite",
3332 .setup = testsuite_setup,
3333 .teardown = testsuite_teardown,
3334 .unit_test_cases = {
3335 TEST_CASE_ST(ut_setup, ut_teardown,
3336 test_perf_aes_cbc_encrypt_digest_vary_pkt_size),
3337 TEST_CASE_ST(ut_setup, ut_teardown,
3339 TEST_CASE_ST(ut_setup, ut_teardown,
3340 test_perf_aes_cbc_vary_burst_size),
3341 TEST_CASES_END() /**< NULL terminate unit test array */
3345 static struct unit_test_suite cryptodev_gcm_testsuite = {
3346 .suite_name = "Crypto Device AESNI GCM Unit Test Suite",
3347 .setup = testsuite_setup,
3348 .teardown = testsuite_teardown,
3349 .unit_test_cases = {
3350 TEST_CASE_ST(ut_setup, ut_teardown,
3352 TEST_CASES_END() /**< NULL terminate unit test array */
3356 static struct unit_test_suite cryptodev_aes_testsuite = {
3357 .suite_name = "Crypto Device AESNI MB Unit Test Suite",
3358 .setup = testsuite_setup,
3359 .teardown = testsuite_teardown,
3360 .unit_test_cases = {
3361 TEST_CASE_ST(ut_setup, ut_teardown,
3362 test_perf_aes_cbc_encrypt_digest_vary_pkt_size),
3363 TEST_CASES_END() /**< NULL terminate unit test array */
3367 static struct unit_test_suite cryptodev_snow3g_testsuite = {
3368 .suite_name = "Crypto Device SNOW3G Unit Test Suite",
3369 .setup = testsuite_setup,
3370 .teardown = testsuite_teardown,
3371 .unit_test_cases = {
3372 TEST_CASE_ST(ut_setup, ut_teardown,
3373 test_perf_snow3G_vary_pkt_size),
3374 TEST_CASE_ST(ut_setup, ut_teardown,
3375 test_perf_snow3G_vary_burst_size),
3376 TEST_CASES_END() /**< NULL terminate unit test array */
3381 perftest_aesni_gcm_cryptodev(void)
3383 gbl_cryptodev_perftest_devtype = RTE_CRYPTODEV_AESNI_GCM_PMD;
3385 return unit_test_suite_runner(&cryptodev_gcm_testsuite);
3389 perftest_aesni_mb_cryptodev(void /*argv __rte_unused, int argc __rte_unused*/)
3391 gbl_cryptodev_perftest_devtype = RTE_CRYPTODEV_AESNI_MB_PMD;
3393 return unit_test_suite_runner(&cryptodev_aes_testsuite);
3397 perftest_qat_cryptodev(void /*argv __rte_unused, int argc __rte_unused*/)
3399 gbl_cryptodev_perftest_devtype = RTE_CRYPTODEV_QAT_SYM_PMD;
3401 return unit_test_suite_runner(&cryptodev_testsuite);
3405 perftest_sw_snow3g_cryptodev(void /*argv __rte_unused, int argc __rte_unused*/)
3407 gbl_cryptodev_perftest_devtype = RTE_CRYPTODEV_SNOW3G_PMD;
3409 return unit_test_suite_runner(&cryptodev_snow3g_testsuite);
3413 perftest_qat_snow3g_cryptodev(void /*argv __rte_unused, int argc __rte_unused*/)
3415 gbl_cryptodev_perftest_devtype = RTE_CRYPTODEV_QAT_SYM_PMD;
3417 return unit_test_suite_runner(&cryptodev_snow3g_testsuite);
3420 REGISTER_TEST_COMMAND(cryptodev_aesni_mb_perftest, perftest_aesni_mb_cryptodev);
3421 REGISTER_TEST_COMMAND(cryptodev_qat_perftest, perftest_qat_cryptodev);
3422 REGISTER_TEST_COMMAND(cryptodev_sw_snow3g_perftest, perftest_sw_snow3g_cryptodev);
3423 REGISTER_TEST_COMMAND(cryptodev_qat_snow3g_perftest, perftest_qat_snow3g_cryptodev);
3424 REGISTER_TEST_COMMAND(cryptodev_aesni_gcm_perftest, perftest_aesni_gcm_cryptodev);