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