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