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