aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-04-21 18:57:09 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-21 18:57:09 -0400
commit904e0ab54b7591b9cb01cfc0dbbedcc8bc0d949b (patch)
tree13a2fc98fc7b347fe0d18cc18d452f1f49bff582
parent98a1e95f9b5919b55c71a01546415074282d30d5 (diff)
parentc49a7f182c44c31ea460093eb263110824f6c98e (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: [HWRNG] omap: Minor updates [CRYPTO] kconfig: Ordering cleanup [CRYPTO] all: Clean up init()/fini() [CRYPTO] padlock-aes: Use generic setkey function [CRYPTO] aes: Export generic setkey [CRYPTO] api: Make the crypto subsystem fully modular [CRYPTO] cts: Add CTS mode required for Kerberos AES support [CRYPTO] lrw: Replace all adds to big endians variables with be*_add_cpu [CRYPTO] tcrypt: Change the XTEA test vectors [CRYPTO] tcrypt: Shrink the tcrypt module [CRYPTO] tcrypt: Change the usage of the test vectors [CRYPTO] api: Constify function pointer tables [CRYPTO] aes-x86-32: Remove unused return code [CRYPTO] tcrypt: Shrink speed templates [CRYPTO] tcrypt: Group common speed templates [CRYPTO] sha512: Rename sha512 to sha512_generic [CRYPTO] sha384: Hardware acceleration for s390 [CRYPTO] sha512: Hardware acceleration for s390 [CRYPTO] s390: Generic sha_update and sha_final [CRYPTO] api: Switch to proc_create()
-rw-r--r--arch/s390/crypto/Makefile5
-rw-r--r--arch/s390/crypto/crypt_s390.h2
-rw-r--r--arch/s390/crypto/sha.h35
-rw-r--r--arch/s390/crypto/sha1_s390.c91
-rw-r--r--arch/s390/crypto/sha256_s390.c90
-rw-r--r--arch/s390/crypto/sha512_s390.c114
-rw-r--r--arch/s390/crypto/sha_common.c97
-rw-r--r--arch/x86/crypto/aes-i586-asm_32.S3
-rw-r--r--crypto/Kconfig638
-rw-r--r--crypto/Makefile6
-rw-r--r--crypto/aes_generic.c56
-rw-r--r--crypto/anubis.c8
-rw-r--r--crypto/api.c3
-rw-r--r--crypto/blowfish.c8
-rw-r--r--crypto/cast5.c8
-rw-r--r--crypto/cast6.c8
-rw-r--r--crypto/crc32c.c8
-rw-r--r--crypto/crypto_null.c8
-rw-r--r--crypto/cts.c347
-rw-r--r--crypto/deflate.c8
-rw-r--r--crypto/des_generic.c8
-rw-r--r--crypto/fcrypt.c8
-rw-r--r--crypto/khazad.c8
-rw-r--r--crypto/lrw.c5
-rw-r--r--crypto/lzo.c8
-rw-r--r--crypto/md4.c8
-rw-r--r--crypto/md5.c8
-rw-r--r--crypto/proc.c8
-rw-r--r--crypto/salsa20_generic.c8
-rw-r--r--crypto/serpent.c8
-rw-r--r--crypto/sha1_generic.c8
-rw-r--r--crypto/sha256_generic.c8
-rw-r--r--crypto/sha512_generic.c (renamed from crypto/sha512.c)31
-rw-r--r--crypto/tcrypt.c529
-rw-r--r--crypto/tcrypt.h11923
-rw-r--r--crypto/tea.c8
-rw-r--r--crypto/tgr192.c8
-rw-r--r--crypto/twofish.c8
-rw-r--r--crypto/wp512.c8
-rw-r--r--drivers/char/hw_random/omap-rng.c26
-rw-r--r--drivers/crypto/Kconfig14
-rw-r--r--drivers/crypto/padlock-aes.c320
-rw-r--r--include/crypto/aes.h8
-rw-r--r--include/linux/crypto.h7
44 files changed, 7420 insertions, 7106 deletions
diff --git a/arch/s390/crypto/Makefile b/arch/s390/crypto/Makefile
index 14e552c5cc43..6a1157fa4f98 100644
--- a/arch/s390/crypto/Makefile
+++ b/arch/s390/crypto/Makefile
@@ -2,8 +2,9 @@
2# Cryptographic API 2# Cryptographic API
3# 3#
4 4
5obj-$(CONFIG_CRYPTO_SHA1_S390) += sha1_s390.o 5obj-$(CONFIG_CRYPTO_SHA1_S390) += sha1_s390.o sha_common.o
6obj-$(CONFIG_CRYPTO_SHA256_S390) += sha256_s390.o 6obj-$(CONFIG_CRYPTO_SHA256_S390) += sha256_s390.o sha_common.o
7obj-$(CONFIG_CRYPTO_SHA512_S390) += sha512_s390.o sha_common.o
7obj-$(CONFIG_CRYPTO_DES_S390) += des_s390.o des_check_key.o 8obj-$(CONFIG_CRYPTO_DES_S390) += des_s390.o des_check_key.o
8obj-$(CONFIG_CRYPTO_AES_S390) += aes_s390.o 9obj-$(CONFIG_CRYPTO_AES_S390) += aes_s390.o
9obj-$(CONFIG_S390_PRNG) += prng.o 10obj-$(CONFIG_S390_PRNG) += prng.o
diff --git a/arch/s390/crypto/crypt_s390.h b/arch/s390/crypto/crypt_s390.h
index 95f5160df27f..9992f95ef992 100644
--- a/arch/s390/crypto/crypt_s390.h
+++ b/arch/s390/crypto/crypt_s390.h
@@ -82,6 +82,7 @@ enum crypt_s390_kimd_func {
82 KIMD_QUERY = CRYPT_S390_KIMD | 0, 82 KIMD_QUERY = CRYPT_S390_KIMD | 0,
83 KIMD_SHA_1 = CRYPT_S390_KIMD | 1, 83 KIMD_SHA_1 = CRYPT_S390_KIMD | 1,
84 KIMD_SHA_256 = CRYPT_S390_KIMD | 2, 84 KIMD_SHA_256 = CRYPT_S390_KIMD | 2,
85 KIMD_SHA_512 = CRYPT_S390_KIMD | 3,
85}; 86};
86 87
87/* 88/*
@@ -92,6 +93,7 @@ enum crypt_s390_klmd_func {
92 KLMD_QUERY = CRYPT_S390_KLMD | 0, 93 KLMD_QUERY = CRYPT_S390_KLMD | 0,
93 KLMD_SHA_1 = CRYPT_S390_KLMD | 1, 94 KLMD_SHA_1 = CRYPT_S390_KLMD | 1,
94 KLMD_SHA_256 = CRYPT_S390_KLMD | 2, 95 KLMD_SHA_256 = CRYPT_S390_KLMD | 2,
96 KLMD_SHA_512 = CRYPT_S390_KLMD | 3,
95}; 97};
96 98
97/* 99/*
diff --git a/arch/s390/crypto/sha.h b/arch/s390/crypto/sha.h
new file mode 100644
index 000000000000..1ceafa571eab
--- /dev/null
+++ b/arch/s390/crypto/sha.h
@@ -0,0 +1,35 @@
1/*
2 * Cryptographic API.
3 *
4 * s390 generic implementation of the SHA Secure Hash Algorithms.
5 *
6 * Copyright IBM Corp. 2007
7 * Author(s): Jan Glauber (jang@de.ibm.com)
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the Free
11 * Software Foundation; either version 2 of the License, or (at your option)
12 * any later version.
13 *
14 */
15#ifndef _CRYPTO_ARCH_S390_SHA_H
16#define _CRYPTO_ARCH_S390_SHA_H
17
18#include <linux/crypto.h>
19#include <crypto/sha.h>
20
21/* must be big enough for the largest SHA variant */
22#define SHA_MAX_STATE_SIZE 16
23#define SHA_MAX_BLOCK_SIZE SHA512_BLOCK_SIZE
24
25struct s390_sha_ctx {
26 u64 count; /* message length in bytes */
27 u32 state[SHA_MAX_STATE_SIZE];
28 u8 buf[2 * SHA_MAX_BLOCK_SIZE];
29 int func; /* KIMD function to use */
30};
31
32void s390_sha_update(struct crypto_tfm *tfm, const u8 *data, unsigned int len);
33void s390_sha_final(struct crypto_tfm *tfm, u8 *out);
34
35#endif
diff --git a/arch/s390/crypto/sha1_s390.c b/arch/s390/crypto/sha1_s390.c
index 9cf9eca22747..b3cb5a89b00d 100644
--- a/arch/s390/crypto/sha1_s390.c
+++ b/arch/s390/crypto/sha1_s390.c
@@ -29,16 +29,11 @@
29#include <crypto/sha.h> 29#include <crypto/sha.h>
30 30
31#include "crypt_s390.h" 31#include "crypt_s390.h"
32 32#include "sha.h"
33struct s390_sha1_ctx {
34 u64 count; /* message length */
35 u32 state[5];
36 u8 buf[2 * SHA1_BLOCK_SIZE];
37};
38 33
39static void sha1_init(struct crypto_tfm *tfm) 34static void sha1_init(struct crypto_tfm *tfm)
40{ 35{
41 struct s390_sha1_ctx *sctx = crypto_tfm_ctx(tfm); 36 struct s390_sha_ctx *sctx = crypto_tfm_ctx(tfm);
42 37
43 sctx->state[0] = SHA1_H0; 38 sctx->state[0] = SHA1_H0;
44 sctx->state[1] = SHA1_H1; 39 sctx->state[1] = SHA1_H1;
@@ -46,79 +41,7 @@ static void sha1_init(struct crypto_tfm *tfm)
46 sctx->state[3] = SHA1_H3; 41 sctx->state[3] = SHA1_H3;
47 sctx->state[4] = SHA1_H4; 42 sctx->state[4] = SHA1_H4;
48 sctx->count = 0; 43 sctx->count = 0;
49} 44 sctx->func = KIMD_SHA_1;
50
51static void sha1_update(struct crypto_tfm *tfm, const u8 *data,
52 unsigned int len)
53{
54 struct s390_sha1_ctx *sctx = crypto_tfm_ctx(tfm);
55 unsigned int index;
56 int ret;
57
58 /* how much is already in the buffer? */
59 index = sctx->count & 0x3f;
60
61 sctx->count += len;
62
63 if (index + len < SHA1_BLOCK_SIZE)
64 goto store;
65
66 /* process one stored block */
67 if (index) {
68 memcpy(sctx->buf + index, data, SHA1_BLOCK_SIZE - index);
69 ret = crypt_s390_kimd(KIMD_SHA_1, sctx->state, sctx->buf,
70 SHA1_BLOCK_SIZE);
71 BUG_ON(ret != SHA1_BLOCK_SIZE);
72 data += SHA1_BLOCK_SIZE - index;
73 len -= SHA1_BLOCK_SIZE - index;
74 }
75
76 /* process as many blocks as possible */
77 if (len >= SHA1_BLOCK_SIZE) {
78 ret = crypt_s390_kimd(KIMD_SHA_1, sctx->state, data,
79 len & ~(SHA1_BLOCK_SIZE - 1));
80 BUG_ON(ret != (len & ~(SHA1_BLOCK_SIZE - 1)));
81 data += ret;
82 len -= ret;
83 }
84
85store:
86 /* anything left? */
87 if (len)
88 memcpy(sctx->buf + index , data, len);
89}
90
91/* Add padding and return the message digest. */
92static void sha1_final(struct crypto_tfm *tfm, u8 *out)
93{
94 struct s390_sha1_ctx *sctx = crypto_tfm_ctx(tfm);
95 u64 bits;
96 unsigned int index, end;
97 int ret;
98
99 /* must perform manual padding */
100 index = sctx->count & 0x3f;
101 end = (index < 56) ? SHA1_BLOCK_SIZE : (2 * SHA1_BLOCK_SIZE);
102
103 /* start pad with 1 */
104 sctx->buf[index] = 0x80;
105
106 /* pad with zeros */
107 index++;
108 memset(sctx->buf + index, 0x00, end - index - 8);
109
110 /* append message length */
111 bits = sctx->count * 8;
112 memcpy(sctx->buf + end - 8, &bits, sizeof(bits));
113
114 ret = crypt_s390_kimd(KIMD_SHA_1, sctx->state, sctx->buf, end);
115 BUG_ON(ret != end);
116
117 /* copy digest to out */
118 memcpy(out, sctx->state, SHA1_DIGEST_SIZE);
119
120 /* wipe context */
121 memset(sctx, 0, sizeof *sctx);
122} 45}
123 46
124static struct crypto_alg alg = { 47static struct crypto_alg alg = {
@@ -127,21 +50,20 @@ static struct crypto_alg alg = {
127 .cra_priority = CRYPT_S390_PRIORITY, 50 .cra_priority = CRYPT_S390_PRIORITY,
128 .cra_flags = CRYPTO_ALG_TYPE_DIGEST, 51 .cra_flags = CRYPTO_ALG_TYPE_DIGEST,
129 .cra_blocksize = SHA1_BLOCK_SIZE, 52 .cra_blocksize = SHA1_BLOCK_SIZE,
130 .cra_ctxsize = sizeof(struct s390_sha1_ctx), 53 .cra_ctxsize = sizeof(struct s390_sha_ctx),
131 .cra_module = THIS_MODULE, 54 .cra_module = THIS_MODULE,
132 .cra_list = LIST_HEAD_INIT(alg.cra_list), 55 .cra_list = LIST_HEAD_INIT(alg.cra_list),
133 .cra_u = { .digest = { 56 .cra_u = { .digest = {
134 .dia_digestsize = SHA1_DIGEST_SIZE, 57 .dia_digestsize = SHA1_DIGEST_SIZE,
135 .dia_init = sha1_init, 58 .dia_init = sha1_init,
136 .dia_update = sha1_update, 59 .dia_update = s390_sha_update,
137 .dia_final = sha1_final } } 60 .dia_final = s390_sha_final } }
138}; 61};
139 62
140static int __init sha1_s390_init(void) 63static int __init sha1_s390_init(void)
141{ 64{
142 if (!crypt_s390_func_available(KIMD_SHA_1)) 65 if (!crypt_s390_func_available(KIMD_SHA_1))
143 return -EOPNOTSUPP; 66 return -EOPNOTSUPP;
144
145 return crypto_register_alg(&alg); 67 return crypto_register_alg(&alg);
146} 68}
147 69
@@ -154,6 +76,5 @@ module_init(sha1_s390_init);
154module_exit(sha1_s390_fini); 76module_exit(sha1_s390_fini);
155 77
156MODULE_ALIAS("sha1"); 78MODULE_ALIAS("sha1");
157
158MODULE_LICENSE("GPL"); 79MODULE_LICENSE("GPL");
159MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm"); 80MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
diff --git a/arch/s390/crypto/sha256_s390.c b/arch/s390/crypto/sha256_s390.c
index 2a3d756b35d4..19c03fb6ba7e 100644
--- a/arch/s390/crypto/sha256_s390.c
+++ b/arch/s390/crypto/sha256_s390.c
@@ -22,16 +22,11 @@
22#include <crypto/sha.h> 22#include <crypto/sha.h>
23 23
24#include "crypt_s390.h" 24#include "crypt_s390.h"
25 25#include "sha.h"
26struct s390_sha256_ctx {
27 u64 count; /* message length */
28 u32 state[8];
29 u8 buf[2 * SHA256_BLOCK_SIZE];
30};
31 26
32static void sha256_init(struct crypto_tfm *tfm) 27static void sha256_init(struct crypto_tfm *tfm)
33{ 28{
34 struct s390_sha256_ctx *sctx = crypto_tfm_ctx(tfm); 29 struct s390_sha_ctx *sctx = crypto_tfm_ctx(tfm);
35 30
36 sctx->state[0] = SHA256_H0; 31 sctx->state[0] = SHA256_H0;
37 sctx->state[1] = SHA256_H1; 32 sctx->state[1] = SHA256_H1;
@@ -42,79 +37,7 @@ static void sha256_init(struct crypto_tfm *tfm)
42 sctx->state[6] = SHA256_H6; 37 sctx->state[6] = SHA256_H6;
43 sctx->state[7] = SHA256_H7; 38 sctx->state[7] = SHA256_H7;
44 sctx->count = 0; 39 sctx->count = 0;
45} 40 sctx->func = KIMD_SHA_256;
46
47static void sha256_update(struct crypto_tfm *tfm, const u8 *data,
48 unsigned int len)
49{
50 struct s390_sha256_ctx *sctx = crypto_tfm_ctx(tfm);
51 unsigned int index;
52 int ret;
53
54 /* how much is already in the buffer? */
55 index = sctx->count & 0x3f;
56
57 sctx->count += len;
58
59 if ((index + len) < SHA256_BLOCK_SIZE)
60 goto store;
61
62 /* process one stored block */
63 if (index) {
64 memcpy(sctx->buf + index, data, SHA256_BLOCK_SIZE - index);
65 ret = crypt_s390_kimd(KIMD_SHA_256, sctx->state, sctx->buf,
66 SHA256_BLOCK_SIZE);
67 BUG_ON(ret != SHA256_BLOCK_SIZE);
68 data += SHA256_BLOCK_SIZE - index;
69 len -= SHA256_BLOCK_SIZE - index;
70 }
71
72 /* process as many blocks as possible */
73 if (len >= SHA256_BLOCK_SIZE) {
74 ret = crypt_s390_kimd(KIMD_SHA_256, sctx->state, data,
75 len & ~(SHA256_BLOCK_SIZE - 1));
76 BUG_ON(ret != (len & ~(SHA256_BLOCK_SIZE - 1)));
77 data += ret;
78 len -= ret;
79 }
80
81store:
82 /* anything left? */
83 if (len)
84 memcpy(sctx->buf + index , data, len);
85}
86
87/* Add padding and return the message digest */
88static void sha256_final(struct crypto_tfm *tfm, u8 *out)
89{
90 struct s390_sha256_ctx *sctx = crypto_tfm_ctx(tfm);
91 u64 bits;
92 unsigned int index, end;
93 int ret;
94
95 /* must perform manual padding */
96 index = sctx->count & 0x3f;
97 end = (index < 56) ? SHA256_BLOCK_SIZE : (2 * SHA256_BLOCK_SIZE);
98
99 /* start pad with 1 */
100 sctx->buf[index] = 0x80;
101
102 /* pad with zeros */
103 index++;
104 memset(sctx->buf + index, 0x00, end - index - 8);
105
106 /* append message length */
107 bits = sctx->count * 8;
108 memcpy(sctx->buf + end - 8, &bits, sizeof(bits));
109
110 ret = crypt_s390_kimd(KIMD_SHA_256, sctx->state, sctx->buf, end);
111 BUG_ON(ret != end);
112
113 /* copy digest to out */
114 memcpy(out, sctx->state, SHA256_DIGEST_SIZE);
115
116 /* wipe context */
117 memset(sctx, 0, sizeof *sctx);
118} 41}
119 42
120static struct crypto_alg alg = { 43static struct crypto_alg alg = {
@@ -123,14 +46,14 @@ static struct crypto_alg alg = {
123 .cra_priority = CRYPT_S390_PRIORITY, 46 .cra_priority = CRYPT_S390_PRIORITY,
124 .cra_flags = CRYPTO_ALG_TYPE_DIGEST, 47 .cra_flags = CRYPTO_ALG_TYPE_DIGEST,
125 .cra_blocksize = SHA256_BLOCK_SIZE, 48 .cra_blocksize = SHA256_BLOCK_SIZE,
126 .cra_ctxsize = sizeof(struct s390_sha256_ctx), 49 .cra_ctxsize = sizeof(struct s390_sha_ctx),
127 .cra_module = THIS_MODULE, 50 .cra_module = THIS_MODULE,
128 .cra_list = LIST_HEAD_INIT(alg.cra_list), 51 .cra_list = LIST_HEAD_INIT(alg.cra_list),
129 .cra_u = { .digest = { 52 .cra_u = { .digest = {
130 .dia_digestsize = SHA256_DIGEST_SIZE, 53 .dia_digestsize = SHA256_DIGEST_SIZE,
131 .dia_init = sha256_init, 54 .dia_init = sha256_init,
132 .dia_update = sha256_update, 55 .dia_update = s390_sha_update,
133 .dia_final = sha256_final } } 56 .dia_final = s390_sha_final } }
134}; 57};
135 58
136static int sha256_s390_init(void) 59static int sha256_s390_init(void)
@@ -150,6 +73,5 @@ module_init(sha256_s390_init);
150module_exit(sha256_s390_fini); 73module_exit(sha256_s390_fini);
151 74
152MODULE_ALIAS("sha256"); 75MODULE_ALIAS("sha256");
153
154MODULE_LICENSE("GPL"); 76MODULE_LICENSE("GPL");
155MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm"); 77MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm");
diff --git a/arch/s390/crypto/sha512_s390.c b/arch/s390/crypto/sha512_s390.c
new file mode 100644
index 000000000000..23c7861f6aeb
--- /dev/null
+++ b/arch/s390/crypto/sha512_s390.c
@@ -0,0 +1,114 @@
1/*
2 * Cryptographic API.
3 *
4 * s390 implementation of the SHA512 and SHA38 Secure Hash Algorithm.
5 *
6 * Copyright IBM Corp. 2007
7 * Author(s): Jan Glauber (jang@de.ibm.com)
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the Free
11 * Software Foundation; either version 2 of the License, or (at your option)
12 * any later version.
13 *
14 */
15#include <linux/init.h>
16#include <linux/module.h>
17#include <linux/crypto.h>
18
19#include "sha.h"
20#include "crypt_s390.h"
21
22static void sha512_init(struct crypto_tfm *tfm)
23{
24 struct s390_sha_ctx *ctx = crypto_tfm_ctx(tfm);
25
26 *(__u64 *)&ctx->state[0] = 0x6a09e667f3bcc908ULL;
27 *(__u64 *)&ctx->state[2] = 0xbb67ae8584caa73bULL;
28 *(__u64 *)&ctx->state[4] = 0x3c6ef372fe94f82bULL;
29 *(__u64 *)&ctx->state[6] = 0xa54ff53a5f1d36f1ULL;
30 *(__u64 *)&ctx->state[8] = 0x510e527fade682d1ULL;
31 *(__u64 *)&ctx->state[10] = 0x9b05688c2b3e6c1fULL;
32 *(__u64 *)&ctx->state[12] = 0x1f83d9abfb41bd6bULL;
33 *(__u64 *)&ctx->state[14] = 0x5be0cd19137e2179ULL;
34 ctx->count = 0;
35 ctx->func = KIMD_SHA_512;
36}
37
38static struct crypto_alg sha512_alg = {
39 .cra_name = "sha512",
40 .cra_driver_name = "sha512-s390",
41 .cra_priority = CRYPT_S390_PRIORITY,
42 .cra_flags = CRYPTO_ALG_TYPE_DIGEST,
43 .cra_blocksize = SHA512_BLOCK_SIZE,
44 .cra_ctxsize = sizeof(struct s390_sha_ctx),
45 .cra_module = THIS_MODULE,
46 .cra_list = LIST_HEAD_INIT(sha512_alg.cra_list),
47 .cra_u = { .digest = {
48 .dia_digestsize = SHA512_DIGEST_SIZE,
49 .dia_init = sha512_init,
50 .dia_update = s390_sha_update,
51 .dia_final = s390_sha_final } }
52};
53
54MODULE_ALIAS("sha512");
55
56static void sha384_init(struct crypto_tfm *tfm)
57{
58 struct s390_sha_ctx *ctx = crypto_tfm_ctx(tfm);
59
60 *(__u64 *)&ctx->state[0] = 0xcbbb9d5dc1059ed8ULL;
61 *(__u64 *)&ctx->state[2] = 0x629a292a367cd507ULL;
62 *(__u64 *)&ctx->state[4] = 0x9159015a3070dd17ULL;
63 *(__u64 *)&ctx->state[6] = 0x152fecd8f70e5939ULL;
64 *(__u64 *)&ctx->state[8] = 0x67332667ffc00b31ULL;
65 *(__u64 *)&ctx->state[10] = 0x8eb44a8768581511ULL;
66 *(__u64 *)&ctx->state[12] = 0xdb0c2e0d64f98fa7ULL;
67 *(__u64 *)&ctx->state[14] = 0x47b5481dbefa4fa4ULL;
68 ctx->count = 0;
69 ctx->func = KIMD_SHA_512;
70}
71
72static struct crypto_alg sha384_alg = {
73 .cra_name = "sha384",
74 .cra_driver_name = "sha384-s390",
75 .cra_priority = CRYPT_S390_PRIORITY,
76 .cra_flags = CRYPTO_ALG_TYPE_DIGEST,
77 .cra_blocksize = SHA384_BLOCK_SIZE,
78 .cra_ctxsize = sizeof(struct s390_sha_ctx),
79 .cra_module = THIS_MODULE,
80 .cra_list = LIST_HEAD_INIT(sha384_alg.cra_list),
81 .cra_u = { .digest = {
82 .dia_digestsize = SHA384_DIGEST_SIZE,
83 .dia_init = sha384_init,
84 .dia_update = s390_sha_update,
85 .dia_final = s390_sha_final } }
86};
87
88MODULE_ALIAS("sha384");
89
90static int __init init(void)
91{
92 int ret;
93
94 if (!crypt_s390_func_available(KIMD_SHA_512))
95 return -EOPNOTSUPP;
96 if ((ret = crypto_register_alg(&sha512_alg)) < 0)
97 goto out;
98 if ((ret = crypto_register_alg(&sha384_alg)) < 0)
99 crypto_unregister_alg(&sha512_alg);
100out:
101 return ret;
102}
103
104static void __exit fini(void)
105{
106 crypto_unregister_alg(&sha512_alg);
107 crypto_unregister_alg(&sha384_alg);
108}
109
110module_init(init);
111module_exit(fini);
112
113MODULE_LICENSE("GPL");
114MODULE_DESCRIPTION("SHA512 and SHA-384 Secure Hash Algorithm");
diff --git a/arch/s390/crypto/sha_common.c b/arch/s390/crypto/sha_common.c
new file mode 100644
index 000000000000..9d6eb8c3d37e
--- /dev/null
+++ b/arch/s390/crypto/sha_common.c
@@ -0,0 +1,97 @@
1/*
2 * Cryptographic API.
3 *
4 * s390 generic implementation of the SHA Secure Hash Algorithms.
5 *
6 * Copyright IBM Corp. 2007
7 * Author(s): Jan Glauber (jang@de.ibm.com)
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the Free
11 * Software Foundation; either version 2 of the License, or (at your option)
12 * any later version.
13 *
14 */
15
16#include <linux/crypto.h>
17#include "sha.h"
18#include "crypt_s390.h"
19
20void s390_sha_update(struct crypto_tfm *tfm, const u8 *data, unsigned int len)
21{
22 struct s390_sha_ctx *ctx = crypto_tfm_ctx(tfm);
23 unsigned int bsize = crypto_tfm_alg_blocksize(tfm);
24 unsigned int index;
25 int ret;
26
27 /* how much is already in the buffer? */
28 index = ctx->count & (bsize - 1);
29 ctx->count += len;
30
31 if ((index + len) < bsize)
32 goto store;
33
34 /* process one stored block */
35 if (index) {
36 memcpy(ctx->buf + index, data, bsize - index);
37 ret = crypt_s390_kimd(ctx->func, ctx->state, ctx->buf, bsize);
38 BUG_ON(ret != bsize);
39 data += bsize - index;
40 len -= bsize - index;
41 }
42
43 /* process as many blocks as possible */
44 if (len >= bsize) {
45 ret = crypt_s390_kimd(ctx->func, ctx->state, data,
46 len & ~(bsize - 1));
47 BUG_ON(ret != (len & ~(bsize - 1)));
48 data += ret;
49 len -= ret;
50 }
51store:
52 if (len)
53 memcpy(ctx->buf + index , data, len);
54}
55EXPORT_SYMBOL_GPL(s390_sha_update);
56
57void s390_sha_final(struct crypto_tfm *tfm, u8 *out)
58{
59 struct s390_sha_ctx *ctx = crypto_tfm_ctx(tfm);
60 unsigned int bsize = crypto_tfm_alg_blocksize(tfm);
61 u64 bits;
62 unsigned int index, end, plen;
63 int ret;
64
65 /* SHA-512 uses 128 bit padding length */
66 plen = (bsize > SHA256_BLOCK_SIZE) ? 16 : 8;
67
68 /* must perform manual padding */
69 index = ctx->count & (bsize - 1);
70 end = (index < bsize - plen) ? bsize : (2 * bsize);
71
72 /* start pad with 1 */
73 ctx->buf[index] = 0x80;
74 index++;
75
76 /* pad with zeros */
77 memset(ctx->buf + index, 0x00, end - index - 8);
78
79 /*
80 * Append message length. Well, SHA-512 wants a 128 bit lenght value,
81 * nevertheless we use u64, should be enough for now...
82 */
83 bits = ctx->count * 8;
84 memcpy(ctx->buf + end - 8, &bits, sizeof(bits));
85
86 ret = crypt_s390_kimd(ctx->func, ctx->state, ctx->buf, end);
87 BUG_ON(ret != end);
88
89 /* copy digest to out */
90 memcpy(out, ctx->state, crypto_hash_digestsize(crypto_hash_cast(tfm)));
91 /* wipe context */
92 memset(ctx, 0, sizeof *ctx);
93}
94EXPORT_SYMBOL_GPL(s390_sha_final);
95
96MODULE_LICENSE("GPL");
97MODULE_DESCRIPTION("s390 SHA cipher common functions");
diff --git a/arch/x86/crypto/aes-i586-asm_32.S b/arch/x86/crypto/aes-i586-asm_32.S
index 1093bede3e0a..e41b147f4509 100644
--- a/arch/x86/crypto/aes-i586-asm_32.S
+++ b/arch/x86/crypto/aes-i586-asm_32.S
@@ -289,7 +289,6 @@ aes_enc_blk:
289 pop %ebx 289 pop %ebx
290 mov %r0,(%ebp) 290 mov %r0,(%ebp)
291 pop %ebp 291 pop %ebp
292 mov $1,%eax
293 ret 292 ret
294 293
295// AES (Rijndael) Decryption Subroutine 294// AES (Rijndael) Decryption Subroutine
@@ -365,6 +364,4 @@ aes_dec_blk:
365 pop %ebx 364 pop %ebx
366 mov %r0,(%ebp) 365 mov %r0,(%ebp)
367 pop %ebp 366 pop %ebp
368 mov $1,%eax
369 ret 367 ret
370
diff --git a/crypto/Kconfig b/crypto/Kconfig
index 69f1be6816f7..864456c140fe 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -13,12 +13,14 @@ source "crypto/async_tx/Kconfig"
13# Cryptographic API Configuration 13# Cryptographic API Configuration
14# 14#
15menuconfig CRYPTO 15menuconfig CRYPTO
16 bool "Cryptographic API" 16 tristate "Cryptographic API"
17 help 17 help
18 This option provides the core Cryptographic API. 18 This option provides the core Cryptographic API.
19 19
20if CRYPTO 20if CRYPTO
21 21
22comment "Crypto core or helper"
23
22config CRYPTO_ALGAPI 24config CRYPTO_ALGAPI
23 tristate 25 tristate
24 help 26 help
@@ -32,15 +34,6 @@ config CRYPTO_BLKCIPHER
32 tristate 34 tristate
33 select CRYPTO_ALGAPI 35 select CRYPTO_ALGAPI
34 36
35config CRYPTO_SEQIV
36 tristate "Sequence Number IV Generator"
37 select CRYPTO_AEAD
38 select CRYPTO_BLKCIPHER
39 help
40 This IV generator generates an IV based on a sequence number by
41 xoring it with a salt. This algorithm is mainly useful for CTR
42 and similar modes.
43
44config CRYPTO_HASH 37config CRYPTO_HASH
45 tristate 38 tristate
46 select CRYPTO_ALGAPI 39 select CRYPTO_ALGAPI
@@ -52,24 +45,15 @@ config CRYPTO_MANAGER
52 Create default cryptographic template instantiations such as 45 Create default cryptographic template instantiations such as
53 cbc(aes). 46 cbc(aes).
54 47
55config CRYPTO_HMAC 48config CRYPTO_GF128MUL
56 tristate "HMAC support" 49 tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
57 select CRYPTO_HASH
58 select CRYPTO_MANAGER
59 help
60 HMAC: Keyed-Hashing for Message Authentication (RFC2104).
61 This is required for IPSec.
62
63config CRYPTO_XCBC
64 tristate "XCBC support"
65 depends on EXPERIMENTAL 50 depends on EXPERIMENTAL
66 select CRYPTO_HASH
67 select CRYPTO_MANAGER
68 help 51 help
69 XCBC: Keyed-Hashing with encryption algorithm 52 Efficient table driven implementation of multiplications in the
70 http://www.ietf.org/rfc/rfc3566.txt 53 field GF(2^128). This is needed by some cypher modes. This
71 http://csrc.nist.gov/encryption/modes/proposedmodes/ 54 option will be selected automatically if you select such a
72 xcbc-mac/xcbc-mac-spec.pdf 55 cipher mode. Only select this option by hand if you expect to load
56 an external module that requires these functions.
73 57
74config CRYPTO_NULL 58config CRYPTO_NULL
75 tristate "Null algorithms" 59 tristate "Null algorithms"
@@ -78,107 +62,98 @@ config CRYPTO_NULL
78 help 62 help
79 These are 'Null' algorithms, used by IPsec, which do nothing. 63 These are 'Null' algorithms, used by IPsec, which do nothing.
80 64
81config CRYPTO_MD4 65config CRYPTO_CRYPTD
82 tristate "MD4 digest algorithm" 66 tristate "Software async crypto daemon"
83 select CRYPTO_ALGAPI 67 select CRYPTO_BLKCIPHER
84 help 68 select CRYPTO_MANAGER
85 MD4 message digest algorithm (RFC1320).
86
87config CRYPTO_MD5
88 tristate "MD5 digest algorithm"
89 select CRYPTO_ALGAPI
90 help 69 help
91 MD5 message digest algorithm (RFC1321). 70 This is a generic software asynchronous crypto daemon that
71 converts an arbitrary synchronous software crypto algorithm
72 into an asynchronous algorithm that executes in a kernel thread.
92 73
93config CRYPTO_SHA1 74config CRYPTO_AUTHENC
94 tristate "SHA1 digest algorithm" 75 tristate "Authenc support"
95 select CRYPTO_ALGAPI 76 select CRYPTO_AEAD
77 select CRYPTO_BLKCIPHER
78 select CRYPTO_MANAGER
79 select CRYPTO_HASH
96 help 80 help
97 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2). 81 Authenc: Combined mode wrapper for IPsec.
82 This is required for IPSec.
98 83
99config CRYPTO_SHA256 84config CRYPTO_TEST
100 tristate "SHA224 and SHA256 digest algorithm" 85 tristate "Testing module"
86 depends on m
101 select CRYPTO_ALGAPI 87 select CRYPTO_ALGAPI
88 select CRYPTO_AEAD
89 select CRYPTO_BLKCIPHER
102 help 90 help
103 SHA256 secure hash standard (DFIPS 180-2). 91 Quick & dirty crypto test module.
104
105 This version of SHA implements a 256 bit hash with 128 bits of
106 security against collision attacks.
107 92
108 This code also includes SHA-224, a 224 bit hash with 112 bits 93comment "Authenticated Encryption with Associated Data"
109 of security against collision attacks.
110 94
111config CRYPTO_SHA512 95config CRYPTO_CCM
112 tristate "SHA384 and SHA512 digest algorithms" 96 tristate "CCM support"
113 select CRYPTO_ALGAPI 97 select CRYPTO_CTR
98 select CRYPTO_AEAD
114 help 99 help
115 SHA512 secure hash standard (DFIPS 180-2). 100 Support for Counter with CBC MAC. Required for IPsec.
116
117 This version of SHA implements a 512 bit hash with 256 bits of
118 security against collision attacks.
119
120 This code also includes SHA-384, a 384 bit hash with 192 bits
121 of security against collision attacks.
122 101
123config CRYPTO_WP512 102config CRYPTO_GCM
124 tristate "Whirlpool digest algorithms" 103 tristate "GCM/GMAC support"
125 select CRYPTO_ALGAPI 104 select CRYPTO_CTR
105 select CRYPTO_AEAD
106 select CRYPTO_GF128MUL
126 help 107 help
127 Whirlpool hash algorithm 512, 384 and 256-bit hashes 108 Support for Galois/Counter Mode (GCM) and Galois Message
128 109 Authentication Code (GMAC). Required for IPSec.
129 Whirlpool-512 is part of the NESSIE cryptographic primitives.
130 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
131
132 See also:
133 <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
134 110
135config CRYPTO_TGR192 111config CRYPTO_SEQIV
136 tristate "Tiger digest algorithms" 112 tristate "Sequence Number IV Generator"
137 select CRYPTO_ALGAPI 113 select CRYPTO_AEAD
114 select CRYPTO_BLKCIPHER
138 help 115 help
139 Tiger hash algorithm 192, 160 and 128-bit hashes 116 This IV generator generates an IV based on a sequence number by
140 117 xoring it with a salt. This algorithm is mainly useful for CTR
141 Tiger is a hash function optimized for 64-bit processors while
142 still having decent performance on 32-bit processors.
143 Tiger was developed by Ross Anderson and Eli Biham.
144
145 See also:
146 <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
147 118
148config CRYPTO_GF128MUL 119comment "Block modes"
149 tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
150 depends on EXPERIMENTAL
151 help
152 Efficient table driven implementation of multiplications in the
153 field GF(2^128). This is needed by some cypher modes. This
154 option will be selected automatically if you select such a
155 cipher mode. Only select this option by hand if you expect to load
156 an external module that requires these functions.
157 120
158config CRYPTO_ECB 121config CRYPTO_CBC
159 tristate "ECB support" 122 tristate "CBC support"
160 select CRYPTO_BLKCIPHER 123 select CRYPTO_BLKCIPHER
161 select CRYPTO_MANAGER 124 select CRYPTO_MANAGER
162 help 125 help
163 ECB: Electronic CodeBook mode 126 CBC: Cipher Block Chaining mode
164 This is the simplest block cipher algorithm. It simply encrypts 127 This block cipher algorithm is required for IPSec.
165 the input block by block.
166 128
167config CRYPTO_CBC 129config CRYPTO_CTR
168 tristate "CBC support" 130 tristate "CTR support"
169 select CRYPTO_BLKCIPHER 131 select CRYPTO_BLKCIPHER
132 select CRYPTO_SEQIV
170 select CRYPTO_MANAGER 133 select CRYPTO_MANAGER
171 help 134 help
172 CBC: Cipher Block Chaining mode 135 CTR: Counter mode
173 This block cipher algorithm is required for IPSec. 136 This block cipher algorithm is required for IPSec.
174 137
175config CRYPTO_PCBC 138config CRYPTO_CTS
176 tristate "PCBC support" 139 tristate "CTS support"
140 select CRYPTO_BLKCIPHER
141 help
142 CTS: Cipher Text Stealing
143 This is the Cipher Text Stealing mode as described by
144 Section 8 of rfc2040 and referenced by rfc3962.
145 (rfc3962 includes errata information in its Appendix A)
146 This mode is required for Kerberos gss mechanism support
147 for AES encryption.
148
149config CRYPTO_ECB
150 tristate "ECB support"
177 select CRYPTO_BLKCIPHER 151 select CRYPTO_BLKCIPHER
178 select CRYPTO_MANAGER 152 select CRYPTO_MANAGER
179 help 153 help
180 PCBC: Propagating Cipher Block Chaining mode 154 ECB: Electronic CodeBook mode
181 This block cipher algorithm is required for RxRPC. 155 This is the simplest block cipher algorithm. It simply encrypts
156 the input block by block.
182 157
183config CRYPTO_LRW 158config CRYPTO_LRW
184 tristate "LRW support (EXPERIMENTAL)" 159 tristate "LRW support (EXPERIMENTAL)"
@@ -193,6 +168,14 @@ config CRYPTO_LRW
193 The first 128, 192 or 256 bits in the key are used for AES and the 168 The first 128, 192 or 256 bits in the key are used for AES and the
194 rest is used to tie each cipher block to its logical position. 169 rest is used to tie each cipher block to its logical position.
195 170
171config CRYPTO_PCBC
172 tristate "PCBC support"
173 select CRYPTO_BLKCIPHER
174 select CRYPTO_MANAGER
175 help
176 PCBC: Propagating Cipher Block Chaining mode
177 This block cipher algorithm is required for RxRPC.
178
196config CRYPTO_XTS 179config CRYPTO_XTS
197 tristate "XTS support (EXPERIMENTAL)" 180 tristate "XTS support (EXPERIMENTAL)"
198 depends on EXPERIMENTAL 181 depends on EXPERIMENTAL
@@ -204,149 +187,134 @@ config CRYPTO_XTS
204 key size 256, 384 or 512 bits. This implementation currently 187 key size 256, 384 or 512 bits. This implementation currently
205 can't handle a sectorsize which is not a multiple of 16 bytes. 188 can't handle a sectorsize which is not a multiple of 16 bytes.
206 189
207config CRYPTO_CTR 190comment "Hash modes"
208 tristate "CTR support" 191
209 select CRYPTO_BLKCIPHER 192config CRYPTO_HMAC
210 select CRYPTO_SEQIV 193 tristate "HMAC support"
194 select CRYPTO_HASH
211 select CRYPTO_MANAGER 195 select CRYPTO_MANAGER
212 help 196 help
213 CTR: Counter mode 197 HMAC: Keyed-Hashing for Message Authentication (RFC2104).
214 This block cipher algorithm is required for IPSec. 198 This is required for IPSec.
215 199
216config CRYPTO_GCM 200config CRYPTO_XCBC
217 tristate "GCM/GMAC support" 201 tristate "XCBC support"
218 select CRYPTO_CTR 202 depends on EXPERIMENTAL
219 select CRYPTO_AEAD 203 select CRYPTO_HASH
220 select CRYPTO_GF128MUL 204 select CRYPTO_MANAGER
221 help 205 help
222 Support for Galois/Counter Mode (GCM) and Galois Message 206 XCBC: Keyed-Hashing with encryption algorithm
223 Authentication Code (GMAC). Required for IPSec. 207 http://www.ietf.org/rfc/rfc3566.txt
208 http://csrc.nist.gov/encryption/modes/proposedmodes/
209 xcbc-mac/xcbc-mac-spec.pdf
224 210
225config CRYPTO_CCM 211comment "Digest"
226 tristate "CCM support"
227 select CRYPTO_CTR
228 select CRYPTO_AEAD
229 help
230 Support for Counter with CBC MAC. Required for IPsec.
231 212
232config CRYPTO_CRYPTD 213config CRYPTO_CRC32C
233 tristate "Software async crypto daemon" 214 tristate "CRC32c CRC algorithm"
234 select CRYPTO_BLKCIPHER 215 select CRYPTO_ALGAPI
235 select CRYPTO_MANAGER 216 select LIBCRC32C
236 help 217 help
237 This is a generic software asynchronous crypto daemon that 218 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
238 converts an arbitrary synchronous software crypto algorithm 219 by iSCSI for header and data digests and by others.
239 into an asynchronous algorithm that executes in a kernel thread. 220 See Castagnoli93. This implementation uses lib/libcrc32c.
221 Module will be crc32c.
240 222
241config CRYPTO_DES 223config CRYPTO_MD4
242 tristate "DES and Triple DES EDE cipher algorithms" 224 tristate "MD4 digest algorithm"
243 select CRYPTO_ALGAPI 225 select CRYPTO_ALGAPI
244 help 226 help
245 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3). 227 MD4 message digest algorithm (RFC1320).
246 228
247config CRYPTO_FCRYPT 229config CRYPTO_MD5
248 tristate "FCrypt cipher algorithm" 230 tristate "MD5 digest algorithm"
249 select CRYPTO_ALGAPI 231 select CRYPTO_ALGAPI
250 select CRYPTO_BLKCIPHER
251 help 232 help
252 FCrypt algorithm used by RxRPC. 233 MD5 message digest algorithm (RFC1321).
253 234
254config CRYPTO_BLOWFISH 235config CRYPTO_MICHAEL_MIC
255 tristate "Blowfish cipher algorithm" 236 tristate "Michael MIC keyed digest algorithm"
256 select CRYPTO_ALGAPI 237 select CRYPTO_ALGAPI
257 help 238 help
258 Blowfish cipher algorithm, by Bruce Schneier. 239 Michael MIC is used for message integrity protection in TKIP
259 240 (IEEE 802.11i). This algorithm is required for TKIP, but it
260 This is a variable key length cipher which can use keys from 32 241 should not be used for other purposes because of the weakness
261 bits to 448 bits in length. It's fast, simple and specifically 242 of the algorithm.
262 designed for use on "large microprocessors".
263
264 See also:
265 <http://www.schneier.com/blowfish.html>
266 243
267config CRYPTO_TWOFISH 244config CRYPTO_SHA1
268 tristate "Twofish cipher algorithm" 245 tristate "SHA1 digest algorithm"
269 select CRYPTO_ALGAPI 246 select CRYPTO_ALGAPI
270 select CRYPTO_TWOFISH_COMMON
271 help 247 help
272 Twofish cipher algorithm. 248 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
273
274 Twofish was submitted as an AES (Advanced Encryption Standard)
275 candidate cipher by researchers at CounterPane Systems. It is a
276 16 round block cipher supporting key sizes of 128, 192, and 256
277 bits.
278
279 See also:
280 <http://www.schneier.com/twofish.html>
281 249
282config CRYPTO_TWOFISH_COMMON 250config CRYPTO_SHA256
283 tristate 251 tristate "SHA224 and SHA256 digest algorithm"
252 select CRYPTO_ALGAPI
284 help 253 help
285 Common parts of the Twofish cipher algorithm shared by the 254 SHA256 secure hash standard (DFIPS 180-2).
286 generic c and the assembler implementations.
287 255
288config CRYPTO_TWOFISH_586 256 This version of SHA implements a 256 bit hash with 128 bits of
289 tristate "Twofish cipher algorithms (i586)" 257 security against collision attacks.
290 depends on (X86 || UML_X86) && !64BIT 258
259 This code also includes SHA-224, a 224 bit hash with 112 bits
260 of security against collision attacks.
261
262config CRYPTO_SHA512
263 tristate "SHA384 and SHA512 digest algorithms"
291 select CRYPTO_ALGAPI 264 select CRYPTO_ALGAPI
292 select CRYPTO_TWOFISH_COMMON
293 help 265 help
294 Twofish cipher algorithm. 266 SHA512 secure hash standard (DFIPS 180-2).
295 267
296 Twofish was submitted as an AES (Advanced Encryption Standard) 268 This version of SHA implements a 512 bit hash with 256 bits of
297 candidate cipher by researchers at CounterPane Systems. It is a 269 security against collision attacks.
298 16 round block cipher supporting key sizes of 128, 192, and 256
299 bits.
300 270
301 See also: 271 This code also includes SHA-384, a 384 bit hash with 192 bits
302 <http://www.schneier.com/twofish.html> 272 of security against collision attacks.
303 273
304config CRYPTO_TWOFISH_X86_64 274config CRYPTO_TGR192
305 tristate "Twofish cipher algorithm (x86_64)" 275 tristate "Tiger digest algorithms"
306 depends on (X86 || UML_X86) && 64BIT
307 select CRYPTO_ALGAPI 276 select CRYPTO_ALGAPI
308 select CRYPTO_TWOFISH_COMMON
309 help 277 help
310 Twofish cipher algorithm (x86_64). 278 Tiger hash algorithm 192, 160 and 128-bit hashes
311 279
312 Twofish was submitted as an AES (Advanced Encryption Standard) 280 Tiger is a hash function optimized for 64-bit processors while
313 candidate cipher by researchers at CounterPane Systems. It is a 281 still having decent performance on 32-bit processors.
314 16 round block cipher supporting key sizes of 128, 192, and 256 282 Tiger was developed by Ross Anderson and Eli Biham.
315 bits.
316 283
317 See also: 284 See also:
318 <http://www.schneier.com/twofish.html> 285 <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
319 286
320config CRYPTO_SERPENT 287config CRYPTO_WP512
321 tristate "Serpent cipher algorithm" 288 tristate "Whirlpool digest algorithms"
322 select CRYPTO_ALGAPI 289 select CRYPTO_ALGAPI
323 help 290 help
324 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 291 Whirlpool hash algorithm 512, 384 and 256-bit hashes
325 292
326 Keys are allowed to be from 0 to 256 bits in length, in steps 293 Whirlpool-512 is part of the NESSIE cryptographic primitives.
327 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed 294 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
328 variant of Serpent for compatibility with old kerneli.org code.
329 295
330 See also: 296 See also:
331 <http://www.cl.cam.ac.uk/~rja14/serpent.html> 297 <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
298
299comment "Ciphers"
332 300
333config CRYPTO_AES 301config CRYPTO_AES
334 tristate "AES cipher algorithms" 302 tristate "AES cipher algorithms"
335 select CRYPTO_ALGAPI 303 select CRYPTO_ALGAPI
336 help 304 help
337 AES cipher algorithms (FIPS-197). AES uses the Rijndael 305 AES cipher algorithms (FIPS-197). AES uses the Rijndael
338 algorithm. 306 algorithm.
339 307
340 Rijndael appears to be consistently a very good performer in 308 Rijndael appears to be consistently a very good performer in
341 both hardware and software across a wide range of computing 309 both hardware and software across a wide range of computing
342 environments regardless of its use in feedback or non-feedback 310 environments regardless of its use in feedback or non-feedback
343 modes. Its key setup time is excellent, and its key agility is 311 modes. Its key setup time is excellent, and its key agility is
344 good. Rijndael's very low memory requirements make it very well 312 good. Rijndael's very low memory requirements make it very well
345 suited for restricted-space environments, in which it also 313 suited for restricted-space environments, in which it also
346 demonstrates excellent performance. Rijndael's operations are 314 demonstrates excellent performance. Rijndael's operations are
347 among the easiest to defend against power and timing attacks. 315 among the easiest to defend against power and timing attacks.
348 316
349 The AES specifies three key sizes: 128, 192 and 256 bits 317 The AES specifies three key sizes: 128, 192 and 256 bits
350 318
351 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information. 319 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
352 320
@@ -356,19 +324,19 @@ config CRYPTO_AES_586
356 select CRYPTO_ALGAPI 324 select CRYPTO_ALGAPI
357 select CRYPTO_AES 325 select CRYPTO_AES
358 help 326 help
359 AES cipher algorithms (FIPS-197). AES uses the Rijndael 327 AES cipher algorithms (FIPS-197). AES uses the Rijndael
360 algorithm. 328 algorithm.
361 329
362 Rijndael appears to be consistently a very good performer in 330 Rijndael appears to be consistently a very good performer in
363 both hardware and software across a wide range of computing 331 both hardware and software across a wide range of computing
364 environments regardless of its use in feedback or non-feedback 332 environments regardless of its use in feedback or non-feedback
365 modes. Its key setup time is excellent, and its key agility is 333 modes. Its key setup time is excellent, and its key agility is
366 good. Rijndael's very low memory requirements make it very well 334 good. Rijndael's very low memory requirements make it very well
367 suited for restricted-space environments, in which it also 335 suited for restricted-space environments, in which it also
368 demonstrates excellent performance. Rijndael's operations are 336 demonstrates excellent performance. Rijndael's operations are
369 among the easiest to defend against power and timing attacks. 337 among the easiest to defend against power and timing attacks.
370 338
371 The AES specifies three key sizes: 128, 192 and 256 bits 339 The AES specifies three key sizes: 128, 192 and 256 bits
372 340
373 See <http://csrc.nist.gov/encryption/aes/> for more information. 341 See <http://csrc.nist.gov/encryption/aes/> for more information.
374 342
@@ -378,22 +346,75 @@ config CRYPTO_AES_X86_64
378 select CRYPTO_ALGAPI 346 select CRYPTO_ALGAPI
379 select CRYPTO_AES 347 select CRYPTO_AES
380 help 348 help
381 AES cipher algorithms (FIPS-197). AES uses the Rijndael 349 AES cipher algorithms (FIPS-197). AES uses the Rijndael
382 algorithm. 350 algorithm.
383 351
384 Rijndael appears to be consistently a very good performer in 352 Rijndael appears to be consistently a very good performer in
385 both hardware and software across a wide range of computing 353 both hardware and software across a wide range of computing
386 environments regardless of its use in feedback or non-feedback 354 environments regardless of its use in feedback or non-feedback
387 modes. Its key setup time is excellent, and its key agility is 355 modes. Its key setup time is excellent, and its key agility is
388 good. Rijndael's very low memory requirements make it very well 356 good. Rijndael's very low memory requirements make it very well
389 suited for restricted-space environments, in which it also 357 suited for restricted-space environments, in which it also
390 demonstrates excellent performance. Rijndael's operations are 358 demonstrates excellent performance. Rijndael's operations are
391 among the easiest to defend against power and timing attacks. 359 among the easiest to defend against power and timing attacks.
392 360
393 The AES specifies three key sizes: 128, 192 and 256 bits 361 The AES specifies three key sizes: 128, 192 and 256 bits
394 362
395 See <http://csrc.nist.gov/encryption/aes/> for more information. 363 See <http://csrc.nist.gov/encryption/aes/> for more information.
396 364
365config CRYPTO_ANUBIS
366 tristate "Anubis cipher algorithm"
367 select CRYPTO_ALGAPI
368 help
369 Anubis cipher algorithm.
370
371 Anubis is a variable key length cipher which can use keys from
372 128 bits to 320 bits in length. It was evaluated as a entrant
373 in the NESSIE competition.
374
375 See also:
376 <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
377 <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
378
379config CRYPTO_ARC4
380 tristate "ARC4 cipher algorithm"
381 select CRYPTO_ALGAPI
382 help
383 ARC4 cipher algorithm.
384
385 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
386 bits in length. This algorithm is required for driver-based
387 WEP, but it should not be for other purposes because of the
388 weakness of the algorithm.
389
390config CRYPTO_BLOWFISH
391 tristate "Blowfish cipher algorithm"
392 select CRYPTO_ALGAPI
393 help
394 Blowfish cipher algorithm, by Bruce Schneier.
395
396 This is a variable key length cipher which can use keys from 32
397 bits to 448 bits in length. It's fast, simple and specifically
398 designed for use on "large microprocessors".
399
400 See also:
401 <http://www.schneier.com/blowfish.html>
402
403config CRYPTO_CAMELLIA
404 tristate "Camellia cipher algorithms"
405 depends on CRYPTO
406 select CRYPTO_ALGAPI
407 help
408 Camellia cipher algorithms module.
409
410 Camellia is a symmetric key block cipher developed jointly
411 at NTT and Mitsubishi Electric Corporation.
412
413 The Camellia specifies three key sizes: 128, 192 and 256 bits.
414
415 See also:
416 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
417
397config CRYPTO_CAST5 418config CRYPTO_CAST5
398 tristate "CAST5 (CAST-128) cipher algorithm" 419 tristate "CAST5 (CAST-128) cipher algorithm"
399 select CRYPTO_ALGAPI 420 select CRYPTO_ALGAPI
@@ -408,33 +429,18 @@ config CRYPTO_CAST6
408 The CAST6 encryption algorithm (synonymous with CAST-256) is 429 The CAST6 encryption algorithm (synonymous with CAST-256) is
409 described in RFC2612. 430 described in RFC2612.
410 431
411config CRYPTO_TEA 432config CRYPTO_DES
412 tristate "TEA, XTEA and XETA cipher algorithms" 433 tristate "DES and Triple DES EDE cipher algorithms"
413 select CRYPTO_ALGAPI 434 select CRYPTO_ALGAPI
414 help 435 help
415 TEA cipher algorithm. 436 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
416
417 Tiny Encryption Algorithm is a simple cipher that uses
418 many rounds for security. It is very fast and uses
419 little memory.
420
421 Xtendend Tiny Encryption Algorithm is a modification to
422 the TEA algorithm to address a potential key weakness
423 in the TEA algorithm.
424
425 Xtendend Encryption Tiny Algorithm is a mis-implementation
426 of the XTEA algorithm for compatibility purposes.
427 437
428config CRYPTO_ARC4 438config CRYPTO_FCRYPT
429 tristate "ARC4 cipher algorithm" 439 tristate "FCrypt cipher algorithm"
430 select CRYPTO_ALGAPI 440 select CRYPTO_ALGAPI
441 select CRYPTO_BLKCIPHER
431 help 442 help
432 ARC4 cipher algorithm. 443 FCrypt algorithm used by RxRPC.
433
434 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
435 bits in length. This algorithm is required for driver-based
436 WEP, but it should not be for other purposes because of the
437 weakness of the algorithm.
438 444
439config CRYPTO_KHAZAD 445config CRYPTO_KHAZAD
440 tristate "Khazad cipher algorithm" 446 tristate "Khazad cipher algorithm"
@@ -449,34 +455,6 @@ config CRYPTO_KHAZAD
449 See also: 455 See also:
450 <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html> 456 <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
451 457
452config CRYPTO_ANUBIS
453 tristate "Anubis cipher algorithm"
454 select CRYPTO_ALGAPI
455 help
456 Anubis cipher algorithm.
457
458 Anubis is a variable key length cipher which can use keys from
459 128 bits to 320 bits in length. It was evaluated as a entrant
460 in the NESSIE competition.
461
462 See also:
463 <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
464 <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
465
466config CRYPTO_SEED
467 tristate "SEED cipher algorithm"
468 select CRYPTO_ALGAPI
469 help
470 SEED cipher algorithm (RFC4269).
471
472 SEED is a 128-bit symmetric key block cipher that has been
473 developed by KISA (Korea Information Security Agency) as a
474 national standard encryption algorithm of the Republic of Korea.
475 It is a 16 round block cipher with the key size of 128 bit.
476
477 See also:
478 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
479
480config CRYPTO_SALSA20 458config CRYPTO_SALSA20
481 tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)" 459 tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
482 depends on EXPERIMENTAL 460 depends on EXPERIMENTAL
@@ -518,69 +496,115 @@ config CRYPTO_SALSA20_X86_64
518 The Salsa20 stream cipher algorithm is designed by Daniel J. 496 The Salsa20 stream cipher algorithm is designed by Daniel J.
519 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html> 497 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
520 498
521config CRYPTO_DEFLATE 499config CRYPTO_SEED
522 tristate "Deflate compression algorithm" 500 tristate "SEED cipher algorithm"
523 select CRYPTO_ALGAPI 501 select CRYPTO_ALGAPI
524 select ZLIB_INFLATE
525 select ZLIB_DEFLATE
526 help 502 help
527 This is the Deflate algorithm (RFC1951), specified for use in 503 SEED cipher algorithm (RFC4269).
528 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
529
530 You will most probably want this if using IPSec.
531 504
532config CRYPTO_MICHAEL_MIC 505 SEED is a 128-bit symmetric key block cipher that has been
533 tristate "Michael MIC keyed digest algorithm" 506 developed by KISA (Korea Information Security Agency) as a
507 national standard encryption algorithm of the Republic of Korea.
508 It is a 16 round block cipher with the key size of 128 bit.
509
510 See also:
511 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
512
513config CRYPTO_SERPENT
514 tristate "Serpent cipher algorithm"
534 select CRYPTO_ALGAPI 515 select CRYPTO_ALGAPI
535 help 516 help
536 Michael MIC is used for message integrity protection in TKIP 517 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
537 (IEEE 802.11i). This algorithm is required for TKIP, but it
538 should not be used for other purposes because of the weakness
539 of the algorithm.
540 518
541config CRYPTO_CRC32C 519 Keys are allowed to be from 0 to 256 bits in length, in steps
542 tristate "CRC32c CRC algorithm" 520 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
521 variant of Serpent for compatibility with old kerneli.org code.
522
523 See also:
524 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
525
526config CRYPTO_TEA
527 tristate "TEA, XTEA and XETA cipher algorithms"
543 select CRYPTO_ALGAPI 528 select CRYPTO_ALGAPI
544 select LIBCRC32C
545 help 529 help
546 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used 530 TEA cipher algorithm.
547 by iSCSI for header and data digests and by others.
548 See Castagnoli93. This implementation uses lib/libcrc32c.
549 Module will be crc32c.
550 531
551config CRYPTO_CAMELLIA 532 Tiny Encryption Algorithm is a simple cipher that uses
552 tristate "Camellia cipher algorithms" 533 many rounds for security. It is very fast and uses
553 depends on CRYPTO 534 little memory.
535
536 Xtendend Tiny Encryption Algorithm is a modification to
537 the TEA algorithm to address a potential key weakness
538 in the TEA algorithm.
539
540 Xtendend Encryption Tiny Algorithm is a mis-implementation
541 of the XTEA algorithm for compatibility purposes.
542
543config CRYPTO_TWOFISH
544 tristate "Twofish cipher algorithm"
554 select CRYPTO_ALGAPI 545 select CRYPTO_ALGAPI
546 select CRYPTO_TWOFISH_COMMON
555 help 547 help
556 Camellia cipher algorithms module. 548 Twofish cipher algorithm.
557 549
558 Camellia is a symmetric key block cipher developed jointly 550 Twofish was submitted as an AES (Advanced Encryption Standard)
559 at NTT and Mitsubishi Electric Corporation. 551 candidate cipher by researchers at CounterPane Systems. It is a
552 16 round block cipher supporting key sizes of 128, 192, and 256
553 bits.
560 554
561 The Camellia specifies three key sizes: 128, 192 and 256 bits. 555 See also:
556 <http://www.schneier.com/twofish.html>
557
558config CRYPTO_TWOFISH_COMMON
559 tristate
560 help
561 Common parts of the Twofish cipher algorithm shared by the
562 generic c and the assembler implementations.
563
564config CRYPTO_TWOFISH_586
565 tristate "Twofish cipher algorithms (i586)"
566 depends on (X86 || UML_X86) && !64BIT
567 select CRYPTO_ALGAPI
568 select CRYPTO_TWOFISH_COMMON
569 help
570 Twofish cipher algorithm.
571
572 Twofish was submitted as an AES (Advanced Encryption Standard)
573 candidate cipher by researchers at CounterPane Systems. It is a
574 16 round block cipher supporting key sizes of 128, 192, and 256
575 bits.
562 576
563 See also: 577 See also:
564 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 578 <http://www.schneier.com/twofish.html>
565 579
566config CRYPTO_TEST 580config CRYPTO_TWOFISH_X86_64
567 tristate "Testing module" 581 tristate "Twofish cipher algorithm (x86_64)"
568 depends on m 582 depends on (X86 || UML_X86) && 64BIT
569 select CRYPTO_ALGAPI 583 select CRYPTO_ALGAPI
570 select CRYPTO_AEAD 584 select CRYPTO_TWOFISH_COMMON
571 select CRYPTO_BLKCIPHER
572 help 585 help
573 Quick & dirty crypto test module. 586 Twofish cipher algorithm (x86_64).
574 587
575config CRYPTO_AUTHENC 588 Twofish was submitted as an AES (Advanced Encryption Standard)
576 tristate "Authenc support" 589 candidate cipher by researchers at CounterPane Systems. It is a
577 select CRYPTO_AEAD 590 16 round block cipher supporting key sizes of 128, 192, and 256
578 select CRYPTO_BLKCIPHER 591 bits.
579 select CRYPTO_MANAGER 592
580 select CRYPTO_HASH 593 See also:
594 <http://www.schneier.com/twofish.html>
595
596comment "Compression"
597
598config CRYPTO_DEFLATE
599 tristate "Deflate compression algorithm"
600 select CRYPTO_ALGAPI
601 select ZLIB_INFLATE
602 select ZLIB_DEFLATE
581 help 603 help
582 Authenc: Combined mode wrapper for IPsec. 604 This is the Deflate algorithm (RFC1951), specified for use in
583 This is required for IPSec. 605 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
606
607 You will most probably want this if using IPSec.
584 608
585config CRYPTO_LZO 609config CRYPTO_LZO
586 tristate "LZO compression algorithm" 610 tristate "LZO compression algorithm"
diff --git a/crypto/Makefile b/crypto/Makefile
index 7cf36253a75e..ca024418f4fb 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -2,7 +2,8 @@
2# Cryptographic API 2# Cryptographic API
3# 3#
4 4
5obj-$(CONFIG_CRYPTO) += api.o cipher.o digest.o compress.o 5obj-$(CONFIG_CRYPTO) += crypto.o
6crypto-objs := api.o cipher.o digest.o compress.o
6 7
7crypto_algapi-$(CONFIG_PROC_FS) += proc.o 8crypto_algapi-$(CONFIG_PROC_FS) += proc.o
8crypto_algapi-objs := algapi.o scatterwalk.o $(crypto_algapi-y) 9crypto_algapi-objs := algapi.o scatterwalk.o $(crypto_algapi-y)
@@ -28,13 +29,14 @@ obj-$(CONFIG_CRYPTO_MD4) += md4.o
28obj-$(CONFIG_CRYPTO_MD5) += md5.o 29obj-$(CONFIG_CRYPTO_MD5) += md5.o
29obj-$(CONFIG_CRYPTO_SHA1) += sha1_generic.o 30obj-$(CONFIG_CRYPTO_SHA1) += sha1_generic.o
30obj-$(CONFIG_CRYPTO_SHA256) += sha256_generic.o 31obj-$(CONFIG_CRYPTO_SHA256) += sha256_generic.o
31obj-$(CONFIG_CRYPTO_SHA512) += sha512.o 32obj-$(CONFIG_CRYPTO_SHA512) += sha512_generic.o
32obj-$(CONFIG_CRYPTO_WP512) += wp512.o 33obj-$(CONFIG_CRYPTO_WP512) += wp512.o
33obj-$(CONFIG_CRYPTO_TGR192) += tgr192.o 34obj-$(CONFIG_CRYPTO_TGR192) += tgr192.o
34obj-$(CONFIG_CRYPTO_GF128MUL) += gf128mul.o 35obj-$(CONFIG_CRYPTO_GF128MUL) += gf128mul.o
35obj-$(CONFIG_CRYPTO_ECB) += ecb.o 36obj-$(CONFIG_CRYPTO_ECB) += ecb.o
36obj-$(CONFIG_CRYPTO_CBC) += cbc.o 37obj-$(CONFIG_CRYPTO_CBC) += cbc.o
37obj-$(CONFIG_CRYPTO_PCBC) += pcbc.o 38obj-$(CONFIG_CRYPTO_PCBC) += pcbc.o
39obj-$(CONFIG_CRYPTO_CTS) += cts.o
38obj-$(CONFIG_CRYPTO_LRW) += lrw.o 40obj-$(CONFIG_CRYPTO_LRW) += lrw.o
39obj-$(CONFIG_CRYPTO_XTS) += xts.o 41obj-$(CONFIG_CRYPTO_XTS) += xts.o
40obj-$(CONFIG_CRYPTO_CTR) += ctr.o 42obj-$(CONFIG_CRYPTO_CTR) += ctr.o
diff --git a/crypto/aes_generic.c b/crypto/aes_generic.c
index cf30af74480f..136dc98d8a03 100644
--- a/crypto/aes_generic.c
+++ b/crypto/aes_generic.c
@@ -229,18 +229,29 @@ static void __init gen_tabs(void)
229 ctx->key_enc[8 * i + 15] = t; \ 229 ctx->key_enc[8 * i + 15] = t; \
230} while (0) 230} while (0)
231 231
232int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key, 232/**
233 * crypto_aes_expand_key - Expands the AES key as described in FIPS-197
234 * @ctx: The location where the computed key will be stored.
235 * @in_key: The supplied key.
236 * @key_len: The length of the supplied key.
237 *
238 * Returns 0 on success. The function fails only if an invalid key size (or
239 * pointer) is supplied.
240 * The expanded key size is 240 bytes (max of 14 rounds with a unique 16 bytes
241 * key schedule plus a 16 bytes key which is used before the first round).
242 * The decryption key is prepared for the "Equivalent Inverse Cipher" as
243 * described in FIPS-197. The first slot (16 bytes) of each key (enc or dec) is
244 * for the initial combination, the second slot for the first round and so on.
245 */
246int crypto_aes_expand_key(struct crypto_aes_ctx *ctx, const u8 *in_key,
233 unsigned int key_len) 247 unsigned int key_len)
234{ 248{
235 struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm);
236 const __le32 *key = (const __le32 *)in_key; 249 const __le32 *key = (const __le32 *)in_key;
237 u32 *flags = &tfm->crt_flags;
238 u32 i, t, u, v, w, j; 250 u32 i, t, u, v, w, j;
239 251
240 if (key_len % 8) { 252 if (key_len != AES_KEYSIZE_128 && key_len != AES_KEYSIZE_192 &&
241 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN; 253 key_len != AES_KEYSIZE_256)
242 return -EINVAL; 254 return -EINVAL;
243 }
244 255
245 ctx->key_length = key_len; 256 ctx->key_length = key_len;
246 257
@@ -250,20 +261,20 @@ int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
250 ctx->key_dec[key_len + 27] = ctx->key_enc[3] = le32_to_cpu(key[3]); 261 ctx->key_dec[key_len + 27] = ctx->key_enc[3] = le32_to_cpu(key[3]);
251 262
252 switch (key_len) { 263 switch (key_len) {
253 case 16: 264 case AES_KEYSIZE_128:
254 t = ctx->key_enc[3]; 265 t = ctx->key_enc[3];
255 for (i = 0; i < 10; ++i) 266 for (i = 0; i < 10; ++i)
256 loop4(i); 267 loop4(i);
257 break; 268 break;
258 269
259 case 24: 270 case AES_KEYSIZE_192:
260 ctx->key_enc[4] = le32_to_cpu(key[4]); 271 ctx->key_enc[4] = le32_to_cpu(key[4]);
261 t = ctx->key_enc[5] = le32_to_cpu(key[5]); 272 t = ctx->key_enc[5] = le32_to_cpu(key[5]);
262 for (i = 0; i < 8; ++i) 273 for (i = 0; i < 8; ++i)
263 loop6(i); 274 loop6(i);
264 break; 275 break;
265 276
266 case 32: 277 case AES_KEYSIZE_256:
267 ctx->key_enc[4] = le32_to_cpu(key[4]); 278 ctx->key_enc[4] = le32_to_cpu(key[4]);
268 ctx->key_enc[5] = le32_to_cpu(key[5]); 279 ctx->key_enc[5] = le32_to_cpu(key[5]);
269 ctx->key_enc[6] = le32_to_cpu(key[6]); 280 ctx->key_enc[6] = le32_to_cpu(key[6]);
@@ -284,6 +295,33 @@ int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
284 } 295 }
285 return 0; 296 return 0;
286} 297}
298EXPORT_SYMBOL_GPL(crypto_aes_expand_key);
299
300/**
301 * crypto_aes_set_key - Set the AES key.
302 * @tfm: The %crypto_tfm that is used in the context.
303 * @in_key: The input key.
304 * @key_len: The size of the key.
305 *
306 * Returns 0 on success, on failure the %CRYPTO_TFM_RES_BAD_KEY_LEN flag in tfm
307 * is set. The function uses crypto_aes_expand_key() to expand the key.
308 * &crypto_aes_ctx _must_ be the private data embedded in @tfm which is
309 * retrieved with crypto_tfm_ctx().
310 */
311int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
312 unsigned int key_len)
313{
314 struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm);
315 u32 *flags = &tfm->crt_flags;
316 int ret;
317
318 ret = crypto_aes_expand_key(ctx, in_key, key_len);
319 if (!ret)
320 return 0;
321
322 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
323 return -EINVAL;
324}
287EXPORT_SYMBOL_GPL(crypto_aes_set_key); 325EXPORT_SYMBOL_GPL(crypto_aes_set_key);
288 326
289/* encrypt a block of text */ 327/* encrypt a block of text */
diff --git a/crypto/anubis.c b/crypto/anubis.c
index 4ff0e1e243ad..e42c3a8ba4aa 100644
--- a/crypto/anubis.c
+++ b/crypto/anubis.c
@@ -687,7 +687,7 @@ static struct crypto_alg anubis_alg = {
687 .cia_decrypt = anubis_decrypt } } 687 .cia_decrypt = anubis_decrypt } }
688}; 688};
689 689
690static int __init init(void) 690static int __init anubis_mod_init(void)
691{ 691{
692 int ret = 0; 692 int ret = 0;
693 693
@@ -695,13 +695,13 @@ static int __init init(void)
695 return ret; 695 return ret;
696} 696}
697 697
698static void __exit fini(void) 698static void __exit anubis_mod_fini(void)
699{ 699{
700 crypto_unregister_alg(&anubis_alg); 700 crypto_unregister_alg(&anubis_alg);
701} 701}
702 702
703module_init(init); 703module_init(anubis_mod_init);
704module_exit(fini); 704module_exit(anubis_mod_fini);
705 705
706MODULE_LICENSE("GPL"); 706MODULE_LICENSE("GPL");
707MODULE_DESCRIPTION("Anubis Cryptographic Algorithm"); 707MODULE_DESCRIPTION("Anubis Cryptographic Algorithm");
diff --git a/crypto/api.c b/crypto/api.c
index a2496d1bc6d4..0a0f41ef255f 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -445,3 +445,6 @@ int crypto_has_alg(const char *name, u32 type, u32 mask)
445 return ret; 445 return ret;
446} 446}
447EXPORT_SYMBOL_GPL(crypto_has_alg); 447EXPORT_SYMBOL_GPL(crypto_has_alg);
448
449MODULE_DESCRIPTION("Cryptographic core API");
450MODULE_LICENSE("GPL");
diff --git a/crypto/blowfish.c b/crypto/blowfish.c
index 80c3fd8be97c..6f5b48731922 100644
--- a/crypto/blowfish.c
+++ b/crypto/blowfish.c
@@ -465,18 +465,18 @@ static struct crypto_alg alg = {
465 .cia_decrypt = bf_decrypt } } 465 .cia_decrypt = bf_decrypt } }
466}; 466};
467 467
468static int __init init(void) 468static int __init blowfish_mod_init(void)
469{ 469{
470 return crypto_register_alg(&alg); 470 return crypto_register_alg(&alg);
471} 471}
472 472
473static void __exit fini(void) 473static void __exit blowfish_mod_fini(void)
474{ 474{
475 crypto_unregister_alg(&alg); 475 crypto_unregister_alg(&alg);
476} 476}
477 477
478module_init(init); 478module_init(blowfish_mod_init);
479module_exit(fini); 479module_exit(blowfish_mod_fini);
480 480
481MODULE_LICENSE("GPL"); 481MODULE_LICENSE("GPL");
482MODULE_DESCRIPTION("Blowfish Cipher Algorithm"); 482MODULE_DESCRIPTION("Blowfish Cipher Algorithm");
diff --git a/crypto/cast5.c b/crypto/cast5.c
index 13ea60abc19a..8cbe28fa0e0c 100644
--- a/crypto/cast5.c
+++ b/crypto/cast5.c
@@ -817,18 +817,18 @@ static struct crypto_alg alg = {
817 } 817 }
818}; 818};
819 819
820static int __init init(void) 820static int __init cast5_mod_init(void)
821{ 821{
822 return crypto_register_alg(&alg); 822 return crypto_register_alg(&alg);
823} 823}
824 824
825static void __exit fini(void) 825static void __exit cast5_mod_fini(void)
826{ 826{
827 crypto_unregister_alg(&alg); 827 crypto_unregister_alg(&alg);
828} 828}
829 829
830module_init(init); 830module_init(cast5_mod_init);
831module_exit(fini); 831module_exit(cast5_mod_fini);
832 832
833MODULE_LICENSE("GPL"); 833MODULE_LICENSE("GPL");
834MODULE_DESCRIPTION("Cast5 Cipher Algorithm"); 834MODULE_DESCRIPTION("Cast5 Cipher Algorithm");
diff --git a/crypto/cast6.c b/crypto/cast6.c
index 5fd9420dc58e..007d02beed67 100644
--- a/crypto/cast6.c
+++ b/crypto/cast6.c
@@ -528,18 +528,18 @@ static struct crypto_alg alg = {
528 } 528 }
529}; 529};
530 530
531static int __init init(void) 531static int __init cast6_mod_init(void)
532{ 532{
533 return crypto_register_alg(&alg); 533 return crypto_register_alg(&alg);
534} 534}
535 535
536static void __exit fini(void) 536static void __exit cast6_mod_fini(void)
537{ 537{
538 crypto_unregister_alg(&alg); 538 crypto_unregister_alg(&alg);
539} 539}
540 540
541module_init(init); 541module_init(cast6_mod_init);
542module_exit(fini); 542module_exit(cast6_mod_fini);
543 543
544MODULE_LICENSE("GPL"); 544MODULE_LICENSE("GPL");
545MODULE_DESCRIPTION("Cast6 Cipher Algorithm"); 545MODULE_DESCRIPTION("Cast6 Cipher Algorithm");
diff --git a/crypto/crc32c.c b/crypto/crc32c.c
index 0fa744392a4c..0dcf64a74e68 100644
--- a/crypto/crc32c.c
+++ b/crypto/crc32c.c
@@ -98,18 +98,18 @@ static struct crypto_alg alg = {
98 } 98 }
99}; 99};
100 100
101static int __init init(void) 101static int __init crc32c_mod_init(void)
102{ 102{
103 return crypto_register_alg(&alg); 103 return crypto_register_alg(&alg);
104} 104}
105 105
106static void __exit fini(void) 106static void __exit crc32c_mod_fini(void)
107{ 107{
108 crypto_unregister_alg(&alg); 108 crypto_unregister_alg(&alg);
109} 109}
110 110
111module_init(init); 111module_init(crc32c_mod_init);
112module_exit(fini); 112module_exit(crc32c_mod_fini);
113 113
114MODULE_AUTHOR("Clay Haapala <chaapala@cisco.com>"); 114MODULE_AUTHOR("Clay Haapala <chaapala@cisco.com>");
115MODULE_DESCRIPTION("CRC32c (Castagnoli) calculations wrapper for lib/crc32c"); 115MODULE_DESCRIPTION("CRC32c (Castagnoli) calculations wrapper for lib/crc32c");
diff --git a/crypto/crypto_null.c b/crypto/crypto_null.c
index ff7b3de1bcfd..1f7d53013a22 100644
--- a/crypto/crypto_null.c
+++ b/crypto/crypto_null.c
@@ -142,7 +142,7 @@ MODULE_ALIAS("compress_null");
142MODULE_ALIAS("digest_null"); 142MODULE_ALIAS("digest_null");
143MODULE_ALIAS("cipher_null"); 143MODULE_ALIAS("cipher_null");
144 144
145static int __init init(void) 145static int __init crypto_null_mod_init(void)
146{ 146{
147 int ret = 0; 147 int ret = 0;
148 148
@@ -174,7 +174,7 @@ out_unregister_cipher:
174 goto out; 174 goto out;
175} 175}
176 176
177static void __exit fini(void) 177static void __exit crypto_null_mod_fini(void)
178{ 178{
179 crypto_unregister_alg(&compress_null); 179 crypto_unregister_alg(&compress_null);
180 crypto_unregister_alg(&digest_null); 180 crypto_unregister_alg(&digest_null);
@@ -182,8 +182,8 @@ static void __exit fini(void)
182 crypto_unregister_alg(&cipher_null); 182 crypto_unregister_alg(&cipher_null);
183} 183}
184 184
185module_init(init); 185module_init(crypto_null_mod_init);
186module_exit(fini); 186module_exit(crypto_null_mod_fini);
187 187
188MODULE_LICENSE("GPL"); 188MODULE_LICENSE("GPL");
189MODULE_DESCRIPTION("Null Cryptographic Algorithms"); 189MODULE_DESCRIPTION("Null Cryptographic Algorithms");
diff --git a/crypto/cts.c b/crypto/cts.c
new file mode 100644
index 000000000000..c4e70bfb4970
--- /dev/null
+++ b/crypto/cts.c
@@ -0,0 +1,347 @@
1/*
2 * CTS: Cipher Text Stealing mode
3 *
4 * COPYRIGHT (c) 2008
5 * The Regents of the University of Michigan
6 * ALL RIGHTS RESERVED
7 *
8 * Permission is granted to use, copy, create derivative works
9 * and redistribute this software and such derivative works
10 * for any purpose, so long as the name of The University of
11 * Michigan is not used in any advertising or publicity
12 * pertaining to the use of distribution of this software
13 * without specific, written prior authorization. If the
14 * above copyright notice or any other identification of the
15 * University of Michigan is included in any copy of any
16 * portion of this software, then the disclaimer below must
17 * also be included.
18 *
19 * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION
20 * FROM THE UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY
21 * PURPOSE, AND WITHOUT WARRANTY BY THE UNIVERSITY OF
22 * MICHIGAN OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
23 * WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
24 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
25 * REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE
26 * FOR ANY DAMAGES, INCLUDING SPECIAL, INDIRECT, INCIDENTAL, OR
27 * CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM ARISING
28 * OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN
29 * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGES.
31 */
32
33/* Derived from various:
34 * Copyright (c) 2006 Herbert Xu <herbert@gondor.apana.org.au>
35 */
36
37/*
38 * This is the Cipher Text Stealing mode as described by
39 * Section 8 of rfc2040 and referenced by rfc3962.
40 * rfc3962 includes errata information in its Appendix A.
41 */
42
43#include <crypto/algapi.h>
44#include <linux/err.h>
45#include <linux/init.h>
46#include <linux/kernel.h>
47#include <linux/log2.h>
48#include <linux/module.h>
49#include <linux/scatterlist.h>
50#include <crypto/scatterwalk.h>
51#include <linux/slab.h>
52
53struct crypto_cts_ctx {
54 struct crypto_blkcipher *child;
55};
56
57static int crypto_cts_setkey(struct crypto_tfm *parent, const u8 *key,
58 unsigned int keylen)
59{
60 struct crypto_cts_ctx *ctx = crypto_tfm_ctx(parent);
61 struct crypto_blkcipher *child = ctx->child;
62 int err;
63
64 crypto_blkcipher_clear_flags(child, CRYPTO_TFM_REQ_MASK);
65 crypto_blkcipher_set_flags(child, crypto_tfm_get_flags(parent) &
66 CRYPTO_TFM_REQ_MASK);
67 err = crypto_blkcipher_setkey(child, key, keylen);
68 crypto_tfm_set_flags(parent, crypto_blkcipher_get_flags(child) &
69 CRYPTO_TFM_RES_MASK);
70 return err;
71}
72
73static int cts_cbc_encrypt(struct crypto_cts_ctx *ctx,
74 struct blkcipher_desc *desc,
75 struct scatterlist *dst,
76 struct scatterlist *src,
77 unsigned int offset,
78 unsigned int nbytes)
79{
80 int bsize = crypto_blkcipher_blocksize(desc->tfm);
81 u8 tmp[bsize], tmp2[bsize];
82 struct blkcipher_desc lcldesc;
83 struct scatterlist sgsrc[1], sgdst[1];
84 int lastn = nbytes - bsize;
85 u8 iv[bsize];
86 u8 s[bsize * 2], d[bsize * 2];
87 int err;
88
89 if (lastn < 0)
90 return -EINVAL;
91
92 memset(s, 0, sizeof(s));
93 scatterwalk_map_and_copy(s, src, offset, nbytes, 0);
94
95 memcpy(iv, desc->info, bsize);
96
97 lcldesc.tfm = ctx->child;
98 lcldesc.info = iv;
99 lcldesc.flags = desc->flags;
100
101 sg_set_buf(&sgsrc[0], s, bsize);
102 sg_set_buf(&sgdst[0], tmp, bsize);
103 err = crypto_blkcipher_encrypt_iv(&lcldesc, sgdst, sgsrc, bsize);
104
105 memcpy(d + bsize, tmp, lastn);
106
107 lcldesc.info = tmp;
108
109 sg_set_buf(&sgsrc[0], s + bsize, bsize);
110 sg_set_buf(&sgdst[0], tmp2, bsize);
111 err = crypto_blkcipher_encrypt_iv(&lcldesc, sgdst, sgsrc, bsize);
112
113 memcpy(d, tmp2, bsize);
114
115 scatterwalk_map_and_copy(d, dst, offset, nbytes, 1);
116
117 memcpy(desc->info, tmp2, bsize);
118
119 return err;
120}
121
122static int crypto_cts_encrypt(struct blkcipher_desc *desc,
123 struct scatterlist *dst, struct scatterlist *src,
124 unsigned int nbytes)
125{
126 struct crypto_cts_ctx *ctx = crypto_blkcipher_ctx(desc->tfm);
127 int bsize = crypto_blkcipher_blocksize(desc->tfm);
128 int tot_blocks = (nbytes + bsize - 1) / bsize;
129 int cbc_blocks = tot_blocks > 2 ? tot_blocks - 2 : 0;
130 struct blkcipher_desc lcldesc;
131 int err;
132
133 lcldesc.tfm = ctx->child;
134 lcldesc.info = desc->info;
135 lcldesc.flags = desc->flags;
136
137 if (tot_blocks == 1) {
138 err = crypto_blkcipher_encrypt_iv(&lcldesc, dst, src, bsize);
139 } else if (nbytes <= bsize * 2) {
140 err = cts_cbc_encrypt(ctx, desc, dst, src, 0, nbytes);
141 } else {
142 /* do normal function for tot_blocks - 2 */
143 err = crypto_blkcipher_encrypt_iv(&lcldesc, dst, src,
144 cbc_blocks * bsize);
145 if (err == 0) {
146 /* do cts for final two blocks */
147 err = cts_cbc_encrypt(ctx, desc, dst, src,
148 cbc_blocks * bsize,
149 nbytes - (cbc_blocks * bsize));
150 }
151 }
152
153 return err;
154}
155
156static int cts_cbc_decrypt(struct crypto_cts_ctx *ctx,
157 struct blkcipher_desc *desc,
158 struct scatterlist *dst,
159 struct scatterlist *src,
160 unsigned int offset,
161 unsigned int nbytes)
162{
163 int bsize = crypto_blkcipher_blocksize(desc->tfm);
164 u8 tmp[bsize];
165 struct blkcipher_desc lcldesc;
166 struct scatterlist sgsrc[1], sgdst[1];
167 int lastn = nbytes - bsize;
168 u8 iv[bsize];
169 u8 s[bsize * 2], d[bsize * 2];
170 int err;
171
172 if (lastn < 0)
173 return -EINVAL;
174
175 scatterwalk_map_and_copy(s, src, offset, nbytes, 0);
176
177 lcldesc.tfm = ctx->child;
178 lcldesc.info = iv;
179 lcldesc.flags = desc->flags;
180
181 /* 1. Decrypt Cn-1 (s) to create Dn (tmp)*/
182 memset(iv, 0, sizeof(iv));
183 sg_set_buf(&sgsrc[0], s, bsize);
184 sg_set_buf(&sgdst[0], tmp, bsize);
185 err = crypto_blkcipher_decrypt_iv(&lcldesc, sgdst, sgsrc, bsize);
186 if (err)
187 return err;
188 /* 2. Pad Cn with zeros at the end to create C of length BB */
189 memset(iv, 0, sizeof(iv));
190 memcpy(iv, s + bsize, lastn);
191 /* 3. Exclusive-or Dn (tmp) with C (iv) to create Xn (tmp) */
192 crypto_xor(tmp, iv, bsize);
193 /* 4. Select the first Ln bytes of Xn (tmp) to create Pn */
194 memcpy(d + bsize, tmp, lastn);
195
196 /* 5. Append the tail (BB - Ln) bytes of Xn (tmp) to Cn to create En */
197 memcpy(s + bsize + lastn, tmp + lastn, bsize - lastn);
198 /* 6. Decrypt En to create Pn-1 */
199 memset(iv, 0, sizeof(iv));
200 sg_set_buf(&sgsrc[0], s + bsize, bsize);
201 sg_set_buf(&sgdst[0], d, bsize);
202 err = crypto_blkcipher_decrypt_iv(&lcldesc, sgdst, sgsrc, bsize);
203
204 /* XOR with previous block */
205 crypto_xor(d, desc->info, bsize);
206
207 scatterwalk_map_and_copy(d, dst, offset, nbytes, 1);
208
209 memcpy(desc->info, s, bsize);
210 return err;
211}
212
213static int crypto_cts_decrypt(struct blkcipher_desc *desc,
214 struct scatterlist *dst, struct scatterlist *src,
215 unsigned int nbytes)
216{
217 struct crypto_cts_ctx *ctx = crypto_blkcipher_ctx(desc->tfm);
218 int bsize = crypto_blkcipher_blocksize(desc->tfm);
219 int tot_blocks = (nbytes + bsize - 1) / bsize;
220 int cbc_blocks = tot_blocks > 2 ? tot_blocks - 2 : 0;
221 struct blkcipher_desc lcldesc;
222 int err;
223
224 lcldesc.tfm = ctx->child;
225 lcldesc.info = desc->info;
226 lcldesc.flags = desc->flags;
227
228 if (tot_blocks == 1) {
229 err = crypto_blkcipher_decrypt_iv(&lcldesc, dst, src, bsize);
230 } else if (nbytes <= bsize * 2) {
231 err = cts_cbc_decrypt(ctx, desc, dst, src, 0, nbytes);
232 } else {
233 /* do normal function for tot_blocks - 2 */
234 err = crypto_blkcipher_decrypt_iv(&lcldesc, dst, src,
235 cbc_blocks * bsize);
236 if (err == 0) {
237 /* do cts for final two blocks */
238 err = cts_cbc_decrypt(ctx, desc, dst, src,
239 cbc_blocks * bsize,
240 nbytes - (cbc_blocks * bsize));
241 }
242 }
243 return err;
244}
245
246static int crypto_cts_init_tfm(struct crypto_tfm *tfm)
247{
248 struct crypto_instance *inst = (void *)tfm->__crt_alg;
249 struct crypto_spawn *spawn = crypto_instance_ctx(inst);
250 struct crypto_cts_ctx *ctx = crypto_tfm_ctx(tfm);
251 struct crypto_blkcipher *cipher;
252
253 cipher = crypto_spawn_blkcipher(spawn);
254 if (IS_ERR(cipher))
255 return PTR_ERR(cipher);
256
257 ctx->child = cipher;
258 return 0;
259}
260
261static void crypto_cts_exit_tfm(struct crypto_tfm *tfm)
262{
263 struct crypto_cts_ctx *ctx = crypto_tfm_ctx(tfm);
264 crypto_free_blkcipher(ctx->child);
265}
266
267static struct crypto_instance *crypto_cts_alloc(struct rtattr **tb)
268{
269 struct crypto_instance *inst;
270 struct crypto_alg *alg;
271 int err;
272
273 err = crypto_check_attr_type(tb, CRYPTO_ALG_TYPE_BLKCIPHER);
274 if (err)
275 return ERR_PTR(err);
276
277 alg = crypto_attr_alg(tb[1], CRYPTO_ALG_TYPE_BLKCIPHER,
278 CRYPTO_ALG_TYPE_MASK);
279 err = PTR_ERR(alg);
280 if (IS_ERR(alg))
281 return ERR_PTR(err);
282
283 inst = ERR_PTR(-EINVAL);
284 if (!is_power_of_2(alg->cra_blocksize))
285 goto out_put_alg;
286
287 inst = crypto_alloc_instance("cts", alg);
288 if (IS_ERR(inst))
289 goto out_put_alg;
290
291 inst->alg.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER;
292 inst->alg.cra_priority = alg->cra_priority;
293 inst->alg.cra_blocksize = alg->cra_blocksize;
294 inst->alg.cra_alignmask = alg->cra_alignmask;
295 inst->alg.cra_type = &crypto_blkcipher_type;
296
297 /* We access the data as u32s when xoring. */
298 inst->alg.cra_alignmask |= __alignof__(u32) - 1;
299
300 inst->alg.cra_blkcipher.ivsize = alg->cra_blocksize;
301 inst->alg.cra_blkcipher.min_keysize = alg->cra_blkcipher.min_keysize;
302 inst->alg.cra_blkcipher.max_keysize = alg->cra_blkcipher.max_keysize;
303
304 inst->alg.cra_blkcipher.geniv = "seqiv";
305
306 inst->alg.cra_ctxsize = sizeof(struct crypto_cts_ctx);
307
308 inst->alg.cra_init = crypto_cts_init_tfm;
309 inst->alg.cra_exit = crypto_cts_exit_tfm;
310
311 inst->alg.cra_blkcipher.setkey = crypto_cts_setkey;
312 inst->alg.cra_blkcipher.encrypt = crypto_cts_encrypt;
313 inst->alg.cra_blkcipher.decrypt = crypto_cts_decrypt;
314
315out_put_alg:
316 crypto_mod_put(alg);
317 return inst;
318}
319
320static void crypto_cts_free(struct crypto_instance *inst)
321{
322 crypto_drop_spawn(crypto_instance_ctx(inst));
323 kfree(inst);
324}
325
326static struct crypto_template crypto_cts_tmpl = {
327 .name = "cts",
328 .alloc = crypto_cts_alloc,
329 .free = crypto_cts_free,
330 .module = THIS_MODULE,
331};
332
333static int __init crypto_cts_module_init(void)
334{
335 return crypto_register_template(&crypto_cts_tmpl);
336}
337
338static void __exit crypto_cts_module_exit(void)
339{
340 crypto_unregister_template(&crypto_cts_tmpl);
341}
342
343module_init(crypto_cts_module_init);
344module_exit(crypto_cts_module_exit);
345
346MODULE_LICENSE("Dual BSD/GPL");
347MODULE_DESCRIPTION("CTS-CBC CipherText Stealing for CBC");
diff --git a/crypto/deflate.c b/crypto/deflate.c
index 6588bbf82e9b..9128da44e953 100644
--- a/crypto/deflate.c
+++ b/crypto/deflate.c
@@ -208,18 +208,18 @@ static struct crypto_alg alg = {
208 .coa_decompress = deflate_decompress } } 208 .coa_decompress = deflate_decompress } }
209}; 209};
210 210
211static int __init init(void) 211static int __init deflate_mod_init(void)
212{ 212{
213 return crypto_register_alg(&alg); 213 return crypto_register_alg(&alg);
214} 214}
215 215
216static void __exit fini(void) 216static void __exit deflate_mod_fini(void)
217{ 217{
218 crypto_unregister_alg(&alg); 218 crypto_unregister_alg(&alg);
219} 219}
220 220
221module_init(init); 221module_init(deflate_mod_init);
222module_exit(fini); 222module_exit(deflate_mod_fini);
223 223
224MODULE_LICENSE("GPL"); 224MODULE_LICENSE("GPL");
225MODULE_DESCRIPTION("Deflate Compression Algorithm for IPCOMP"); 225MODULE_DESCRIPTION("Deflate Compression Algorithm for IPCOMP");
diff --git a/crypto/des_generic.c b/crypto/des_generic.c
index 355ecb71cb0d..5d0e4580f998 100644
--- a/crypto/des_generic.c
+++ b/crypto/des_generic.c
@@ -977,7 +977,7 @@ static struct crypto_alg des3_ede_alg = {
977 977
978MODULE_ALIAS("des3_ede"); 978MODULE_ALIAS("des3_ede");
979 979
980static int __init init(void) 980static int __init des_generic_mod_init(void)
981{ 981{
982 int ret = 0; 982 int ret = 0;
983 983
@@ -992,14 +992,14 @@ out:
992 return ret; 992 return ret;
993} 993}
994 994
995static void __exit fini(void) 995static void __exit des_generic_mod_fini(void)
996{ 996{
997 crypto_unregister_alg(&des3_ede_alg); 997 crypto_unregister_alg(&des3_ede_alg);
998 crypto_unregister_alg(&des_alg); 998 crypto_unregister_alg(&des_alg);
999} 999}
1000 1000
1001module_init(init); 1001module_init(des_generic_mod_init);
1002module_exit(fini); 1002module_exit(des_generic_mod_fini);
1003 1003
1004MODULE_LICENSE("GPL"); 1004MODULE_LICENSE("GPL");
1005MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms"); 1005MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms");
diff --git a/crypto/fcrypt.c b/crypto/fcrypt.c
index a32cb68bbc60..1302f4cae337 100644
--- a/crypto/fcrypt.c
+++ b/crypto/fcrypt.c
@@ -405,18 +405,18 @@ static struct crypto_alg fcrypt_alg = {
405 .cia_decrypt = fcrypt_decrypt } } 405 .cia_decrypt = fcrypt_decrypt } }
406}; 406};
407 407
408static int __init init(void) 408static int __init fcrypt_mod_init(void)
409{ 409{
410 return crypto_register_alg(&fcrypt_alg); 410 return crypto_register_alg(&fcrypt_alg);
411} 411}
412 412
413static void __exit fini(void) 413static void __exit fcrypt_mod_fini(void)
414{ 414{
415 crypto_unregister_alg(&fcrypt_alg); 415 crypto_unregister_alg(&fcrypt_alg);
416} 416}
417 417
418module_init(init); 418module_init(fcrypt_mod_init);
419module_exit(fini); 419module_exit(fcrypt_mod_fini);
420 420
421MODULE_LICENSE("Dual BSD/GPL"); 421MODULE_LICENSE("Dual BSD/GPL");
422MODULE_DESCRIPTION("FCrypt Cipher Algorithm"); 422MODULE_DESCRIPTION("FCrypt Cipher Algorithm");
diff --git a/crypto/khazad.c b/crypto/khazad.c
index 704ebfe26b55..527e4e395fc3 100644
--- a/crypto/khazad.c
+++ b/crypto/khazad.c
@@ -862,7 +862,7 @@ static struct crypto_alg khazad_alg = {
862 .cia_decrypt = khazad_decrypt } } 862 .cia_decrypt = khazad_decrypt } }
863}; 863};
864 864
865static int __init init(void) 865static int __init khazad_mod_init(void)
866{ 866{
867 int ret = 0; 867 int ret = 0;
868 868
@@ -870,14 +870,14 @@ static int __init init(void)
870 return ret; 870 return ret;
871} 871}
872 872
873static void __exit fini(void) 873static void __exit khazad_mod_fini(void)
874{ 874{
875 crypto_unregister_alg(&khazad_alg); 875 crypto_unregister_alg(&khazad_alg);
876} 876}
877 877
878 878
879module_init(init); 879module_init(khazad_mod_init);
880module_exit(fini); 880module_exit(khazad_mod_fini);
881 881
882MODULE_LICENSE("GPL"); 882MODULE_LICENSE("GPL");
883MODULE_DESCRIPTION("Khazad Cryptographic Algorithm"); 883MODULE_DESCRIPTION("Khazad Cryptographic Algorithm");
diff --git a/crypto/lrw.c b/crypto/lrw.c
index 9d52e580d10a..8ef664e3bcd9 100644
--- a/crypto/lrw.c
+++ b/crypto/lrw.c
@@ -91,8 +91,9 @@ struct sinfo {
91 91
92static inline void inc(be128 *iv) 92static inline void inc(be128 *iv)
93{ 93{
94 if (!(iv->b = cpu_to_be64(be64_to_cpu(iv->b) + 1))) 94 be64_add_cpu(&iv->b, 1);
95 iv->a = cpu_to_be64(be64_to_cpu(iv->a) + 1); 95 if (!iv->b)
96 be64_add_cpu(&iv->a, 1);
96} 97}
97 98
98static inline void lrw_round(struct sinfo *s, void *dst, const void *src) 99static inline void lrw_round(struct sinfo *s, void *dst, const void *src)
diff --git a/crypto/lzo.c b/crypto/lzo.c
index 48c32883f024..b5e77077d751 100644
--- a/crypto/lzo.c
+++ b/crypto/lzo.c
@@ -89,18 +89,18 @@ static struct crypto_alg alg = {
89 .coa_decompress = lzo_decompress } } 89 .coa_decompress = lzo_decompress } }
90}; 90};
91 91
92static int __init init(void) 92static int __init lzo_mod_init(void)
93{ 93{
94 return crypto_register_alg(&alg); 94 return crypto_register_alg(&alg);
95} 95}
96 96
97static void __exit fini(void) 97static void __exit lzo_mod_fini(void)
98{ 98{
99 crypto_unregister_alg(&alg); 99 crypto_unregister_alg(&alg);
100} 100}
101 101
102module_init(init); 102module_init(lzo_mod_init);
103module_exit(fini); 103module_exit(lzo_mod_fini);
104 104
105MODULE_LICENSE("GPL"); 105MODULE_LICENSE("GPL");
106MODULE_DESCRIPTION("LZO Compression Algorithm"); 106MODULE_DESCRIPTION("LZO Compression Algorithm");
diff --git a/crypto/md4.c b/crypto/md4.c
index c1bc71bdc16b..3c19aa0750fd 100644
--- a/crypto/md4.c
+++ b/crypto/md4.c
@@ -233,18 +233,18 @@ static struct crypto_alg alg = {
233 .dia_final = md4_final } } 233 .dia_final = md4_final } }
234}; 234};
235 235
236static int __init init(void) 236static int __init md4_mod_init(void)
237{ 237{
238 return crypto_register_alg(&alg); 238 return crypto_register_alg(&alg);
239} 239}
240 240
241static void __exit fini(void) 241static void __exit md4_mod_fini(void)
242{ 242{
243 crypto_unregister_alg(&alg); 243 crypto_unregister_alg(&alg);
244} 244}
245 245
246module_init(init); 246module_init(md4_mod_init);
247module_exit(fini); 247module_exit(md4_mod_fini);
248 248
249MODULE_LICENSE("GPL"); 249MODULE_LICENSE("GPL");
250MODULE_DESCRIPTION("MD4 Message Digest Algorithm"); 250MODULE_DESCRIPTION("MD4 Message Digest Algorithm");
diff --git a/crypto/md5.c b/crypto/md5.c
index 93d18e8b3d53..39268f3d2f1d 100644
--- a/crypto/md5.c
+++ b/crypto/md5.c
@@ -228,18 +228,18 @@ static struct crypto_alg alg = {
228 .dia_final = md5_final } } 228 .dia_final = md5_final } }
229}; 229};
230 230
231static int __init init(void) 231static int __init md5_mod_init(void)
232{ 232{
233 return crypto_register_alg(&alg); 233 return crypto_register_alg(&alg);
234} 234}
235 235
236static void __exit fini(void) 236static void __exit md5_mod_fini(void)
237{ 237{
238 crypto_unregister_alg(&alg); 238 crypto_unregister_alg(&alg);
239} 239}
240 240
241module_init(init); 241module_init(md5_mod_init);
242module_exit(fini); 242module_exit(md5_mod_fini);
243 243
244MODULE_LICENSE("GPL"); 244MODULE_LICENSE("GPL");
245MODULE_DESCRIPTION("MD5 Message Digest Algorithm"); 245MODULE_DESCRIPTION("MD5 Message Digest Algorithm");
diff --git a/crypto/proc.c b/crypto/proc.c
index 3d73323ff79b..02ff5670c158 100644
--- a/crypto/proc.c
+++ b/crypto/proc.c
@@ -78,7 +78,7 @@ static int c_show(struct seq_file *m, void *p)
78 return 0; 78 return 0;
79} 79}
80 80
81static struct seq_operations crypto_seq_ops = { 81static const struct seq_operations crypto_seq_ops = {
82 .start = c_start, 82 .start = c_start,
83 .next = c_next, 83 .next = c_next,
84 .stop = c_stop, 84 .stop = c_stop,
@@ -99,11 +99,7 @@ static const struct file_operations proc_crypto_ops = {
99 99
100void __init crypto_init_proc(void) 100void __init crypto_init_proc(void)
101{ 101{
102 struct proc_dir_entry *proc; 102 proc_create("crypto", 0, NULL, &proc_crypto_ops);
103
104 proc = create_proc_entry("crypto", 0, NULL);
105 if (proc)
106 proc->proc_fops = &proc_crypto_ops;
107} 103}
108 104
109void __exit crypto_exit_proc(void) 105void __exit crypto_exit_proc(void)
diff --git a/crypto/salsa20_generic.c b/crypto/salsa20_generic.c
index 1fa4e4ddcab5..b07d55981741 100644
--- a/crypto/salsa20_generic.c
+++ b/crypto/salsa20_generic.c
@@ -237,18 +237,18 @@ static struct crypto_alg alg = {
237 } 237 }
238}; 238};
239 239
240static int __init init(void) 240static int __init salsa20_generic_mod_init(void)
241{ 241{
242 return crypto_register_alg(&alg); 242 return crypto_register_alg(&alg);
243} 243}
244 244
245static void __exit fini(void) 245static void __exit salsa20_generic_mod_fini(void)
246{ 246{
247 crypto_unregister_alg(&alg); 247 crypto_unregister_alg(&alg);
248} 248}
249 249
250module_init(init); 250module_init(salsa20_generic_mod_init);
251module_exit(fini); 251module_exit(salsa20_generic_mod_fini);
252 252
253MODULE_LICENSE("GPL"); 253MODULE_LICENSE("GPL");
254MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm"); 254MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm");
diff --git a/crypto/serpent.c b/crypto/serpent.c
index 2b0a19a44ec5..b651a55fa569 100644
--- a/crypto/serpent.c
+++ b/crypto/serpent.c
@@ -557,7 +557,7 @@ static struct crypto_alg tnepres_alg = {
557 .cia_decrypt = tnepres_decrypt } } 557 .cia_decrypt = tnepres_decrypt } }
558}; 558};
559 559
560static int __init init(void) 560static int __init serpent_mod_init(void)
561{ 561{
562 int ret = crypto_register_alg(&serpent_alg); 562 int ret = crypto_register_alg(&serpent_alg);
563 563
@@ -572,14 +572,14 @@ static int __init init(void)
572 return ret; 572 return ret;
573} 573}
574 574
575static void __exit fini(void) 575static void __exit serpent_mod_fini(void)
576{ 576{
577 crypto_unregister_alg(&tnepres_alg); 577 crypto_unregister_alg(&tnepres_alg);
578 crypto_unregister_alg(&serpent_alg); 578 crypto_unregister_alg(&serpent_alg);
579} 579}
580 580
581module_init(init); 581module_init(serpent_mod_init);
582module_exit(fini); 582module_exit(serpent_mod_fini);
583 583
584MODULE_LICENSE("GPL"); 584MODULE_LICENSE("GPL");
585MODULE_DESCRIPTION("Serpent and tnepres (kerneli compatible serpent reversed) Cipher Algorithm"); 585MODULE_DESCRIPTION("Serpent and tnepres (kerneli compatible serpent reversed) Cipher Algorithm");
diff --git a/crypto/sha1_generic.c b/crypto/sha1_generic.c
index 68c62f528eb5..c7c6899e1fca 100644
--- a/crypto/sha1_generic.c
+++ b/crypto/sha1_generic.c
@@ -120,18 +120,18 @@ static struct crypto_alg alg = {
120 .dia_final = sha1_final } } 120 .dia_final = sha1_final } }
121}; 121};
122 122
123static int __init init(void) 123static int __init sha1_generic_mod_init(void)
124{ 124{
125 return crypto_register_alg(&alg); 125 return crypto_register_alg(&alg);
126} 126}
127 127
128static void __exit fini(void) 128static void __exit sha1_generic_mod_fini(void)
129{ 129{
130 crypto_unregister_alg(&alg); 130 crypto_unregister_alg(&alg);
131} 131}
132 132
133module_init(init); 133module_init(sha1_generic_mod_init);
134module_exit(fini); 134module_exit(sha1_generic_mod_fini);
135 135
136MODULE_LICENSE("GPL"); 136MODULE_LICENSE("GPL");
137MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm"); 137MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
diff --git a/crypto/sha256_generic.c b/crypto/sha256_generic.c
index 3cc93fd61043..5a8dd47558e5 100644
--- a/crypto/sha256_generic.c
+++ b/crypto/sha256_generic.c
@@ -353,7 +353,7 @@ static struct crypto_alg sha224 = {
353 .dia_final = sha224_final } } 353 .dia_final = sha224_final } }
354}; 354};
355 355
356static int __init init(void) 356static int __init sha256_generic_mod_init(void)
357{ 357{
358 int ret = 0; 358 int ret = 0;
359 359
@@ -370,14 +370,14 @@ static int __init init(void)
370 return ret; 370 return ret;
371} 371}
372 372
373static void __exit fini(void) 373static void __exit sha256_generic_mod_fini(void)
374{ 374{
375 crypto_unregister_alg(&sha224); 375 crypto_unregister_alg(&sha224);
376 crypto_unregister_alg(&sha256); 376 crypto_unregister_alg(&sha256);
377} 377}
378 378
379module_init(init); 379module_init(sha256_generic_mod_init);
380module_exit(fini); 380module_exit(sha256_generic_mod_fini);
381 381
382MODULE_LICENSE("GPL"); 382MODULE_LICENSE("GPL");
383MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm"); 383MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm");
diff --git a/crypto/sha512.c b/crypto/sha512_generic.c
index c39c803ecc02..bc3686138aeb 100644
--- a/crypto/sha512.c
+++ b/crypto/sha512_generic.c
@@ -104,9 +104,9 @@ sha512_transform(u64 *state, u64 *W, const u8 *input)
104 } 104 }
105 105
106 /* load the state into our registers */ 106 /* load the state into our registers */
107 a=state[0]; b=state[1]; c=state[2]; d=state[3]; 107 a=state[0]; b=state[1]; c=state[2]; d=state[3];
108 e=state[4]; f=state[5]; g=state[6]; h=state[7]; 108 e=state[4]; f=state[5]; g=state[6]; h=state[7];
109 109
110 /* now iterate */ 110 /* now iterate */
111 for (i=0; i<80; i+=8) { 111 for (i=0; i<80; i+=8) {
112 t1 = h + e1(e) + Ch(e,f,g) + sha512_K[i ] + W[i ]; 112 t1 = h + e1(e) + Ch(e,f,g) + sha512_K[i ] + W[i ];
@@ -126,9 +126,9 @@ sha512_transform(u64 *state, u64 *W, const u8 *input)
126 t1 = a + e1(f) + Ch(f,g,h) + sha512_K[i+7] + W[i+7]; 126 t1 = a + e1(f) + Ch(f,g,h) + sha512_K[i+7] + W[i+7];
127 t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; 127 t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2;
128 } 128 }
129 129
130 state[0] += a; state[1] += b; state[2] += c; state[3] += d; 130 state[0] += a; state[1] += b; state[2] += c; state[3] += d;
131 state[4] += e; state[5] += f; state[6] += g; state[7] += h; 131 state[4] += e; state[5] += f; state[6] += g; state[7] += h;
132 132
133 /* erase our data */ 133 /* erase our data */
134 a = b = c = d = e = f = g = h = t1 = t2 = 0; 134 a = b = c = d = e = f = g = h = t1 = t2 = 0;
@@ -173,7 +173,7 @@ sha512_update(struct crypto_tfm *tfm, const u8 *data, unsigned int len)
173 173
174 /* Compute number of bytes mod 128 */ 174 /* Compute number of bytes mod 128 */
175 index = (unsigned int)((sctx->count[0] >> 3) & 0x7F); 175 index = (unsigned int)((sctx->count[0] >> 3) & 0x7F);
176 176
177 /* Update number of bits */ 177 /* Update number of bits */
178 if ((sctx->count[0] += (len << 3)) < (len << 3)) { 178 if ((sctx->count[0] += (len << 3)) < (len << 3)) {
179 if ((sctx->count[1] += 1) < 1) 179 if ((sctx->count[1] += 1) < 1)
@@ -181,9 +181,9 @@ sha512_update(struct crypto_tfm *tfm, const u8 *data, unsigned int len)
181 sctx->count[3]++; 181 sctx->count[3]++;
182 sctx->count[1] += (len >> 29); 182 sctx->count[1] += (len >> 29);
183 } 183 }
184 184
185 part_len = 128 - index; 185 part_len = 128 - index;
186 186
187 /* Transform as many times as possible. */ 187 /* Transform as many times as possible. */
188 if (len >= part_len) { 188 if (len >= part_len) {
189 memcpy(&sctx->buf[index], data, part_len); 189 memcpy(&sctx->buf[index], data, part_len);
@@ -278,9 +278,7 @@ static struct crypto_alg sha384 = {
278 } 278 }
279}; 279};
280 280
281MODULE_ALIAS("sha384"); 281static int __init sha512_generic_mod_init(void)
282
283static int __init init(void)
284{ 282{
285 int ret = 0; 283 int ret = 0;
286 284
@@ -292,14 +290,17 @@ out:
292 return ret; 290 return ret;
293} 291}
294 292
295static void __exit fini(void) 293static void __exit sha512_generic_mod_fini(void)
296{ 294{
297 crypto_unregister_alg(&sha384); 295 crypto_unregister_alg(&sha384);
298 crypto_unregister_alg(&sha512); 296 crypto_unregister_alg(&sha512);
299} 297}
300 298
301module_init(init); 299module_init(sha512_generic_mod_init);
302module_exit(fini); 300module_exit(sha512_generic_mod_fini);
303 301
304MODULE_LICENSE("GPL"); 302MODULE_LICENSE("GPL");
305MODULE_DESCRIPTION("SHA-512 and SHA-384 Secure Hash Algorithms"); 303MODULE_DESCRIPTION("SHA-512 and SHA-384 Secure Hash Algorithms");
304
305MODULE_ALIAS("sha384");
306MODULE_ALIAS("sha512");
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index 1ab8c017a011..6beabc5abd07 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -82,9 +82,8 @@ static char *check[] = {
82 "des", "md5", "des3_ede", "rot13", "sha1", "sha224", "sha256", 82 "des", "md5", "des3_ede", "rot13", "sha1", "sha224", "sha256",
83 "blowfish", "twofish", "serpent", "sha384", "sha512", "md4", "aes", 83 "blowfish", "twofish", "serpent", "sha384", "sha512", "md4", "aes",
84 "cast6", "arc4", "michael_mic", "deflate", "crc32c", "tea", "xtea", 84 "cast6", "arc4", "michael_mic", "deflate", "crc32c", "tea", "xtea",
85 "arc4", "michael_mic", "deflate", "crc32c", "tea", "xtea",
86 "khazad", "wp512", "wp384", "wp256", "tnepres", "xeta", "fcrypt", 85 "khazad", "wp512", "wp384", "wp256", "tnepres", "xeta", "fcrypt",
87 "camellia", "seed", "salsa20", "lzo", NULL 86 "camellia", "seed", "salsa20", "lzo", "cts", NULL
88}; 87};
89 88
90static void hexdump(unsigned char *buf, unsigned int len) 89static void hexdump(unsigned char *buf, unsigned int len)
@@ -113,23 +112,11 @@ static void test_hash(char *algo, struct hash_testvec *template,
113 char result[64]; 112 char result[64];
114 struct crypto_hash *tfm; 113 struct crypto_hash *tfm;
115 struct hash_desc desc; 114 struct hash_desc desc;
116 struct hash_testvec *hash_tv;
117 unsigned int tsize;
118 int ret; 115 int ret;
116 void *hash_buff;
119 117
120 printk("\ntesting %s\n", algo); 118 printk("\ntesting %s\n", algo);
121 119
122 tsize = sizeof(struct hash_testvec);
123 tsize *= tcount;
124
125 if (tsize > TVMEMSIZE) {
126 printk("template (%u) too big for tvmem (%u)\n", tsize, TVMEMSIZE);
127 return;
128 }
129
130 memcpy(tvmem, template, tsize);
131 hash_tv = (void *)tvmem;
132
133 tfm = crypto_alloc_hash(algo, 0, CRYPTO_ALG_ASYNC); 120 tfm = crypto_alloc_hash(algo, 0, CRYPTO_ALG_ASYNC);
134 if (IS_ERR(tfm)) { 121 if (IS_ERR(tfm)) {
135 printk("failed to load transform for %s: %ld\n", algo, 122 printk("failed to load transform for %s: %ld\n", algo,
@@ -144,28 +131,36 @@ static void test_hash(char *algo, struct hash_testvec *template,
144 printk("test %u:\n", i + 1); 131 printk("test %u:\n", i + 1);
145 memset(result, 0, 64); 132 memset(result, 0, 64);
146 133
147 sg_init_one(&sg[0], hash_tv[i].plaintext, hash_tv[i].psize); 134 hash_buff = kzalloc(template[i].psize, GFP_KERNEL);
135 if (!hash_buff)
136 continue;
137
138 memcpy(hash_buff, template[i].plaintext, template[i].psize);
139 sg_init_one(&sg[0], hash_buff, template[i].psize);
148 140
149 if (hash_tv[i].ksize) { 141 if (template[i].ksize) {
150 ret = crypto_hash_setkey(tfm, hash_tv[i].key, 142 ret = crypto_hash_setkey(tfm, template[i].key,
151 hash_tv[i].ksize); 143 template[i].ksize);
152 if (ret) { 144 if (ret) {
153 printk("setkey() failed ret=%d\n", ret); 145 printk("setkey() failed ret=%d\n", ret);
146 kfree(hash_buff);
154 goto out; 147 goto out;
155 } 148 }
156 } 149 }
157 150
158 ret = crypto_hash_digest(&desc, sg, hash_tv[i].psize, result); 151 ret = crypto_hash_digest(&desc, sg, template[i].psize, result);
159 if (ret) { 152 if (ret) {
160 printk("digest () failed ret=%d\n", ret); 153 printk("digest () failed ret=%d\n", ret);
154 kfree(hash_buff);
161 goto out; 155 goto out;
162 } 156 }
163 157
164 hexdump(result, crypto_hash_digestsize(tfm)); 158 hexdump(result, crypto_hash_digestsize(tfm));
165 printk("%s\n", 159 printk("%s\n",
166 memcmp(result, hash_tv[i].digest, 160 memcmp(result, template[i].digest,
167 crypto_hash_digestsize(tfm)) ? 161 crypto_hash_digestsize(tfm)) ?
168 "fail" : "pass"); 162 "fail" : "pass");
163 kfree(hash_buff);
169 } 164 }
170 165
171 printk("testing %s across pages\n", algo); 166 printk("testing %s across pages\n", algo);
@@ -175,25 +170,25 @@ static void test_hash(char *algo, struct hash_testvec *template,
175 170
176 j = 0; 171 j = 0;
177 for (i = 0; i < tcount; i++) { 172 for (i = 0; i < tcount; i++) {
178 if (hash_tv[i].np) { 173 if (template[i].np) {
179 j++; 174 j++;
180 printk("test %u:\n", j); 175 printk("test %u:\n", j);
181 memset(result, 0, 64); 176 memset(result, 0, 64);
182 177
183 temp = 0; 178 temp = 0;
184 sg_init_table(sg, hash_tv[i].np); 179 sg_init_table(sg, template[i].np);
185 for (k = 0; k < hash_tv[i].np; k++) { 180 for (k = 0; k < template[i].np; k++) {
186 memcpy(&xbuf[IDX[k]], 181 memcpy(&xbuf[IDX[k]],
187 hash_tv[i].plaintext + temp, 182 template[i].plaintext + temp,
188 hash_tv[i].tap[k]); 183 template[i].tap[k]);
189 temp += hash_tv[i].tap[k]; 184 temp += template[i].tap[k];
190 sg_set_buf(&sg[k], &xbuf[IDX[k]], 185 sg_set_buf(&sg[k], &xbuf[IDX[k]],
191 hash_tv[i].tap[k]); 186 template[i].tap[k]);
192 } 187 }
193 188
194 if (hash_tv[i].ksize) { 189 if (template[i].ksize) {
195 ret = crypto_hash_setkey(tfm, hash_tv[i].key, 190 ret = crypto_hash_setkey(tfm, template[i].key,
196 hash_tv[i].ksize); 191 template[i].ksize);
197 192
198 if (ret) { 193 if (ret) {
199 printk("setkey() failed ret=%d\n", ret); 194 printk("setkey() failed ret=%d\n", ret);
@@ -201,7 +196,7 @@ static void test_hash(char *algo, struct hash_testvec *template,
201 } 196 }
202 } 197 }
203 198
204 ret = crypto_hash_digest(&desc, sg, hash_tv[i].psize, 199 ret = crypto_hash_digest(&desc, sg, template[i].psize,
205 result); 200 result);
206 if (ret) { 201 if (ret) {
207 printk("digest () failed ret=%d\n", ret); 202 printk("digest () failed ret=%d\n", ret);
@@ -210,7 +205,7 @@ static void test_hash(char *algo, struct hash_testvec *template,
210 205
211 hexdump(result, crypto_hash_digestsize(tfm)); 206 hexdump(result, crypto_hash_digestsize(tfm));
212 printk("%s\n", 207 printk("%s\n",
213 memcmp(result, hash_tv[i].digest, 208 memcmp(result, template[i].digest,
214 crypto_hash_digestsize(tfm)) ? 209 crypto_hash_digestsize(tfm)) ?
215 "fail" : "pass"); 210 "fail" : "pass");
216 } 211 }
@@ -224,17 +219,18 @@ static void test_aead(char *algo, int enc, struct aead_testvec *template,
224 unsigned int tcount) 219 unsigned int tcount)
225{ 220{
226 unsigned int ret, i, j, k, temp; 221 unsigned int ret, i, j, k, temp;
227 unsigned int tsize;
228 char *q; 222 char *q;
229 struct crypto_aead *tfm; 223 struct crypto_aead *tfm;
230 char *key; 224 char *key;
231 struct aead_testvec *aead_tv;
232 struct aead_request *req; 225 struct aead_request *req;
233 struct scatterlist sg[8]; 226 struct scatterlist sg[8];
234 struct scatterlist asg[8]; 227 struct scatterlist asg[8];
235 const char *e; 228 const char *e;
236 struct tcrypt_result result; 229 struct tcrypt_result result;
237 unsigned int authsize; 230 unsigned int authsize;
231 void *input;
232 void *assoc;
233 char iv[MAX_IVLEN];
238 234
239 if (enc == ENCRYPT) 235 if (enc == ENCRYPT)
240 e = "encryption"; 236 e = "encryption";
@@ -243,18 +239,6 @@ static void test_aead(char *algo, int enc, struct aead_testvec *template,
243 239
244 printk(KERN_INFO "\ntesting %s %s\n", algo, e); 240 printk(KERN_INFO "\ntesting %s %s\n", algo, e);
245 241
246 tsize = sizeof(struct aead_testvec);
247 tsize *= tcount;
248
249 if (tsize > TVMEMSIZE) {
250 printk(KERN_INFO "template (%u) too big for tvmem (%u)\n",
251 tsize, TVMEMSIZE);
252 return;
253 }
254
255 memcpy(tvmem, template, tsize);
256 aead_tv = (void *)tvmem;
257
258 init_completion(&result.completion); 242 init_completion(&result.completion);
259 243
260 tfm = crypto_alloc_aead(algo, 0, 0); 244 tfm = crypto_alloc_aead(algo, 0, 0);
@@ -275,46 +259,68 @@ static void test_aead(char *algo, int enc, struct aead_testvec *template,
275 tcrypt_complete, &result); 259 tcrypt_complete, &result);
276 260
277 for (i = 0, j = 0; i < tcount; i++) { 261 for (i = 0, j = 0; i < tcount; i++) {
278 if (!aead_tv[i].np) { 262 if (!template[i].np) {
279 printk(KERN_INFO "test %u (%d bit key):\n", 263 printk(KERN_INFO "test %u (%d bit key):\n",
280 ++j, aead_tv[i].klen * 8); 264 ++j, template[i].klen * 8);
265
266 /* some tepmplates have no input data but they will
267 * touch input
268 */
269 input = kzalloc(template[i].ilen + template[i].rlen, GFP_KERNEL);
270 if (!input)
271 continue;
272
273 assoc = kzalloc(template[i].alen, GFP_KERNEL);
274 if (!assoc) {
275 kfree(input);
276 continue;
277 }
278
279 memcpy(input, template[i].input, template[i].ilen);
280 memcpy(assoc, template[i].assoc, template[i].alen);
281 if (template[i].iv)
282 memcpy(iv, template[i].iv, MAX_IVLEN);
283 else
284 memset(iv, 0, MAX_IVLEN);
281 285
282 crypto_aead_clear_flags(tfm, ~0); 286 crypto_aead_clear_flags(tfm, ~0);
283 if (aead_tv[i].wk) 287 if (template[i].wk)
284 crypto_aead_set_flags( 288 crypto_aead_set_flags(
285 tfm, CRYPTO_TFM_REQ_WEAK_KEY); 289 tfm, CRYPTO_TFM_REQ_WEAK_KEY);
286 key = aead_tv[i].key; 290
291 if (template[i].key)
292 key = template[i].key;
293 else
294 key = kzalloc(template[i].klen, GFP_KERNEL);
287 295
288 ret = crypto_aead_setkey(tfm, key, 296 ret = crypto_aead_setkey(tfm, key,
289 aead_tv[i].klen); 297 template[i].klen);
290 if (ret) { 298 if (ret) {
291 printk(KERN_INFO "setkey() failed flags=%x\n", 299 printk(KERN_INFO "setkey() failed flags=%x\n",
292 crypto_aead_get_flags(tfm)); 300 crypto_aead_get_flags(tfm));
293 301
294 if (!aead_tv[i].fail) 302 if (!template[i].fail)
295 goto out; 303 goto next_one;
296 } 304 }
297 305
298 authsize = abs(aead_tv[i].rlen - aead_tv[i].ilen); 306 authsize = abs(template[i].rlen - template[i].ilen);
299 ret = crypto_aead_setauthsize(tfm, authsize); 307 ret = crypto_aead_setauthsize(tfm, authsize);
300 if (ret) { 308 if (ret) {
301 printk(KERN_INFO 309 printk(KERN_INFO
302 "failed to set authsize = %u\n", 310 "failed to set authsize = %u\n",
303 authsize); 311 authsize);
304 goto out; 312 goto next_one;
305 } 313 }
306 314
307 sg_init_one(&sg[0], aead_tv[i].input, 315 sg_init_one(&sg[0], input,
308 aead_tv[i].ilen + (enc ? authsize : 0)); 316 template[i].ilen + (enc ? authsize : 0));
309 317
310 sg_init_one(&asg[0], aead_tv[i].assoc, 318 sg_init_one(&asg[0], assoc, template[i].alen);
311 aead_tv[i].alen);
312 319
313 aead_request_set_crypt(req, sg, sg, 320 aead_request_set_crypt(req, sg, sg,
314 aead_tv[i].ilen, 321 template[i].ilen, iv);
315 aead_tv[i].iv);
316 322
317 aead_request_set_assoc(req, asg, aead_tv[i].alen); 323 aead_request_set_assoc(req, asg, template[i].alen);
318 324
319 ret = enc ? 325 ret = enc ?
320 crypto_aead_encrypt(req) : 326 crypto_aead_encrypt(req) :
@@ -335,15 +341,21 @@ static void test_aead(char *algo, int enc, struct aead_testvec *template,
335 default: 341 default:
336 printk(KERN_INFO "%s () failed err=%d\n", 342 printk(KERN_INFO "%s () failed err=%d\n",
337 e, -ret); 343 e, -ret);
338 goto out; 344 goto next_one;
339 } 345 }
340 346
341 q = kmap(sg_page(&sg[0])) + sg[0].offset; 347 q = kmap(sg_page(&sg[0])) + sg[0].offset;
342 hexdump(q, aead_tv[i].rlen); 348 hexdump(q, template[i].rlen);
343 349
344 printk(KERN_INFO "enc/dec: %s\n", 350 printk(KERN_INFO "enc/dec: %s\n",
345 memcmp(q, aead_tv[i].result, 351 memcmp(q, template[i].result,
346 aead_tv[i].rlen) ? "fail" : "pass"); 352 template[i].rlen) ? "fail" : "pass");
353 kunmap(sg_page(&sg[0]));
354next_one:
355 if (!template[i].key)
356 kfree(key);
357 kfree(assoc);
358 kfree(input);
347 } 359 }
348 } 360 }
349 361
@@ -352,36 +364,41 @@ static void test_aead(char *algo, int enc, struct aead_testvec *template,
352 memset(axbuf, 0, XBUFSIZE); 364 memset(axbuf, 0, XBUFSIZE);
353 365
354 for (i = 0, j = 0; i < tcount; i++) { 366 for (i = 0, j = 0; i < tcount; i++) {
355 if (aead_tv[i].np) { 367 if (template[i].np) {
356 printk(KERN_INFO "test %u (%d bit key):\n", 368 printk(KERN_INFO "test %u (%d bit key):\n",
357 ++j, aead_tv[i].klen * 8); 369 ++j, template[i].klen * 8);
370
371 if (template[i].iv)
372 memcpy(iv, template[i].iv, MAX_IVLEN);
373 else
374 memset(iv, 0, MAX_IVLEN);
358 375
359 crypto_aead_clear_flags(tfm, ~0); 376 crypto_aead_clear_flags(tfm, ~0);
360 if (aead_tv[i].wk) 377 if (template[i].wk)
361 crypto_aead_set_flags( 378 crypto_aead_set_flags(
362 tfm, CRYPTO_TFM_REQ_WEAK_KEY); 379 tfm, CRYPTO_TFM_REQ_WEAK_KEY);
363 key = aead_tv[i].key; 380 key = template[i].key;
364 381
365 ret = crypto_aead_setkey(tfm, key, aead_tv[i].klen); 382 ret = crypto_aead_setkey(tfm, key, template[i].klen);
366 if (ret) { 383 if (ret) {
367 printk(KERN_INFO "setkey() failed flags=%x\n", 384 printk(KERN_INFO "setkey() failed flags=%x\n",
368 crypto_aead_get_flags(tfm)); 385 crypto_aead_get_flags(tfm));
369 386
370 if (!aead_tv[i].fail) 387 if (!template[i].fail)
371 goto out; 388 goto out;
372 } 389 }
373 390
374 sg_init_table(sg, aead_tv[i].np); 391 sg_init_table(sg, template[i].np);
375 for (k = 0, temp = 0; k < aead_tv[i].np; k++) { 392 for (k = 0, temp = 0; k < template[i].np; k++) {
376 memcpy(&xbuf[IDX[k]], 393 memcpy(&xbuf[IDX[k]],
377 aead_tv[i].input + temp, 394 template[i].input + temp,
378 aead_tv[i].tap[k]); 395 template[i].tap[k]);
379 temp += aead_tv[i].tap[k]; 396 temp += template[i].tap[k];
380 sg_set_buf(&sg[k], &xbuf[IDX[k]], 397 sg_set_buf(&sg[k], &xbuf[IDX[k]],
381 aead_tv[i].tap[k]); 398 template[i].tap[k]);
382 } 399 }
383 400
384 authsize = abs(aead_tv[i].rlen - aead_tv[i].ilen); 401 authsize = abs(template[i].rlen - template[i].ilen);
385 ret = crypto_aead_setauthsize(tfm, authsize); 402 ret = crypto_aead_setauthsize(tfm, authsize);
386 if (ret) { 403 if (ret) {
387 printk(KERN_INFO 404 printk(KERN_INFO
@@ -393,21 +410,21 @@ static void test_aead(char *algo, int enc, struct aead_testvec *template,
393 if (enc) 410 if (enc)
394 sg[k - 1].length += authsize; 411 sg[k - 1].length += authsize;
395 412
396 sg_init_table(asg, aead_tv[i].anp); 413 sg_init_table(asg, template[i].anp);
397 for (k = 0, temp = 0; k < aead_tv[i].anp; k++) { 414 for (k = 0, temp = 0; k < template[i].anp; k++) {
398 memcpy(&axbuf[IDX[k]], 415 memcpy(&axbuf[IDX[k]],
399 aead_tv[i].assoc + temp, 416 template[i].assoc + temp,
400 aead_tv[i].atap[k]); 417 template[i].atap[k]);
401 temp += aead_tv[i].atap[k]; 418 temp += template[i].atap[k];
402 sg_set_buf(&asg[k], &axbuf[IDX[k]], 419 sg_set_buf(&asg[k], &axbuf[IDX[k]],
403 aead_tv[i].atap[k]); 420 template[i].atap[k]);
404 } 421 }
405 422
406 aead_request_set_crypt(req, sg, sg, 423 aead_request_set_crypt(req, sg, sg,
407 aead_tv[i].ilen, 424 template[i].ilen,
408 aead_tv[i].iv); 425 iv);
409 426
410 aead_request_set_assoc(req, asg, aead_tv[i].alen); 427 aead_request_set_assoc(req, asg, template[i].alen);
411 428
412 ret = enc ? 429 ret = enc ?
413 crypto_aead_encrypt(req) : 430 crypto_aead_encrypt(req) :
@@ -431,18 +448,19 @@ static void test_aead(char *algo, int enc, struct aead_testvec *template,
431 goto out; 448 goto out;
432 } 449 }
433 450
434 for (k = 0, temp = 0; k < aead_tv[i].np; k++) { 451 for (k = 0, temp = 0; k < template[i].np; k++) {
435 printk(KERN_INFO "page %u\n", k); 452 printk(KERN_INFO "page %u\n", k);
436 q = kmap(sg_page(&sg[k])) + sg[k].offset; 453 q = kmap(sg_page(&sg[k])) + sg[k].offset;
437 hexdump(q, aead_tv[i].tap[k]); 454 hexdump(q, template[i].tap[k]);
438 printk(KERN_INFO "%s\n", 455 printk(KERN_INFO "%s\n",
439 memcmp(q, aead_tv[i].result + temp, 456 memcmp(q, template[i].result + temp,
440 aead_tv[i].tap[k] - 457 template[i].tap[k] -
441 (k < aead_tv[i].np - 1 || enc ? 458 (k < template[i].np - 1 || enc ?
442 0 : authsize)) ? 459 0 : authsize)) ?
443 "fail" : "pass"); 460 "fail" : "pass");
444 461
445 temp += aead_tv[i].tap[k]; 462 temp += template[i].tap[k];
463 kunmap(sg_page(&sg[k]));
446 } 464 }
447 } 465 }
448 } 466 }
@@ -456,15 +474,14 @@ static void test_cipher(char *algo, int enc,
456 struct cipher_testvec *template, unsigned int tcount) 474 struct cipher_testvec *template, unsigned int tcount)
457{ 475{
458 unsigned int ret, i, j, k, temp; 476 unsigned int ret, i, j, k, temp;
459 unsigned int tsize;
460 char *q; 477 char *q;
461 struct crypto_ablkcipher *tfm; 478 struct crypto_ablkcipher *tfm;
462 char *key;
463 struct cipher_testvec *cipher_tv;
464 struct ablkcipher_request *req; 479 struct ablkcipher_request *req;
465 struct scatterlist sg[8]; 480 struct scatterlist sg[8];
466 const char *e; 481 const char *e;
467 struct tcrypt_result result; 482 struct tcrypt_result result;
483 void *data;
484 char iv[MAX_IVLEN];
468 485
469 if (enc == ENCRYPT) 486 if (enc == ENCRYPT)
470 e = "encryption"; 487 e = "encryption";
@@ -473,16 +490,7 @@ static void test_cipher(char *algo, int enc,
473 490
474 printk("\ntesting %s %s\n", algo, e); 491 printk("\ntesting %s %s\n", algo, e);
475 492
476 tsize = sizeof (struct cipher_testvec);
477 if (tsize > TVMEMSIZE) {
478 printk("template (%u) too big for tvmem (%u)\n", tsize,
479 TVMEMSIZE);
480 return;
481 }
482 cipher_tv = (void *)tvmem;
483
484 init_completion(&result.completion); 493 init_completion(&result.completion);
485
486 tfm = crypto_alloc_ablkcipher(algo, 0, 0); 494 tfm = crypto_alloc_ablkcipher(algo, 0, 0);
487 495
488 if (IS_ERR(tfm)) { 496 if (IS_ERR(tfm)) {
@@ -502,35 +510,43 @@ static void test_cipher(char *algo, int enc,
502 510
503 j = 0; 511 j = 0;
504 for (i = 0; i < tcount; i++) { 512 for (i = 0; i < tcount; i++) {
505 memcpy(cipher_tv, &template[i], tsize); 513
506 if (!(cipher_tv->np)) { 514 data = kzalloc(template[i].ilen, GFP_KERNEL);
515 if (!data)
516 continue;
517
518 memcpy(data, template[i].input, template[i].ilen);
519 if (template[i].iv)
520 memcpy(iv, template[i].iv, MAX_IVLEN);
521 else
522 memset(iv, 0, MAX_IVLEN);
523
524 if (!(template[i].np)) {
507 j++; 525 j++;
508 printk("test %u (%d bit key):\n", 526 printk("test %u (%d bit key):\n",
509 j, cipher_tv->klen * 8); 527 j, template[i].klen * 8);
510 528
511 crypto_ablkcipher_clear_flags(tfm, ~0); 529 crypto_ablkcipher_clear_flags(tfm, ~0);
512 if (cipher_tv->wk) 530 if (template[i].wk)
513 crypto_ablkcipher_set_flags( 531 crypto_ablkcipher_set_flags(
514 tfm, CRYPTO_TFM_REQ_WEAK_KEY); 532 tfm, CRYPTO_TFM_REQ_WEAK_KEY);
515 key = cipher_tv->key;
516 533
517 ret = crypto_ablkcipher_setkey(tfm, key, 534 ret = crypto_ablkcipher_setkey(tfm, template[i].key,
518 cipher_tv->klen); 535 template[i].klen);
519 if (ret) { 536 if (ret) {
520 printk("setkey() failed flags=%x\n", 537 printk("setkey() failed flags=%x\n",
521 crypto_ablkcipher_get_flags(tfm)); 538 crypto_ablkcipher_get_flags(tfm));
522 539
523 if (!cipher_tv->fail) 540 if (!template[i].fail) {
541 kfree(data);
524 goto out; 542 goto out;
543 }
525 } 544 }
526 545
527 sg_init_one(&sg[0], cipher_tv->input, 546 sg_init_one(&sg[0], data, template[i].ilen);
528 cipher_tv->ilen);
529 547
530 ablkcipher_request_set_crypt(req, sg, sg, 548 ablkcipher_request_set_crypt(req, sg, sg,
531 cipher_tv->ilen, 549 template[i].ilen, iv);
532 cipher_tv->iv);
533
534 ret = enc ? 550 ret = enc ?
535 crypto_ablkcipher_encrypt(req) : 551 crypto_ablkcipher_encrypt(req) :
536 crypto_ablkcipher_decrypt(req); 552 crypto_ablkcipher_decrypt(req);
@@ -549,16 +565,19 @@ static void test_cipher(char *algo, int enc,
549 /* fall through */ 565 /* fall through */
550 default: 566 default:
551 printk("%s () failed err=%d\n", e, -ret); 567 printk("%s () failed err=%d\n", e, -ret);
568 kfree(data);
552 goto out; 569 goto out;
553 } 570 }
554 571
555 q = kmap(sg_page(&sg[0])) + sg[0].offset; 572 q = kmap(sg_page(&sg[0])) + sg[0].offset;
556 hexdump(q, cipher_tv->rlen); 573 hexdump(q, template[i].rlen);
557 574
558 printk("%s\n", 575 printk("%s\n",
559 memcmp(q, cipher_tv->result, 576 memcmp(q, template[i].result,
560 cipher_tv->rlen) ? "fail" : "pass"); 577 template[i].rlen) ? "fail" : "pass");
578 kunmap(sg_page(&sg[0]));
561 } 579 }
580 kfree(data);
562 } 581 }
563 582
564 printk("\ntesting %s %s across pages (chunking)\n", algo, e); 583 printk("\ntesting %s %s across pages (chunking)\n", algo, e);
@@ -566,42 +585,53 @@ static void test_cipher(char *algo, int enc,
566 585
567 j = 0; 586 j = 0;
568 for (i = 0; i < tcount; i++) { 587 for (i = 0; i < tcount; i++) {
569 memcpy(cipher_tv, &template[i], tsize); 588
570 if (cipher_tv->np) { 589 data = kzalloc(template[i].ilen, GFP_KERNEL);
590 if (!data)
591 continue;
592
593 memcpy(data, template[i].input, template[i].ilen);
594
595 if (template[i].iv)
596 memcpy(iv, template[i].iv, MAX_IVLEN);
597 else
598 memset(iv, 0, MAX_IVLEN);
599
600 if (template[i].np) {
571 j++; 601 j++;
572 printk("test %u (%d bit key):\n", 602 printk("test %u (%d bit key):\n",
573 j, cipher_tv->klen * 8); 603 j, template[i].klen * 8);
574 604
575 crypto_ablkcipher_clear_flags(tfm, ~0); 605 crypto_ablkcipher_clear_flags(tfm, ~0);
576 if (cipher_tv->wk) 606 if (template[i].wk)
577 crypto_ablkcipher_set_flags( 607 crypto_ablkcipher_set_flags(
578 tfm, CRYPTO_TFM_REQ_WEAK_KEY); 608 tfm, CRYPTO_TFM_REQ_WEAK_KEY);
579 key = cipher_tv->key;
580 609
581 ret = crypto_ablkcipher_setkey(tfm, key, 610 ret = crypto_ablkcipher_setkey(tfm, template[i].key,
582 cipher_tv->klen); 611 template[i].klen);
583 if (ret) { 612 if (ret) {
584 printk("setkey() failed flags=%x\n", 613 printk("setkey() failed flags=%x\n",
585 crypto_ablkcipher_get_flags(tfm)); 614 crypto_ablkcipher_get_flags(tfm));
586 615
587 if (!cipher_tv->fail) 616 if (!template[i].fail) {
617 kfree(data);
588 goto out; 618 goto out;
619 }
589 } 620 }
590 621
591 temp = 0; 622 temp = 0;
592 sg_init_table(sg, cipher_tv->np); 623 sg_init_table(sg, template[i].np);
593 for (k = 0; k < cipher_tv->np; k++) { 624 for (k = 0; k < template[i].np; k++) {
594 memcpy(&xbuf[IDX[k]], 625 memcpy(&xbuf[IDX[k]],
595 cipher_tv->input + temp, 626 template[i].input + temp,
596 cipher_tv->tap[k]); 627 template[i].tap[k]);
597 temp += cipher_tv->tap[k]; 628 temp += template[i].tap[k];
598 sg_set_buf(&sg[k], &xbuf[IDX[k]], 629 sg_set_buf(&sg[k], &xbuf[IDX[k]],
599 cipher_tv->tap[k]); 630 template[i].tap[k]);
600 } 631 }
601 632
602 ablkcipher_request_set_crypt(req, sg, sg, 633 ablkcipher_request_set_crypt(req, sg, sg,
603 cipher_tv->ilen, 634 template[i].ilen, iv);
604 cipher_tv->iv);
605 635
606 ret = enc ? 636 ret = enc ?
607 crypto_ablkcipher_encrypt(req) : 637 crypto_ablkcipher_encrypt(req) :
@@ -625,19 +655,19 @@ static void test_cipher(char *algo, int enc,
625 } 655 }
626 656
627 temp = 0; 657 temp = 0;
628 for (k = 0; k < cipher_tv->np; k++) { 658 for (k = 0; k < template[i].np; k++) {
629 printk("page %u\n", k); 659 printk("page %u\n", k);
630 q = kmap(sg_page(&sg[k])) + sg[k].offset; 660 q = kmap(sg_page(&sg[k])) + sg[k].offset;
631 hexdump(q, cipher_tv->tap[k]); 661 hexdump(q, template[i].tap[k]);
632 printk("%s\n", 662 printk("%s\n",
633 memcmp(q, cipher_tv->result + temp, 663 memcmp(q, template[i].result + temp,
634 cipher_tv->tap[k]) ? "fail" : 664 template[i].tap[k]) ? "fail" :
635 "pass"); 665 "pass");
636 temp += cipher_tv->tap[k]; 666 temp += template[i].tap[k];
667 kunmap(sg_page(&sg[k]));
637 } 668 }
638 } 669 }
639 } 670 }
640
641out: 671out:
642 crypto_free_ablkcipher(tfm); 672 crypto_free_ablkcipher(tfm);
643 ablkcipher_request_free(req); 673 ablkcipher_request_free(req);
@@ -721,15 +751,18 @@ out:
721 return ret; 751 return ret;
722} 752}
723 753
754static u32 block_sizes[] = { 16, 64, 256, 1024, 8192, 0 };
755
724static void test_cipher_speed(char *algo, int enc, unsigned int sec, 756static void test_cipher_speed(char *algo, int enc, unsigned int sec,
725 struct cipher_testvec *template, 757 struct cipher_testvec *template,
726 unsigned int tcount, struct cipher_speed *speed) 758 unsigned int tcount, u8 *keysize)
727{ 759{
728 unsigned int ret, i, j, iv_len; 760 unsigned int ret, i, j, iv_len;
729 unsigned char *key, *p, iv[128]; 761 unsigned char *key, *p, iv[128];
730 struct crypto_blkcipher *tfm; 762 struct crypto_blkcipher *tfm;
731 struct blkcipher_desc desc; 763 struct blkcipher_desc desc;
732 const char *e; 764 const char *e;
765 u32 *b_size;
733 766
734 if (enc == ENCRYPT) 767 if (enc == ENCRYPT)
735 e = "encryption"; 768 e = "encryption";
@@ -748,52 +781,60 @@ static void test_cipher_speed(char *algo, int enc, unsigned int sec,
748 desc.tfm = tfm; 781 desc.tfm = tfm;
749 desc.flags = 0; 782 desc.flags = 0;
750 783
751 for (i = 0; speed[i].klen != 0; i++) { 784 i = 0;
752 if ((speed[i].blen + speed[i].klen) > TVMEMSIZE) { 785 do {
753 printk("template (%u) too big for tvmem (%u)\n", 786
754 speed[i].blen + speed[i].klen, TVMEMSIZE); 787 b_size = block_sizes;
755 goto out; 788 do {
756 } 789
790 if ((*keysize + *b_size) > TVMEMSIZE) {
791 printk("template (%u) too big for tvmem (%u)\n",
792 *keysize + *b_size, TVMEMSIZE);
793 goto out;
794 }
757 795
758 printk("test %u (%d bit key, %d byte blocks): ", i, 796 printk("test %u (%d bit key, %d byte blocks): ", i,
759 speed[i].klen * 8, speed[i].blen); 797 *keysize * 8, *b_size);
760 798
761 memset(tvmem, 0xff, speed[i].klen + speed[i].blen); 799 memset(tvmem, 0xff, *keysize + *b_size);
762 800
763 /* set key, plain text and IV */ 801 /* set key, plain text and IV */
764 key = (unsigned char *)tvmem; 802 key = (unsigned char *)tvmem;
765 for (j = 0; j < tcount; j++) { 803 for (j = 0; j < tcount; j++) {
766 if (template[j].klen == speed[i].klen) { 804 if (template[j].klen == *keysize) {
767 key = template[j].key; 805 key = template[j].key;
768 break; 806 break;
807 }
769 } 808 }
770 } 809 p = (unsigned char *)tvmem + *keysize;
771 p = (unsigned char *)tvmem + speed[i].klen;
772 810
773 ret = crypto_blkcipher_setkey(tfm, key, speed[i].klen); 811 ret = crypto_blkcipher_setkey(tfm, key, *keysize);
774 if (ret) { 812 if (ret) {
775 printk("setkey() failed flags=%x\n", 813 printk("setkey() failed flags=%x\n",
776 crypto_blkcipher_get_flags(tfm)); 814 crypto_blkcipher_get_flags(tfm));
777 goto out; 815 goto out;
778 } 816 }
779 817
780 iv_len = crypto_blkcipher_ivsize(tfm); 818 iv_len = crypto_blkcipher_ivsize(tfm);
781 if (iv_len) { 819 if (iv_len) {
782 memset(&iv, 0xff, iv_len); 820 memset(&iv, 0xff, iv_len);
783 crypto_blkcipher_set_iv(tfm, iv, iv_len); 821 crypto_blkcipher_set_iv(tfm, iv, iv_len);
784 } 822 }
785 823
786 if (sec) 824 if (sec)
787 ret = test_cipher_jiffies(&desc, enc, p, speed[i].blen, 825 ret = test_cipher_jiffies(&desc, enc, p, *b_size, sec);
788 sec); 826 else
789 else 827 ret = test_cipher_cycles(&desc, enc, p, *b_size);
790 ret = test_cipher_cycles(&desc, enc, p, speed[i].blen);
791 828
792 if (ret) { 829 if (ret) {
793 printk("%s() failed flags=%x\n", e, desc.flags); 830 printk("%s() failed flags=%x\n", e, desc.flags);
794 break; 831 break;
795 } 832 }
796 } 833 b_size++;
834 i++;
835 } while (*b_size);
836 keysize++;
837 } while (*keysize);
797 838
798out: 839out:
799 crypto_free_blkcipher(tfm); 840 crypto_free_blkcipher(tfm);
@@ -1041,22 +1082,10 @@ static void test_comp(char *algo, struct comp_testvec *ctemplate,
1041 unsigned int i; 1082 unsigned int i;
1042 char result[COMP_BUF_SIZE]; 1083 char result[COMP_BUF_SIZE];
1043 struct crypto_comp *tfm; 1084 struct crypto_comp *tfm;
1044 struct comp_testvec *tv;
1045 unsigned int tsize; 1085 unsigned int tsize;
1046 1086
1047 printk("\ntesting %s compression\n", algo); 1087 printk("\ntesting %s compression\n", algo);
1048 1088
1049 tsize = sizeof(struct comp_testvec);
1050 tsize *= ctcount;
1051 if (tsize > TVMEMSIZE) {
1052 printk("template (%u) too big for tvmem (%u)\n", tsize,
1053 TVMEMSIZE);
1054 return;
1055 }
1056
1057 memcpy(tvmem, ctemplate, tsize);
1058 tv = (void *)tvmem;
1059
1060 tfm = crypto_alloc_comp(algo, 0, CRYPTO_ALG_ASYNC); 1089 tfm = crypto_alloc_comp(algo, 0, CRYPTO_ALG_ASYNC);
1061 if (IS_ERR(tfm)) { 1090 if (IS_ERR(tfm)) {
1062 printk("failed to load transform for %s\n", algo); 1091 printk("failed to load transform for %s\n", algo);
@@ -1069,8 +1098,8 @@ static void test_comp(char *algo, struct comp_testvec *ctemplate,
1069 printk("test %u:\n", i + 1); 1098 printk("test %u:\n", i + 1);
1070 memset(result, 0, sizeof (result)); 1099 memset(result, 0, sizeof (result));
1071 1100
1072 ilen = tv[i].inlen; 1101 ilen = ctemplate[i].inlen;
1073 ret = crypto_comp_compress(tfm, tv[i].input, 1102 ret = crypto_comp_compress(tfm, ctemplate[i].input,
1074 ilen, result, &dlen); 1103 ilen, result, &dlen);
1075 if (ret) { 1104 if (ret) {
1076 printk("fail: ret=%d\n", ret); 1105 printk("fail: ret=%d\n", ret);
@@ -1078,7 +1107,7 @@ static void test_comp(char *algo, struct comp_testvec *ctemplate,
1078 } 1107 }
1079 hexdump(result, dlen); 1108 hexdump(result, dlen);
1080 printk("%s (ratio %d:%d)\n", 1109 printk("%s (ratio %d:%d)\n",
1081 memcmp(result, tv[i].output, dlen) ? "fail" : "pass", 1110 memcmp(result, ctemplate[i].output, dlen) ? "fail" : "pass",
1082 ilen, dlen); 1111 ilen, dlen);
1083 } 1112 }
1084 1113
@@ -1092,17 +1121,14 @@ static void test_comp(char *algo, struct comp_testvec *ctemplate,
1092 goto out; 1121 goto out;
1093 } 1122 }
1094 1123
1095 memcpy(tvmem, dtemplate, tsize);
1096 tv = (void *)tvmem;
1097
1098 for (i = 0; i < dtcount; i++) { 1124 for (i = 0; i < dtcount; i++) {
1099 int ilen, ret, dlen = COMP_BUF_SIZE; 1125 int ilen, ret, dlen = COMP_BUF_SIZE;
1100 1126
1101 printk("test %u:\n", i + 1); 1127 printk("test %u:\n", i + 1);
1102 memset(result, 0, sizeof (result)); 1128 memset(result, 0, sizeof (result));
1103 1129
1104 ilen = tv[i].inlen; 1130 ilen = dtemplate[i].inlen;
1105 ret = crypto_comp_decompress(tfm, tv[i].input, 1131 ret = crypto_comp_decompress(tfm, dtemplate[i].input,
1106 ilen, result, &dlen); 1132 ilen, result, &dlen);
1107 if (ret) { 1133 if (ret) {
1108 printk("fail: ret=%d\n", ret); 1134 printk("fail: ret=%d\n", ret);
@@ -1110,7 +1136,7 @@ static void test_comp(char *algo, struct comp_testvec *ctemplate,
1110 } 1136 }
1111 hexdump(result, dlen); 1137 hexdump(result, dlen);
1112 printk("%s (ratio %d:%d)\n", 1138 printk("%s (ratio %d:%d)\n",
1113 memcmp(result, tv[i].output, dlen) ? "fail" : "pass", 1139 memcmp(result, dtemplate[i].output, dlen) ? "fail" : "pass",
1114 ilen, dlen); 1140 ilen, dlen);
1115 } 1141 }
1116out: 1142out:
@@ -1301,6 +1327,12 @@ static void do_test(void)
1301 test_cipher("ecb(seed)", DECRYPT, seed_dec_tv_template, 1327 test_cipher("ecb(seed)", DECRYPT, seed_dec_tv_template,
1302 SEED_DEC_TEST_VECTORS); 1328 SEED_DEC_TEST_VECTORS);
1303 1329
1330 //CTS
1331 test_cipher("cts(cbc(aes))", ENCRYPT, cts_mode_enc_tv_template,
1332 CTS_MODE_ENC_TEST_VECTORS);
1333 test_cipher("cts(cbc(aes))", DECRYPT, cts_mode_dec_tv_template,
1334 CTS_MODE_DEC_TEST_VECTORS);
1335
1304 test_hash("sha384", sha384_tv_template, SHA384_TEST_VECTORS); 1336 test_hash("sha384", sha384_tv_template, SHA384_TEST_VECTORS);
1305 test_hash("sha512", sha512_tv_template, SHA512_TEST_VECTORS); 1337 test_hash("sha512", sha512_tv_template, SHA512_TEST_VECTORS);
1306 test_hash("wp512", wp512_tv_template, WP512_TEST_VECTORS); 1338 test_hash("wp512", wp512_tv_template, WP512_TEST_VECTORS);
@@ -1584,6 +1616,13 @@ static void do_test(void)
1584 AES_CCM_DEC_TEST_VECTORS); 1616 AES_CCM_DEC_TEST_VECTORS);
1585 break; 1617 break;
1586 1618
1619 case 38:
1620 test_cipher("cts(cbc(aes))", ENCRYPT, cts_mode_enc_tv_template,
1621 CTS_MODE_ENC_TEST_VECTORS);
1622 test_cipher("cts(cbc(aes))", DECRYPT, cts_mode_dec_tv_template,
1623 CTS_MODE_DEC_TEST_VECTORS);
1624 break;
1625
1587 case 100: 1626 case 100:
1588 test_hash("hmac(md5)", hmac_md5_tv_template, 1627 test_hash("hmac(md5)", hmac_md5_tv_template,
1589 HMAC_MD5_TEST_VECTORS); 1628 HMAC_MD5_TEST_VECTORS);
@@ -1621,89 +1660,85 @@ static void do_test(void)
1621 1660
1622 case 200: 1661 case 200:
1623 test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0, 1662 test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0,
1624 aes_speed_template); 1663 speed_template_16_24_32);
1625 test_cipher_speed("ecb(aes)", DECRYPT, sec, NULL, 0, 1664 test_cipher_speed("ecb(aes)", DECRYPT, sec, NULL, 0,
1626 aes_speed_template); 1665 speed_template_16_24_32);
1627 test_cipher_speed("cbc(aes)", ENCRYPT, sec, NULL, 0, 1666 test_cipher_speed("cbc(aes)", ENCRYPT, sec, NULL, 0,
1628 aes_speed_template); 1667 speed_template_16_24_32);
1629 test_cipher_speed("cbc(aes)", DECRYPT, sec, NULL, 0, 1668 test_cipher_speed("cbc(aes)", DECRYPT, sec, NULL, 0,
1630 aes_speed_template); 1669 speed_template_16_24_32);
1631 test_cipher_speed("lrw(aes)", ENCRYPT, sec, NULL, 0, 1670 test_cipher_speed("lrw(aes)", ENCRYPT, sec, NULL, 0,
1632 aes_lrw_speed_template); 1671 speed_template_32_40_48);
1633 test_cipher_speed("lrw(aes)", DECRYPT, sec, NULL, 0, 1672 test_cipher_speed("lrw(aes)", DECRYPT, sec, NULL, 0,
1634 aes_lrw_speed_template); 1673 speed_template_32_40_48);
1635 test_cipher_speed("xts(aes)", ENCRYPT, sec, NULL, 0, 1674 test_cipher_speed("xts(aes)", ENCRYPT, sec, NULL, 0,
1636 aes_xts_speed_template); 1675 speed_template_32_48_64);
1637 test_cipher_speed("xts(aes)", DECRYPT, sec, NULL, 0, 1676 test_cipher_speed("xts(aes)", DECRYPT, sec, NULL, 0,
1638 aes_xts_speed_template); 1677 speed_template_32_48_64);
1639 break; 1678 break;
1640 1679
1641 case 201: 1680 case 201:
1642 test_cipher_speed("ecb(des3_ede)", ENCRYPT, sec, 1681 test_cipher_speed("ecb(des3_ede)", ENCRYPT, sec,
1643 des3_ede_enc_tv_template, 1682 des3_ede_enc_tv_template, DES3_EDE_ENC_TEST_VECTORS,
1644 DES3_EDE_ENC_TEST_VECTORS, 1683 speed_template_24);
1645 des3_ede_speed_template);
1646 test_cipher_speed("ecb(des3_ede)", DECRYPT, sec, 1684 test_cipher_speed("ecb(des3_ede)", DECRYPT, sec,
1647 des3_ede_dec_tv_template, 1685 des3_ede_enc_tv_template, DES3_EDE_ENC_TEST_VECTORS,
1648 DES3_EDE_DEC_TEST_VECTORS, 1686 speed_template_24);
1649 des3_ede_speed_template);
1650 test_cipher_speed("cbc(des3_ede)", ENCRYPT, sec, 1687 test_cipher_speed("cbc(des3_ede)", ENCRYPT, sec,
1651 des3_ede_enc_tv_template, 1688 des3_ede_enc_tv_template, DES3_EDE_ENC_TEST_VECTORS,
1652 DES3_EDE_ENC_TEST_VECTORS, 1689 speed_template_24);
1653 des3_ede_speed_template);
1654 test_cipher_speed("cbc(des3_ede)", DECRYPT, sec, 1690 test_cipher_speed("cbc(des3_ede)", DECRYPT, sec,
1655 des3_ede_dec_tv_template, 1691 des3_ede_enc_tv_template, DES3_EDE_ENC_TEST_VECTORS,
1656 DES3_EDE_DEC_TEST_VECTORS, 1692 speed_template_24);
1657 des3_ede_speed_template);
1658 break; 1693 break;
1659 1694
1660 case 202: 1695 case 202:
1661 test_cipher_speed("ecb(twofish)", ENCRYPT, sec, NULL, 0, 1696 test_cipher_speed("ecb(twofish)", ENCRYPT, sec, NULL, 0,
1662 twofish_speed_template); 1697 speed_template_16_24_32);
1663 test_cipher_speed("ecb(twofish)", DECRYPT, sec, NULL, 0, 1698 test_cipher_speed("ecb(twofish)", DECRYPT, sec, NULL, 0,
1664 twofish_speed_template); 1699 speed_template_16_24_32);
1665 test_cipher_speed("cbc(twofish)", ENCRYPT, sec, NULL, 0, 1700 test_cipher_speed("cbc(twofish)", ENCRYPT, sec, NULL, 0,
1666 twofish_speed_template); 1701 speed_template_16_24_32);
1667 test_cipher_speed("cbc(twofish)", DECRYPT, sec, NULL, 0, 1702 test_cipher_speed("cbc(twofish)", DECRYPT, sec, NULL, 0,
1668 twofish_speed_template); 1703 speed_template_16_24_32);
1669 break; 1704 break;
1670 1705
1671 case 203: 1706 case 203:
1672 test_cipher_speed("ecb(blowfish)", ENCRYPT, sec, NULL, 0, 1707 test_cipher_speed("ecb(blowfish)", ENCRYPT, sec, NULL, 0,
1673 blowfish_speed_template); 1708 speed_template_8_32);
1674 test_cipher_speed("ecb(blowfish)", DECRYPT, sec, NULL, 0, 1709 test_cipher_speed("ecb(blowfish)", DECRYPT, sec, NULL, 0,
1675 blowfish_speed_template); 1710 speed_template_8_32);
1676 test_cipher_speed("cbc(blowfish)", ENCRYPT, sec, NULL, 0, 1711 test_cipher_speed("cbc(blowfish)", ENCRYPT, sec, NULL, 0,
1677 blowfish_speed_template); 1712 speed_template_8_32);
1678 test_cipher_speed("cbc(blowfish)", DECRYPT, sec, NULL, 0, 1713 test_cipher_speed("cbc(blowfish)", DECRYPT, sec, NULL, 0,
1679 blowfish_speed_template); 1714 speed_template_8_32);
1680 break; 1715 break;
1681 1716
1682 case 204: 1717 case 204:
1683 test_cipher_speed("ecb(des)", ENCRYPT, sec, NULL, 0, 1718 test_cipher_speed("ecb(des)", ENCRYPT, sec, NULL, 0,
1684 des_speed_template); 1719 speed_template_8);
1685 test_cipher_speed("ecb(des)", DECRYPT, sec, NULL, 0, 1720 test_cipher_speed("ecb(des)", DECRYPT, sec, NULL, 0,
1686 des_speed_template); 1721 speed_template_8);
1687 test_cipher_speed("cbc(des)", ENCRYPT, sec, NULL, 0, 1722 test_cipher_speed("cbc(des)", ENCRYPT, sec, NULL, 0,
1688 des_speed_template); 1723 speed_template_8);
1689 test_cipher_speed("cbc(des)", DECRYPT, sec, NULL, 0, 1724 test_cipher_speed("cbc(des)", DECRYPT, sec, NULL, 0,
1690 des_speed_template); 1725 speed_template_8);
1691 break; 1726 break;
1692 1727
1693 case 205: 1728 case 205:
1694 test_cipher_speed("ecb(camellia)", ENCRYPT, sec, NULL, 0, 1729 test_cipher_speed("ecb(camellia)", ENCRYPT, sec, NULL, 0,
1695 camellia_speed_template); 1730 speed_template_16_24_32);
1696 test_cipher_speed("ecb(camellia)", DECRYPT, sec, NULL, 0, 1731 test_cipher_speed("ecb(camellia)", DECRYPT, sec, NULL, 0,
1697 camellia_speed_template); 1732 speed_template_16_24_32);
1698 test_cipher_speed("cbc(camellia)", ENCRYPT, sec, NULL, 0, 1733 test_cipher_speed("cbc(camellia)", ENCRYPT, sec, NULL, 0,
1699 camellia_speed_template); 1734 speed_template_16_24_32);
1700 test_cipher_speed("cbc(camellia)", DECRYPT, sec, NULL, 0, 1735 test_cipher_speed("cbc(camellia)", DECRYPT, sec, NULL, 0,
1701 camellia_speed_template); 1736 speed_template_16_24_32);
1702 break; 1737 break;
1703 1738
1704 case 206: 1739 case 206:
1705 test_cipher_speed("salsa20", ENCRYPT, sec, NULL, 0, 1740 test_cipher_speed("salsa20", ENCRYPT, sec, NULL, 0,
1706 salsa20_speed_template); 1741 speed_template_16_32);
1707 break; 1742 break;
1708 1743
1709 case 300: 1744 case 300:
@@ -1775,7 +1810,7 @@ static void do_test(void)
1775 } 1810 }
1776} 1811}
1777 1812
1778static int __init init(void) 1813static int __init tcrypt_mod_init(void)
1779{ 1814{
1780 int err = -ENOMEM; 1815 int err = -ENOMEM;
1781 1816
@@ -1814,10 +1849,10 @@ static int __init init(void)
1814 * If an init function is provided, an exit function must also be provided 1849 * If an init function is provided, an exit function must also be provided
1815 * to allow module unload. 1850 * to allow module unload.
1816 */ 1851 */
1817static void __exit fini(void) { } 1852static void __exit tcrypt_mod_fini(void) { }
1818 1853
1819module_init(init); 1854module_init(tcrypt_mod_init);
1820module_exit(fini); 1855module_exit(tcrypt_mod_fini);
1821 1856
1822module_param(mode, int, 0); 1857module_param(mode, int, 0);
1823module_param(sec, uint, 0); 1858module_param(sec, uint, 0);
diff --git a/crypto/tcrypt.h b/crypto/tcrypt.h
index f785e5618e11..47bc0ecb8978 100644
--- a/crypto/tcrypt.h
+++ b/crypto/tcrypt.h
@@ -31,9 +31,9 @@
31 31
32struct hash_testvec { 32struct hash_testvec {
33 /* only used with keyed hash algorithms */ 33 /* only used with keyed hash algorithms */
34 char key[132] __attribute__ ((__aligned__(4))); 34 char *key;
35 char plaintext[240]; 35 char *plaintext;
36 char digest[MAX_DIGEST_SIZE]; 36 char *digest;
37 unsigned char tap[MAX_TAP]; 37 unsigned char tap[MAX_TAP];
38 unsigned char psize; 38 unsigned char psize;
39 unsigned char np; 39 unsigned char np;
@@ -41,10 +41,10 @@ struct hash_testvec {
41}; 41};
42 42
43struct cipher_testvec { 43struct cipher_testvec {
44 char key[MAX_KEYLEN] __attribute__ ((__aligned__(4))); 44 char *key;
45 char iv[MAX_IVLEN]; 45 char *iv;
46 char input[4100]; 46 char *input;
47 char result[4100]; 47 char *result;
48 unsigned char tap[MAX_TAP]; 48 unsigned char tap[MAX_TAP];
49 int np; 49 int np;
50 unsigned char fail; 50 unsigned char fail;
@@ -55,11 +55,11 @@ struct cipher_testvec {
55}; 55};
56 56
57struct aead_testvec { 57struct aead_testvec {
58 char key[MAX_KEYLEN] __attribute__ ((__aligned__(4))); 58 char *key;
59 char iv[MAX_IVLEN]; 59 char *iv;
60 char input[512]; 60 char *input;
61 char assoc[512]; 61 char *assoc;
62 char result[512]; 62 char *result;
63 unsigned char tap[MAX_TAP]; 63 unsigned char tap[MAX_TAP];
64 unsigned char atap[MAX_TAP]; 64 unsigned char atap[MAX_TAP];
65 int np; 65 int np;
@@ -72,16 +72,13 @@ struct aead_testvec {
72 unsigned short rlen; 72 unsigned short rlen;
73}; 73};
74 74
75struct cipher_speed {
76 unsigned char klen;
77 unsigned int blen;
78};
79
80struct hash_speed { 75struct hash_speed {
81 unsigned int blen; /* buffer length */ 76 unsigned int blen; /* buffer length */
82 unsigned int plen; /* per-update length */ 77 unsigned int plen; /* per-update length */
83}; 78};
84 79
80static char zeroed_string[48];
81
85/* 82/*
86 * MD4 test vectors from RFC1320 83 * MD4 test vectors from RFC1320
87 */ 84 */
@@ -90,41 +87,41 @@ struct hash_speed {
90static struct hash_testvec md4_tv_template [] = { 87static struct hash_testvec md4_tv_template [] = {
91 { 88 {
92 .plaintext = "", 89 .plaintext = "",
93 .digest = { 0x31, 0xd6, 0xcf, 0xe0, 0xd1, 0x6a, 0xe9, 0x31, 90 .digest = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31"
94 0xb7, 0x3c, 0x59, 0xd7, 0xe0, 0xc0, 0x89, 0xc0 }, 91 "\xb7\x3c\x59\xd7\xe0\xc0\x89\xc0",
95 }, { 92 }, {
96 .plaintext = "a", 93 .plaintext = "a",
97 .psize = 1, 94 .psize = 1,
98 .digest = { 0xbd, 0xe5, 0x2c, 0xb3, 0x1d, 0xe3, 0x3e, 0x46, 95 .digest = "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46"
99 0x24, 0x5e, 0x05, 0xfb, 0xdb, 0xd6, 0xfb, 0x24 }, 96 "\x24\x5e\x05\xfb\xdb\xd6\xfb\x24",
100 }, { 97 }, {
101 .plaintext = "abc", 98 .plaintext = "abc",
102 .psize = 3, 99 .psize = 3,
103 .digest = { 0xa4, 0x48, 0x01, 0x7a, 0xaf, 0x21, 0xd8, 0x52, 100 .digest = "\xa4\x48\x01\x7a\xaf\x21\xd8\x52"
104 0x5f, 0xc1, 0x0a, 0xe8, 0x7a, 0xa6, 0x72, 0x9d }, 101 "\x5f\xc1\x0a\xe8\x7a\xa6\x72\x9d",
105 }, { 102 }, {
106 .plaintext = "message digest", 103 .plaintext = "message digest",
107 .psize = 14, 104 .psize = 14,
108 .digest = { 0xd9, 0x13, 0x0a, 0x81, 0x64, 0x54, 0x9f, 0xe8, 105 .digest = "\xd9\x13\x0a\x81\x64\x54\x9f\xe8"
109 0x18, 0x87, 0x48, 0x06, 0xe1, 0xc7, 0x01, 0x4b }, 106 "\x18\x87\x48\x06\xe1\xc7\x01\x4b",
110 }, { 107 }, {
111 .plaintext = "abcdefghijklmnopqrstuvwxyz", 108 .plaintext = "abcdefghijklmnopqrstuvwxyz",
112 .psize = 26, 109 .psize = 26,
113 .digest = { 0xd7, 0x9e, 0x1c, 0x30, 0x8a, 0xa5, 0xbb, 0xcd, 110 .digest = "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd"
114 0xee, 0xa8, 0xed, 0x63, 0xdf, 0x41, 0x2d, 0xa9 }, 111 "\xee\xa8\xed\x63\xdf\x41\x2d\xa9",
115 .np = 2, 112 .np = 2,
116 .tap = { 13, 13 }, 113 .tap = { 13, 13 },
117 }, { 114 }, {
118 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 115 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
119 .psize = 62, 116 .psize = 62,
120 .digest = { 0x04, 0x3f, 0x85, 0x82, 0xf2, 0x41, 0xdb, 0x35, 117 .digest = "\x04\x3f\x85\x82\xf2\x41\xdb\x35"
121 0x1c, 0xe6, 0x27, 0xe1, 0x53, 0xe7, 0xf0, 0xe4 }, 118 "\x1c\xe6\x27\xe1\x53\xe7\xf0\xe4",
122 }, { 119 }, {
123 .plaintext = "123456789012345678901234567890123456789012345678901234567890123" 120 .plaintext = "123456789012345678901234567890123456789012345678901234567890123"
124 "45678901234567890", 121 "45678901234567890",
125 .psize = 80, 122 .psize = 80,
126 .digest = { 0xe3, 0x3b, 0x4d, 0xdc, 0x9c, 0x38, 0xf2, 0x19, 123 .digest = "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19"
127 0x9c, 0x3e, 0x7b, 0x16, 0x4f, 0xcc, 0x05, 0x36 }, 124 "\x9c\x3e\x7b\x16\x4f\xcc\x05\x36",
128 }, 125 },
129}; 126};
130 127
@@ -135,41 +132,41 @@ static struct hash_testvec md4_tv_template [] = {
135 132
136static struct hash_testvec md5_tv_template[] = { 133static struct hash_testvec md5_tv_template[] = {
137 { 134 {
138 .digest = { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04, 135 .digest = "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04"
139 0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e }, 136 "\xe9\x80\x09\x98\xec\xf8\x42\x7e",
140 }, { 137 }, {
141 .plaintext = "a", 138 .plaintext = "a",
142 .psize = 1, 139 .psize = 1,
143 .digest = { 0x0c, 0xc1, 0x75, 0xb9, 0xc0, 0xf1, 0xb6, 0xa8, 140 .digest = "\x0c\xc1\x75\xb9\xc0\xf1\xb6\xa8"
144 0x31, 0xc3, 0x99, 0xe2, 0x69, 0x77, 0x26, 0x61 }, 141 "\x31\xc3\x99\xe2\x69\x77\x26\x61",
145 }, { 142 }, {
146 .plaintext = "abc", 143 .plaintext = "abc",
147 .psize = 3, 144 .psize = 3,
148 .digest = { 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0, 145 .digest = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0"
149 0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72 }, 146 "\xd6\x96\x3f\x7d\x28\xe1\x7f\x72",
150 }, { 147 }, {
151 .plaintext = "message digest", 148 .plaintext = "message digest",
152 .psize = 14, 149 .psize = 14,
153 .digest = { 0xf9, 0x6b, 0x69, 0x7d, 0x7c, 0xb7, 0x93, 0x8d, 150 .digest = "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d"
154 0x52, 0x5a, 0x2f, 0x31, 0xaa, 0xf1, 0x61, 0xd0 }, 151 "\x52\x5a\x2f\x31\xaa\xf1\x61\xd0",
155 }, { 152 }, {
156 .plaintext = "abcdefghijklmnopqrstuvwxyz", 153 .plaintext = "abcdefghijklmnopqrstuvwxyz",
157 .psize = 26, 154 .psize = 26,
158 .digest = { 0xc3, 0xfc, 0xd3, 0xd7, 0x61, 0x92, 0xe4, 0x00, 155 .digest = "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00"
159 0x7d, 0xfb, 0x49, 0x6c, 0xca, 0x67, 0xe1, 0x3b }, 156 "\x7d\xfb\x49\x6c\xca\x67\xe1\x3b",
160 .np = 2, 157 .np = 2,
161 .tap = {13, 13} 158 .tap = {13, 13}
162 }, { 159 }, {
163 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 160 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
164 .psize = 62, 161 .psize = 62,
165 .digest = { 0xd1, 0x74, 0xab, 0x98, 0xd2, 0x77, 0xd9, 0xf5, 162 .digest = "\xd1\x74\xab\x98\xd2\x77\xd9\xf5"
166 0xa5, 0x61, 0x1c, 0x2c, 0x9f, 0x41, 0x9d, 0x9f }, 163 "\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f",
167 }, { 164 }, {
168 .plaintext = "12345678901234567890123456789012345678901234567890123456789012" 165 .plaintext = "12345678901234567890123456789012345678901234567890123456789012"
169 "345678901234567890", 166 "345678901234567890",
170 .psize = 80, 167 .psize = 80,
171 .digest = { 0x57, 0xed, 0xf4, 0xa2, 0x2b, 0xe3, 0xc9, 0x55, 168 .digest = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55"
172 0xac, 0x49, 0xda, 0x2e, 0x21, 0x07, 0xb6, 0x7a }, 169 "\xac\x49\xda\x2e\x21\x07\xb6\x7a",
173 } 170 }
174}; 171};
175 172
@@ -182,13 +179,13 @@ static struct hash_testvec sha1_tv_template[] = {
182 { 179 {
183 .plaintext = "abc", 180 .plaintext = "abc",
184 .psize = 3, 181 .psize = 3,
185 .digest = { 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, 0xba, 0x3e, 182 .digest = "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e"
186 0x25, 0x71, 0x78, 0x50, 0xc2, 0x6c, 0x9c, 0xd0, 0xd8, 0x9d }, 183 "\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d",
187 }, { 184 }, {
188 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 185 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
189 .psize = 56, 186 .psize = 56,
190 .digest = { 0x84, 0x98, 0x3e, 0x44, 0x1c, 0x3b, 0xd2, 0x6e, 0xba, 0xae, 187 .digest = "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae"
191 0x4a, 0xa1, 0xf9, 0x51, 0x29, 0xe5, 0xe5, 0x46, 0x70, 0xf1 }, 188 "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
192 .np = 2, 189 .np = 2,
193 .tap = { 28, 28 } 190 .tap = { 28, 28 }
194 } 191 }
@@ -204,18 +201,18 @@ static struct hash_testvec sha224_tv_template[] = {
204 { 201 {
205 .plaintext = "abc", 202 .plaintext = "abc",
206 .psize = 3, 203 .psize = 3,
207 .digest = { 0x23, 0x09, 0x7D, 0x22, 0x34, 0x05, 0xD8, 0x22, 204 .digest = "\x23\x09\x7D\x22\x34\x05\xD8\x22"
208 0x86, 0x42, 0xA4, 0x77, 0xBD, 0xA2, 0x55, 0xB3, 205 "\x86\x42\xA4\x77\xBD\xA2\x55\xB3"
209 0x2A, 0xAD, 0xBC, 0xE4, 0xBD, 0xA0, 0xB3, 0xF7, 206 "\x2A\xAD\xBC\xE4\xBD\xA0\xB3\xF7"
210 0xE3, 0x6C, 0x9D, 0xA7}, 207 "\xE3\x6C\x9D\xA7",
211 }, { 208 }, {
212 .plaintext = 209 .plaintext =
213 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 210 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
214 .psize = 56, 211 .psize = 56,
215 .digest = { 0x75, 0x38, 0x8B, 0x16, 0x51, 0x27, 0x76, 0xCC, 212 .digest = "\x75\x38\x8B\x16\x51\x27\x76\xCC"
216 0x5D, 0xBA, 0x5D, 0xA1, 0xFD, 0x89, 0x01, 0x50, 213 "\x5D\xBA\x5D\xA1\xFD\x89\x01\x50"
217 0xB0, 0xC6, 0x45, 0x5C, 0xB4, 0xF5, 0x8B, 0x19, 214 "\xB0\xC6\x45\x5C\xB4\xF5\x8B\x19"
218 0x52, 0x52, 0x25, 0x25 }, 215 "\x52\x52\x25\x25",
219 .np = 2, 216 .np = 2,
220 .tap = { 28, 28 } 217 .tap = { 28, 28 }
221 } 218 }
@@ -230,17 +227,17 @@ static struct hash_testvec sha256_tv_template[] = {
230 { 227 {
231 .plaintext = "abc", 228 .plaintext = "abc",
232 .psize = 3, 229 .psize = 3,
233 .digest = { 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 230 .digest = "\xba\x78\x16\xbf\x8f\x01\xcf\xea"
234 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, 231 "\x41\x41\x40\xde\x5d\xae\x22\x23"
235 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 232 "\xb0\x03\x61\xa3\x96\x17\x7a\x9c"
236 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad }, 233 "\xb4\x10\xff\x61\xf2\x00\x15\xad",
237 }, { 234 }, {
238 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 235 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
239 .psize = 56, 236 .psize = 56,
240 .digest = { 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8, 237 .digest = "\x24\x8d\x6a\x61\xd2\x06\x38\xb8"
241 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39, 238 "\xe5\xc0\x26\x93\x0c\x3e\x60\x39"
242 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67, 239 "\xa3\x3c\xe4\x59\x64\xff\x21\x67"
243 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1 }, 240 "\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
244 .np = 2, 241 .np = 2,
245 .tap = { 28, 28 } 242 .tap = { 28, 28 }
246 }, 243 },
@@ -255,41 +252,41 @@ static struct hash_testvec sha384_tv_template[] = {
255 { 252 {
256 .plaintext= "abc", 253 .plaintext= "abc",
257 .psize = 3, 254 .psize = 3,
258 .digest = { 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b, 255 .digest = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b"
259 0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07, 256 "\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
260 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63, 257 "\x27\x2c\x32\xab\x0e\xde\xd1\x63"
261 0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed, 258 "\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
262 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23, 259 "\x80\x86\x07\x2b\xa1\xe7\xcc\x23"
263 0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7 }, 260 "\x58\xba\xec\xa1\x34\xc8\x25\xa7",
264 }, { 261 }, {
265 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 262 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
266 .psize = 56, 263 .psize = 56,
267 .digest = { 0x33, 0x91, 0xfd, 0xdd, 0xfc, 0x8d, 0xc7, 0x39, 264 .digest = "\x33\x91\xfd\xdd\xfc\x8d\xc7\x39"
268 0x37, 0x07, 0xa6, 0x5b, 0x1b, 0x47, 0x09, 0x39, 265 "\x37\x07\xa6\x5b\x1b\x47\x09\x39"
269 0x7c, 0xf8, 0xb1, 0xd1, 0x62, 0xaf, 0x05, 0xab, 266 "\x7c\xf8\xb1\xd1\x62\xaf\x05\xab"
270 0xfe, 0x8f, 0x45, 0x0d, 0xe5, 0xf3, 0x6b, 0xc6, 267 "\xfe\x8f\x45\x0d\xe5\xf3\x6b\xc6"
271 0xb0, 0x45, 0x5a, 0x85, 0x20, 0xbc, 0x4e, 0x6f, 268 "\xb0\x45\x5a\x85\x20\xbc\x4e\x6f"
272 0x5f, 0xe9, 0x5b, 0x1f, 0xe3, 0xc8, 0x45, 0x2b}, 269 "\x5f\xe9\x5b\x1f\xe3\xc8\x45\x2b",
273 }, { 270 }, {
274 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn" 271 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
275 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 272 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
276 .psize = 112, 273 .psize = 112,
277 .digest = { 0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8, 274 .digest = "\x09\x33\x0c\x33\xf7\x11\x47\xe8"
278 0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47, 275 "\x3d\x19\x2f\xc7\x82\xcd\x1b\x47"
279 0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2, 276 "\x53\x11\x1b\x17\x3b\x3b\x05\xd2"
280 0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12, 277 "\x2f\xa0\x80\x86\xe3\xb0\xf7\x12"
281 0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9, 278 "\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9"
282 0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39 }, 279 "\x66\xc3\xe9\xfa\x91\x74\x60\x39",
283 }, { 280 }, {
284 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd" 281 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
285 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz", 282 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
286 .psize = 104, 283 .psize = 104,
287 .digest = { 0x3d, 0x20, 0x89, 0x73, 0xab, 0x35, 0x08, 0xdb, 284 .digest = "\x3d\x20\x89\x73\xab\x35\x08\xdb"
288 0xbd, 0x7e, 0x2c, 0x28, 0x62, 0xba, 0x29, 0x0a, 285 "\xbd\x7e\x2c\x28\x62\xba\x29\x0a"
289 0xd3, 0x01, 0x0e, 0x49, 0x78, 0xc1, 0x98, 0xdc, 286 "\xd3\x01\x0e\x49\x78\xc1\x98\xdc"
290 0x4d, 0x8f, 0xd0, 0x14, 0xe5, 0x82, 0x82, 0x3a, 287 "\x4d\x8f\xd0\x14\xe5\x82\x82\x3a"
291 0x89, 0xe1, 0x6f, 0x9b, 0x2a, 0x7b, 0xbc, 0x1a, 288 "\x89\xe1\x6f\x9b\x2a\x7b\xbc\x1a"
292 0xc9, 0x38, 0xe2, 0xd1, 0x99, 0xe8, 0xbe, 0xa4 }, 289 "\xc9\x38\xe2\xd1\x99\xe8\xbe\xa4",
293 .np = 4, 290 .np = 4,
294 .tap = { 26, 26, 26, 26 } 291 .tap = { 26, 26, 26, 26 }
295 }, 292 },
@@ -304,49 +301,49 @@ static struct hash_testvec sha512_tv_template[] = {
304 { 301 {
305 .plaintext = "abc", 302 .plaintext = "abc",
306 .psize = 3, 303 .psize = 3,
307 .digest = { 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, 304 .digest = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba"
308 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31, 305 "\xcc\x41\x73\x49\xae\x20\x41\x31"
309 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, 306 "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2"
310 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a, 307 "\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a"
311 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, 308 "\x21\x92\x99\x2a\x27\x4f\xc1\xa8"
312 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd, 309 "\x36\xba\x3c\x23\xa3\xfe\xeb\xbd"
313 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e, 310 "\x45\x4d\x44\x23\x64\x3c\xe8\x0e"
314 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f }, 311 "\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f",
315 }, { 312 }, {
316 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 313 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
317 .psize = 56, 314 .psize = 56,
318 .digest = { 0x20, 0x4a, 0x8f, 0xc6, 0xdd, 0xa8, 0x2f, 0x0a, 315 .digest = "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a"
319 0x0c, 0xed, 0x7b, 0xeb, 0x8e, 0x08, 0xa4, 0x16, 316 "\x0c\xed\x7b\xeb\x8e\x08\xa4\x16"
320 0x57, 0xc1, 0x6e, 0xf4, 0x68, 0xb2, 0x28, 0xa8, 317 "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8"
321 0x27, 0x9b, 0xe3, 0x31, 0xa7, 0x03, 0xc3, 0x35, 318 "\x27\x9b\xe3\x31\xa7\x03\xc3\x35"
322 0x96, 0xfd, 0x15, 0xc1, 0x3b, 0x1b, 0x07, 0xf9, 319 "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9"
323 0xaa, 0x1d, 0x3b, 0xea, 0x57, 0x78, 0x9c, 0xa0, 320 "\xaa\x1d\x3b\xea\x57\x78\x9c\xa0"
324 0x31, 0xad, 0x85, 0xc7, 0xa7, 0x1d, 0xd7, 0x03, 321 "\x31\xad\x85\xc7\xa7\x1d\xd7\x03"
325 0x54, 0xec, 0x63, 0x12, 0x38, 0xca, 0x34, 0x45 }, 322 "\x54\xec\x63\x12\x38\xca\x34\x45",
326 }, { 323 }, {
327 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn" 324 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
328 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 325 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
329 .psize = 112, 326 .psize = 112,
330 .digest = { 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda, 327 .digest = "\x8e\x95\x9b\x75\xda\xe3\x13\xda"
331 0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f, 328 "\x8c\xf4\xf7\x28\x14\xfc\x14\x3f"
332 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1, 329 "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1"
333 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18, 330 "\x72\x99\xae\xad\xb6\x88\x90\x18"
334 0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4, 331 "\x50\x1d\x28\x9e\x49\x00\xf7\xe4"
335 0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a, 332 "\x33\x1b\x99\xde\xc4\xb5\x43\x3a"
336 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54, 333 "\xc7\xd3\x29\xee\xb6\xdd\x26\x54"
337 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09 }, 334 "\x5e\x96\xe5\x5b\x87\x4b\xe9\x09",
338 }, { 335 }, {
339 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd" 336 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
340 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz", 337 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
341 .psize = 104, 338 .psize = 104,
342 .digest = { 0x93, 0x0d, 0x0c, 0xef, 0xcb, 0x30, 0xff, 0x11, 339 .digest = "\x93\x0d\x0c\xef\xcb\x30\xff\x11"
343 0x33, 0xb6, 0x89, 0x81, 0x21, 0xf1, 0xcf, 0x3d, 340 "\x33\xb6\x89\x81\x21\xf1\xcf\x3d"
344 0x27, 0x57, 0x8a, 0xfc, 0xaf, 0xe8, 0x67, 0x7c, 341 "\x27\x57\x8a\xfc\xaf\xe8\x67\x7c"
345 0x52, 0x57, 0xcf, 0x06, 0x99, 0x11, 0xf7, 0x5d, 342 "\x52\x57\xcf\x06\x99\x11\xf7\x5d"
346 0x8f, 0x58, 0x31, 0xb5, 0x6e, 0xbf, 0xda, 0x67, 343 "\x8f\x58\x31\xb5\x6e\xbf\xda\x67"
347 0xb2, 0x78, 0xe6, 0x6d, 0xff, 0x8b, 0x84, 0xfe, 344 "\xb2\x78\xe6\x6d\xff\x8b\x84\xfe"
348 0x2b, 0x28, 0x70, 0xf7, 0x42, 0xa5, 0x80, 0xd8, 345 "\x2b\x28\x70\xf7\x42\xa5\x80\xd8"
349 0xed, 0xb4, 0x19, 0x87, 0x23, 0x28, 0x50, 0xc9 }, 346 "\xed\xb4\x19\x87\x23\x28\x50\xc9",
350 .np = 4, 347 .np = 4,
351 .tap = { 26, 26, 26, 26 } 348 .tap = { 26, 26, 26, 26 }
352 }, 349 },
@@ -364,95 +361,95 @@ static struct hash_testvec wp512_tv_template[] = {
364 { 361 {
365 .plaintext = "", 362 .plaintext = "",
366 .psize = 0, 363 .psize = 0,
367 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66, 364 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
368 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26, 365 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
369 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8, 366 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
370 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7, 367 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
371 0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB, 368 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
372 0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57, 369 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57"
373 0xEA, 0x89, 0x64, 0xE5, 0x9B, 0x63, 0xD9, 0x37, 370 "\xEA\x89\x64\xE5\x9B\x63\xD9\x37"
374 0x08, 0xB1, 0x38, 0xCC, 0x42, 0xA6, 0x6E, 0xB3 }, 371 "\x08\xB1\x38\xCC\x42\xA6\x6E\xB3",
375 372
376 373
377 }, { 374 }, {
378 .plaintext = "a", 375 .plaintext = "a",
379 .psize = 1, 376 .psize = 1,
380 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F, 377 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
381 0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7, 378 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
382 0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69, 379 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
383 0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42, 380 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
384 0xD1, 0x1B, 0xC6, 0x45, 0x41, 0x3A, 0xEF, 0xF6, 381 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
385 0x3A, 0x42, 0x39, 0x1A, 0x39, 0x14, 0x5A, 0x59, 382 "\x3A\x42\x39\x1A\x39\x14\x5A\x59"
386 0x1A, 0x92, 0x20, 0x0D, 0x56, 0x01, 0x95, 0xE5, 383 "\x1A\x92\x20\x0D\x56\x01\x95\xE5"
387 0x3B, 0x47, 0x85, 0x84, 0xFD, 0xAE, 0x23, 0x1A }, 384 "\x3B\x47\x85\x84\xFD\xAE\x23\x1A",
388 }, { 385 }, {
389 .plaintext = "abc", 386 .plaintext = "abc",
390 .psize = 3, 387 .psize = 3,
391 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB, 388 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
392 0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B, 389 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
393 0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72, 390 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
394 0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C, 391 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
395 0x71, 0x81, 0xEE, 0xBD, 0xB6, 0xC5, 0x7E, 0x27, 392 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
396 0x7D, 0x0E, 0x34, 0x95, 0x71, 0x14, 0xCB, 0xD6, 393 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6"
397 0xC7, 0x97, 0xFC, 0x9D, 0x95, 0xD8, 0xB5, 0x82, 394 "\xC7\x97\xFC\x9D\x95\xD8\xB5\x82"
398 0xD2, 0x25, 0x29, 0x20, 0x76, 0xD4, 0xEE, 0xF5 }, 395 "\xD2\x25\x29\x20\x76\xD4\xEE\xF5",
399 }, { 396 }, {
400 .plaintext = "message digest", 397 .plaintext = "message digest",
401 .psize = 14, 398 .psize = 14,
402 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6, 399 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
403 0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC, 400 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
404 0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C, 401 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
405 0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B, 402 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
406 0x84, 0x21, 0x55, 0x76, 0x59, 0xEF, 0x55, 0xC1, 403 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
407 0x06, 0xB4, 0xB5, 0x2A, 0xC5, 0xA4, 0xAA, 0xA6, 404 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6"
408 0x92, 0xED, 0x92, 0x00, 0x52, 0x83, 0x8F, 0x33, 405 "\x92\xED\x92\x00\x52\x83\x8F\x33"
409 0x62, 0xE8, 0x6D, 0xBD, 0x37, 0xA8, 0x90, 0x3E }, 406 "\x62\xE8\x6D\xBD\x37\xA8\x90\x3E",
410 }, { 407 }, {
411 .plaintext = "abcdefghijklmnopqrstuvwxyz", 408 .plaintext = "abcdefghijklmnopqrstuvwxyz",
412 .psize = 26, 409 .psize = 26,
413 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9, 410 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
414 0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A, 411 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
415 0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5, 412 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
416 0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B, 413 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
417 0x08, 0xBF, 0x2A, 0x92, 0x51, 0xC3, 0x0B, 0x6A, 414 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
418 0x0B, 0x8A, 0xAE, 0x86, 0x17, 0x7A, 0xB4, 0xA6, 415 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6"
419 0xF6, 0x8F, 0x67, 0x3E, 0x72, 0x07, 0x86, 0x5D, 416 "\xF6\x8F\x67\x3E\x72\x07\x86\x5D"
420 0x5D, 0x98, 0x19, 0xA3, 0xDB, 0xA4, 0xEB, 0x3B }, 417 "\x5D\x98\x19\xA3\xDB\xA4\xEB\x3B",
421 }, { 418 }, {
422 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 419 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
423 "abcdefghijklmnopqrstuvwxyz0123456789", 420 "abcdefghijklmnopqrstuvwxyz0123456789",
424 .psize = 62, 421 .psize = 62,
425 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B, 422 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
426 0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90, 423 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
427 0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC, 424 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
428 0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E, 425 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
429 0x08, 0xEB, 0xA2, 0x66, 0x29, 0x12, 0x9D, 0x8F, 426 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
430 0xB7, 0xCB, 0x57, 0x21, 0x1B, 0x92, 0x81, 0xA6, 427 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6"
431 0x55, 0x17, 0xCC, 0x87, 0x9D, 0x7B, 0x96, 0x21, 428 "\x55\x17\xCC\x87\x9D\x7B\x96\x21"
432 0x42, 0xC6, 0x5F, 0x5A, 0x7A, 0xF0, 0x14, 0x67 }, 429 "\x42\xC6\x5F\x5A\x7A\xF0\x14\x67",
433 }, { 430 }, {
434 .plaintext = "1234567890123456789012345678901234567890" 431 .plaintext = "1234567890123456789012345678901234567890"
435 "1234567890123456789012345678901234567890", 432 "1234567890123456789012345678901234567890",
436 .psize = 80, 433 .psize = 80,
437 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D, 434 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
438 0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0, 435 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
439 0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6, 436 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
440 0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29, 437 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
441 0x4D, 0x5B, 0xD8, 0xDF, 0x2A, 0x6C, 0x44, 0xE5, 438 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
442 0x38, 0xCD, 0x04, 0x7B, 0x26, 0x81, 0xA5, 0x1A, 439 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A"
443 0x2C, 0x60, 0x48, 0x1E, 0x88, 0xC5, 0xA2, 0x0B, 440 "\x2C\x60\x48\x1E\x88\xC5\xA2\x0B"
444 0x2C, 0x2A, 0x80, 0xCF, 0x3A, 0x9A, 0x08, 0x3B }, 441 "\x2C\x2A\x80\xCF\x3A\x9A\x08\x3B",
445 }, { 442 }, {
446 .plaintext = "abcdbcdecdefdefgefghfghighijhijk", 443 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
447 .psize = 32, 444 .psize = 32,
448 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61, 445 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
449 0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48, 446 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
450 0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62, 447 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
451 0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69, 448 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
452 0x16, 0xBD, 0xC8, 0x03, 0x1B, 0xC5, 0xBE, 0x1B, 449 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
453 0x7B, 0x94, 0x76, 0x39, 0xFE, 0x05, 0x0B, 0x56, 450 "\x7B\x94\x76\x39\xFE\x05\x0B\x56"
454 0x93, 0x9B, 0xAA, 0xA0, 0xAD, 0xFF, 0x9A, 0xE6, 451 "\x93\x9B\xAA\xA0\xAD\xFF\x9A\xE6"
455 0x74, 0x5B, 0x7B, 0x18, 0x1C, 0x3B, 0xE3, 0xFD }, 452 "\x74\x5B\x7B\x18\x1C\x3B\xE3\xFD",
456 }, 453 },
457}; 454};
458 455
@@ -462,79 +459,79 @@ static struct hash_testvec wp384_tv_template[] = {
462 { 459 {
463 .plaintext = "", 460 .plaintext = "",
464 .psize = 0, 461 .psize = 0,
465 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66, 462 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
466 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26, 463 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
467 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8, 464 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
468 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7, 465 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
469 0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB, 466 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
470 0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57 }, 467 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57",
471 468
472 469
473 }, { 470 }, {
474 .plaintext = "a", 471 .plaintext = "a",
475 .psize = 1, 472 .psize = 1,
476 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F, 473 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
477 0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7, 474 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
478 0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69, 475 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
479 0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42, 476 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
480 0xD1, 0x1B, 0xC6, 0x45, 0x41, 0x3A, 0xEF, 0xF6, 477 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
481 0x3A, 0x42, 0x39, 0x1A, 0x39, 0x14, 0x5A, 0x59 }, 478 "\x3A\x42\x39\x1A\x39\x14\x5A\x59",
482 }, { 479 }, {
483 .plaintext = "abc", 480 .plaintext = "abc",
484 .psize = 3, 481 .psize = 3,
485 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB, 482 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
486 0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B, 483 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
487 0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72, 484 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
488 0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C, 485 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
489 0x71, 0x81, 0xEE, 0xBD, 0xB6, 0xC5, 0x7E, 0x27, 486 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
490 0x7D, 0x0E, 0x34, 0x95, 0x71, 0x14, 0xCB, 0xD6 }, 487 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6",
491 }, { 488 }, {
492 .plaintext = "message digest", 489 .plaintext = "message digest",
493 .psize = 14, 490 .psize = 14,
494 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6, 491 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
495 0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC, 492 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
496 0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C, 493 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
497 0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B, 494 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
498 0x84, 0x21, 0x55, 0x76, 0x59, 0xEF, 0x55, 0xC1, 495 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
499 0x06, 0xB4, 0xB5, 0x2A, 0xC5, 0xA4, 0xAA, 0xA6 }, 496 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6",
500 }, { 497 }, {
501 .plaintext = "abcdefghijklmnopqrstuvwxyz", 498 .plaintext = "abcdefghijklmnopqrstuvwxyz",
502 .psize = 26, 499 .psize = 26,
503 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9, 500 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
504 0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A, 501 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
505 0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5, 502 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
506 0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B, 503 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
507 0x08, 0xBF, 0x2A, 0x92, 0x51, 0xC3, 0x0B, 0x6A, 504 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
508 0x0B, 0x8A, 0xAE, 0x86, 0x17, 0x7A, 0xB4, 0xA6 }, 505 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6",
509 }, { 506 }, {
510 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 507 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
511 "abcdefghijklmnopqrstuvwxyz0123456789", 508 "abcdefghijklmnopqrstuvwxyz0123456789",
512 .psize = 62, 509 .psize = 62,
513 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B, 510 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
514 0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90, 511 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
515 0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC, 512 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
516 0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E, 513 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
517 0x08, 0xEB, 0xA2, 0x66, 0x29, 0x12, 0x9D, 0x8F, 514 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
518 0xB7, 0xCB, 0x57, 0x21, 0x1B, 0x92, 0x81, 0xA6 }, 515 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6",
519 }, { 516 }, {
520 .plaintext = "1234567890123456789012345678901234567890" 517 .plaintext = "1234567890123456789012345678901234567890"
521 "1234567890123456789012345678901234567890", 518 "1234567890123456789012345678901234567890",
522 .psize = 80, 519 .psize = 80,
523 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D, 520 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
524 0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0, 521 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
525 0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6, 522 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
526 0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29, 523 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
527 0x4D, 0x5B, 0xD8, 0xDF, 0x2A, 0x6C, 0x44, 0xE5, 524 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
528 0x38, 0xCD, 0x04, 0x7B, 0x26, 0x81, 0xA5, 0x1A }, 525 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A",
529 }, { 526 }, {
530 .plaintext = "abcdbcdecdefdefgefghfghighijhijk", 527 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
531 .psize = 32, 528 .psize = 32,
532 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61, 529 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
533 0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48, 530 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
534 0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62, 531 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
535 0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69, 532 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
536 0x16, 0xBD, 0xC8, 0x03, 0x1B, 0xC5, 0xBE, 0x1B, 533 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
537 0x7B, 0x94, 0x76, 0x39, 0xFE, 0x05, 0x0B, 0x56 }, 534 "\x7B\x94\x76\x39\xFE\x05\x0B\x56",
538 }, 535 },
539}; 536};
540 537
@@ -544,63 +541,63 @@ static struct hash_testvec wp256_tv_template[] = {
544 { 541 {
545 .plaintext = "", 542 .plaintext = "",
546 .psize = 0, 543 .psize = 0,
547 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66, 544 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
548 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26, 545 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
549 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8, 546 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
550 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7 }, 547 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7",
551 548
552 549
553 }, { 550 }, {
554 .plaintext = "a", 551 .plaintext = "a",
555 .psize = 1, 552 .psize = 1,
556 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F, 553 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
557 0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7, 554 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
558 0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69, 555 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
559 0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42 }, 556 "\x73\xC4\x50\x01\xD0\x08\x7B\x42",
560 }, { 557 }, {
561 .plaintext = "abc", 558 .plaintext = "abc",
562 .psize = 3, 559 .psize = 3,
563 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB, 560 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
564 0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B, 561 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
565 0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72, 562 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
566 0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C }, 563 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C",
567 }, { 564 }, {
568 .plaintext = "message digest", 565 .plaintext = "message digest",
569 .psize = 14, 566 .psize = 14,
570 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6, 567 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
571 0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC, 568 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
572 0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C, 569 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
573 0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B }, 570 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B",
574 }, { 571 }, {
575 .plaintext = "abcdefghijklmnopqrstuvwxyz", 572 .plaintext = "abcdefghijklmnopqrstuvwxyz",
576 .psize = 26, 573 .psize = 26,
577 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9, 574 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
578 0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A, 575 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
579 0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5, 576 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
580 0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B }, 577 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B",
581 }, { 578 }, {
582 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 579 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
583 "abcdefghijklmnopqrstuvwxyz0123456789", 580 "abcdefghijklmnopqrstuvwxyz0123456789",
584 .psize = 62, 581 .psize = 62,
585 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B, 582 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
586 0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90, 583 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
587 0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC, 584 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
588 0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E }, 585 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E",
589 }, { 586 }, {
590 .plaintext = "1234567890123456789012345678901234567890" 587 .plaintext = "1234567890123456789012345678901234567890"
591 "1234567890123456789012345678901234567890", 588 "1234567890123456789012345678901234567890",
592 .psize = 80, 589 .psize = 80,
593 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D, 590 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
594 0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0, 591 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
595 0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6, 592 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
596 0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29 }, 593 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29",
597 }, { 594 }, {
598 .plaintext = "abcdbcdecdefdefgefghfghighijhijk", 595 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
599 .psize = 32, 596 .psize = 32,
600 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61, 597 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
601 0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48, 598 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
602 0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62, 599 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
603 0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69 }, 600 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69",
604 }, 601 },
605}; 602};
606 603
@@ -613,42 +610,42 @@ static struct hash_testvec tgr192_tv_template[] = {
613 { 610 {
614 .plaintext = "", 611 .plaintext = "",
615 .psize = 0, 612 .psize = 0,
616 .digest = { 0x24, 0xf0, 0x13, 0x0c, 0x63, 0xac, 0x93, 0x32, 613 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
617 0x16, 0x16, 0x6e, 0x76, 0xb1, 0xbb, 0x92, 0x5f, 614 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
618 0xf3, 0x73, 0xde, 0x2d, 0x49, 0x58, 0x4e, 0x7a }, 615 "\xf3\x73\xde\x2d\x49\x58\x4e\x7a",
619 }, { 616 }, {
620 .plaintext = "abc", 617 .plaintext = "abc",
621 .psize = 3, 618 .psize = 3,
622 .digest = { 0xf2, 0x58, 0xc1, 0xe8, 0x84, 0x14, 0xab, 0x2a, 619 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
623 0x52, 0x7a, 0xb5, 0x41, 0xff, 0xc5, 0xb8, 0xbf, 620 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
624 0x93, 0x5f, 0x7b, 0x95, 0x1c, 0x13, 0x29, 0x51 }, 621 "\x93\x5f\x7b\x95\x1c\x13\x29\x51",
625 }, { 622 }, {
626 .plaintext = "Tiger", 623 .plaintext = "Tiger",
627 .psize = 5, 624 .psize = 5,
628 .digest = { 0x9f, 0x00, 0xf5, 0x99, 0x07, 0x23, 0x00, 0xdd, 625 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
629 0x27, 0x6a, 0xbb, 0x38, 0xc8, 0xeb, 0x6d, 0xec, 626 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
630 0x37, 0x79, 0x0c, 0x11, 0x6f, 0x9d, 0x2b, 0xdf }, 627 "\x37\x79\x0c\x11\x6f\x9d\x2b\xdf",
631 }, { 628 }, {
632 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-", 629 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
633 .psize = 64, 630 .psize = 64,
634 .digest = { 0x87, 0xfb, 0x2a, 0x90, 0x83, 0x85, 0x1c, 0xf7, 631 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
635 0x47, 0x0d, 0x2c, 0xf8, 0x10, 0xe6, 0xdf, 0x9e, 632 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
636 0xb5, 0x86, 0x44, 0x50, 0x34, 0xa5, 0xa3, 0x86 }, 633 "\xb5\x86\x44\x50\x34\xa5\xa3\x86",
637 }, { 634 }, {
638 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789", 635 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
639 .psize = 64, 636 .psize = 64,
640 .digest = { 0x46, 0x7d, 0xb8, 0x08, 0x63, 0xeb, 0xce, 0x48, 637 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
641 0x8d, 0xf1, 0xcd, 0x12, 0x61, 0x65, 0x5d, 0xe9, 638 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
642 0x57, 0x89, 0x65, 0x65, 0x97, 0x5f, 0x91, 0x97 }, 639 "\x57\x89\x65\x65\x97\x5f\x91\x97",
643 }, { 640 }, {
644 .plaintext = "Tiger - A Fast New Hash Function, " 641 .plaintext = "Tiger - A Fast New Hash Function, "
645 "by Ross Anderson and Eli Biham, " 642 "by Ross Anderson and Eli Biham, "
646 "proceedings of Fast Software Encryption 3, " 643 "proceedings of Fast Software Encryption 3, "
647 "Cambridge, 1996.", 644 "Cambridge, 1996.",
648 .psize = 125, 645 .psize = 125,
649 .digest = { 0x3d, 0x9a, 0xeb, 0x03, 0xd1, 0xbd, 0x1a, 0x63, 646 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
650 0x57, 0xb2, 0x77, 0x4d, 0xfd, 0x6d, 0x5b, 0x24, 647 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
651 0xdd, 0x68, 0x15, 0x1d, 0x50, 0x39, 0x74, 0xfc }, 648 "\xdd\x68\x15\x1d\x50\x39\x74\xfc",
652 }, 649 },
653}; 650};
654 651
@@ -658,42 +655,42 @@ static struct hash_testvec tgr160_tv_template[] = {
658 { 655 {
659 .plaintext = "", 656 .plaintext = "",
660 .psize = 0, 657 .psize = 0,
661 .digest = { 0x24, 0xf0, 0x13, 0x0c, 0x63, 0xac, 0x93, 0x32, 658 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
662 0x16, 0x16, 0x6e, 0x76, 0xb1, 0xbb, 0x92, 0x5f, 659 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
663 0xf3, 0x73, 0xde, 0x2d }, 660 "\xf3\x73\xde\x2d",
664 }, { 661 }, {
665 .plaintext = "abc", 662 .plaintext = "abc",
666 .psize = 3, 663 .psize = 3,
667 .digest = { 0xf2, 0x58, 0xc1, 0xe8, 0x84, 0x14, 0xab, 0x2a, 664 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
668 0x52, 0x7a, 0xb5, 0x41, 0xff, 0xc5, 0xb8, 0xbf, 665 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
669 0x93, 0x5f, 0x7b, 0x95 }, 666 "\x93\x5f\x7b\x95",
670 }, { 667 }, {
671 .plaintext = "Tiger", 668 .plaintext = "Tiger",
672 .psize = 5, 669 .psize = 5,
673 .digest = { 0x9f, 0x00, 0xf5, 0x99, 0x07, 0x23, 0x00, 0xdd, 670 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
674 0x27, 0x6a, 0xbb, 0x38, 0xc8, 0xeb, 0x6d, 0xec, 671 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
675 0x37, 0x79, 0x0c, 0x11 }, 672 "\x37\x79\x0c\x11",
676 }, { 673 }, {
677 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-", 674 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
678 .psize = 64, 675 .psize = 64,
679 .digest = { 0x87, 0xfb, 0x2a, 0x90, 0x83, 0x85, 0x1c, 0xf7, 676 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
680 0x47, 0x0d, 0x2c, 0xf8, 0x10, 0xe6, 0xdf, 0x9e, 677 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
681 0xb5, 0x86, 0x44, 0x50 }, 678 "\xb5\x86\x44\x50",
682 }, { 679 }, {
683 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789", 680 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
684 .psize = 64, 681 .psize = 64,
685 .digest = { 0x46, 0x7d, 0xb8, 0x08, 0x63, 0xeb, 0xce, 0x48, 682 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
686 0x8d, 0xf1, 0xcd, 0x12, 0x61, 0x65, 0x5d, 0xe9, 683 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
687 0x57, 0x89, 0x65, 0x65 }, 684 "\x57\x89\x65\x65",
688 }, { 685 }, {
689 .plaintext = "Tiger - A Fast New Hash Function, " 686 .plaintext = "Tiger - A Fast New Hash Function, "
690 "by Ross Anderson and Eli Biham, " 687 "by Ross Anderson and Eli Biham, "
691 "proceedings of Fast Software Encryption 3, " 688 "proceedings of Fast Software Encryption 3, "
692 "Cambridge, 1996.", 689 "Cambridge, 1996.",
693 .psize = 125, 690 .psize = 125,
694 .digest = { 0x3d, 0x9a, 0xeb, 0x03, 0xd1, 0xbd, 0x1a, 0x63, 691 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
695 0x57, 0xb2, 0x77, 0x4d, 0xfd, 0x6d, 0x5b, 0x24, 692 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
696 0xdd, 0x68, 0x15, 0x1d }, 693 "\xdd\x68\x15\x1d",
697 }, 694 },
698}; 695};
699 696
@@ -703,36 +700,36 @@ static struct hash_testvec tgr128_tv_template[] = {
703 { 700 {
704 .plaintext = "", 701 .plaintext = "",
705 .psize = 0, 702 .psize = 0,
706 .digest = { 0x24, 0xf0, 0x13, 0x0c, 0x63, 0xac, 0x93, 0x32, 703 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
707 0x16, 0x16, 0x6e, 0x76, 0xb1, 0xbb, 0x92, 0x5f }, 704 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f",
708 }, { 705 }, {
709 .plaintext = "abc", 706 .plaintext = "abc",
710 .psize = 3, 707 .psize = 3,
711 .digest = { 0xf2, 0x58, 0xc1, 0xe8, 0x84, 0x14, 0xab, 0x2a, 708 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
712 0x52, 0x7a, 0xb5, 0x41, 0xff, 0xc5, 0xb8, 0xbf }, 709 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf",
713 }, { 710 }, {
714 .plaintext = "Tiger", 711 .plaintext = "Tiger",
715 .psize = 5, 712 .psize = 5,
716 .digest = { 0x9f, 0x00, 0xf5, 0x99, 0x07, 0x23, 0x00, 0xdd, 713 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
717 0x27, 0x6a, 0xbb, 0x38, 0xc8, 0xeb, 0x6d, 0xec }, 714 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec",
718 }, { 715 }, {
719 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-", 716 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
720 .psize = 64, 717 .psize = 64,
721 .digest = { 0x87, 0xfb, 0x2a, 0x90, 0x83, 0x85, 0x1c, 0xf7, 718 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
722 0x47, 0x0d, 0x2c, 0xf8, 0x10, 0xe6, 0xdf, 0x9e }, 719 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e",
723 }, { 720 }, {
724 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789", 721 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
725 .psize = 64, 722 .psize = 64,
726 .digest = { 0x46, 0x7d, 0xb8, 0x08, 0x63, 0xeb, 0xce, 0x48, 723 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
727 0x8d, 0xf1, 0xcd, 0x12, 0x61, 0x65, 0x5d, 0xe9 }, 724 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9",
728 }, { 725 }, {
729 .plaintext = "Tiger - A Fast New Hash Function, " 726 .plaintext = "Tiger - A Fast New Hash Function, "
730 "by Ross Anderson and Eli Biham, " 727 "by Ross Anderson and Eli Biham, "
731 "proceedings of Fast Software Encryption 3, " 728 "proceedings of Fast Software Encryption 3, "
732 "Cambridge, 1996.", 729 "Cambridge, 1996.",
733 .psize = 125, 730 .psize = 125,
734 .digest = { 0x3d, 0x9a, 0xeb, 0x03, 0xd1, 0xbd, 0x1a, 0x63, 731 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
735 0x57, 0xb2, 0x77, 0x4d, 0xfd, 0x6d, 0x5b, 0x24 }, 732 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24",
736 }, 733 },
737}; 734};
738 735
@@ -745,59 +742,77 @@ static struct hash_testvec tgr128_tv_template[] = {
745static struct hash_testvec hmac_md5_tv_template[] = 742static struct hash_testvec hmac_md5_tv_template[] =
746{ 743{
747 { 744 {
748 .key = { [0 ... 15] = 0x0b }, 745 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
749 .ksize = 16, 746 .ksize = 16,
750 .plaintext = "Hi There", 747 .plaintext = "Hi There",
751 .psize = 8, 748 .psize = 8,
752 .digest = { 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, 749 .digest = "\x92\x94\x72\x7a\x36\x38\xbb\x1c"
753 0x13, 0xf4, 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d }, 750 "\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d",
754 }, { 751 }, {
755 .key = { 'J', 'e', 'f', 'e' }, 752 .key = "Jefe",
756 .ksize = 4, 753 .ksize = 4,
757 .plaintext = "what do ya want for nothing?", 754 .plaintext = "what do ya want for nothing?",
758 .psize = 28, 755 .psize = 28,
759 .digest = { 0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03, 756 .digest = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03"
760 0xea, 0xa8, 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38 }, 757 "\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",
761 .np = 2, 758 .np = 2,
762 .tap = {14, 14} 759 .tap = {14, 14}
763 }, { 760 }, {
764 .key = { [0 ... 15] = 0xaa }, 761 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
765 .ksize = 16, 762 .ksize = 16,
766 .plaintext = { [0 ... 49] = 0xdd }, 763 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
764 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
765 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
766 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
767 .psize = 50, 767 .psize = 50,
768 .digest = { 0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88, 768 .digest = "\x56\xbe\x34\x52\x1d\x14\x4c\x88"
769 0xdb, 0xb8, 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6 }, 769 "\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6",
770 }, { 770 }, {
771 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 771 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
772 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 772 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
773 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, }, 773 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
774 .ksize = 25, 774 .ksize = 25,
775 .plaintext = { [0 ... 49] = 0xcd }, 775 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
776 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
777 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
778 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
776 .psize = 50, 779 .psize = 50,
777 .digest = { 0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea, 780 .digest = "\x69\x7e\xaf\x0a\xca\x3a\x3a\xea"
778 0x3a, 0x75, 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79 }, 781 "\x3a\x75\x16\x47\x46\xff\xaa\x79",
779 }, { 782 }, {
780 .key = { [0 ... 15] = 0x0c }, 783 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
781 .ksize = 16, 784 .ksize = 16,
782 .plaintext = "Test With Truncation", 785 .plaintext = "Test With Truncation",
783 .psize = 20, 786 .psize = 20,
784 .digest = { 0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00, 787 .digest = "\x56\x46\x1e\xf2\x34\x2e\xdc\x00"
785 0xf9, 0xba, 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c }, 788 "\xf9\xba\xb9\x95\x69\x0e\xfd\x4c",
786 }, { 789 }, {
787 .key = { [0 ... 79] = 0xaa }, 790 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
791 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
792 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
793 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
794 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
795 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
796 "\xaa\xaa",
788 .ksize = 80, 797 .ksize = 80,
789 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First", 798 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
790 .psize = 54, 799 .psize = 54,
791 .digest = { 0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f, 800 .digest = "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f"
792 0x0b, 0x62, 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd }, 801 "\x0b\x62\xe6\xce\x61\xb9\xd0\xcd",
793 }, { 802 }, {
794 .key = { [0 ... 79] = 0xaa }, 803 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
804 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
805 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
806 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
807 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
808 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
809 "\xaa\xaa",
795 .ksize = 80, 810 .ksize = 80,
796 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One " 811 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
797 "Block-Size Data", 812 "Block-Size Data",
798 .psize = 73, 813 .psize = 73,
799 .digest = { 0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee, 814 .digest = "\x6f\x63\x0f\xad\x67\xcd\xa0\xee"
800 0x1f, 0xb1, 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e }, 815 "\x1f\xb1\xf5\x62\xdb\x3a\xa5\x3e",
801 }, 816 },
802}; 817};
803 818
@@ -808,60 +823,78 @@ static struct hash_testvec hmac_md5_tv_template[] =
808 823
809static struct hash_testvec hmac_sha1_tv_template[] = { 824static struct hash_testvec hmac_sha1_tv_template[] = {
810 { 825 {
811 .key = { [0 ... 19] = 0x0b }, 826 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
812 .ksize = 20, 827 .ksize = 20,
813 .plaintext = "Hi There", 828 .plaintext = "Hi There",
814 .psize = 8, 829 .psize = 8,
815 .digest = { 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, 830 .digest = "\xb6\x17\x31\x86\x55\x05\x72\x64"
816 0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, 0xf1, 831 "\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1"
817 0x46, 0xbe }, 832 "\x46\xbe",
818 }, { 833 }, {
819 .key = { 'J', 'e', 'f', 'e' }, 834 .key = "Jefe",
820 .ksize = 4, 835 .ksize = 4,
821 .plaintext = "what do ya want for nothing?", 836 .plaintext = "what do ya want for nothing?",
822 .psize = 28, 837 .psize = 28,
823 .digest = { 0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, 0xd2, 0x74, 838 .digest = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74"
824 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, 0x25, 0x9a, 0x7c, 0x79 }, 839 "\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79",
825 .np = 2, 840 .np = 2,
826 .tap = { 14, 14 } 841 .tap = { 14, 14 }
827 }, { 842 }, {
828 .key = { [0 ... 19] = 0xaa }, 843 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
829 .ksize = 20, 844 .ksize = 20,
830 .plaintext = { [0 ... 49] = 0xdd }, 845 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
846 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
847 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
848 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
831 .psize = 50, 849 .psize = 50,
832 .digest = { 0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, 0x91, 0xa3, 850 .digest = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3"
833 0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, 0x63, 0xf1, 0x75, 0xd3 }, 851 "\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3",
834 }, { 852 }, {
835 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 853 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
836 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 854 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
837 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 }, 855 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
838 .ksize = 25, 856 .ksize = 25,
839 .plaintext = { [0 ... 49] = 0xcd }, 857 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
858 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
859 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
860 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
840 .psize = 50, 861 .psize = 50,
841 .digest = { 0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, 0xbc, 0x84, 862 .digest = "\x4c\x90\x07\xf4\x02\x62\x50\xc6\xbc\x84"
842 0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c, 0x2d, 0x72, 0x35, 0xda }, 863 "\x14\xf9\xbf\x50\xc8\x6c\x2d\x72\x35\xda",
843 }, { 864 }, {
844 .key = { [0 ... 19] = 0x0c }, 865 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
845 .ksize = 20, 866 .ksize = 20,
846 .plaintext = "Test With Truncation", 867 .plaintext = "Test With Truncation",
847 .psize = 20, 868 .psize = 20,
848 .digest = { 0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 0xe7, 0xf2, 869 .digest = "\x4c\x1a\x03\x42\x4b\x55\xe0\x7f\xe7\xf2"
849 0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32, 0x4a, 0x9a, 0x5a, 0x04 }, 870 "\x7b\xe1\xd5\x8b\xb9\x32\x4a\x9a\x5a\x04",
850 }, { 871 }, {
851 .key = { [0 ... 79] = 0xaa }, 872 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
873 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
874 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
875 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
876 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
877 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
878 "\xaa\xaa",
852 .ksize = 80, 879 .ksize = 80,
853 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First", 880 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
854 .psize = 54, 881 .psize = 54,
855 .digest = { 0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, 0x95, 0x70, 882 .digest = "\xaa\x4a\xe5\xe1\x52\x72\xd0\x0e\x95\x70"
856 0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55, 0xed, 0x40, 0x21, 0x12 }, 883 "\x56\x37\xce\x8a\x3b\x55\xed\x40\x21\x12",
857 }, { 884 }, {
858 .key = { [0 ... 79] = 0xaa }, 885 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
886 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
887 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
888 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
889 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
890 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
891 "\xaa\xaa",
859 .ksize = 80, 892 .ksize = 80,
860 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One " 893 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
861 "Block-Size Data", 894 "Block-Size Data",
862 .psize = 73, 895 .psize = 73,
863 .digest = { 0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78, 0x6d, 0x6b, 896 .digest = "\xe8\xe9\x9d\x0f\x45\x23\x7d\x78\x6d\x6b"
864 0xba, 0xa7, 0x96, 0x5c, 0x78, 0x08, 0xbb, 0xff, 0x1a, 0x91 }, 897 "\xba\xa7\x96\x5c\x78\x08\xbb\xff\x1a\x91",
865 }, 898 },
866}; 899};
867 900
@@ -873,110 +906,110 @@ static struct hash_testvec hmac_sha1_tv_template[] = {
873 906
874static struct hash_testvec hmac_sha224_tv_template[] = { 907static struct hash_testvec hmac_sha224_tv_template[] = {
875 { 908 {
876 .key = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 909 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
877 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 910 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
878 0x0b, 0x0b, 0x0b, 0x0b }, 911 "\x0b\x0b\x0b\x0b",
879 .ksize = 20, 912 .ksize = 20,
880 /* ("Hi There") */ 913 /* ("Hi There") */
881 .plaintext = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 }, 914 .plaintext = "\x48\x69\x20\x54\x68\x65\x72\x65",
882 .psize = 8, 915 .psize = 8,
883 .digest = { 0x89, 0x6f, 0xb1, 0x12, 0x8a, 0xbb, 0xdf, 0x19, 916 .digest = "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19"
884 0x68, 0x32, 0x10, 0x7c, 0xd4, 0x9d, 0xf3, 0x3f, 917 "\x68\x32\x10\x7c\xd4\x9d\xf3\x3f"
885 0x47, 0xb4, 0xb1, 0x16, 0x99, 0x12, 0xba, 0x4f, 918 "\x47\xb4\xb1\x16\x99\x12\xba\x4f"
886 0x53, 0x68, 0x4b, 0x22}, 919 "\x53\x68\x4b\x22",
887 }, { 920 }, {
888 .key = { 0x4a, 0x65, 0x66, 0x65 }, /* ("Jefe") */ 921 .key = "Jefe",
889 .ksize = 4, 922 .ksize = 4,
890 /* ("what do ya want for nothing?") */ 923 /* ("what do ya want for nothing?") */
891 .plaintext = { 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20, 924 .plaintext = "\x77\x68\x61\x74\x20\x64\x6f\x20"
892 0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, 925 "\x79\x61\x20\x77\x61\x6e\x74\x20"
893 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68, 926 "\x66\x6f\x72\x20\x6e\x6f\x74\x68"
894 0x69, 0x6e, 0x67, 0x3f }, 927 "\x69\x6e\x67\x3f",
895 .psize = 28, 928 .psize = 28,
896 .digest = { 0xa3, 0x0e, 0x01, 0x09, 0x8b, 0xc6, 0xdb, 0xbf, 929 .digest = "\xa3\x0e\x01\x09\x8b\xc6\xdb\xbf"
897 0x45, 0x69, 0x0f, 0x3a, 0x7e, 0x9e, 0x6d, 0x0f, 930 "\x45\x69\x0f\x3a\x7e\x9e\x6d\x0f"
898 0x8b, 0xbe, 0xa2, 0xa3, 0x9e, 0x61, 0x48, 0x00, 931 "\x8b\xbe\xa2\xa3\x9e\x61\x48\x00"
899 0x8f, 0xd0, 0x5e, 0x44 }, 932 "\x8f\xd0\x5e\x44",
900 .np = 4, 933 .np = 4,
901 .tap = { 7, 7, 7, 7 } 934 .tap = { 7, 7, 7, 7 }
902 }, { 935 }, {
903 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 936 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
904 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 937 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
905 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 938 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
906 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 939 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
907 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 940 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
908 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 941 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
909 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 942 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
910 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 943 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
911 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 944 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
912 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 945 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
913 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 946 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
914 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 947 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
915 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 948 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
916 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 949 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
917 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 950 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
918 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 951 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
919 0xaa, 0xaa, 0xaa }, 952 "\xaa\xaa\xaa",
920 .ksize = 131, 953 .ksize = 131,
921 /* ("Test Using Larger Than Block-Size Key - Hash Key First") */ 954 /* ("Test Using Larger Than Block-Size Key - Hash Key First") */
922 .plaintext = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 955 .plaintext = "\x54\x65\x73\x74\x20\x55\x73\x69"
923 0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, 956 "\x6e\x67\x20\x4c\x61\x72\x67\x65"
924 0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42, 957 "\x72\x20\x54\x68\x61\x6e\x20\x42"
925 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, 958 "\x6c\x6f\x63\x6b\x2d\x53\x69\x7a"
926 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20, 959 "\x65\x20\x4b\x65\x79\x20\x2d\x20"
927 0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79, 960 "\x48\x61\x73\x68\x20\x4b\x65\x79"
928 0x20, 0x46, 0x69, 0x72, 0x73, 0x74 }, 961 "\x20\x46\x69\x72\x73\x74",
929 .psize = 54, 962 .psize = 54,
930 .digest = { 0x95, 0xe9, 0xa0, 0xdb, 0x96, 0x20, 0x95, 0xad, 963 .digest = "\x95\xe9\xa0\xdb\x96\x20\x95\xad"
931 0xae, 0xbe, 0x9b, 0x2d, 0x6f, 0x0d, 0xbc, 0xe2, 964 "\xae\xbe\x9b\x2d\x6f\x0d\xbc\xe2"
932 0xd4, 0x99, 0xf1, 0x12, 0xf2, 0xd2, 0xb7, 0x27, 965 "\xd4\x99\xf1\x12\xf2\xd2\xb7\x27"
933 0x3f, 0xa6, 0x87, 0x0e }, 966 "\x3f\xa6\x87\x0e",
934 }, { 967 }, {
935 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 968 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
936 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 969 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
937 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 970 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
938 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 971 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
939 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 972 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
940 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 973 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
941 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 974 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
942 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 975 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
943 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 976 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
944 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 977 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
945 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 978 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
946 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 979 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
947 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 980 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
948 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 981 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
949 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 982 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
950 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 983 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
951 0xaa, 0xaa, 0xaa }, 984 "\xaa\xaa\xaa",
952 .ksize = 131, 985 .ksize = 131,
953 /* ("This is a test using a larger than block-size key and a") 986 /* ("This is a test using a larger than block-size key and a")
954 (" larger than block-size data. The key needs to be") 987 (" larger than block-size data. The key needs to be")
955 (" hashed before being used by the HMAC algorithm.") */ 988 (" hashed before being used by the HMAC algorithm.") */
956 .plaintext = { 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 989 .plaintext = "\x54\x68\x69\x73\x20\x69\x73\x20"
957 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, 990 "\x61\x20\x74\x65\x73\x74\x20\x75"
958 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c, 991 "\x73\x69\x6e\x67\x20\x61\x20\x6c"
959 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, 992 "\x61\x72\x67\x65\x72\x20\x74\x68"
960 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 993 "\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
961 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65, 994 "\x2d\x73\x69\x7a\x65\x20\x6b\x65"
962 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 995 "\x79\x20\x61\x6e\x64\x20\x61\x20"
963 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 996 "\x6c\x61\x72\x67\x65\x72\x20\x74"
964 0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 997 "\x68\x61\x6e\x20\x62\x6c\x6f\x63"
965 0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64, 998 "\x6b\x2d\x73\x69\x7a\x65\x20\x64"
966 0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65, 999 "\x61\x74\x61\x2e\x20\x54\x68\x65"
967 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65, 1000 "\x20\x6b\x65\x79\x20\x6e\x65\x65"
968 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 1001 "\x64\x73\x20\x74\x6f\x20\x62\x65"
969 0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20, 1002 "\x20\x68\x61\x73\x68\x65\x64\x20"
970 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62, 1003 "\x62\x65\x66\x6f\x72\x65\x20\x62"
971 0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, 1004 "\x65\x69\x6e\x67\x20\x75\x73\x65"
972 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 1005 "\x64\x20\x62\x79\x20\x74\x68\x65"
973 0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c, 1006 "\x20\x48\x4d\x41\x43\x20\x61\x6c"
974 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e }, 1007 "\x67\x6f\x72\x69\x74\x68\x6d\x2e",
975 .psize = 152, 1008 .psize = 152,
976 .digest = { 0x3a, 0x85, 0x41, 0x66, 0xac, 0x5d, 0x9f, 0x02, 1009 .digest = "\x3a\x85\x41\x66\xac\x5d\x9f\x02"
977 0x3f, 0x54, 0xd5, 0x17, 0xd0, 0xb3, 0x9d, 0xbd, 1010 "\x3f\x54\xd5\x17\xd0\xb3\x9d\xbd"
978 0x94, 0x67, 0x70, 0xdb, 0x9c, 0x2b, 0x95, 0xc9, 1011 "\x94\x67\x70\xdb\x9c\x2b\x95\xc9"
979 0xf6, 0xf5, 0x65, 0xd1 }, 1012 "\xf6\xf5\x65\xd1",
980 }, 1013 },
981}; 1014};
982 1015
@@ -988,112 +1021,136 @@ static struct hash_testvec hmac_sha224_tv_template[] = {
988 1021
989static struct hash_testvec hmac_sha256_tv_template[] = { 1022static struct hash_testvec hmac_sha256_tv_template[] = {
990 { 1023 {
991 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 1024 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
992 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 1025 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
993 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 1026 "\x11\x12\x13\x14\x15\x16\x17\x18"
994 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20}, 1027 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
995 .ksize = 32, 1028 .ksize = 32,
996 .plaintext = "abc", 1029 .plaintext = "abc",
997 .psize = 3, 1030 .psize = 3,
998 .digest = { 0xa2, 0x1b, 0x1f, 0x5d, 0x4c, 0xf4, 0xf7, 0x3a, 1031 .digest = "\xa2\x1b\x1f\x5d\x4c\xf4\xf7\x3a"
999 0x4d, 0xd9, 0x39, 0x75, 0x0f, 0x7a, 0x06, 0x6a, 1032 "\x4d\xd9\x39\x75\x0f\x7a\x06\x6a"
1000 0x7f, 0x98, 0xcc, 0x13, 0x1c, 0xb1, 0x6a, 0x66, 1033 "\x7f\x98\xcc\x13\x1c\xb1\x6a\x66"
1001 0x92, 0x75, 0x90, 0x21, 0xcf, 0xab, 0x81, 0x81 }, 1034 "\x92\x75\x90\x21\xcf\xab\x81\x81",
1002 }, { 1035 }, {
1003 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 1036 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1004 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 1037 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1005 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 1038 "\x11\x12\x13\x14\x15\x16\x17\x18"
1006 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 }, 1039 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1007 .ksize = 32, 1040 .ksize = 32,
1008 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 1041 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1009 .psize = 56, 1042 .psize = 56,
1010 .digest = { 0x10, 0x4f, 0xdc, 0x12, 0x57, 0x32, 0x8f, 0x08, 1043 .digest = "\x10\x4f\xdc\x12\x57\x32\x8f\x08"
1011 0x18, 0x4b, 0xa7, 0x31, 0x31, 0xc5, 0x3c, 0xae, 1044 "\x18\x4b\xa7\x31\x31\xc5\x3c\xae"
1012 0xe6, 0x98, 0xe3, 0x61, 0x19, 0x42, 0x11, 0x49, 1045 "\xe6\x98\xe3\x61\x19\x42\x11\x49"
1013 0xea, 0x8c, 0x71, 0x24, 0x56, 0x69, 0x7d, 0x30 }, 1046 "\xea\x8c\x71\x24\x56\x69\x7d\x30",
1014 }, { 1047 }, {
1015 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 1048 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1016 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 1049 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1017 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 1050 "\x11\x12\x13\x14\x15\x16\x17\x18"
1018 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 }, 1051 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1019 .ksize = 32, 1052 .ksize = 32,
1020 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" 1053 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
1021 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 1054 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1022 .psize = 112, 1055 .psize = 112,
1023 .digest = { 0x47, 0x03, 0x05, 0xfc, 0x7e, 0x40, 0xfe, 0x34, 1056 .digest = "\x47\x03\x05\xfc\x7e\x40\xfe\x34"
1024 0xd3, 0xee, 0xb3, 0xe7, 0x73, 0xd9, 0x5a, 0xab, 1057 "\xd3\xee\xb3\xe7\x73\xd9\x5a\xab"
1025 0x73, 0xac, 0xf0, 0xfd, 0x06, 0x04, 0x47, 0xa5, 1058 "\x73\xac\xf0\xfd\x06\x04\x47\xa5"
1026 0xeb, 0x45, 0x95, 0xbf, 0x33, 0xa9, 0xd1, 0xa3 }, 1059 "\xeb\x45\x95\xbf\x33\xa9\xd1\xa3",
1027 }, { 1060 }, {
1028 .key = { [0 ... 31] = 0x0b }, 1061 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1062 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1063 "\x0b\x0b\x0b\x0b\x0b\x0b",
1029 .ksize = 32, 1064 .ksize = 32,
1030 .plaintext = "Hi There", 1065 .plaintext = "Hi There",
1031 .psize = 8, 1066 .psize = 8,
1032 .digest = { 0x19, 0x8a, 0x60, 0x7e, 0xb4, 0x4b, 0xfb, 0xc6, 1067 .digest = "\x19\x8a\x60\x7e\xb4\x4b\xfb\xc6"
1033 0x99, 0x03, 0xa0, 0xf1, 0xcf, 0x2b, 0xbd, 0xc5, 1068 "\x99\x03\xa0\xf1\xcf\x2b\xbd\xc5"
1034 0xba, 0x0a, 0xa3, 0xf3, 0xd9, 0xae, 0x3c, 0x1c, 1069 "\xba\x0a\xa3\xf3\xd9\xae\x3c\x1c"
1035 0x7a, 0x3b, 0x16, 0x96, 0xa0, 0xb6, 0x8c, 0xf7 }, 1070 "\x7a\x3b\x16\x96\xa0\xb6\x8c\xf7",
1036 }, { 1071 }, {
1037 .key = "Jefe", 1072 .key = "Jefe",
1038 .ksize = 4, 1073 .ksize = 4,
1039 .plaintext = "what do ya want for nothing?", 1074 .plaintext = "what do ya want for nothing?",
1040 .psize = 28, 1075 .psize = 28,
1041 .digest = { 0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e, 1076 .digest = "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e"
1042 0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7, 1077 "\x6a\x04\x24\x26\x08\x95\x75\xc7"
1043 0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83, 1078 "\x5a\x00\x3f\x08\x9d\x27\x39\x83"
1044 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43 }, 1079 "\x9d\xec\x58\xb9\x64\xec\x38\x43",
1045 .np = 2, 1080 .np = 2,
1046 .tap = { 14, 14 } 1081 .tap = { 14, 14 }
1047 }, { 1082 }, {
1048 .key = { [0 ... 31] = 0xaa }, 1083 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1084 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1085 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1049 .ksize = 32, 1086 .ksize = 32,
1050 .plaintext = { [0 ... 49] = 0xdd }, 1087 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1088 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1089 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1090 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1051 .psize = 50, 1091 .psize = 50,
1052 .digest = { 0xcd, 0xcb, 0x12, 0x20, 0xd1, 0xec, 0xcc, 0xea, 1092 .digest = "\xcd\xcb\x12\x20\xd1\xec\xcc\xea"
1053 0x91, 0xe5, 0x3a, 0xba, 0x30, 0x92, 0xf9, 0x62, 1093 "\x91\xe5\x3a\xba\x30\x92\xf9\x62"
1054 0xe5, 0x49, 0xfe, 0x6c, 0xe9, 0xed, 0x7f, 0xdc, 1094 "\xe5\x49\xfe\x6c\xe9\xed\x7f\xdc"
1055 0x43, 0x19, 0x1f, 0xbd, 0xe4, 0x5c, 0x30, 0xb0 }, 1095 "\x43\x19\x1f\xbd\xe4\x5c\x30\xb0",
1056 }, { 1096 }, {
1057 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 1097 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1058 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 1098 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1059 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 1099 "\x11\x12\x13\x14\x15\x16\x17\x18"
1060 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 1100 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
1061 0x21, 0x22, 0x23, 0x24, 0x25 }, 1101 "\x21\x22\x23\x24\x25",
1062 .ksize = 37, 1102 .ksize = 37,
1063 .plaintext = { [0 ... 49] = 0xcd }, 1103 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1104 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1105 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1106 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1064 .psize = 50, 1107 .psize = 50,
1065 .digest = { 0xd4, 0x63, 0x3c, 0x17, 0xf6, 0xfb, 0x8d, 0x74, 1108 .digest = "\xd4\x63\x3c\x17\xf6\xfb\x8d\x74"
1066 0x4c, 0x66, 0xde, 0xe0, 0xf8, 0xf0, 0x74, 0x55, 1109 "\x4c\x66\xde\xe0\xf8\xf0\x74\x55"
1067 0x6e, 0xc4, 0xaf, 0x55, 0xef, 0x07, 0x99, 0x85, 1110 "\x6e\xc4\xaf\x55\xef\x07\x99\x85"
1068 0x41, 0x46, 0x8e, 0xb4, 0x9b, 0xd2, 0xe9, 0x17 }, 1111 "\x41\x46\x8e\xb4\x9b\xd2\xe9\x17",
1069 }, { 1112 }, {
1070 .key = { [0 ... 31] = 0x0c }, 1113 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1114 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1115 "\x0c\x0c\x0c\x0c\x0c\x0c",
1071 .ksize = 32, 1116 .ksize = 32,
1072 .plaintext = "Test With Truncation", 1117 .plaintext = "Test With Truncation",
1073 .psize = 20, 1118 .psize = 20,
1074 .digest = { 0x75, 0x46, 0xaf, 0x01, 0x84, 0x1f, 0xc0, 0x9b, 1119 .digest = "\x75\x46\xaf\x01\x84\x1f\xc0\x9b"
1075 0x1a, 0xb9, 0xc3, 0x74, 0x9a, 0x5f, 0x1c, 0x17, 1120 "\x1a\xb9\xc3\x74\x9a\x5f\x1c\x17"
1076 0xd4, 0xf5, 0x89, 0x66, 0x8a, 0x58, 0x7b, 0x27, 1121 "\xd4\xf5\x89\x66\x8a\x58\x7b\x27"
1077 0x00, 0xa9, 0xc9, 0x7c, 0x11, 0x93, 0xcf, 0x42 }, 1122 "\x00\xa9\xc9\x7c\x11\x93\xcf\x42",
1078 }, { 1123 }, {
1079 .key = { [0 ... 79] = 0xaa }, 1124 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1125 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1126 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1127 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1128 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1129 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1130 "\xaa\xaa",
1080 .ksize = 80, 1131 .ksize = 80,
1081 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First", 1132 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1082 .psize = 54, 1133 .psize = 54,
1083 .digest = { 0x69, 0x53, 0x02, 0x5e, 0xd9, 0x6f, 0x0c, 0x09, 1134 .digest = "\x69\x53\x02\x5e\xd9\x6f\x0c\x09"
1084 0xf8, 0x0a, 0x96, 0xf7, 0x8e, 0x65, 0x38, 0xdb, 1135 "\xf8\x0a\x96\xf7\x8e\x65\x38\xdb"
1085 0xe2, 0xe7, 0xb8, 0x20, 0xe3, 0xdd, 0x97, 0x0e, 1136 "\xe2\xe7\xb8\x20\xe3\xdd\x97\x0e"
1086 0x7d, 0xdd, 0x39, 0x09, 0x1b, 0x32, 0x35, 0x2f }, 1137 "\x7d\xdd\x39\x09\x1b\x32\x35\x2f",
1087 }, { 1138 }, {
1088 .key = { [0 ... 79] = 0xaa }, 1139 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1140 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1141 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1142 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1143 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1144 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1145 "\xaa\xaa",
1089 .ksize = 80, 1146 .ksize = 80,
1090 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than " 1147 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than "
1091 "One Block-Size Data", 1148 "One Block-Size Data",
1092 .psize = 73, 1149 .psize = 73,
1093 .digest = { 0x63, 0x55, 0xac, 0x22, 0xe8, 0x90, 0xd0, 0xa3, 1150 .digest = "\x63\x55\xac\x22\xe8\x90\xd0\xa3"
1094 0xc8, 0x48, 0x1a, 0x5c, 0xa4, 0x82, 0x5b, 0xc8, 1151 "\xc8\x48\x1a\x5c\xa4\x82\x5b\xc8"
1095 0x84, 0xd3, 0xe7, 0xa1, 0xff, 0x98, 0xa2, 0xfc, 1152 "\x84\xd3\xe7\xa1\xff\x98\xa2\xfc"
1096 0x2a, 0xc7, 0xd8, 0xe0, 0x64, 0xc3, 0xb2, 0xe6 }, 1153 "\x2a\xc7\xd8\xe0\x64\xc3\xb2\xe6",
1097 }, 1154 },
1098}; 1155};
1099 1156
@@ -1101,63 +1158,63 @@ static struct hash_testvec hmac_sha256_tv_template[] = {
1101 1158
1102static struct hash_testvec aes_xcbc128_tv_template[] = { 1159static struct hash_testvec aes_xcbc128_tv_template[] = {
1103 { 1160 {
1104 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1161 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1105 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1162 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1106 .plaintext = { [0 ... 15] = 0 }, 1163 .plaintext = zeroed_string,
1107 .digest = { 0x75, 0xf0, 0x25, 0x1d, 0x52, 0x8a, 0xc0, 0x1c, 1164 .digest = "\x75\xf0\x25\x1d\x52\x8a\xc0\x1c"
1108 0x45, 0x73, 0xdf, 0xd5, 0x84, 0xd7, 0x9f, 0x29 }, 1165 "\x45\x73\xdf\xd5\x84\xd7\x9f\x29",
1109 .psize = 0, 1166 .psize = 0,
1110 .ksize = 16, 1167 .ksize = 16,
1111 }, { 1168 }, {
1112 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1169 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1113 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1170 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1114 .plaintext = { 0x00, 0x01, 0x02 }, 1171 .plaintext = "\x00\x01\x02",
1115 .digest = { 0x5b, 0x37, 0x65, 0x80, 0xae, 0x2f, 0x19, 0xaf, 1172 .digest = "\x5b\x37\x65\x80\xae\x2f\x19\xaf"
1116 0xe7, 0x21, 0x9c, 0xee, 0xf1, 0x72, 0x75, 0x6f }, 1173 "\xe7\x21\x9c\xee\xf1\x72\x75\x6f",
1117 .psize = 3, 1174 .psize = 3,
1118 .ksize = 16, 1175 .ksize = 16,
1119 } , { 1176 } , {
1120 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1177 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1121 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1178 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1122 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1179 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1123 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1180 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1124 .digest = { 0xd2, 0xa2, 0x46, 0xfa, 0x34, 0x9b, 0x68, 0xa7, 1181 .digest = "\xd2\xa2\x46\xfa\x34\x9b\x68\xa7"
1125 0x99, 0x98, 0xa4, 0x39, 0x4f, 0xf7, 0xa2, 0x63 }, 1182 "\x99\x98\xa4\x39\x4f\xf7\xa2\x63",
1126 .psize = 16, 1183 .psize = 16,
1127 .ksize = 16, 1184 .ksize = 16,
1128 }, { 1185 }, {
1129 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1186 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1130 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1187 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1131 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1188 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1132 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1189 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1133 0x10, 0x11, 0x12, 0x13 }, 1190 "\x10\x11\x12\x13",
1134 .digest = { 0x47, 0xf5, 0x1b, 0x45, 0x64, 0x96, 0x62, 0x15, 1191 .digest = "\x47\xf5\x1b\x45\x64\x96\x62\x15"
1135 0xb8, 0x98, 0x5c, 0x63, 0x05, 0x5e, 0xd3, 0x08 }, 1192 "\xb8\x98\x5c\x63\x05\x5e\xd3\x08",
1136 .tap = { 10, 10 }, 1193 .tap = { 10, 10 },
1137 .psize = 20, 1194 .psize = 20,
1138 .np = 2, 1195 .np = 2,
1139 .ksize = 16, 1196 .ksize = 16,
1140 }, { 1197 }, {
1141 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1198 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1142 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1199 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1143 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1200 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1144 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1201 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1145 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 1202 "\x10\x11\x12\x13\x14\x15\x16\x17"
1146 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 1203 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1147 .digest = { 0xf5, 0x4f, 0x0e, 0xc8, 0xd2, 0xb9, 0xf3, 0xd3, 1204 .digest = "\xf5\x4f\x0e\xc8\xd2\xb9\xf3\xd3"
1148 0x68, 0x07, 0x73, 0x4b, 0xd5, 0x28, 0x3f, 0xd4 }, 1205 "\x68\x07\x73\x4b\xd5\x28\x3f\xd4",
1149 .psize = 32, 1206 .psize = 32,
1150 .ksize = 16, 1207 .ksize = 16,
1151 }, { 1208 }, {
1152 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1209 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1153 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1210 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1154 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1211 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1155 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1212 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1156 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 1213 "\x10\x11\x12\x13\x14\x15\x16\x17"
1157 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 1214 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
1158 0x20, 0x21 }, 1215 "\x20\x21",
1159 .digest = { 0xbe, 0xcb, 0xb3, 0xbc, 0xcd, 0xb5, 0x18, 0xa3, 1216 .digest = "\xbe\xcb\xb3\xbc\xcd\xb5\x18\xa3"
1160 0x06, 0x77, 0xd5, 0x48, 0x1f, 0xb6, 0xb4, 0xd8 }, 1217 "\x06\x77\xd5\x48\x1f\xb6\xb4\xd8",
1161 .tap = { 17, 17 }, 1218 .tap = { 17, 17 },
1162 .psize = 34, 1219 .psize = 34,
1163 .np = 2, 1220 .np = 2,
@@ -1173,112 +1230,95 @@ static struct hash_testvec aes_xcbc128_tv_template[] = {
1173 1230
1174static struct hash_testvec hmac_sha384_tv_template[] = { 1231static struct hash_testvec hmac_sha384_tv_template[] = {
1175 { 1232 {
1176 .key = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 1233 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1177 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 1234 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1178 0x0b, 0x0b, 0x0b, 0x0b }, // (20 bytes) 1235 "\x0b\x0b\x0b\x0b",
1179 .ksize = 20, 1236 .ksize = 20,
1180 .plaintext = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 }, // ("Hi There") 1237 .plaintext = "Hi There",
1181 .psize = 8, 1238 .psize = 8,
1182 .digest = { 0xaf, 0xd0, 0x39, 0x44, 0xd8, 0x48, 0x95, 0x62, 1239 .digest = "\xaf\xd0\x39\x44\xd8\x48\x95\x62"
1183 0x6b, 0x08, 0x25, 0xf4, 0xab, 0x46, 0x90, 0x7f, 1240 "\x6b\x08\x25\xf4\xab\x46\x90\x7f"
1184 0x15, 0xf9, 0xda, 0xdb, 0xe4, 0x10, 0x1e, 0xc6, 1241 "\x15\xf9\xda\xdb\xe4\x10\x1e\xc6"
1185 0x82, 0xaa, 0x03, 0x4c, 0x7c, 0xeb, 0xc5, 0x9c, 1242 "\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c"
1186 0xfa, 0xea, 0x9e, 0xa9, 0x07, 0x6e, 0xde, 0x7f, 1243 "\xfa\xea\x9e\xa9\x07\x6e\xde\x7f"
1187 0x4a, 0xf1, 0x52, 0xe8, 0xb2, 0xfa, 0x9c, 0xb6 }, 1244 "\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6",
1188 }, { 1245 }, {
1189 .key = { 0x4a, 0x65, 0x66, 0x65 }, // ("Jefe") 1246 .key = "Jefe",
1190 .ksize = 4, 1247 .ksize = 4,
1191 .plaintext = { 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20, 1248 .plaintext = "what do ya want for nothing?",
1192 0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, // ("what do ya want ")
1193 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68,
1194 0x69, 0x6e, 0x67, 0x3f }, // ("for nothing?")
1195 .psize = 28, 1249 .psize = 28,
1196 .digest = { 0xaf, 0x45, 0xd2, 0xe3, 0x76, 0x48, 0x40, 0x31, 1250 .digest = "\xaf\x45\xd2\xe3\x76\x48\x40\x31"
1197 0x61, 0x7f, 0x78, 0xd2, 0xb5, 0x8a, 0x6b, 0x1b, 1251 "\x61\x7f\x78\xd2\xb5\x8a\x6b\x1b"
1198 0x9c, 0x7e, 0xf4, 0x64, 0xf5, 0xa0, 0x1b, 0x47, 1252 "\x9c\x7e\xf4\x64\xf5\xa0\x1b\x47"
1199 0xe4, 0x2e, 0xc3, 0x73, 0x63, 0x22, 0x44, 0x5e, 1253 "\xe4\x2e\xc3\x73\x63\x22\x44\x5e"
1200 0x8e, 0x22, 0x40, 0xca, 0x5e, 0x69, 0xe2, 0xc7, 1254 "\x8e\x22\x40\xca\x5e\x69\xe2\xc7"
1201 0x8b, 0x32, 0x39, 0xec, 0xfa, 0xb2, 0x16, 0x49 }, 1255 "\x8b\x32\x39\xec\xfa\xb2\x16\x49",
1202 .np = 4, 1256 .np = 4,
1203 .tap = { 7, 7, 7, 7 } 1257 .tap = { 7, 7, 7, 7 }
1204 }, { 1258 }, {
1205 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1259 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1206 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1260 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1207 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1261 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1208 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1262 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1209 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1263 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1210 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1264 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1211 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1265 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1212 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1266 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1213 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1267 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1214 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1268 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1215 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1269 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1216 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1270 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1217 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1271 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1218 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1272 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1219 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1273 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1220 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1274 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1221 0xaa, 0xaa, 0xaa }, // (131 bytes) 1275 "\xaa\xaa\xaa",
1222 .ksize = 131, 1276 .ksize = 131,
1223 .plaintext = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 1277 .plaintext = "Test Using Larger Than Block-Siz"
1224 0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, // ("Test Using Large") 1278 "e Key - Hash Key First",
1225 0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42,
1226 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, // ("r Than Block-Siz")
1227 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20,
1228 0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79, // ("e Key - Hash Key")
1229 0x20, 0x46, 0x69, 0x72, 0x73, 0x74 }, // (" First")
1230 .psize = 54, 1279 .psize = 54,
1231 .digest = { 0x4e, 0xce, 0x08, 0x44, 0x85, 0x81, 0x3e, 0x90, 1280 .digest = "\x4e\xce\x08\x44\x85\x81\x3e\x90"
1232 0x88, 0xd2, 0xc6, 0x3a, 0x04, 0x1b, 0xc5, 0xb4, 1281 "\x88\xd2\xc6\x3a\x04\x1b\xc5\xb4"
1233 0x4f, 0x9e, 0xf1, 0x01, 0x2a, 0x2b, 0x58, 0x8f, 1282 "\x4f\x9e\xf1\x01\x2a\x2b\x58\x8f"
1234 0x3c, 0xd1, 0x1f, 0x05, 0x03, 0x3a, 0xc4, 0xc6, 1283 "\x3c\xd1\x1f\x05\x03\x3a\xc4\xc6"
1235 0x0c, 0x2e, 0xf6, 0xab, 0x40, 0x30, 0xfe, 0x82, 1284 "\x0c\x2e\xf6\xab\x40\x30\xfe\x82"
1236 0x96, 0x24, 0x8d, 0xf1, 0x63, 0xf4, 0x49, 0x52 }, 1285 "\x96\x24\x8d\xf1\x63\xf4\x49\x52",
1237 }, { 1286 }, {
1238 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1287 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1239 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1288 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1240 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1289 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1241 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1290 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1242 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1291 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1243 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1292 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1244 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1293 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1245 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1294 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1246 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1295 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1247 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1296 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1248 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1297 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1249 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1298 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1250 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1299 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1251 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1300 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1252 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1301 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1253 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1302 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1254 0xaa, 0xaa, 0xaa }, // (131 bytes) 1303 "\xaa\xaa\xaa",
1255 .ksize = 131, 1304 .ksize = 131,
1256 .plaintext = { 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 1305 .plaintext = "This is a test u"
1257 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, // ("This is a test u") 1306 "sing a larger th"
1258 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c, 1307 "an block-size ke"
1259 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, // ("sing a larger th") 1308 "y and a larger t"
1260 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 1309 "han block-size d"
1261 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65, // ("an block-size ke") 1310 "ata. The key nee"
1262 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 1311 "ds to be hashed "
1263 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, // ("y and a larger t") 1312 "before being use"
1264 0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 1313 "d by the HMAC al"
1265 0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64, // ("han block-size d") 1314 "gorithm.",
1266 0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65,
1267 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65, // ("ata. The key nee")
1268 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
1269 0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20, // ("ds to be hashed ")
1270 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62,
1271 0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, // ("before being use")
1272 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
1273 0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c, // ("d by the HMAC al")
1274 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e }, // ("gorithm.")
1275 .psize = 152, 1315 .psize = 152,
1276 .digest = { 0x66, 0x17, 0x17, 0x8e, 0x94, 0x1f, 0x02, 0x0d, 1316 .digest = "\x66\x17\x17\x8e\x94\x1f\x02\x0d"
1277 0x35, 0x1e, 0x2f, 0x25, 0x4e, 0x8f, 0xd3, 0x2c, 1317 "\x35\x1e\x2f\x25\x4e\x8f\xd3\x2c"
1278 0x60, 0x24, 0x20, 0xfe, 0xb0, 0xb8, 0xfb, 0x9a, 1318 "\x60\x24\x20\xfe\xb0\xb8\xfb\x9a"
1279 0xdc, 0xce, 0xbb, 0x82, 0x46, 0x1e, 0x99, 0xc5, 1319 "\xdc\xce\xbb\x82\x46\x1e\x99\xc5"
1280 0xa6, 0x78, 0xcc, 0x31, 0xe7, 0x99, 0x17, 0x6d, 1320 "\xa6\x78\xcc\x31\xe7\x99\x17\x6d"
1281 0x38, 0x60, 0xe6, 0x11, 0x0c, 0x46, 0x52, 0x3e }, 1321 "\x38\x60\xe6\x11\x0c\x46\x52\x3e",
1282 }, 1322 },
1283}; 1323};
1284 1324
@@ -1290,120 +1330,106 @@ static struct hash_testvec hmac_sha384_tv_template[] = {
1290 1330
1291static struct hash_testvec hmac_sha512_tv_template[] = { 1331static struct hash_testvec hmac_sha512_tv_template[] = {
1292 { 1332 {
1293 .key = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 1333 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1294 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 1334 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1295 0x0b, 0x0b, 0x0b, 0x0b }, // (20 bytes) 1335 "\x0b\x0b\x0b\x0b",
1296 .ksize = 20, 1336 .ksize = 20,
1297 .plaintext = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 }, // ("Hi There") 1337 .plaintext = "Hi There",
1298 .psize = 8, 1338 .psize = 8,
1299 .digest = { 0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d, 1339 .digest = "\x87\xaa\x7c\xde\xa5\xef\x61\x9d"
1300 0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0, 1340 "\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0"
1301 0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78, 1341 "\x23\x79\xf4\xe2\xce\x4e\xc2\x78"
1302 0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde, 1342 "\x7a\xd0\xb3\x05\x45\xe1\x7c\xde"
1303 0xda, 0xa8, 0x33, 0xb7, 0xd6, 0xb8, 0xa7, 0x02, 1343 "\xda\xa8\x33\xb7\xd6\xb8\xa7\x02"
1304 0x03, 0x8b, 0x27, 0x4e, 0xae, 0xa3, 0xf4, 0xe4, 1344 "\x03\x8b\x27\x4e\xae\xa3\xf4\xe4"
1305 0xbe, 0x9d, 0x91, 0x4e, 0xeb, 0x61, 0xf1, 0x70, 1345 "\xbe\x9d\x91\x4e\xeb\x61\xf1\x70"
1306 0x2e, 0x69, 0x6c, 0x20, 0x3a, 0x12, 0x68, 0x54 }, 1346 "\x2e\x69\x6c\x20\x3a\x12\x68\x54",
1307 }, { 1347 }, {
1308 .key = { 0x4a, 0x65, 0x66, 0x65 }, // ("Jefe") 1348 .key = "Jefe",
1309 .ksize = 4, 1349 .ksize = 4,
1310 .plaintext = { 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20, 1350 .plaintext = "what do ya want for nothing?",
1311 0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, // ("what do ya want ")
1312 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68,
1313 0x69, 0x6e, 0x67, 0x3f }, // ("for nothing?")
1314 .psize = 28, 1351 .psize = 28,
1315 .digest = { 0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2, 1352 .digest = "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2"
1316 0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3, 1353 "\xe3\x95\xfb\xe7\x3b\x56\xe0\xa3"
1317 0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6, 1354 "\x87\xbd\x64\x22\x2e\x83\x1f\xd6"
1318 0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54, 1355 "\x10\x27\x0c\xd7\xea\x25\x05\x54"
1319 0x97, 0x58, 0xbf, 0x75, 0xc0, 0x5a, 0x99, 0x4a, 1356 "\x97\x58\xbf\x75\xc0\x5a\x99\x4a"
1320 0x6d, 0x03, 0x4f, 0x65, 0xf8, 0xf0, 0xe6, 0xfd, 1357 "\x6d\x03\x4f\x65\xf8\xf0\xe6\xfd"
1321 0xca, 0xea, 0xb1, 0xa3, 0x4d, 0x4a, 0x6b, 0x4b, 1358 "\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b"
1322 0x63, 0x6e, 0x07, 0x0a, 0x38, 0xbc, 0xe7, 0x37 }, 1359 "\x63\x6e\x07\x0a\x38\xbc\xe7\x37",
1323 .np = 4, 1360 .np = 4,
1324 .tap = { 7, 7, 7, 7 } 1361 .tap = { 7, 7, 7, 7 }
1325 }, { 1362 }, {
1326 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1363 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1327 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1364 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1328 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1365 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1329 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1366 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1330 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1367 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1331 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1368 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1332 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1369 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1333 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1370 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1334 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1371 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1335 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1372 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1336 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1373 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1337 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1374 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1338 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1375 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1339 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1376 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1340 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1377 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1341 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1378 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1342 0xaa, 0xaa, 0xaa }, // (131 bytes) 1379 "\xaa\xaa\xaa",
1343 .ksize = 131, 1380 .ksize = 131,
1344 .plaintext = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 1381 .plaintext = "Test Using Large"
1345 0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, // ("Test Using Large") 1382 "r Than Block-Siz"
1346 0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42, 1383 "e Key - Hash Key"
1347 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, // ("r Than Block-Siz") 1384 " First",
1348 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20,
1349 0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79, // ("e Key - Hash Key")
1350 0x20, 0x46, 0x69, 0x72, 0x73, 0x74 }, // (" First")
1351 .psize = 54, 1385 .psize = 54,
1352 .digest = { 0x80, 0xb2, 0x42, 0x63, 0xc7, 0xc1, 0xa3, 0xeb, 1386 .digest = "\x80\xb2\x42\x63\xc7\xc1\xa3\xeb"
1353 0xb7, 0x14, 0x93, 0xc1, 0xdd, 0x7b, 0xe8, 0xb4, 1387 "\xb7\x14\x93\xc1\xdd\x7b\xe8\xb4"
1354 0x9b, 0x46, 0xd1, 0xf4, 0x1b, 0x4a, 0xee, 0xc1, 1388 "\x9b\x46\xd1\xf4\x1b\x4a\xee\xc1"
1355 0x12, 0x1b, 0x01, 0x37, 0x83, 0xf8, 0xf3, 0x52, 1389 "\x12\x1b\x01\x37\x83\xf8\xf3\x52"
1356 0x6b, 0x56, 0xd0, 0x37, 0xe0, 0x5f, 0x25, 0x98, 1390 "\x6b\x56\xd0\x37\xe0\x5f\x25\x98"
1357 0xbd, 0x0f, 0xd2, 0x21, 0x5d, 0x6a, 0x1e, 0x52, 1391 "\xbd\x0f\xd2\x21\x5d\x6a\x1e\x52"
1358 0x95, 0xe6, 0x4f, 0x73, 0xf6, 0x3f, 0x0a, 0xec, 1392 "\x95\xe6\x4f\x73\xf6\x3f\x0a\xec"
1359 0x8b, 0x91, 0x5a, 0x98, 0x5d, 0x78, 0x65, 0x98 }, 1393 "\x8b\x91\x5a\x98\x5d\x78\x65\x98",
1360 }, { 1394 }, {
1361 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1395 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1362 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1396 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1363 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1397 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1364 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1398 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1365 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1399 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1366 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1400 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1367 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1401 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1368 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1402 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1369 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1403 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1370 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1404 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1371 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1405 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1372 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1406 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1373 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1407 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1374 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1408 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1375 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1409 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1376 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1410 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1377 0xaa, 0xaa, 0xaa }, // (131 bytes) 1411 "\xaa\xaa\xaa",
1378 .ksize = 131, 1412 .ksize = 131,
1379 .plaintext = { 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 1413 .plaintext =
1380 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, // ("This is a test u") 1414 "This is a test u"
1381 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c, 1415 "sing a larger th"
1382 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, // ("sing a larger th") 1416 "an block-size ke"
1383 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 1417 "y and a larger t"
1384 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65, // ("an block-size ke") 1418 "han block-size d"
1385 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 1419 "ata. The key nee"
1386 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, // ("y and a larger t") 1420 "ds to be hashed "
1387 0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 1421 "before being use"
1388 0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64, // ("han block-size d") 1422 "d by the HMAC al"
1389 0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65, 1423 "gorithm.",
1390 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65, // ("ata. The key nee")
1391 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
1392 0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20, // ("ds to be hashed ")
1393 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62,
1394 0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, // ("before being use")
1395 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
1396 0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c, // ("d by the HMAC al")
1397 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e }, // ("gorithm.")
1398 .psize = 152, 1424 .psize = 152,
1399 .digest = { 0xe3, 0x7b, 0x6a, 0x77, 0x5d, 0xc8, 0x7d, 0xba, 1425 .digest = "\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba"
1400 0xa4, 0xdf, 0xa9, 0xf9, 0x6e, 0x5e, 0x3f, 0xfd, 1426 "\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd"
1401 0xde, 0xbd, 0x71, 0xf8, 0x86, 0x72, 0x89, 0x86, 1427 "\xde\xbd\x71\xf8\x86\x72\x89\x86"
1402 0x5d, 0xf5, 0xa3, 0x2d, 0x20, 0xcd, 0xc9, 0x44, 1428 "\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44"
1403 0xb6, 0x02, 0x2c, 0xac, 0x3c, 0x49, 0x82, 0xb1, 1429 "\xb6\x02\x2c\xac\x3c\x49\x82\xb1"
1404 0x0d, 0x5e, 0xeb, 0x55, 0xc3, 0xe4, 0xde, 0x15, 1430 "\x0d\x5e\xeb\x55\xc3\xe4\xde\x15"
1405 0x13, 0x46, 0x76, 0xfb, 0x6d, 0xe0, 0x44, 0x60, 1431 "\x13\x46\x76\xfb\x6d\xe0\x44\x60"
1406 0x65, 0xc9, 0x74, 0x40, 0xfa, 0x8c, 0x6a, 0x58 }, 1432 "\x65\xc9\x74\x40\xfa\x8c\x6a\x58",
1407 }, 1433 },
1408}; 1434};
1409 1435
@@ -1419,102 +1445,102 @@ static struct hash_testvec hmac_sha512_tv_template[] = {
1419 1445
1420static struct cipher_testvec des_enc_tv_template[] = { 1446static struct cipher_testvec des_enc_tv_template[] = {
1421 { /* From Applied Cryptography */ 1447 { /* From Applied Cryptography */
1422 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1448 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1423 .klen = 8, 1449 .klen = 8,
1424 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 }, 1450 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1425 .ilen = 8, 1451 .ilen = 8,
1426 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }, 1452 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1427 .rlen = 8, 1453 .rlen = 8,
1428 }, { /* Same key, different plaintext block */ 1454 }, { /* Same key, different plaintext block */
1429 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1455 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1430 .klen = 8, 1456 .klen = 8,
1431 .input = { 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 }, 1457 .input = "\x22\x33\x44\x55\x66\x77\x88\x99",
1432 .ilen = 8, 1458 .ilen = 8,
1433 .result = { 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }, 1459 .result = "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1434 .rlen = 8, 1460 .rlen = 8,
1435 }, { /* Sbox test from NBS */ 1461 }, { /* Sbox test from NBS */
1436 .key = { 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57 }, 1462 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
1437 .klen = 8, 1463 .klen = 8,
1438 .input = { 0x01, 0xa1, 0xd6, 0xd0, 0x39, 0x77, 0x67, 0x42 }, 1464 .input = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
1439 .ilen = 8, 1465 .ilen = 8,
1440 .result = { 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b }, 1466 .result = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1441 .rlen = 8, 1467 .rlen = 8,
1442 }, { /* Three blocks */ 1468 }, { /* Three blocks */
1443 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1469 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1444 .klen = 8, 1470 .klen = 8,
1445 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 1471 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1446 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 1472 "\x22\x33\x44\x55\x66\x77\x88\x99"
1447 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef }, 1473 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
1448 .ilen = 24, 1474 .ilen = 24,
1449 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 1475 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1450 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b, 1476 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1451 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90 }, 1477 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
1452 .rlen = 24, 1478 .rlen = 24,
1453 }, { /* Weak key */ 1479 }, { /* Weak key */
1454 .fail = 1, 1480 .fail = 1,
1455 .wk = 1, 1481 .wk = 1,
1456 .key = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 1482 .key = "\x01\x01\x01\x01\x01\x01\x01\x01",
1457 .klen = 8, 1483 .klen = 8,
1458 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 }, 1484 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1459 .ilen = 8, 1485 .ilen = 8,
1460 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }, 1486 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1461 .rlen = 8, 1487 .rlen = 8,
1462 }, { /* Two blocks -- for testing encryption across pages */ 1488 }, { /* Two blocks -- for testing encryption across pages */
1463 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1489 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1464 .klen = 8, 1490 .klen = 8,
1465 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 1491 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1466 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 }, 1492 "\x22\x33\x44\x55\x66\x77\x88\x99",
1467 .ilen = 16, 1493 .ilen = 16,
1468 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 1494 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1469 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }, 1495 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1470 .rlen = 16, 1496 .rlen = 16,
1471 .np = 2, 1497 .np = 2,
1472 .tap = { 8, 8 } 1498 .tap = { 8, 8 }
1473 }, { /* Four blocks -- for testing encryption with chunking */ 1499 }, { /* Four blocks -- for testing encryption with chunking */
1474 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1500 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1475 .klen = 8, 1501 .klen = 8,
1476 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 1502 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1477 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 1503 "\x22\x33\x44\x55\x66\x77\x88\x99"
1478 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef, 1504 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef"
1479 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 }, 1505 "\x22\x33\x44\x55\x66\x77\x88\x99",
1480 .ilen = 32, 1506 .ilen = 32,
1481 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 1507 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1482 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b, 1508 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1483 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90, 1509 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90"
1484 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }, 1510 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1485 .rlen = 32, 1511 .rlen = 32,
1486 .np = 3, 1512 .np = 3,
1487 .tap = { 14, 10, 8 } 1513 .tap = { 14, 10, 8 }
1488 }, { 1514 }, {
1489 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1515 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1490 .klen = 8, 1516 .klen = 8,
1491 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 1517 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1492 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 1518 "\x22\x33\x44\x55\x66\x77\x88\x99"
1493 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef }, 1519 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
1494 .ilen = 24, 1520 .ilen = 24,
1495 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 1521 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1496 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b, 1522 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1497 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90 }, 1523 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
1498 .rlen = 24, 1524 .rlen = 24,
1499 .np = 4, 1525 .np = 4,
1500 .tap = { 2, 1, 3, 18 } 1526 .tap = { 2, 1, 3, 18 }
1501 }, { 1527 }, {
1502 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1528 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1503 .klen = 8, 1529 .klen = 8,
1504 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 1530 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1505 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 }, 1531 "\x22\x33\x44\x55\x66\x77\x88\x99",
1506 .ilen = 16, 1532 .ilen = 16,
1507 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 1533 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1508 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }, 1534 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1509 .rlen = 16, 1535 .rlen = 16,
1510 .np = 5, 1536 .np = 5,
1511 .tap = { 2, 2, 2, 2, 8 } 1537 .tap = { 2, 2, 2, 2, 8 }
1512 }, { 1538 }, {
1513 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1539 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1514 .klen = 8, 1540 .klen = 8,
1515 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 }, 1541 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1516 .ilen = 8, 1542 .ilen = 8,
1517 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }, 1543 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1518 .rlen = 8, 1544 .rlen = 8,
1519 .np = 8, 1545 .np = 8,
1520 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 } 1546 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 }
@@ -1523,38 +1549,38 @@ static struct cipher_testvec des_enc_tv_template[] = {
1523 1549
1524static struct cipher_testvec des_dec_tv_template[] = { 1550static struct cipher_testvec des_dec_tv_template[] = {
1525 { /* From Applied Cryptography */ 1551 { /* From Applied Cryptography */
1526 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1552 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1527 .klen = 8, 1553 .klen = 8,
1528 .input = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }, 1554 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1529 .ilen = 8, 1555 .ilen = 8,
1530 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 }, 1556 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1531 .rlen = 8, 1557 .rlen = 8,
1532 }, { /* Sbox test from NBS */ 1558 }, { /* Sbox test from NBS */
1533 .key = { 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57 }, 1559 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
1534 .klen = 8, 1560 .klen = 8,
1535 .input = { 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b }, 1561 .input = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1536 .ilen = 8, 1562 .ilen = 8,
1537 .result = { 0x01, 0xa1, 0xd6, 0xd0, 0x39, 0x77, 0x67, 0x42 }, 1563 .result = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
1538 .rlen = 8, 1564 .rlen = 8,
1539 }, { /* Two blocks, for chunking test */ 1565 }, { /* Two blocks, for chunking test */
1540 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1566 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1541 .klen = 8, 1567 .klen = 8,
1542 .input = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 1568 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1543 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b }, 1569 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1544 .ilen = 16, 1570 .ilen = 16,
1545 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 1571 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1546 0xa3, 0x99, 0x7b, 0xca, 0xaf, 0x69, 0xa0, 0xf5 }, 1572 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
1547 .rlen = 16, 1573 .rlen = 16,
1548 .np = 2, 1574 .np = 2,
1549 .tap = { 8, 8 } 1575 .tap = { 8, 8 }
1550 }, { 1576 }, {
1551 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1577 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1552 .klen = 8, 1578 .klen = 8,
1553 .input = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 1579 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1554 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b }, 1580 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1555 .ilen = 16, 1581 .ilen = 16,
1556 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 1582 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1557 0xa3, 0x99, 0x7b, 0xca, 0xaf, 0x69, 0xa0, 0xf5 }, 1583 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
1558 .rlen = 16, 1584 .rlen = 16,
1559 .np = 3, 1585 .np = 3,
1560 .tap = { 3, 12, 1 } 1586 .tap = { 3, 12, 1 }
@@ -1563,53 +1589,53 @@ static struct cipher_testvec des_dec_tv_template[] = {
1563 1589
1564static struct cipher_testvec des_cbc_enc_tv_template[] = { 1590static struct cipher_testvec des_cbc_enc_tv_template[] = {
1565 { /* From OpenSSL */ 1591 { /* From OpenSSL */
1566 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, 1592 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1567 .klen = 8, 1593 .klen = 8,
1568 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, 1594 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1569 .input = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 1595 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1570 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 1596 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1571 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 }, 1597 "\x68\x65\x20\x74\x69\x6d\x65\x20",
1572 .ilen = 24, 1598 .ilen = 24,
1573 .result = { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4, 1599 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
1574 0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb, 1600 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
1575 0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68 }, 1601 "\x46\x8e\x91\x15\x78\x88\xba\x68",
1576 .rlen = 24, 1602 .rlen = 24,
1577 }, { /* FIPS Pub 81 */ 1603 }, { /* FIPS Pub 81 */
1578 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1604 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1579 .klen = 8, 1605 .klen = 8,
1580 .iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef }, 1606 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
1581 .input = { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 }, 1607 .input = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
1582 .ilen = 8, 1608 .ilen = 8,
1583 .result = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c }, 1609 .result = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1584 .rlen = 8, 1610 .rlen = 8,
1585 }, { 1611 }, {
1586 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1612 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1587 .klen = 8, 1613 .klen = 8,
1588 .iv = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c }, 1614 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1589 .input = { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 }, 1615 .input = "\x68\x65\x20\x74\x69\x6d\x65\x20",
1590 .ilen = 8, 1616 .ilen = 8,
1591 .result = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 1617 .result = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1592 .rlen = 8, 1618 .rlen = 8,
1593 }, { 1619 }, {
1594 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1620 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1595 .klen = 8, 1621 .klen = 8,
1596 .iv = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 1622 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1597 .input = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 }, 1623 .input = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1598 .ilen = 8, 1624 .ilen = 8,
1599 .result = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 }, 1625 .result = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1600 .rlen = 8, 1626 .rlen = 8,
1601 }, { /* Copy of openssl vector for chunk testing */ 1627 }, { /* Copy of openssl vector for chunk testing */
1602 /* From OpenSSL */ 1628 /* From OpenSSL */
1603 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, 1629 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1604 .klen = 8, 1630 .klen = 8,
1605 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, 1631 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1606 .input = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 1632 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1607 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 1633 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1608 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 }, 1634 "\x68\x65\x20\x74\x69\x6d\x65\x20",
1609 .ilen = 24, 1635 .ilen = 24,
1610 .result = { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4, 1636 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
1611 0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb, 1637 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
1612 0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68 }, 1638 "\x46\x8e\x91\x15\x78\x88\xba\x68",
1613 .rlen = 24, 1639 .rlen = 24,
1614 .np = 2, 1640 .np = 2,
1615 .tap = { 13, 11 } 1641 .tap = { 13, 11 }
@@ -1618,36 +1644,36 @@ static struct cipher_testvec des_cbc_enc_tv_template[] = {
1618 1644
1619static struct cipher_testvec des_cbc_dec_tv_template[] = { 1645static struct cipher_testvec des_cbc_dec_tv_template[] = {
1620 { /* FIPS Pub 81 */ 1646 { /* FIPS Pub 81 */
1621 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1647 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1622 .klen = 8, 1648 .klen = 8,
1623 .iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef }, 1649 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
1624 .input = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c }, 1650 .input = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1625 .ilen = 8, 1651 .ilen = 8,
1626 .result = { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 }, 1652 .result = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
1627 .rlen = 8, 1653 .rlen = 8,
1628 }, { 1654 }, {
1629 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1655 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1630 .klen = 8, 1656 .klen = 8,
1631 .iv = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c }, 1657 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1632 .input = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 1658 .input = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1633 .ilen = 8, 1659 .ilen = 8,
1634 .result = { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 }, 1660 .result = "\x68\x65\x20\x74\x69\x6d\x65\x20",
1635 .rlen = 8, 1661 .rlen = 8,
1636 }, { 1662 }, {
1637 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1663 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1638 .klen = 8, 1664 .klen = 8,
1639 .iv = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 1665 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1640 .input = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 }, 1666 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1641 .ilen = 8, 1667 .ilen = 8,
1642 .result = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 }, 1668 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1643 .rlen = 8, 1669 .rlen = 8,
1644 }, { /* Copy of above, for chunk testing */ 1670 }, { /* Copy of above, for chunk testing */
1645 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1671 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1646 .klen = 8, 1672 .klen = 8,
1647 .iv = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 1673 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1648 .input = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 }, 1674 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1649 .ilen = 8, 1675 .ilen = 8,
1650 .result = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 }, 1676 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1651 .rlen = 8, 1677 .rlen = 8,
1652 .np = 2, 1678 .np = 2,
1653 .tap = { 4, 4 } 1679 .tap = { 4, 4 }
@@ -1659,62 +1685,62 @@ static struct cipher_testvec des_cbc_dec_tv_template[] = {
1659 */ 1685 */
1660static struct cipher_testvec des3_ede_enc_tv_template[] = { 1686static struct cipher_testvec des3_ede_enc_tv_template[] = {
1661 { /* These are from openssl */ 1687 { /* These are from openssl */
1662 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1688 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1663 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 1689 "\x55\x55\x55\x55\x55\x55\x55\x55"
1664 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, 1690 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1665 .klen = 24, 1691 .klen = 24,
1666 .input = { 0x73, 0x6f, 0x6d, 0x65, 0x64, 0x61, 0x74, 0x61 }, 1692 .input = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
1667 .ilen = 8, 1693 .ilen = 8,
1668 .result = { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 }, 1694 .result = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
1669 .rlen = 8, 1695 .rlen = 8,
1670 }, { 1696 }, {
1671 .key = { 0x03, 0x52, 0x02, 0x07, 0x67, 0x20, 0x82, 0x17, 1697 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
1672 0x86, 0x02, 0x87, 0x66, 0x59, 0x08, 0x21, 0x98, 1698 "\x86\x02\x87\x66\x59\x08\x21\x98"
1673 0x64, 0x05, 0x6a, 0xbd, 0xfe, 0xa9, 0x34, 0x57 }, 1699 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
1674 .klen = 24, 1700 .klen = 24,
1675 .input = { 0x73, 0x71, 0x75, 0x69, 0x67, 0x67, 0x6c, 0x65 }, 1701 .input = "\x73\x71\x75\x69\x67\x67\x6c\x65",
1676 .ilen = 8, 1702 .ilen = 8,
1677 .result = { 0xc0, 0x7d, 0x2a, 0x0f, 0xa5, 0x66, 0xfa, 0x30 }, 1703 .result = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
1678 .rlen = 8, 1704 .rlen = 8,
1679 }, { 1705 }, {
1680 .key = { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, 1706 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
1681 0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01, 1707 "\x91\x07\xd0\x15\x89\x19\x01\x01"
1682 0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01 }, 1708 "\x19\x07\x92\x10\x98\x1a\x01\x01",
1683 .klen = 24, 1709 .klen = 24,
1684 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1710 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1685 .ilen = 8, 1711 .ilen = 8,
1686 .result = { 0xe1, 0xef, 0x62, 0xc3, 0x32, 0xfe, 0x82, 0x5b }, 1712 .result = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
1687 .rlen = 8, 1713 .rlen = 8,
1688 }, 1714 },
1689}; 1715};
1690 1716
1691static struct cipher_testvec des3_ede_dec_tv_template[] = { 1717static struct cipher_testvec des3_ede_dec_tv_template[] = {
1692 { /* These are from openssl */ 1718 { /* These are from openssl */
1693 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1719 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1694 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 1720 "\x55\x55\x55\x55\x55\x55\x55\x55"
1695 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, 1721 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1696 .klen = 24, 1722 .klen = 24,
1697 .input = { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 }, 1723 .input = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
1698 .ilen = 8, 1724 .ilen = 8,
1699 .result = { 0x73, 0x6f, 0x6d, 0x65, 0x64, 0x61, 0x74, 0x61 }, 1725 .result = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
1700 .rlen = 8, 1726 .rlen = 8,
1701 }, { 1727 }, {
1702 .key = { 0x03, 0x52, 0x02, 0x07, 0x67, 0x20, 0x82, 0x17, 1728 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
1703 0x86, 0x02, 0x87, 0x66, 0x59, 0x08, 0x21, 0x98, 1729 "\x86\x02\x87\x66\x59\x08\x21\x98"
1704 0x64, 0x05, 0x6a, 0xbd, 0xfe, 0xa9, 0x34, 0x57 }, 1730 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
1705 .klen = 24, 1731 .klen = 24,
1706 .input = { 0xc0, 0x7d, 0x2a, 0x0f, 0xa5, 0x66, 0xfa, 0x30 }, 1732 .input = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
1707 .ilen = 8, 1733 .ilen = 8,
1708 .result = { 0x73, 0x71, 0x75, 0x69, 0x67, 0x67, 0x6c, 0x65 }, 1734 .result = "\x73\x71\x75\x69\x67\x67\x6c\x65",
1709 .rlen = 8, 1735 .rlen = 8,
1710 }, { 1736 }, {
1711 .key = { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, 1737 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
1712 0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01, 1738 "\x91\x07\xd0\x15\x89\x19\x01\x01"
1713 0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01 }, 1739 "\x19\x07\x92\x10\x98\x1a\x01\x01",
1714 .klen = 24, 1740 .klen = 24,
1715 .input = { 0xe1, 0xef, 0x62, 0xc3, 0x32, 0xfe, 0x82, 0x5b }, 1741 .input = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
1716 .ilen = 8, 1742 .ilen = 8,
1717 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1743 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1718 .rlen = 8, 1744 .rlen = 8,
1719 }, 1745 },
1720}; 1746};
@@ -1729,148 +1755,148 @@ static struct cipher_testvec des3_ede_dec_tv_template[] = {
1729 1755
1730static struct cipher_testvec bf_enc_tv_template[] = { 1756static struct cipher_testvec bf_enc_tv_template[] = {
1731 { /* DES test vectors from OpenSSL */ 1757 { /* DES test vectors from OpenSSL */
1732 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, 1758 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1733 .klen = 8, 1759 .klen = 8,
1734 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1760 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1735 .ilen = 8, 1761 .ilen = 8,
1736 .result = { 0x4e, 0xf9, 0x97, 0x45, 0x61, 0x98, 0xdd, 0x78 }, 1762 .result = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
1737 .rlen = 8, 1763 .rlen = 8,
1738 }, { 1764 }, {
1739 .key = { 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e }, 1765 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
1740 .klen = 8, 1766 .klen = 8,
1741 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1767 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1742 .ilen = 8, 1768 .ilen = 8,
1743 .result = { 0xa7, 0x90, 0x79, 0x51, 0x08, 0xea, 0x3c, 0xae }, 1769 .result = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
1744 .rlen = 8, 1770 .rlen = 8,
1745 }, { 1771 }, {
1746 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 1772 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1747 .klen = 8, 1773 .klen = 8,
1748 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1774 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1749 .ilen = 8, 1775 .ilen = 8,
1750 .result = { 0xe8, 0x7a, 0x24, 0x4e, 0x2c, 0xc8, 0x5e, 0x82 }, 1776 .result = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
1751 .rlen = 8, 1777 .rlen = 8,
1752 }, { /* Vary the keylength... */ 1778 }, { /* Vary the keylength... */
1753 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1779 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1754 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f }, 1780 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
1755 .klen = 16, 1781 .klen = 16,
1756 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1782 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1757 .ilen = 8, 1783 .ilen = 8,
1758 .result = { 0x93, 0x14, 0x28, 0x87, 0xee, 0x3b, 0xe1, 0x5c }, 1784 .result = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
1759 .rlen = 8, 1785 .rlen = 8,
1760 }, { 1786 }, {
1761 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1787 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1762 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, 1788 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1763 0x00, 0x11, 0x22, 0x33, 0x44 }, 1789 "\x00\x11\x22\x33\x44",
1764 .klen = 21, 1790 .klen = 21,
1765 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1791 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1766 .ilen = 8, 1792 .ilen = 8,
1767 .result = { 0xe6, 0xf5, 0x1e, 0xd7, 0x9b, 0x9d, 0xb2, 0x1f }, 1793 .result = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
1768 .rlen = 8, 1794 .rlen = 8,
1769 }, { /* Generated with bf488 */ 1795 }, { /* Generated with bf488 */
1770 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1796 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1771 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, 1797 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1772 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1798 "\x00\x11\x22\x33\x44\x55\x66\x77"
1773 0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f, 1799 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
1774 0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76, 1800 "\x58\x40\x23\x64\x1a\xba\x61\x76"
1775 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e, 1801 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
1776 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 1802 "\xff\xff\xff\xff\xff\xff\xff\xff",
1777 .klen = 56, 1803 .klen = 56,
1778 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1804 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1779 .ilen = 8, 1805 .ilen = 8,
1780 .result = { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 }, 1806 .result = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
1781 .rlen = 8, 1807 .rlen = 8,
1782 }, 1808 },
1783}; 1809};
1784 1810
1785static struct cipher_testvec bf_dec_tv_template[] = { 1811static struct cipher_testvec bf_dec_tv_template[] = {
1786 { /* DES test vectors from OpenSSL */ 1812 { /* DES test vectors from OpenSSL */
1787 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1813 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1788 .klen = 8, 1814 .klen = 8,
1789 .input = { 0x4e, 0xf9, 0x97, 0x45, 0x61, 0x98, 0xdd, 0x78 }, 1815 .input = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
1790 .ilen = 8, 1816 .ilen = 8,
1791 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1817 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1792 .rlen = 8, 1818 .rlen = 8,
1793 }, { 1819 }, {
1794 .key = { 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e }, 1820 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
1795 .klen = 8, 1821 .klen = 8,
1796 .input = { 0xa7, 0x90, 0x79, 0x51, 0x08, 0xea, 0x3c, 0xae }, 1822 .input = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
1797 .ilen = 8, 1823 .ilen = 8,
1798 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1824 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1799 .rlen = 8, 1825 .rlen = 8,
1800 }, { 1826 }, {
1801 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 1827 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1802 .klen = 8, 1828 .klen = 8,
1803 .input = { 0xe8, 0x7a, 0x24, 0x4e, 0x2c, 0xc8, 0x5e, 0x82 }, 1829 .input = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
1804 .ilen = 8, 1830 .ilen = 8,
1805 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1831 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1806 .rlen = 8, 1832 .rlen = 8,
1807 }, { /* Vary the keylength... */ 1833 }, { /* Vary the keylength... */
1808 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1834 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1809 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f }, 1835 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
1810 .klen = 16, 1836 .klen = 16,
1811 .input = { 0x93, 0x14, 0x28, 0x87, 0xee, 0x3b, 0xe1, 0x5c }, 1837 .input = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
1812 .ilen = 8, 1838 .ilen = 8,
1813 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1839 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1814 .rlen = 8, 1840 .rlen = 8,
1815 }, { 1841 }, {
1816 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1842 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1817 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, 1843 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1818 0x00, 0x11, 0x22, 0x33, 0x44 }, 1844 "\x00\x11\x22\x33\x44",
1819 .klen = 21, 1845 .klen = 21,
1820 .input = { 0xe6, 0xf5, 0x1e, 0xd7, 0x9b, 0x9d, 0xb2, 0x1f }, 1846 .input = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
1821 .ilen = 8, 1847 .ilen = 8,
1822 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1848 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1823 .rlen = 8, 1849 .rlen = 8,
1824 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */ 1850 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
1825 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1851 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1826 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, 1852 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1827 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1853 "\x00\x11\x22\x33\x44\x55\x66\x77"
1828 0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f, 1854 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
1829 0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76, 1855 "\x58\x40\x23\x64\x1a\xba\x61\x76"
1830 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e, 1856 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
1831 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 1857 "\xff\xff\xff\xff\xff\xff\xff\xff",
1832 .klen = 56, 1858 .klen = 56,
1833 .input = { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 }, 1859 .input = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
1834 .ilen = 8, 1860 .ilen = 8,
1835 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1861 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1836 .rlen = 8, 1862 .rlen = 8,
1837 }, 1863 },
1838}; 1864};
1839 1865
1840static struct cipher_testvec bf_cbc_enc_tv_template[] = { 1866static struct cipher_testvec bf_cbc_enc_tv_template[] = {
1841 { /* From OpenSSL */ 1867 { /* From OpenSSL */
1842 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1868 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1843 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 1869 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1844 .klen = 16, 1870 .klen = 16,
1845 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1871 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1846 .input = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 1872 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1847 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 1873 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1848 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 1874 "\x68\x65\x20\x74\x69\x6d\x65\x20"
1849 0x66, 0x6f, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 }, 1875 "\x66\x6f\x72\x20\x00\x00\x00\x00",
1850 .ilen = 32, 1876 .ilen = 32,
1851 .result = { 0x6b, 0x77, 0xb4, 0xd6, 0x30, 0x06, 0xde, 0xe6, 1877 .result = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
1852 0x05, 0xb1, 0x56, 0xe2, 0x74, 0x03, 0x97, 0x93, 1878 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
1853 0x58, 0xde, 0xb9, 0xe7, 0x15, 0x46, 0x16, 0xd9, 1879 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
1854 0x59, 0xf1, 0x65, 0x2b, 0xd5, 0xff, 0x92, 0xcc }, 1880 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
1855 .rlen = 32, 1881 .rlen = 32,
1856 }, 1882 },
1857}; 1883};
1858 1884
1859static struct cipher_testvec bf_cbc_dec_tv_template[] = { 1885static struct cipher_testvec bf_cbc_dec_tv_template[] = {
1860 { /* From OpenSSL */ 1886 { /* From OpenSSL */
1861 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1887 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1862 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 1888 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1863 .klen = 16, 1889 .klen = 16,
1864 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1890 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1865 .input = { 0x6b, 0x77, 0xb4, 0xd6, 0x30, 0x06, 0xde, 0xe6, 1891 .input = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
1866 0x05, 0xb1, 0x56, 0xe2, 0x74, 0x03, 0x97, 0x93, 1892 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
1867 0x58, 0xde, 0xb9, 0xe7, 0x15, 0x46, 0x16, 0xd9, 1893 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
1868 0x59, 0xf1, 0x65, 0x2b, 0xd5, 0xff, 0x92, 0xcc }, 1894 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
1869 .ilen = 32, 1895 .ilen = 32,
1870 .result = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 1896 .result = "\x37\x36\x35\x34\x33\x32\x31\x20"
1871 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 1897 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1872 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 1898 "\x68\x65\x20\x74\x69\x6d\x65\x20"
1873 0x66, 0x6f, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 }, 1899 "\x66\x6f\x72\x20\x00\x00\x00\x00",
1874 .rlen = 32, 1900 .rlen = 32,
1875 }, 1901 },
1876}; 1902};
@@ -1885,158 +1911,158 @@ static struct cipher_testvec bf_cbc_dec_tv_template[] = {
1885 1911
1886static struct cipher_testvec tf_enc_tv_template[] = { 1912static struct cipher_testvec tf_enc_tv_template[] = {
1887 { 1913 {
1888 .key = { [0 ... 15] = 0x00 }, 1914 .key = zeroed_string,
1889 .klen = 16, 1915 .klen = 16,
1890 .input = { [0 ... 15] = 0x00 }, 1916 .input = zeroed_string,
1891 .ilen = 16, 1917 .ilen = 16,
1892 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1918 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1893 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1919 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1894 .rlen = 16, 1920 .rlen = 16,
1895 }, { 1921 }, {
1896 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1922 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1897 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 1923 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1898 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, 1924 "\x00\x11\x22\x33\x44\x55\x66\x77",
1899 .klen = 24, 1925 .klen = 24,
1900 .input = { [0 ... 15] = 0x00 }, 1926 .input = zeroed_string,
1901 .ilen = 16, 1927 .ilen = 16,
1902 .result = { 0xcf, 0xd1, 0xd2, 0xe5, 0xa9, 0xbe, 0x9c, 0xdf, 1928 .result = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
1903 0x50, 0x1f, 0x13, 0xb8, 0x92, 0xbd, 0x22, 0x48 }, 1929 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
1904 .rlen = 16, 1930 .rlen = 16,
1905 }, { 1931 }, {
1906 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1932 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1907 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 1933 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1908 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1934 "\x00\x11\x22\x33\x44\x55\x66\x77"
1909 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1935 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1910 .klen = 32, 1936 .klen = 32,
1911 .input = { [0 ... 15] = 0x00 }, 1937 .input = zeroed_string,
1912 .ilen = 16, 1938 .ilen = 16,
1913 .result = { 0x37, 0x52, 0x7b, 0xe0, 0x05, 0x23, 0x34, 0xb8, 1939 .result = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
1914 0x9f, 0x0c, 0xfc, 0xca, 0xe8, 0x7c, 0xfa, 0x20 }, 1940 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
1915 .rlen = 16, 1941 .rlen = 16,
1916 }, 1942 },
1917}; 1943};
1918 1944
1919static struct cipher_testvec tf_dec_tv_template[] = { 1945static struct cipher_testvec tf_dec_tv_template[] = {
1920 { 1946 {
1921 .key = { [0 ... 15] = 0x00 }, 1947 .key = zeroed_string,
1922 .klen = 16, 1948 .klen = 16,
1923 .input = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1949 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1924 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1950 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1925 .ilen = 16, 1951 .ilen = 16,
1926 .result = { [0 ... 15] = 0x00 }, 1952 .result = zeroed_string,
1927 .rlen = 16, 1953 .rlen = 16,
1928 }, { 1954 }, {
1929 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1955 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1930 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 1956 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1931 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, 1957 "\x00\x11\x22\x33\x44\x55\x66\x77",
1932 .klen = 24, 1958 .klen = 24,
1933 .input = { 0xcf, 0xd1, 0xd2, 0xe5, 0xa9, 0xbe, 0x9c, 0xdf, 1959 .input = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
1934 0x50, 0x1f, 0x13, 0xb8, 0x92, 0xbd, 0x22, 0x48 }, 1960 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
1935 .ilen = 16, 1961 .ilen = 16,
1936 .result = { [0 ... 15] = 0x00 }, 1962 .result = zeroed_string,
1937 .rlen = 16, 1963 .rlen = 16,
1938 }, { 1964 }, {
1939 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1965 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1940 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 1966 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1941 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1967 "\x00\x11\x22\x33\x44\x55\x66\x77"
1942 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1968 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1943 .klen = 32, 1969 .klen = 32,
1944 .input = { 0x37, 0x52, 0x7b, 0xe0, 0x05, 0x23, 0x34, 0xb8, 1970 .input = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
1945 0x9f, 0x0c, 0xfc, 0xca, 0xe8, 0x7c, 0xfa, 0x20 }, 1971 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
1946 .ilen = 16, 1972 .ilen = 16,
1947 .result = { [0 ... 15] = 0x00 }, 1973 .result = zeroed_string,
1948 .rlen = 16, 1974 .rlen = 16,
1949 }, 1975 },
1950}; 1976};
1951 1977
1952static struct cipher_testvec tf_cbc_enc_tv_template[] = { 1978static struct cipher_testvec tf_cbc_enc_tv_template[] = {
1953 { /* Generated with Nettle */ 1979 { /* Generated with Nettle */
1954 .key = { [0 ... 15] = 0x00 }, 1980 .key = zeroed_string,
1955 .klen = 16, 1981 .klen = 16,
1956 .iv = { [0 ... 15] = 0x00 }, 1982 .iv = zeroed_string,
1957 .input = { [0 ... 15] = 0x00 }, 1983 .input = zeroed_string,
1958 .ilen = 16, 1984 .ilen = 16,
1959 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1985 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1960 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1986 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1961 .rlen = 16, 1987 .rlen = 16,
1962 }, { 1988 }, {
1963 .key = { [0 ... 15] = 0x00 }, 1989 .key = zeroed_string,
1964 .klen = 16, 1990 .klen = 16,
1965 .iv = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1991 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1966 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1992 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1967 .input = { [0 ... 15] = 0x00 }, 1993 .input = zeroed_string,
1968 .ilen = 16, 1994 .ilen = 16,
1969 .result = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 1995 .result = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
1970 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 }, 1996 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
1971 .rlen = 16, 1997 .rlen = 16,
1972 }, { 1998 }, {
1973 .key = { [0 ... 15] = 0x00 }, 1999 .key = zeroed_string,
1974 .klen = 16, 2000 .klen = 16,
1975 .iv = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 2001 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
1976 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 }, 2002 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
1977 .input = { [0 ... 15] = 0x00 }, 2003 .input = zeroed_string,
1978 .ilen = 16, 2004 .ilen = 16,
1979 .result = { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26, 2005 .result = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
1980 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 }, 2006 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1981 .rlen = 16, 2007 .rlen = 16,
1982 }, { 2008 }, {
1983 .key = { [0 ... 15] = 0x00 }, 2009 .key = zeroed_string,
1984 .klen = 16, 2010 .klen = 16,
1985 .iv = { [0 ... 15] = 0x00 }, 2011 .iv = zeroed_string,
1986 .input = { [0 ... 47] = 0x00 }, 2012 .input = zeroed_string,
1987 .ilen = 48, 2013 .ilen = 48,
1988 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 2014 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1989 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a, 2015 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
1990 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 2016 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
1991 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19, 2017 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
1992 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26, 2018 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
1993 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 }, 2019 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1994 .rlen = 48, 2020 .rlen = 48,
1995 }, 2021 },
1996}; 2022};
1997 2023
1998static struct cipher_testvec tf_cbc_dec_tv_template[] = { 2024static struct cipher_testvec tf_cbc_dec_tv_template[] = {
1999 { /* Reverse of the first four above */ 2025 { /* Reverse of the first four above */
2000 .key = { [0 ... 15] = 0x00 }, 2026 .key = zeroed_string,
2001 .klen = 16, 2027 .klen = 16,
2002 .iv = { [0 ... 15] = 0x00 }, 2028 .iv = zeroed_string,
2003 .input = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 2029 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2004 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 2030 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2005 .ilen = 16, 2031 .ilen = 16,
2006 .result = { [0 ... 15] = 0x00 }, 2032 .result = zeroed_string,
2007 .rlen = 16, 2033 .rlen = 16,
2008 }, { 2034 }, {
2009 .key = { [0 ... 15] = 0x00 }, 2035 .key = zeroed_string,
2010 .klen = 16, 2036 .klen = 16,
2011 .iv = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 2037 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2012 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 2038 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2013 .input = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 2039 .input = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2014 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 }, 2040 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2015 .ilen = 16, 2041 .ilen = 16,
2016 .result = { [0 ... 15] = 0x00 }, 2042 .result = zeroed_string,
2017 .rlen = 16, 2043 .rlen = 16,
2018 }, { 2044 }, {
2019 .key = { [0 ... 15] = 0x00 }, 2045 .key = zeroed_string,
2020 .klen = 16, 2046 .klen = 16,
2021 .iv = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 2047 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2022 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 }, 2048 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2023 .input = { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26, 2049 .input = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2024 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 }, 2050 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
2025 .ilen = 16, 2051 .ilen = 16,
2026 .result = { [0 ... 15] = 0x00 }, 2052 .result = zeroed_string,
2027 .rlen = 16, 2053 .rlen = 16,
2028 }, { 2054 }, {
2029 .key = { [0 ... 15] = 0x00 }, 2055 .key = zeroed_string,
2030 .klen = 16, 2056 .klen = 16,
2031 .iv = { [0 ... 15] = 0x00 }, 2057 .iv = zeroed_string,
2032 .input = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 2058 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2033 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a, 2059 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2034 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 2060 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2035 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19, 2061 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2036 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26, 2062 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2037 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 }, 2063 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
2038 .ilen = 48, 2064 .ilen = 48,
2039 .result = { [0 ... 47] = 0x00 }, 2065 .result = zeroed_string,
2040 .rlen = 48, 2066 .rlen = 48,
2041 }, 2067 },
2042}; 2068};
@@ -2053,90 +2079,90 @@ static struct cipher_testvec tf_cbc_dec_tv_template[] = {
2053 2079
2054static struct cipher_testvec serpent_enc_tv_template[] = { 2080static struct cipher_testvec serpent_enc_tv_template[] = {
2055 { 2081 {
2056 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2082 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2057 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2083 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2058 .ilen = 16, 2084 .ilen = 16,
2059 .result = { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47, 2085 .result = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2060 0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 }, 2086 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
2061 .rlen = 16, 2087 .rlen = 16,
2062 }, { 2088 }, {
2063 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2089 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2064 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2090 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2065 .klen = 16, 2091 .klen = 16,
2066 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2092 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2067 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2093 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2068 .ilen = 16, 2094 .ilen = 16,
2069 .result = { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c, 2095 .result = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2070 0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d }, 2096 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
2071 .rlen = 16, 2097 .rlen = 16,
2072 }, { 2098 }, {
2073 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2099 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2074 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2100 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2075 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2101 "\x10\x11\x12\x13\x14\x15\x16\x17"
2076 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 2102 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
2077 .klen = 32, 2103 .klen = 32,
2078 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2104 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2079 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2105 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2080 .ilen = 16, 2106 .ilen = 16,
2081 .result = { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8, 2107 .result = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2082 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c }, 2108 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
2083 .rlen = 16, 2109 .rlen = 16,
2084 }, { 2110 }, {
2085 .key = { [15] = 0x80 }, 2111 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
2086 .klen = 16, 2112 .klen = 16,
2087 .input = { [0 ... 15] = 0x00 }, 2113 .input = zeroed_string,
2088 .ilen = 16, 2114 .ilen = 16,
2089 .result = { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c, 2115 .result = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2090 0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49}, 2116 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
2091 .rlen = 16, 2117 .rlen = 16,
2092 }, 2118 },
2093}; 2119};
2094 2120
2095static struct cipher_testvec tnepres_enc_tv_template[] = { 2121static struct cipher_testvec tnepres_enc_tv_template[] = {
2096 { /* KeySize=128, PT=0, I=1 */ 2122 { /* KeySize=128, PT=0, I=1 */
2097 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2123 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2098 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2124 "\x00\x00\x00\x00\x00\x00\x00\x00",
2099 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2125 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2126 "\x00\x00\x00\x00\x00\x00\x00\x00",
2101 .klen = 16, 2127 .klen = 16,
2102 .ilen = 16, 2128 .ilen = 16,
2103 .result = { 0x49, 0xaf, 0xbf, 0xad, 0x9d, 0x5a, 0x34, 0x05, 2129 .result = "\x49\xaf\xbf\xad\x9d\x5a\x34\x05"
2104 0x2c, 0xd8, 0xff, 0xa5, 0x98, 0x6b, 0xd2, 0xdd }, 2130 "\x2c\xd8\xff\xa5\x98\x6b\xd2\xdd",
2105 .rlen = 16, 2131 .rlen = 16,
2106 }, { /* KeySize=192, PT=0, I=1 */ 2132 }, { /* KeySize=192, PT=0, I=1 */
2107 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2133 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2108 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2134 "\x00\x00\x00\x00\x00\x00\x00\x00"
2109 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2135 "\x00\x00\x00\x00\x00\x00\x00\x00",
2110 .klen = 24, 2136 .klen = 24,
2111 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2137 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2112 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2138 "\x00\x00\x00\x00\x00\x00\x00\x00",
2113 .ilen = 16, 2139 .ilen = 16,
2114 .result = { 0xe7, 0x8e, 0x54, 0x02, 0xc7, 0x19, 0x55, 0x68, 2140 .result = "\xe7\x8e\x54\x02\xc7\x19\x55\x68"
2115 0xac, 0x36, 0x78, 0xf7, 0xa3, 0xf6, 0x0c, 0x66 }, 2141 "\xac\x36\x78\xf7\xa3\xf6\x0c\x66",
2116 .rlen = 16, 2142 .rlen = 16,
2117 }, { /* KeySize=256, PT=0, I=1 */ 2143 }, { /* KeySize=256, PT=0, I=1 */
2118 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2144 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2145 "\x00\x00\x00\x00\x00\x00\x00\x00"
2120 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2146 "\x00\x00\x00\x00\x00\x00\x00\x00"
2121 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2147 "\x00\x00\x00\x00\x00\x00\x00\x00",
2122 .klen = 32, 2148 .klen = 32,
2123 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2149 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2124 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2150 "\x00\x00\x00\x00\x00\x00\x00\x00",
2125 .ilen = 16, 2151 .ilen = 16,
2126 .result = { 0xab, 0xed, 0x96, 0xe7, 0x66, 0xbf, 0x28, 0xcb, 2152 .result = "\xab\xed\x96\xe7\x66\xbf\x28\xcb"
2127 0xc0, 0xeb, 0xd2, 0x1a, 0x82, 0xef, 0x08, 0x19 }, 2153 "\xc0\xeb\xd2\x1a\x82\xef\x08\x19",
2128 .rlen = 16, 2154 .rlen = 16,
2129 }, { /* KeySize=256, I=257 */ 2155 }, { /* KeySize=256, I=257 */
2130 .key = { 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0x19, 0x18, 2156 .key = "\x1f\x1e\x1d\x1c\x1b\x1a\x19\x18"
2131 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 2157 "\x17\x16\x15\x14\x13\x12\x11\x10"
2132 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 2158 "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2133 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 }, 2159 "\x07\x06\x05\x04\x03\x02\x01\x00",
2134 .klen = 32, 2160 .klen = 32,
2135 .input = { 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 2161 .input = "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2136 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 }, 2162 "\x07\x06\x05\x04\x03\x02\x01\x00",
2137 .ilen = 16, 2163 .ilen = 16,
2138 .result = { 0x5c, 0xe7, 0x1c, 0x70, 0xd2, 0x88, 0x2e, 0x5b, 2164 .result = "\x5c\xe7\x1c\x70\xd2\x88\x2e\x5b"
2139 0xb8, 0x32, 0xe4, 0x33, 0xf8, 0x9f, 0x26, 0xde }, 2165 "\xb8\x32\xe4\x33\xf8\x9f\x26\xde",
2140 .rlen = 16, 2166 .rlen = 16,
2141 }, 2167 },
2142}; 2168};
@@ -2144,82 +2170,82 @@ static struct cipher_testvec tnepres_enc_tv_template[] = {
2144 2170
2145static struct cipher_testvec serpent_dec_tv_template[] = { 2171static struct cipher_testvec serpent_dec_tv_template[] = {
2146 { 2172 {
2147 .input = { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47, 2173 .input = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2148 0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 }, 2174 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
2149 .ilen = 16, 2175 .ilen = 16,
2150 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2176 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2151 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2177 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2152 .rlen = 16, 2178 .rlen = 16,
2153 }, { 2179 }, {
2154 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2180 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2155 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2181 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2156 .klen = 16, 2182 .klen = 16,
2157 .input = { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c, 2183 .input = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2158 0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d }, 2184 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
2159 .ilen = 16, 2185 .ilen = 16,
2160 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2186 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2161 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2187 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2162 .rlen = 16, 2188 .rlen = 16,
2163 }, { 2189 }, {
2164 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2190 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2165 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2191 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2166 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2192 "\x10\x11\x12\x13\x14\x15\x16\x17"
2167 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 2193 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
2168 .klen = 32, 2194 .klen = 32,
2169 .input = { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8, 2195 .input = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2170 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c }, 2196 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
2171 .ilen = 16, 2197 .ilen = 16,
2172 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2198 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2173 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2199 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2174 .rlen = 16, 2200 .rlen = 16,
2175 }, { 2201 }, {
2176 .key = { [15] = 0x80 }, 2202 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
2177 .klen = 16, 2203 .klen = 16,
2178 .input = { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c, 2204 .input = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2179 0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49}, 2205 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
2180 .ilen = 16, 2206 .ilen = 16,
2181 .result = { [0 ... 15] = 0x00 }, 2207 .result = zeroed_string,
2182 .rlen = 16, 2208 .rlen = 16,
2183 }, 2209 },
2184}; 2210};
2185 2211
2186static struct cipher_testvec tnepres_dec_tv_template[] = { 2212static struct cipher_testvec tnepres_dec_tv_template[] = {
2187 { 2213 {
2188 .input = { 0x41, 0xcc, 0x6b, 0x31, 0x59, 0x31, 0x45, 0x97, 2214 .input = "\x41\xcc\x6b\x31\x59\x31\x45\x97"
2189 0x6d, 0x6f, 0xbb, 0x38, 0x4b, 0x37, 0x21, 0x28 }, 2215 "\x6d\x6f\xbb\x38\x4b\x37\x21\x28",
2190 .ilen = 16, 2216 .ilen = 16,
2191 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2217 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2192 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2218 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2193 .rlen = 16, 2219 .rlen = 16,
2194 }, { 2220 }, {
2195 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2221 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2196 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2222 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2197 .klen = 16, 2223 .klen = 16,
2198 .input = { 0xea, 0xf4, 0xd7, 0xfc, 0xd8, 0x01, 0x34, 0x47, 2224 .input = "\xea\xf4\xd7\xfc\xd8\x01\x34\x47"
2199 0x81, 0x45, 0x0b, 0xfa, 0x0c, 0xd6, 0xad, 0x6e }, 2225 "\x81\x45\x0b\xfa\x0c\xd6\xad\x6e",
2200 .ilen = 16, 2226 .ilen = 16,
2201 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2227 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2202 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2228 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2203 .rlen = 16, 2229 .rlen = 16,
2204 }, { 2230 }, {
2205 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2231 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2206 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2232 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2207 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2233 "\x10\x11\x12\x13\x14\x15\x16\x17"
2208 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 2234 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
2209 .klen = 32, 2235 .klen = 32,
2210 .input = { 0x64, 0xa9, 0x1a, 0x37, 0xed, 0x9f, 0xe7, 0x49, 2236 .input = "\x64\xa9\x1a\x37\xed\x9f\xe7\x49"
2211 0xa8, 0x4e, 0x76, 0xd6, 0xf5, 0x0d, 0x78, 0xee }, 2237 "\xa8\x4e\x76\xd6\xf5\x0d\x78\xee",
2212 .ilen = 16, 2238 .ilen = 16,
2213 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2239 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2214 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2240 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2215 .rlen = 16, 2241 .rlen = 16,
2216 }, { /* KeySize=128, I=121 */ 2242 }, { /* KeySize=128, I=121 */
2217 .key = { [15] = 0x80 }, 2243 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
2218 .klen = 16, 2244 .klen = 16,
2219 .input = { 0x3d, 0xda, 0xbf, 0xc0, 0x06, 0xda, 0xab, 0x06, 2245 .input = "\x3d\xda\xbf\xc0\x06\xda\xab\x06"
2220 0x46, 0x2a, 0xf4, 0xef, 0x81, 0x54, 0x4e, 0x26 }, 2246 "\x46\x2a\xf4\xef\x81\x54\x4e\x26",
2221 .ilen = 16, 2247 .ilen = 16,
2222 .result = { [0 ... 15] = 0x00 }, 2248 .result = zeroed_string,
2223 .rlen = 16, 2249 .rlen = 16,
2224 }, 2250 },
2225}; 2251};
@@ -2231,68 +2257,68 @@ static struct cipher_testvec tnepres_dec_tv_template[] = {
2231 2257
2232static struct cipher_testvec cast6_enc_tv_template[] = { 2258static struct cipher_testvec cast6_enc_tv_template[] = {
2233 { 2259 {
2234 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 2260 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2235 0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d }, 2261 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
2236 .klen = 16, 2262 .klen = 16,
2237 .input = { [0 ... 15] = 0x00 }, 2263 .input = zeroed_string,
2238 .ilen = 16, 2264 .ilen = 16,
2239 .result = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20, 2265 .result = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2240 0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b }, 2266 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
2241 .rlen = 16, 2267 .rlen = 16,
2242 }, { 2268 }, {
2243 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 2269 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2244 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98, 2270 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2245 0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 }, 2271 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
2246 .klen = 24, 2272 .klen = 24,
2247 .input = { [0 ... 15] = 0x00 }, 2273 .input = zeroed_string,
2248 .ilen = 16, 2274 .ilen = 16,
2249 .result = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb, 2275 .result = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2250 0xdd, 0x0e, 0x41, 0xaa, 0x08, 0xa7, 0xa7, 0xe8 }, 2276 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
2251 .rlen = 16, 2277 .rlen = 16,
2252 }, { 2278 }, {
2253 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 2279 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2254 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98, 2280 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2255 0x8d, 0x7c, 0x47, 0xce, 0x26, 0x49, 0x08, 0x46, 2281 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2256 0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 }, 2282 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
2257 .klen = 32, 2283 .klen = 32,
2258 .input = { [0 ... 15] = 0x00 }, 2284 .input = zeroed_string,
2259 .ilen = 16, 2285 .ilen = 16,
2260 .result = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9, 2286 .result = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2261 0xc9, 0x87, 0x01, 0x36, 0x55, 0x33, 0x17, 0xfa }, 2287 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
2262 .rlen = 16, 2288 .rlen = 16,
2263 }, 2289 },
2264}; 2290};
2265 2291
2266static struct cipher_testvec cast6_dec_tv_template[] = { 2292static struct cipher_testvec cast6_dec_tv_template[] = {
2267 { 2293 {
2268 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 2294 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2269 0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d }, 2295 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
2270 .klen = 16, 2296 .klen = 16,
2271 .input = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20, 2297 .input = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2272 0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b }, 2298 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
2273 .ilen = 16, 2299 .ilen = 16,
2274 .result = { [0 ... 15] = 0x00 }, 2300 .result = zeroed_string,
2275 .rlen = 16, 2301 .rlen = 16,
2276 }, { 2302 }, {
2277 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 2303 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2278 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98, 2304 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2279 0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 }, 2305 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
2280 .klen = 24, 2306 .klen = 24,
2281 .input = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb, 2307 .input = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2282 0xdd, 0x0e, 0x41, 0xaa, 0x08, 0xa7, 0xa7, 0xe8 }, 2308 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
2283 .ilen = 16, 2309 .ilen = 16,
2284 .result = { [0 ... 15] = 0x00 }, 2310 .result = zeroed_string,
2285 .rlen = 16, 2311 .rlen = 16,
2286 }, { 2312 }, {
2287 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 2313 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2288 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98, 2314 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2289 0x8d, 0x7c, 0x47, 0xce, 0x26, 0x49, 0x08, 0x46, 2315 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2290 0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 }, 2316 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
2291 .klen = 32, 2317 .klen = 32,
2292 .input = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9, 2318 .input = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2293 0xc9, 0x87, 0x01, 0x36, 0x55, 0x33, 0x17, 0xfa }, 2319 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
2294 .ilen = 16, 2320 .ilen = 16,
2295 .result = { [0 ... 15] = 0x00 }, 2321 .result = zeroed_string,
2296 .rlen = 16, 2322 .rlen = 16,
2297 }, 2323 },
2298}; 2324};
@@ -2318,238 +2344,238 @@ static struct cipher_testvec cast6_dec_tv_template[] = {
2318 2344
2319static struct cipher_testvec aes_enc_tv_template[] = { 2345static struct cipher_testvec aes_enc_tv_template[] = {
2320 { /* From FIPS-197 */ 2346 { /* From FIPS-197 */
2321 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2347 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2322 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2348 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2323 .klen = 16, 2349 .klen = 16,
2324 .input = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 2350 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2325 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 2351 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
2326 .ilen = 16, 2352 .ilen = 16,
2327 .result = { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30, 2353 .result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2328 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a }, 2354 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
2329 .rlen = 16, 2355 .rlen = 16,
2330 }, { 2356 }, {
2331 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2357 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2332 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2358 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2333 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }, 2359 "\x10\x11\x12\x13\x14\x15\x16\x17",
2334 .klen = 24, 2360 .klen = 24,
2335 .input = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 2361 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2336 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 2362 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
2337 .ilen = 16, 2363 .ilen = 16,
2338 .result = { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0, 2364 .result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2339 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 }, 2365 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
2340 .rlen = 16, 2366 .rlen = 16,
2341 }, { 2367 }, {
2342 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2368 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2343 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2369 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2344 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2370 "\x10\x11\x12\x13\x14\x15\x16\x17"
2345 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 2371 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
2346 .klen = 32, 2372 .klen = 32,
2347 .input = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 2373 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2348 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 2374 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
2349 .ilen = 16, 2375 .ilen = 16,
2350 .result = { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf, 2376 .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2351 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 }, 2377 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
2352 .rlen = 16, 2378 .rlen = 16,
2353 }, 2379 },
2354}; 2380};
2355 2381
2356static struct cipher_testvec aes_dec_tv_template[] = { 2382static struct cipher_testvec aes_dec_tv_template[] = {
2357 { /* From FIPS-197 */ 2383 { /* From FIPS-197 */
2358 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2384 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2359 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2385 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2360 .klen = 16, 2386 .klen = 16,
2361 .input = { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30, 2387 .input = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2362 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a }, 2388 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
2363 .ilen = 16, 2389 .ilen = 16,
2364 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 2390 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2365 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 2391 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
2366 .rlen = 16, 2392 .rlen = 16,
2367 }, { 2393 }, {
2368 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2394 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2369 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2395 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2370 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }, 2396 "\x10\x11\x12\x13\x14\x15\x16\x17",
2371 .klen = 24, 2397 .klen = 24,
2372 .input = { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0, 2398 .input = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2373 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 }, 2399 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
2374 .ilen = 16, 2400 .ilen = 16,
2375 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 2401 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2376 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 2402 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
2377 .rlen = 16, 2403 .rlen = 16,
2378 }, { 2404 }, {
2379 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2405 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2380 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2406 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2381 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2407 "\x10\x11\x12\x13\x14\x15\x16\x17"
2382 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 2408 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
2383 .klen = 32, 2409 .klen = 32,
2384 .input = { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf, 2410 .input = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2385 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 }, 2411 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
2386 .ilen = 16, 2412 .ilen = 16,
2387 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 2413 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2388 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 2414 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
2389 .rlen = 16, 2415 .rlen = 16,
2390 }, 2416 },
2391}; 2417};
2392 2418
2393static struct cipher_testvec aes_cbc_enc_tv_template[] = { 2419static struct cipher_testvec aes_cbc_enc_tv_template[] = {
2394 { /* From RFC 3602 */ 2420 { /* From RFC 3602 */
2395 .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b, 2421 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2396 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 }, 2422 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
2397 .klen = 16, 2423 .klen = 16,
2398 .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30, 2424 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2399 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 }, 2425 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2400 .input = { "Single block msg" }, 2426 .input = "Single block msg",
2401 .ilen = 16, 2427 .ilen = 16,
2402 .result = { 0xe3, 0x53, 0x77, 0x9c, 0x10, 0x79, 0xae, 0xb8, 2428 .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2403 0x27, 0x08, 0x94, 0x2d, 0xbe, 0x77, 0x18, 0x1a }, 2429 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
2404 .rlen = 16, 2430 .rlen = 16,
2405 }, { 2431 }, {
2406 .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, 2432 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2407 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a }, 2433 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
2408 .klen = 16, 2434 .klen = 16,
2409 .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 2435 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2410 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 }, 2436 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2411 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2437 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2412 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2438 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2413 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2439 "\x10\x11\x12\x13\x14\x15\x16\x17"
2414 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 2440 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
2415 .ilen = 32, 2441 .ilen = 32,
2416 .result = { 0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a, 2442 .result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2417 0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a, 2443 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2418 0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9, 2444 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2419 0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1 }, 2445 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
2420 .rlen = 32, 2446 .rlen = 32,
2421 }, { /* From NIST SP800-38A */ 2447 }, { /* From NIST SP800-38A */
2422 .key = { 0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52, 2448 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2423 0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5, 2449 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2424 0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b }, 2450 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
2425 .klen = 24, 2451 .klen = 24,
2426 .iv = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2452 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2427 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2453 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2428 .input = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 2454 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2429 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, 2455 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2430 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 2456 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2431 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, 2457 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2432 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 2458 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2433 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, 2459 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2434 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 2460 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2435 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, 2461 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
2436 .ilen = 64, 2462 .ilen = 64,
2437 .result = { 0x4f, 0x02, 0x1d, 0xb2, 0x43, 0xbc, 0x63, 0x3d, 2463 .result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2438 0x71, 0x78, 0x18, 0x3a, 0x9f, 0xa0, 0x71, 0xe8, 2464 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2439 0xb4, 0xd9, 0xad, 0xa9, 0xad, 0x7d, 0xed, 0xf4, 2465 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2440 0xe5, 0xe7, 0x38, 0x76, 0x3f, 0x69, 0x14, 0x5a, 2466 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2441 0x57, 0x1b, 0x24, 0x20, 0x12, 0xfb, 0x7a, 0xe0, 2467 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2442 0x7f, 0xa9, 0xba, 0xac, 0x3d, 0xf1, 0x02, 0xe0, 2468 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2443 0x08, 0xb0, 0xe2, 0x79, 0x88, 0x59, 0x88, 0x81, 2469 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2444 0xd9, 0x20, 0xa9, 0xe6, 0x4f, 0x56, 0x15, 0xcd }, 2470 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
2445 .rlen = 64, 2471 .rlen = 64,
2446 }, { 2472 }, {
2447 .key = { 0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 2473 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2448 0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81, 2474 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2449 0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 2475 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2450 0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4 }, 2476 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
2451 .klen = 32, 2477 .klen = 32,
2452 .iv = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2478 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2453 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2479 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2454 .input = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 2480 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2455 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, 2481 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2456 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 2482 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2457 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, 2483 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2458 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 2484 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2459 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, 2485 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2460 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 2486 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2461 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, 2487 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
2462 .ilen = 64, 2488 .ilen = 64,
2463 .result = { 0xf5, 0x8c, 0x4c, 0x04, 0xd6, 0xe5, 0xf1, 0xba, 2489 .result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2464 0x77, 0x9e, 0xab, 0xfb, 0x5f, 0x7b, 0xfb, 0xd6, 2490 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2465 0x9c, 0xfc, 0x4e, 0x96, 0x7e, 0xdb, 0x80, 0x8d, 2491 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2466 0x67, 0x9f, 0x77, 0x7b, 0xc6, 0x70, 0x2c, 0x7d, 2492 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2467 0x39, 0xf2, 0x33, 0x69, 0xa9, 0xd9, 0xba, 0xcf, 2493 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2468 0xa5, 0x30, 0xe2, 0x63, 0x04, 0x23, 0x14, 0x61, 2494 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2469 0xb2, 0xeb, 0x05, 0xe2, 0xc3, 0x9b, 0xe9, 0xfc, 2495 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2470 0xda, 0x6c, 0x19, 0x07, 0x8c, 0x6a, 0x9d, 0x1b }, 2496 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
2471 .rlen = 64, 2497 .rlen = 64,
2472 }, 2498 },
2473}; 2499};
2474 2500
2475static struct cipher_testvec aes_cbc_dec_tv_template[] = { 2501static struct cipher_testvec aes_cbc_dec_tv_template[] = {
2476 { /* From RFC 3602 */ 2502 { /* From RFC 3602 */
2477 .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b, 2503 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2478 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 }, 2504 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
2479 .klen = 16, 2505 .klen = 16,
2480 .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30, 2506 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2481 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 }, 2507 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2482 .input = { 0xe3, 0x53, 0x77, 0x9c, 0x10, 0x79, 0xae, 0xb8, 2508 .input = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2483 0x27, 0x08, 0x94, 0x2d, 0xbe, 0x77, 0x18, 0x1a }, 2509 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
2484 .ilen = 16, 2510 .ilen = 16,
2485 .result = { "Single block msg" }, 2511 .result = "Single block msg",
2486 .rlen = 16, 2512 .rlen = 16,
2487 }, { 2513 }, {
2488 .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, 2514 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2489 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a }, 2515 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
2490 .klen = 16, 2516 .klen = 16,
2491 .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 2517 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2492 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 }, 2518 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2493 .input = { 0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a, 2519 .input = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2494 0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a, 2520 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2495 0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9, 2521 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2496 0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1 }, 2522 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
2497 .ilen = 32, 2523 .ilen = 32,
2498 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2524 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2499 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2525 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2500 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2526 "\x10\x11\x12\x13\x14\x15\x16\x17"
2501 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 2527 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
2502 .rlen = 32, 2528 .rlen = 32,
2503 }, { /* From NIST SP800-38A */ 2529 }, { /* From NIST SP800-38A */
2504 .key = { 0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52, 2530 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2505 0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5, 2531 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2506 0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b }, 2532 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
2507 .klen = 24, 2533 .klen = 24,
2508 .iv = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2534 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2509 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2535 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2510 .input = { 0x4f, 0x02, 0x1d, 0xb2, 0x43, 0xbc, 0x63, 0x3d, 2536 .input = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2511 0x71, 0x78, 0x18, 0x3a, 0x9f, 0xa0, 0x71, 0xe8, 2537 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2512 0xb4, 0xd9, 0xad, 0xa9, 0xad, 0x7d, 0xed, 0xf4, 2538 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2513 0xe5, 0xe7, 0x38, 0x76, 0x3f, 0x69, 0x14, 0x5a, 2539 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2514 0x57, 0x1b, 0x24, 0x20, 0x12, 0xfb, 0x7a, 0xe0, 2540 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2515 0x7f, 0xa9, 0xba, 0xac, 0x3d, 0xf1, 0x02, 0xe0, 2541 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2516 0x08, 0xb0, 0xe2, 0x79, 0x88, 0x59, 0x88, 0x81, 2542 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2517 0xd9, 0x20, 0xa9, 0xe6, 0x4f, 0x56, 0x15, 0xcd }, 2543 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
2518 .ilen = 64, 2544 .ilen = 64,
2519 .result = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 2545 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2520 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, 2546 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2521 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 2547 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2522 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, 2548 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2523 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 2549 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2524 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, 2550 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2525 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 2551 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2526 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, 2552 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
2527 .rlen = 64, 2553 .rlen = 64,
2528 }, { 2554 }, {
2529 .key = { 0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 2555 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2530 0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81, 2556 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2531 0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 2557 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2532 0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4 }, 2558 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
2533 .klen = 32, 2559 .klen = 32,
2534 .iv = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2560 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2535 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 2561 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2536 .input = { 0xf5, 0x8c, 0x4c, 0x04, 0xd6, 0xe5, 0xf1, 0xba, 2562 .input = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2537 0x77, 0x9e, 0xab, 0xfb, 0x5f, 0x7b, 0xfb, 0xd6, 2563 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2538 0x9c, 0xfc, 0x4e, 0x96, 0x7e, 0xdb, 0x80, 0x8d, 2564 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2539 0x67, 0x9f, 0x77, 0x7b, 0xc6, 0x70, 0x2c, 0x7d, 2565 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2540 0x39, 0xf2, 0x33, 0x69, 0xa9, 0xd9, 0xba, 0xcf, 2566 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2541 0xa5, 0x30, 0xe2, 0x63, 0x04, 0x23, 0x14, 0x61, 2567 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2542 0xb2, 0xeb, 0x05, 0xe2, 0xc3, 0x9b, 0xe9, 0xfc, 2568 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2543 0xda, 0x6c, 0x19, 0x07, 0x8c, 0x6a, 0x9d, 0x1b }, 2569 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
2544 .ilen = 64, 2570 .ilen = 64,
2545 .result = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 2571 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2546 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, 2572 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2547 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 2573 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2548 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, 2574 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2549 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 2575 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2550 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, 2576 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2551 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 2577 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2552 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, 2578 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
2553 .rlen = 64, 2579 .rlen = 64,
2554 }, 2580 },
2555}; 2581};
@@ -2557,250 +2583,249 @@ static struct cipher_testvec aes_cbc_dec_tv_template[] = {
2557static struct cipher_testvec aes_lrw_enc_tv_template[] = { 2583static struct cipher_testvec aes_lrw_enc_tv_template[] = {
2558 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */ 2584 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2559 { /* LRW-32-AES 1 */ 2585 { /* LRW-32-AES 1 */
2560 .key = { 0x45, 0x62, 0xac, 0x25, 0xf8, 0x28, 0x17, 0x6d, 2586 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
2561 0x4c, 0x26, 0x84, 0x14, 0xb5, 0x68, 0x01, 0x85, 2587 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
2562 0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03, 2588 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
2563 0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 }, 2589 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
2564 .klen = 32, 2590 .klen = 32,
2565 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2591 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2566 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 2592 "\x00\x00\x00\x00\x00\x00\x00\x01",
2567 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2593 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2568 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2594 "\x38\x39\x41\x42\x43\x44\x45\x46",
2569 .ilen = 16, 2595 .ilen = 16,
2570 .result = { 0xf1, 0xb2, 0x73, 0xcd, 0x65, 0xa3, 0xdf, 0x5f, 2596 .result = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
2571 0xe9, 0x5d, 0x48, 0x92, 0x54, 0x63, 0x4e, 0xb8 }, 2597 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
2572 .rlen = 16, 2598 .rlen = 16,
2573 }, { /* LRW-32-AES 2 */ 2599 }, { /* LRW-32-AES 2 */
2574 .key = { 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c, 2600 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
2575 0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44, 2601 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
2576 0x0d, 0x48, 0xf0, 0xb7, 0xb1, 0x5a, 0x53, 0xea, 2602 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
2577 0x1c, 0xaa, 0x6b, 0x29, 0xc2, 0xca, 0xfb, 0xaf 2603 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
2578 },
2579 .klen = 32, 2604 .klen = 32,
2580 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2605 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2581 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, 2606 "\x00\x00\x00\x00\x00\x00\x00\x02",
2582 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2607 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2583 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2608 "\x38\x39\x41\x42\x43\x44\x45\x46",
2584 .ilen = 16, 2609 .ilen = 16,
2585 .result = { 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5, 2610 .result = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
2586 0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 }, 2611 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
2587 .rlen = 16, 2612 .rlen = 16,
2588 }, { /* LRW-32-AES 3 */ 2613 }, { /* LRW-32-AES 3 */
2589 .key = { 0xd8, 0x2a, 0x91, 0x34, 0xb2, 0x6a, 0x56, 0x50, 2614 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
2590 0x30, 0xfe, 0x69, 0xe2, 0x37, 0x7f, 0x98, 0x47, 2615 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
2591 0xcd, 0xf9, 0x0b, 0x16, 0x0c, 0x64, 0x8f, 0xb6, 2616 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
2592 0xb0, 0x0d, 0x0d, 0x1b, 0xae, 0x85, 0x87, 0x1f }, 2617 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
2593 .klen = 32, 2618 .klen = 32,
2594 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2619 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2595 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, 2620 "\x00\x00\x00\x02\x00\x00\x00\x00",
2596 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2621 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2597 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2622 "\x38\x39\x41\x42\x43\x44\x45\x46",
2598 .ilen = 16, 2623 .ilen = 16,
2599 .result = { 0x76, 0x32, 0x21, 0x83, 0xed, 0x8f, 0xf1, 0x82, 2624 .result = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
2600 0xf9, 0x59, 0x62, 0x03, 0x69, 0x0e, 0x5e, 0x01 }, 2625 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
2601 .rlen = 16, 2626 .rlen = 16,
2602 }, { /* LRW-32-AES 4 */ 2627 }, { /* LRW-32-AES 4 */
2603 .key = { 0x0f, 0x6a, 0xef, 0xf8, 0xd3, 0xd2, 0xbb, 0x15, 2628 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
2604 0x25, 0x83, 0xf7, 0x3c, 0x1f, 0x01, 0x28, 0x74, 2629 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
2605 0xca, 0xc6, 0xbc, 0x35, 0x4d, 0x4a, 0x65, 0x54, 2630 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
2606 0x90, 0xae, 0x61, 0xcf, 0x7b, 0xae, 0xbd, 0xcc, 2631 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
2607 0xad, 0xe4, 0x94, 0xc5, 0x4a, 0x29, 0xae, 0x70 }, 2632 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
2608 .klen = 40, 2633 .klen = 40,
2609 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2634 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2610 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 2635 "\x00\x00\x00\x00\x00\x00\x00\x01",
2611 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2636 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2612 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2637 "\x38\x39\x41\x42\x43\x44\x45\x46",
2613 .ilen = 16, 2638 .ilen = 16,
2614 .result = { 0x9c, 0x0f, 0x15, 0x2f, 0x55, 0xa2, 0xd8, 0xf0, 2639 .result = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
2615 0xd6, 0x7b, 0x8f, 0x9e, 0x28, 0x22, 0xbc, 0x41 }, 2640 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
2616 .rlen = 16, 2641 .rlen = 16,
2617 }, { /* LRW-32-AES 5 */ 2642 }, { /* LRW-32-AES 5 */
2618 .key = { 0x8a, 0xd4, 0xee, 0x10, 0x2f, 0xbd, 0x81, 0xff, 2643 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
2619 0xf8, 0x86, 0xce, 0xac, 0x93, 0xc5, 0xad, 0xc6, 2644 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
2620 0xa0, 0x19, 0x07, 0xc0, 0x9d, 0xf7, 0xbb, 0xdd, 2645 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
2621 0x52, 0x13, 0xb2, 0xb7, 0xf0, 0xff, 0x11, 0xd8, 2646 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
2622 0xd6, 0x08, 0xd0, 0xcd, 0x2e, 0xb1, 0x17, 0x6f }, 2647 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
2623 .klen = 40, 2648 .klen = 40,
2624 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2649 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2625 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, 2650 "\x00\x00\x00\x02\x00\x00\x00\x00",
2626 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2651 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2627 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2652 "\x38\x39\x41\x42\x43\x44\x45\x46",
2628 .ilen = 16, 2653 .ilen = 16,
2629 .result = { 0xd4, 0x27, 0x6a, 0x7f, 0x14, 0x91, 0x3d, 0x65, 2654 .result = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
2630 0xc8, 0x60, 0x48, 0x02, 0x87, 0xe3, 0x34, 0x06 }, 2655 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
2631 .rlen = 16, 2656 .rlen = 16,
2632 }, { /* LRW-32-AES 6 */ 2657 }, { /* LRW-32-AES 6 */
2633 .key = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c, 2658 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2634 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d, 2659 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2635 0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21, 2660 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2636 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89, 2661 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2637 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1, 2662 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2638 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e }, 2663 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
2639 .klen = 48, 2664 .klen = 48,
2640 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2665 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2641 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 2666 "\x00\x00\x00\x00\x00\x00\x00\x01",
2642 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2667 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2643 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2668 "\x38\x39\x41\x42\x43\x44\x45\x46",
2644 .ilen = 16, 2669 .ilen = 16,
2645 .result = { 0xbd, 0x06, 0xb8, 0xe1, 0xdb, 0x98, 0x89, 0x9e, 2670 .result = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
2646 0xc4, 0x98, 0xe4, 0x91, 0xcf, 0x1c, 0x70, 0x2b }, 2671 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
2647 .rlen = 16, 2672 .rlen = 16,
2648 }, { /* LRW-32-AES 7 */ 2673 }, { /* LRW-32-AES 7 */
2649 .key = { 0xfb, 0x76, 0x15, 0xb2, 0x3d, 0x80, 0x89, 0x1d, 2674 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
2650 0xd4, 0x70, 0x98, 0x0b, 0xc7, 0x95, 0x84, 0xc8, 2675 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
2651 0xb2, 0xfb, 0x64, 0xce, 0x60, 0x97, 0x87, 0x8d, 2676 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
2652 0x17, 0xfc, 0xe4, 0x5a, 0x49, 0xe8, 0x30, 0xb7, 2677 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
2653 0x6e, 0x78, 0x17, 0xe7, 0x2d, 0x5e, 0x12, 0xd4, 2678 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
2654 0x60, 0x64, 0x04, 0x7a, 0xf1, 0x2f, 0x9e, 0x0c }, 2679 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
2655 .klen = 48, 2680 .klen = 48,
2656 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2681 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2657 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, 2682 "\x00\x00\x00\x02\x00\x00\x00\x00",
2658 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2683 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2659 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2684 "\x38\x39\x41\x42\x43\x44\x45\x46",
2660 .ilen = 16, 2685 .ilen = 16,
2661 .result = { 0x5b, 0x90, 0x8e, 0xc1, 0xab, 0xdd, 0x67, 0x5f, 2686 .result = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
2662 0x3d, 0x69, 0x8a, 0x95, 0x53, 0xc8, 0x9c, 0xe5 }, 2687 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
2663 .rlen = 16, 2688 .rlen = 16,
2664 }, { 2689 }, {
2665/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */ 2690/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
2666 .key = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c, 2691 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2667 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d, 2692 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2668 0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21, 2693 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2669 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89, 2694 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2670 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1, 2695 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2671 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e }, 2696 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
2672 .klen = 48, 2697 .klen = 48,
2673 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2698 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2674 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 2699 "\x00\x00\x00\x00\x00\x00\x00\x01",
2675 .input = { 0x05, 0x11, 0xb7, 0x18, 0xab, 0xc6, 0x2d, 0xac, 2700 .input = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
2676 0x70, 0x5d, 0xf6, 0x22, 0x94, 0xcd, 0xe5, 0x6c, 2701 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
2677 0x17, 0x6b, 0xf6, 0x1c, 0xf0, 0xf3, 0x6e, 0xf8, 2702 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
2678 0x50, 0x38, 0x1f, 0x71, 0x49, 0xb6, 0x57, 0xd6, 2703 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
2679 0x8f, 0xcb, 0x8d, 0x6b, 0xe3, 0xa6, 0x29, 0x90, 2704 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
2680 0xfe, 0x2a, 0x62, 0x82, 0xae, 0x6d, 0x8b, 0xf6, 2705 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
2681 0xad, 0x1e, 0x9e, 0x20, 0x5f, 0x38, 0xbe, 0x04, 2706 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
2682 0xda, 0x10, 0x8e, 0xed, 0xa2, 0xa4, 0x87, 0xab, 2707 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
2683 0xda, 0x6b, 0xb4, 0x0c, 0x75, 0xba, 0xd3, 0x7c, 2708 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
2684 0xc9, 0xac, 0x42, 0x31, 0x95, 0x7c, 0xc9, 0x04, 2709 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
2685 0xeb, 0xd5, 0x6e, 0x32, 0x69, 0x8a, 0xdb, 0xa6, 2710 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
2686 0x15, 0xd7, 0x3f, 0x4f, 0x2f, 0x66, 0x69, 0x03, 2711 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
2687 0x9c, 0x1f, 0x54, 0x0f, 0xde, 0x1f, 0xf3, 0x65, 2712 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
2688 0x4c, 0x96, 0x12, 0xed, 0x7c, 0x92, 0x03, 0x01, 2713 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
2689 0x6f, 0xbc, 0x35, 0x93, 0xac, 0xf1, 0x27, 0xf1, 2714 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
2690 0xb4, 0x96, 0x82, 0x5a, 0x5f, 0xb0, 0xa0, 0x50, 2715 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
2691 0x89, 0xa4, 0x8e, 0x66, 0x44, 0x85, 0xcc, 0xfd, 2716 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
2692 0x33, 0x14, 0x70, 0xe3, 0x96, 0xb2, 0xc3, 0xd3, 2717 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
2693 0xbb, 0x54, 0x5a, 0x1a, 0xf9, 0x74, 0xa2, 0xc5, 2718 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
2694 0x2d, 0x64, 0x75, 0xdd, 0xb4, 0x54, 0xe6, 0x74, 2719 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
2695 0x8c, 0xd3, 0x9d, 0x9e, 0x86, 0xab, 0x51, 0x53, 2720 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
2696 0xb7, 0x93, 0x3e, 0x6f, 0xd0, 0x4e, 0x2c, 0x40, 2721 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
2697 0xf6, 0xa8, 0x2e, 0x3e, 0x9d, 0xf4, 0x66, 0xa5, 2722 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
2698 0x76, 0x12, 0x73, 0x44, 0x1a, 0x56, 0xd7, 0x72, 2723 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
2699 0x88, 0xcd, 0x21, 0x8c, 0x4c, 0x0f, 0xfe, 0xda, 2724 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
2700 0x95, 0xe0, 0x3a, 0xa6, 0xa5, 0x84, 0x46, 0xcd, 2725 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
2701 0xd5, 0x3e, 0x9d, 0x3a, 0xe2, 0x67, 0xe6, 0x60, 2726 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
2702 0x1a, 0xe2, 0x70, 0x85, 0x58, 0xc2, 0x1b, 0x09, 2727 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
2703 0xe1, 0xd7, 0x2c, 0xca, 0xad, 0xa8, 0x8f, 0xf9, 2728 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
2704 0xac, 0xb3, 0x0e, 0xdb, 0xca, 0x2e, 0xe2, 0xb8, 2729 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
2705 0x51, 0x71, 0xd9, 0x3c, 0x6c, 0xf1, 0x56, 0xf8, 2730 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
2706 0xea, 0x9c, 0xf1, 0xfb, 0x0c, 0xe6, 0xb7, 0x10, 2731 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
2707 0x1c, 0xf8, 0xa9, 0x7c, 0xe8, 0x53, 0x35, 0xc1, 2732 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
2708 0x90, 0x3e, 0x76, 0x4a, 0x74, 0xa4, 0x21, 0x2c, 2733 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
2709 0xf6, 0x2c, 0x4e, 0x0f, 0x94, 0x3a, 0x88, 0x2e, 2734 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
2710 0x41, 0x09, 0x6a, 0x33, 0x7d, 0xf6, 0xdd, 0x3f, 2735 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
2711 0x8d, 0x23, 0x31, 0x74, 0x84, 0xeb, 0x88, 0x6e, 2736 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
2712 0xcc, 0xb9, 0xbc, 0x22, 0x83, 0x19, 0x07, 0x22, 2737 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
2713 0xa5, 0x2d, 0xdf, 0xa5, 0xf3, 0x80, 0x85, 0x78, 2738 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
2714 0x84, 0x39, 0x6a, 0x6d, 0x6a, 0x99, 0x4f, 0xa5, 2739 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
2715 0x15, 0xfe, 0x46, 0xb0, 0xe4, 0x6c, 0xa5, 0x41, 2740 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
2716 0x3c, 0xce, 0x8f, 0x42, 0x60, 0x71, 0xa7, 0x75, 2741 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
2717 0x08, 0x40, 0x65, 0x8a, 0x82, 0xbf, 0xf5, 0x43, 2742 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
2718 0x71, 0x96, 0xa9, 0x4d, 0x44, 0x8a, 0x20, 0xbe, 2743 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
2719 0xfa, 0x4d, 0xbb, 0xc0, 0x7d, 0x31, 0x96, 0x65, 2744 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
2720 0xe7, 0x75, 0xe5, 0x3e, 0xfd, 0x92, 0x3b, 0xc9, 2745 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
2721 0x55, 0xbb, 0x16, 0x7e, 0xf7, 0xc2, 0x8c, 0xa4, 2746 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
2722 0x40, 0x1d, 0xe5, 0xef, 0x0e, 0xdf, 0xe4, 0x9a, 2747 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
2723 0x62, 0x73, 0x65, 0xfd, 0x46, 0x63, 0x25, 0x3d, 2748 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
2724 0x2b, 0xaf, 0xe5, 0x64, 0xfe, 0xa5, 0x5c, 0xcf, 2749 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
2725 0x24, 0xf3, 0xb4, 0xac, 0x64, 0xba, 0xdf, 0x4b, 2750 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
2726 0xc6, 0x96, 0x7d, 0x81, 0x2d, 0x8d, 0x97, 0xf7, 2751 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
2727 0xc5, 0x68, 0x77, 0x84, 0x32, 0x2b, 0xcc, 0x85, 2752 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
2728 0x74, 0x96, 0xf0, 0x12, 0x77, 0x61, 0xb9, 0xeb, 2753 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
2729 0x71, 0xaa, 0x82, 0xcb, 0x1c, 0xdb, 0x89, 0xc8, 2754 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
2730 0xc6, 0xb5, 0xe3, 0x5c, 0x7d, 0x39, 0x07, 0x24, 2755 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
2731 0xda, 0x39, 0x87, 0x45, 0xc0, 0x2b, 0xbb, 0x01, 2756 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
2732 0xac, 0xbc, 0x2a, 0x5c, 0x7f, 0xfc, 0xe8, 0xce, 2757 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
2733 0x6d, 0x9c, 0x6f, 0xed, 0xd3, 0xc1, 0xa1, 0xd6, 2758 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
2734 0xc5, 0x55, 0xa9, 0x66, 0x2f, 0xe1, 0xc8, 0x32, 2759 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
2735 0xa6, 0x5d, 0xa4, 0x3a, 0x98, 0x73, 0xe8, 0x45, 2760 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
2736 0xa4, 0xc7, 0xa8, 0xb4, 0xf6, 0x13, 0x03, 0xf6, 2761 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
2737 0xe9, 0x2e, 0xc4, 0x29, 0x0f, 0x84, 0xdb, 0xc4, 2762 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
2738 0x21, 0xc4, 0xc2, 0x75, 0x67, 0x89, 0x37, 0x0a }, 2763 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
2739 .ilen = 512, 2764 .ilen = 512,
2740 .result = { 0x1a, 0x1d, 0xa9, 0x30, 0xad, 0xf9, 0x2f, 0x9b, 2765 .result = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
2741 0xb6, 0x1d, 0xae, 0xef, 0xf0, 0x2f, 0xf8, 0x5a, 2766 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
2742 0x39, 0x3c, 0xbf, 0x2a, 0xb2, 0x45, 0xb2, 0x23, 2767 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
2743 0x1b, 0x63, 0x3c, 0xcf, 0xaa, 0xbe, 0xcf, 0x4e, 2768 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
2744 0xfa, 0xe8, 0x29, 0xc2, 0x20, 0x68, 0x2b, 0x3c, 2769 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
2745 0x2e, 0x8b, 0xf7, 0x6e, 0x25, 0xbd, 0xe3, 0x3d, 2770 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
2746 0x66, 0x27, 0xd6, 0xaf, 0xd6, 0x64, 0x3e, 0xe3, 2771 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
2747 0xe8, 0x58, 0x46, 0x97, 0x39, 0x51, 0x07, 0xde, 2772 "\xe8\x58\x46\x97\x39\x51\x07\xde"
2748 0xcb, 0x37, 0xbc, 0xa9, 0xc0, 0x5f, 0x75, 0xc3, 2773 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
2749 0x0e, 0x84, 0x23, 0x1d, 0x16, 0xd4, 0x1c, 0x59, 2774 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
2750 0x9c, 0x1a, 0x02, 0x55, 0xab, 0x3a, 0x97, 0x1d, 2775 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
2751 0xdf, 0xdd, 0xc7, 0x06, 0x51, 0xd7, 0x70, 0xae, 2776 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
2752 0x23, 0xc6, 0x8c, 0xf5, 0x1e, 0xa0, 0xe5, 0x82, 2777 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
2753 0xb8, 0xb2, 0xbf, 0x04, 0xa0, 0x32, 0x8e, 0x68, 2778 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
2754 0xeb, 0xaf, 0x6e, 0x2d, 0x94, 0x22, 0x2f, 0xce, 2779 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
2755 0x4c, 0xb5, 0x59, 0xe2, 0xa2, 0x2f, 0xa0, 0x98, 2780 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
2756 0x1a, 0x97, 0xc6, 0xd4, 0xb5, 0x00, 0x59, 0xf2, 2781 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
2757 0x84, 0x14, 0x72, 0xb1, 0x9a, 0x6e, 0xa3, 0x7f, 2782 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
2758 0xea, 0x20, 0xe7, 0xcb, 0x65, 0x77, 0x3a, 0xdf, 2783 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
2759 0xc8, 0x97, 0x67, 0x15, 0xc2, 0x2a, 0x27, 0xcc, 2784 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
2760 0x18, 0x55, 0xa1, 0x24, 0x0b, 0x24, 0x24, 0xaf, 2785 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
2761 0x5b, 0xec, 0x68, 0xb8, 0xc8, 0xf5, 0xba, 0x63, 2786 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
2762 0xff, 0xed, 0x89, 0xce, 0xd5, 0x3d, 0x88, 0xf3, 2787 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
2763 0x25, 0xef, 0x05, 0x7c, 0x3a, 0xef, 0xeb, 0xd8, 2788 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
2764 0x7a, 0x32, 0x0d, 0xd1, 0x1e, 0x58, 0x59, 0x99, 2789 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
2765 0x90, 0x25, 0xb5, 0x26, 0xb0, 0xe3, 0x2b, 0x6c, 2790 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
2766 0x4c, 0xa9, 0x8b, 0x84, 0x4f, 0x5e, 0x01, 0x50, 2791 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
2767 0x41, 0x30, 0x58, 0xc5, 0x62, 0x74, 0x52, 0x1d, 2792 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
2768 0x45, 0x24, 0x6a, 0x42, 0x64, 0x4f, 0x97, 0x1c, 2793 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
2769 0xa8, 0x66, 0xb5, 0x6d, 0x79, 0xd4, 0x0d, 0x48, 2794 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
2770 0xc5, 0x5f, 0xf3, 0x90, 0x32, 0xdd, 0xdd, 0xe1, 2795 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
2771 0xe4, 0xa9, 0x9f, 0xfc, 0xc3, 0x52, 0x5a, 0x46, 2796 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
2772 0xe4, 0x81, 0x84, 0x95, 0x36, 0x59, 0x7a, 0x6b, 2797 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
2773 0xaa, 0xb3, 0x60, 0xad, 0xce, 0x9f, 0x9f, 0x28, 2798 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
2774 0xe0, 0x01, 0x75, 0x22, 0xc4, 0x4e, 0xa9, 0x62, 2799 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
2775 0x5c, 0x62, 0x0d, 0x00, 0xcb, 0x13, 0xe8, 0x43, 2800 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
2776 0x72, 0xd4, 0x2d, 0x53, 0x46, 0xb5, 0xd1, 0x16, 2801 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
2777 0x22, 0x18, 0xdf, 0x34, 0x33, 0xf5, 0xd6, 0x1c, 2802 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
2778 0xb8, 0x79, 0x78, 0x97, 0x94, 0xff, 0x72, 0x13, 2803 "\xb8\x79\x78\x97\x94\xff\x72\x13"
2779 0x4c, 0x27, 0xfc, 0xcb, 0xbf, 0x01, 0x53, 0xa6, 2804 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
2780 0xb4, 0x50, 0x6e, 0xde, 0xdf, 0xb5, 0x43, 0xa4, 2805 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
2781 0x59, 0xdf, 0x52, 0xf9, 0x7c, 0xe0, 0x11, 0x6f, 2806 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
2782 0x2d, 0x14, 0x8e, 0x24, 0x61, 0x2c, 0xe1, 0x17, 2807 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
2783 0xcc, 0xce, 0x51, 0x0c, 0x19, 0x8a, 0x82, 0x30, 2808 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
2784 0x94, 0xd5, 0x3d, 0x6a, 0x53, 0x06, 0x5e, 0xbd, 2809 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
2785 0xb7, 0xeb, 0xfa, 0xfd, 0x27, 0x51, 0xde, 0x85, 2810 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
2786 0x1e, 0x86, 0x53, 0x11, 0x53, 0x94, 0x00, 0xee, 2811 "\x1e\x86\x53\x11\x53\x94\x00\xee"
2787 0x2b, 0x8c, 0x08, 0x2a, 0xbf, 0xdd, 0xae, 0x11, 2812 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
2788 0xcb, 0x1e, 0xa2, 0x07, 0x9a, 0x80, 0xcf, 0x62, 2813 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
2789 0x9b, 0x09, 0xdc, 0x95, 0x3c, 0x96, 0x8e, 0xb1, 2814 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
2790 0x09, 0xbd, 0xe4, 0xeb, 0xdb, 0xca, 0x70, 0x7a, 2815 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
2791 0x9e, 0xfa, 0x31, 0x18, 0x45, 0x3c, 0x21, 0x33, 2816 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
2792 0xb0, 0xb3, 0x2b, 0xea, 0xf3, 0x71, 0x2d, 0xe1, 2817 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
2793 0x03, 0xad, 0x1b, 0x48, 0xd4, 0x67, 0x27, 0xf0, 2818 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
2794 0x62, 0xe4, 0x3d, 0xfb, 0x9b, 0x08, 0x76, 0xe7, 2819 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
2795 0xdd, 0x2b, 0x01, 0x39, 0x04, 0x5a, 0x58, 0x7a, 2820 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
2796 0xf7, 0x11, 0x90, 0xec, 0xbd, 0x51, 0x5c, 0x32, 2821 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
2797 0x6b, 0xd7, 0x35, 0x39, 0x02, 0x6b, 0xf2, 0xa6, 2822 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
2798 0xd0, 0x0d, 0x07, 0xe1, 0x06, 0xc4, 0x5b, 0x7d, 2823 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
2799 0xe4, 0x6a, 0xd7, 0xee, 0x15, 0x1f, 0x83, 0xb4, 2824 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
2800 0xa3, 0xa7, 0x5e, 0xc3, 0x90, 0xb7, 0xef, 0xd3, 2825 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
2801 0xb7, 0x4f, 0xf8, 0x92, 0x4c, 0xb7, 0x3c, 0x29, 2826 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
2802 0xcd, 0x7e, 0x2b, 0x5d, 0x43, 0xea, 0x42, 0xe7, 2827 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
2803 0x74, 0x3f, 0x7d, 0x58, 0x88, 0x75, 0xde, 0x3e }, 2828 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
2804 .rlen = 512, 2829 .rlen = 512,
2805 } 2830 }
2806}; 2831};
@@ -2809,250 +2834,249 @@ static struct cipher_testvec aes_lrw_dec_tv_template[] = {
2809 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */ 2834 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2810 /* same as enc vectors with input and result reversed */ 2835 /* same as enc vectors with input and result reversed */
2811 { /* LRW-32-AES 1 */ 2836 { /* LRW-32-AES 1 */
2812 .key = { 0x45, 0x62, 0xac, 0x25, 0xf8, 0x28, 0x17, 0x6d, 2837 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
2813 0x4c, 0x26, 0x84, 0x14, 0xb5, 0x68, 0x01, 0x85, 2838 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
2814 0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03, 2839 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
2815 0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 }, 2840 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
2816 .klen = 32, 2841 .klen = 32,
2817 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2842 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2818 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 2843 "\x00\x00\x00\x00\x00\x00\x00\x01",
2819 .input = { 0xf1, 0xb2, 0x73, 0xcd, 0x65, 0xa3, 0xdf, 0x5f, 2844 .input = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
2820 0xe9, 0x5d, 0x48, 0x92, 0x54, 0x63, 0x4e, 0xb8 }, 2845 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
2821 .ilen = 16, 2846 .ilen = 16,
2822 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2847 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2823 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2848 "\x38\x39\x41\x42\x43\x44\x45\x46",
2824 .rlen = 16, 2849 .rlen = 16,
2825 }, { /* LRW-32-AES 2 */ 2850 }, { /* LRW-32-AES 2 */
2826 .key = { 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c, 2851 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
2827 0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44, 2852 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
2828 0x0d, 0x48, 0xf0, 0xb7, 0xb1, 0x5a, 0x53, 0xea, 2853 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
2829 0x1c, 0xaa, 0x6b, 0x29, 0xc2, 0xca, 0xfb, 0xaf 2854 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
2830 },
2831 .klen = 32, 2855 .klen = 32,
2832 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2856 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2833 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, 2857 "\x00\x00\x00\x00\x00\x00\x00\x02",
2834 .input = { 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5, 2858 .input = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
2835 0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 }, 2859 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
2836 .ilen = 16, 2860 .ilen = 16,
2837 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2861 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2838 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2862 "\x38\x39\x41\x42\x43\x44\x45\x46",
2839 .rlen = 16, 2863 .rlen = 16,
2840 }, { /* LRW-32-AES 3 */ 2864 }, { /* LRW-32-AES 3 */
2841 .key = { 0xd8, 0x2a, 0x91, 0x34, 0xb2, 0x6a, 0x56, 0x50, 2865 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
2842 0x30, 0xfe, 0x69, 0xe2, 0x37, 0x7f, 0x98, 0x47, 2866 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
2843 0xcd, 0xf9, 0x0b, 0x16, 0x0c, 0x64, 0x8f, 0xb6, 2867 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
2844 0xb0, 0x0d, 0x0d, 0x1b, 0xae, 0x85, 0x87, 0x1f }, 2868 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
2845 .klen = 32, 2869 .klen = 32,
2846 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2870 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2847 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, 2871 "\x00\x00\x00\x02\x00\x00\x00\x00",
2848 .input = { 0x76, 0x32, 0x21, 0x83, 0xed, 0x8f, 0xf1, 0x82, 2872 .input = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
2849 0xf9, 0x59, 0x62, 0x03, 0x69, 0x0e, 0x5e, 0x01 }, 2873 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
2850 .ilen = 16, 2874 .ilen = 16,
2851 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2875 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2852 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2876 "\x38\x39\x41\x42\x43\x44\x45\x46",
2853 .rlen = 16, 2877 .rlen = 16,
2854 }, { /* LRW-32-AES 4 */ 2878 }, { /* LRW-32-AES 4 */
2855 .key = { 0x0f, 0x6a, 0xef, 0xf8, 0xd3, 0xd2, 0xbb, 0x15, 2879 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
2856 0x25, 0x83, 0xf7, 0x3c, 0x1f, 0x01, 0x28, 0x74, 2880 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
2857 0xca, 0xc6, 0xbc, 0x35, 0x4d, 0x4a, 0x65, 0x54, 2881 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
2858 0x90, 0xae, 0x61, 0xcf, 0x7b, 0xae, 0xbd, 0xcc, 2882 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
2859 0xad, 0xe4, 0x94, 0xc5, 0x4a, 0x29, 0xae, 0x70 }, 2883 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
2860 .klen = 40, 2884 .klen = 40,
2861 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2885 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2862 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 2886 "\x00\x00\x00\x00\x00\x00\x00\x01",
2863 .input = { 0x9c, 0x0f, 0x15, 0x2f, 0x55, 0xa2, 0xd8, 0xf0, 2887 .input = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
2864 0xd6, 0x7b, 0x8f, 0x9e, 0x28, 0x22, 0xbc, 0x41 }, 2888 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
2865 .ilen = 16, 2889 .ilen = 16,
2866 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2890 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2867 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2891 "\x38\x39\x41\x42\x43\x44\x45\x46",
2868 .rlen = 16, 2892 .rlen = 16,
2869 }, { /* LRW-32-AES 5 */ 2893 }, { /* LRW-32-AES 5 */
2870 .key = { 0x8a, 0xd4, 0xee, 0x10, 0x2f, 0xbd, 0x81, 0xff, 2894 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
2871 0xf8, 0x86, 0xce, 0xac, 0x93, 0xc5, 0xad, 0xc6, 2895 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
2872 0xa0, 0x19, 0x07, 0xc0, 0x9d, 0xf7, 0xbb, 0xdd, 2896 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
2873 0x52, 0x13, 0xb2, 0xb7, 0xf0, 0xff, 0x11, 0xd8, 2897 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
2874 0xd6, 0x08, 0xd0, 0xcd, 0x2e, 0xb1, 0x17, 0x6f }, 2898 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
2875 .klen = 40, 2899 .klen = 40,
2876 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2900 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2877 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, 2901 "\x00\x00\x00\x02\x00\x00\x00\x00",
2878 .input = { 0xd4, 0x27, 0x6a, 0x7f, 0x14, 0x91, 0x3d, 0x65, 2902 .input = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
2879 0xc8, 0x60, 0x48, 0x02, 0x87, 0xe3, 0x34, 0x06 }, 2903 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
2880 .ilen = 16, 2904 .ilen = 16,
2881 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2905 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2882 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2906 "\x38\x39\x41\x42\x43\x44\x45\x46",
2883 .rlen = 16, 2907 .rlen = 16,
2884 }, { /* LRW-32-AES 6 */ 2908 }, { /* LRW-32-AES 6 */
2885 .key = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c, 2909 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2886 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d, 2910 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2887 0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21, 2911 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2888 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89, 2912 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2889 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1, 2913 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2890 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e }, 2914 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
2891 .klen = 48, 2915 .klen = 48,
2892 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2916 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2893 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 2917 "\x00\x00\x00\x00\x00\x00\x00\x01",
2894 .input = { 0xbd, 0x06, 0xb8, 0xe1, 0xdb, 0x98, 0x89, 0x9e, 2918 .input = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
2895 0xc4, 0x98, 0xe4, 0x91, 0xcf, 0x1c, 0x70, 0x2b }, 2919 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
2896 .ilen = 16, 2920 .ilen = 16,
2897 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2921 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2898 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2922 "\x38\x39\x41\x42\x43\x44\x45\x46",
2899 .rlen = 16, 2923 .rlen = 16,
2900 }, { /* LRW-32-AES 7 */ 2924 }, { /* LRW-32-AES 7 */
2901 .key = { 0xfb, 0x76, 0x15, 0xb2, 0x3d, 0x80, 0x89, 0x1d, 2925 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
2902 0xd4, 0x70, 0x98, 0x0b, 0xc7, 0x95, 0x84, 0xc8, 2926 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
2903 0xb2, 0xfb, 0x64, 0xce, 0x60, 0x97, 0x87, 0x8d, 2927 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
2904 0x17, 0xfc, 0xe4, 0x5a, 0x49, 0xe8, 0x30, 0xb7, 2928 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
2905 0x6e, 0x78, 0x17, 0xe7, 0x2d, 0x5e, 0x12, 0xd4, 2929 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
2906 0x60, 0x64, 0x04, 0x7a, 0xf1, 0x2f, 0x9e, 0x0c }, 2930 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
2907 .klen = 48, 2931 .klen = 48,
2908 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2932 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2909 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, 2933 "\x00\x00\x00\x02\x00\x00\x00\x00",
2910 .input = { 0x5b, 0x90, 0x8e, 0xc1, 0xab, 0xdd, 0x67, 0x5f, 2934 .input = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
2911 0x3d, 0x69, 0x8a, 0x95, 0x53, 0xc8, 0x9c, 0xe5 }, 2935 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
2912 .ilen = 16, 2936 .ilen = 16,
2913 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2937 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2914 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, 2938 "\x38\x39\x41\x42\x43\x44\x45\x46",
2915 .rlen = 16, 2939 .rlen = 16,
2916 }, { 2940 }, {
2917/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */ 2941/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
2918 .key = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c, 2942 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2919 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d, 2943 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2920 0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21, 2944 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2921 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89, 2945 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2922 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1, 2946 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2923 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e }, 2947 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
2924 .klen = 48, 2948 .klen = 48,
2925 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2949 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2926 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, 2950 "\x00\x00\x00\x00\x00\x00\x00\x01",
2927 .input = { 0x1a, 0x1d, 0xa9, 0x30, 0xad, 0xf9, 0x2f, 0x9b, 2951 .input = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
2928 0xb6, 0x1d, 0xae, 0xef, 0xf0, 0x2f, 0xf8, 0x5a, 2952 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
2929 0x39, 0x3c, 0xbf, 0x2a, 0xb2, 0x45, 0xb2, 0x23, 2953 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
2930 0x1b, 0x63, 0x3c, 0xcf, 0xaa, 0xbe, 0xcf, 0x4e, 2954 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
2931 0xfa, 0xe8, 0x29, 0xc2, 0x20, 0x68, 0x2b, 0x3c, 2955 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
2932 0x2e, 0x8b, 0xf7, 0x6e, 0x25, 0xbd, 0xe3, 0x3d, 2956 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
2933 0x66, 0x27, 0xd6, 0xaf, 0xd6, 0x64, 0x3e, 0xe3, 2957 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
2934 0xe8, 0x58, 0x46, 0x97, 0x39, 0x51, 0x07, 0xde, 2958 "\xe8\x58\x46\x97\x39\x51\x07\xde"
2935 0xcb, 0x37, 0xbc, 0xa9, 0xc0, 0x5f, 0x75, 0xc3, 2959 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
2936 0x0e, 0x84, 0x23, 0x1d, 0x16, 0xd4, 0x1c, 0x59, 2960 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
2937 0x9c, 0x1a, 0x02, 0x55, 0xab, 0x3a, 0x97, 0x1d, 2961 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
2938 0xdf, 0xdd, 0xc7, 0x06, 0x51, 0xd7, 0x70, 0xae, 2962 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
2939 0x23, 0xc6, 0x8c, 0xf5, 0x1e, 0xa0, 0xe5, 0x82, 2963 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
2940 0xb8, 0xb2, 0xbf, 0x04, 0xa0, 0x32, 0x8e, 0x68, 2964 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
2941 0xeb, 0xaf, 0x6e, 0x2d, 0x94, 0x22, 0x2f, 0xce, 2965 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
2942 0x4c, 0xb5, 0x59, 0xe2, 0xa2, 0x2f, 0xa0, 0x98, 2966 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
2943 0x1a, 0x97, 0xc6, 0xd4, 0xb5, 0x00, 0x59, 0xf2, 2967 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
2944 0x84, 0x14, 0x72, 0xb1, 0x9a, 0x6e, 0xa3, 0x7f, 2968 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
2945 0xea, 0x20, 0xe7, 0xcb, 0x65, 0x77, 0x3a, 0xdf, 2969 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
2946 0xc8, 0x97, 0x67, 0x15, 0xc2, 0x2a, 0x27, 0xcc, 2970 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
2947 0x18, 0x55, 0xa1, 0x24, 0x0b, 0x24, 0x24, 0xaf, 2971 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
2948 0x5b, 0xec, 0x68, 0xb8, 0xc8, 0xf5, 0xba, 0x63, 2972 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
2949 0xff, 0xed, 0x89, 0xce, 0xd5, 0x3d, 0x88, 0xf3, 2973 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
2950 0x25, 0xef, 0x05, 0x7c, 0x3a, 0xef, 0xeb, 0xd8, 2974 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
2951 0x7a, 0x32, 0x0d, 0xd1, 0x1e, 0x58, 0x59, 0x99, 2975 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
2952 0x90, 0x25, 0xb5, 0x26, 0xb0, 0xe3, 0x2b, 0x6c, 2976 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
2953 0x4c, 0xa9, 0x8b, 0x84, 0x4f, 0x5e, 0x01, 0x50, 2977 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
2954 0x41, 0x30, 0x58, 0xc5, 0x62, 0x74, 0x52, 0x1d, 2978 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
2955 0x45, 0x24, 0x6a, 0x42, 0x64, 0x4f, 0x97, 0x1c, 2979 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
2956 0xa8, 0x66, 0xb5, 0x6d, 0x79, 0xd4, 0x0d, 0x48, 2980 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
2957 0xc5, 0x5f, 0xf3, 0x90, 0x32, 0xdd, 0xdd, 0xe1, 2981 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
2958 0xe4, 0xa9, 0x9f, 0xfc, 0xc3, 0x52, 0x5a, 0x46, 2982 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
2959 0xe4, 0x81, 0x84, 0x95, 0x36, 0x59, 0x7a, 0x6b, 2983 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
2960 0xaa, 0xb3, 0x60, 0xad, 0xce, 0x9f, 0x9f, 0x28, 2984 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
2961 0xe0, 0x01, 0x75, 0x22, 0xc4, 0x4e, 0xa9, 0x62, 2985 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
2962 0x5c, 0x62, 0x0d, 0x00, 0xcb, 0x13, 0xe8, 0x43, 2986 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
2963 0x72, 0xd4, 0x2d, 0x53, 0x46, 0xb5, 0xd1, 0x16, 2987 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
2964 0x22, 0x18, 0xdf, 0x34, 0x33, 0xf5, 0xd6, 0x1c, 2988 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
2965 0xb8, 0x79, 0x78, 0x97, 0x94, 0xff, 0x72, 0x13, 2989 "\xb8\x79\x78\x97\x94\xff\x72\x13"
2966 0x4c, 0x27, 0xfc, 0xcb, 0xbf, 0x01, 0x53, 0xa6, 2990 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
2967 0xb4, 0x50, 0x6e, 0xde, 0xdf, 0xb5, 0x43, 0xa4, 2991 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
2968 0x59, 0xdf, 0x52, 0xf9, 0x7c, 0xe0, 0x11, 0x6f, 2992 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
2969 0x2d, 0x14, 0x8e, 0x24, 0x61, 0x2c, 0xe1, 0x17, 2993 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
2970 0xcc, 0xce, 0x51, 0x0c, 0x19, 0x8a, 0x82, 0x30, 2994 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
2971 0x94, 0xd5, 0x3d, 0x6a, 0x53, 0x06, 0x5e, 0xbd, 2995 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
2972 0xb7, 0xeb, 0xfa, 0xfd, 0x27, 0x51, 0xde, 0x85, 2996 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
2973 0x1e, 0x86, 0x53, 0x11, 0x53, 0x94, 0x00, 0xee, 2997 "\x1e\x86\x53\x11\x53\x94\x00\xee"
2974 0x2b, 0x8c, 0x08, 0x2a, 0xbf, 0xdd, 0xae, 0x11, 2998 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
2975 0xcb, 0x1e, 0xa2, 0x07, 0x9a, 0x80, 0xcf, 0x62, 2999 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
2976 0x9b, 0x09, 0xdc, 0x95, 0x3c, 0x96, 0x8e, 0xb1, 3000 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
2977 0x09, 0xbd, 0xe4, 0xeb, 0xdb, 0xca, 0x70, 0x7a, 3001 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
2978 0x9e, 0xfa, 0x31, 0x18, 0x45, 0x3c, 0x21, 0x33, 3002 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
2979 0xb0, 0xb3, 0x2b, 0xea, 0xf3, 0x71, 0x2d, 0xe1, 3003 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
2980 0x03, 0xad, 0x1b, 0x48, 0xd4, 0x67, 0x27, 0xf0, 3004 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
2981 0x62, 0xe4, 0x3d, 0xfb, 0x9b, 0x08, 0x76, 0xe7, 3005 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
2982 0xdd, 0x2b, 0x01, 0x39, 0x04, 0x5a, 0x58, 0x7a, 3006 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
2983 0xf7, 0x11, 0x90, 0xec, 0xbd, 0x51, 0x5c, 0x32, 3007 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
2984 0x6b, 0xd7, 0x35, 0x39, 0x02, 0x6b, 0xf2, 0xa6, 3008 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
2985 0xd0, 0x0d, 0x07, 0xe1, 0x06, 0xc4, 0x5b, 0x7d, 3009 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
2986 0xe4, 0x6a, 0xd7, 0xee, 0x15, 0x1f, 0x83, 0xb4, 3010 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
2987 0xa3, 0xa7, 0x5e, 0xc3, 0x90, 0xb7, 0xef, 0xd3, 3011 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
2988 0xb7, 0x4f, 0xf8, 0x92, 0x4c, 0xb7, 0x3c, 0x29, 3012 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
2989 0xcd, 0x7e, 0x2b, 0x5d, 0x43, 0xea, 0x42, 0xe7, 3013 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
2990 0x74, 0x3f, 0x7d, 0x58, 0x88, 0x75, 0xde, 0x3e }, 3014 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
2991 .ilen = 512, 3015 .ilen = 512,
2992 .result = { 0x05, 0x11, 0xb7, 0x18, 0xab, 0xc6, 0x2d, 0xac, 3016 .result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
2993 0x70, 0x5d, 0xf6, 0x22, 0x94, 0xcd, 0xe5, 0x6c, 3017 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
2994 0x17, 0x6b, 0xf6, 0x1c, 0xf0, 0xf3, 0x6e, 0xf8, 3018 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
2995 0x50, 0x38, 0x1f, 0x71, 0x49, 0xb6, 0x57, 0xd6, 3019 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
2996 0x8f, 0xcb, 0x8d, 0x6b, 0xe3, 0xa6, 0x29, 0x90, 3020 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
2997 0xfe, 0x2a, 0x62, 0x82, 0xae, 0x6d, 0x8b, 0xf6, 3021 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
2998 0xad, 0x1e, 0x9e, 0x20, 0x5f, 0x38, 0xbe, 0x04, 3022 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
2999 0xda, 0x10, 0x8e, 0xed, 0xa2, 0xa4, 0x87, 0xab, 3023 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3000 0xda, 0x6b, 0xb4, 0x0c, 0x75, 0xba, 0xd3, 0x7c, 3024 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3001 0xc9, 0xac, 0x42, 0x31, 0x95, 0x7c, 0xc9, 0x04, 3025 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3002 0xeb, 0xd5, 0x6e, 0x32, 0x69, 0x8a, 0xdb, 0xa6, 3026 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3003 0x15, 0xd7, 0x3f, 0x4f, 0x2f, 0x66, 0x69, 0x03, 3027 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3004 0x9c, 0x1f, 0x54, 0x0f, 0xde, 0x1f, 0xf3, 0x65, 3028 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3005 0x4c, 0x96, 0x12, 0xed, 0x7c, 0x92, 0x03, 0x01, 3029 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3006 0x6f, 0xbc, 0x35, 0x93, 0xac, 0xf1, 0x27, 0xf1, 3030 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3007 0xb4, 0x96, 0x82, 0x5a, 0x5f, 0xb0, 0xa0, 0x50, 3031 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3008 0x89, 0xa4, 0x8e, 0x66, 0x44, 0x85, 0xcc, 0xfd, 3032 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3009 0x33, 0x14, 0x70, 0xe3, 0x96, 0xb2, 0xc3, 0xd3, 3033 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3010 0xbb, 0x54, 0x5a, 0x1a, 0xf9, 0x74, 0xa2, 0xc5, 3034 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3011 0x2d, 0x64, 0x75, 0xdd, 0xb4, 0x54, 0xe6, 0x74, 3035 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3012 0x8c, 0xd3, 0x9d, 0x9e, 0x86, 0xab, 0x51, 0x53, 3036 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3013 0xb7, 0x93, 0x3e, 0x6f, 0xd0, 0x4e, 0x2c, 0x40, 3037 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3014 0xf6, 0xa8, 0x2e, 0x3e, 0x9d, 0xf4, 0x66, 0xa5, 3038 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3015 0x76, 0x12, 0x73, 0x44, 0x1a, 0x56, 0xd7, 0x72, 3039 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3016 0x88, 0xcd, 0x21, 0x8c, 0x4c, 0x0f, 0xfe, 0xda, 3040 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3017 0x95, 0xe0, 0x3a, 0xa6, 0xa5, 0x84, 0x46, 0xcd, 3041 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3018 0xd5, 0x3e, 0x9d, 0x3a, 0xe2, 0x67, 0xe6, 0x60, 3042 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3019 0x1a, 0xe2, 0x70, 0x85, 0x58, 0xc2, 0x1b, 0x09, 3043 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3020 0xe1, 0xd7, 0x2c, 0xca, 0xad, 0xa8, 0x8f, 0xf9, 3044 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3021 0xac, 0xb3, 0x0e, 0xdb, 0xca, 0x2e, 0xe2, 0xb8, 3045 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3022 0x51, 0x71, 0xd9, 0x3c, 0x6c, 0xf1, 0x56, 0xf8, 3046 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3023 0xea, 0x9c, 0xf1, 0xfb, 0x0c, 0xe6, 0xb7, 0x10, 3047 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3024 0x1c, 0xf8, 0xa9, 0x7c, 0xe8, 0x53, 0x35, 0xc1, 3048 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3025 0x90, 0x3e, 0x76, 0x4a, 0x74, 0xa4, 0x21, 0x2c, 3049 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3026 0xf6, 0x2c, 0x4e, 0x0f, 0x94, 0x3a, 0x88, 0x2e, 3050 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3027 0x41, 0x09, 0x6a, 0x33, 0x7d, 0xf6, 0xdd, 0x3f, 3051 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3028 0x8d, 0x23, 0x31, 0x74, 0x84, 0xeb, 0x88, 0x6e, 3052 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3029 0xcc, 0xb9, 0xbc, 0x22, 0x83, 0x19, 0x07, 0x22, 3053 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3030 0xa5, 0x2d, 0xdf, 0xa5, 0xf3, 0x80, 0x85, 0x78, 3054 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3031 0x84, 0x39, 0x6a, 0x6d, 0x6a, 0x99, 0x4f, 0xa5, 3055 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3032 0x15, 0xfe, 0x46, 0xb0, 0xe4, 0x6c, 0xa5, 0x41, 3056 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3033 0x3c, 0xce, 0x8f, 0x42, 0x60, 0x71, 0xa7, 0x75, 3057 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3034 0x08, 0x40, 0x65, 0x8a, 0x82, 0xbf, 0xf5, 0x43, 3058 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3035 0x71, 0x96, 0xa9, 0x4d, 0x44, 0x8a, 0x20, 0xbe, 3059 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3036 0xfa, 0x4d, 0xbb, 0xc0, 0x7d, 0x31, 0x96, 0x65, 3060 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3037 0xe7, 0x75, 0xe5, 0x3e, 0xfd, 0x92, 0x3b, 0xc9, 3061 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3038 0x55, 0xbb, 0x16, 0x7e, 0xf7, 0xc2, 0x8c, 0xa4, 3062 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3039 0x40, 0x1d, 0xe5, 0xef, 0x0e, 0xdf, 0xe4, 0x9a, 3063 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3040 0x62, 0x73, 0x65, 0xfd, 0x46, 0x63, 0x25, 0x3d, 3064 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3041 0x2b, 0xaf, 0xe5, 0x64, 0xfe, 0xa5, 0x5c, 0xcf, 3065 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3042 0x24, 0xf3, 0xb4, 0xac, 0x64, 0xba, 0xdf, 0x4b, 3066 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3043 0xc6, 0x96, 0x7d, 0x81, 0x2d, 0x8d, 0x97, 0xf7, 3067 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3044 0xc5, 0x68, 0x77, 0x84, 0x32, 0x2b, 0xcc, 0x85, 3068 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3045 0x74, 0x96, 0xf0, 0x12, 0x77, 0x61, 0xb9, 0xeb, 3069 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3046 0x71, 0xaa, 0x82, 0xcb, 0x1c, 0xdb, 0x89, 0xc8, 3070 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3047 0xc6, 0xb5, 0xe3, 0x5c, 0x7d, 0x39, 0x07, 0x24, 3071 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3048 0xda, 0x39, 0x87, 0x45, 0xc0, 0x2b, 0xbb, 0x01, 3072 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3049 0xac, 0xbc, 0x2a, 0x5c, 0x7f, 0xfc, 0xe8, 0xce, 3073 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3050 0x6d, 0x9c, 0x6f, 0xed, 0xd3, 0xc1, 0xa1, 0xd6, 3074 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3051 0xc5, 0x55, 0xa9, 0x66, 0x2f, 0xe1, 0xc8, 0x32, 3075 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3052 0xa6, 0x5d, 0xa4, 0x3a, 0x98, 0x73, 0xe8, 0x45, 3076 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3053 0xa4, 0xc7, 0xa8, 0xb4, 0xf6, 0x13, 0x03, 0xf6, 3077 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3054 0xe9, 0x2e, 0xc4, 0x29, 0x0f, 0x84, 0xdb, 0xc4, 3078 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3055 0x21, 0xc4, 0xc2, 0x75, 0x67, 0x89, 0x37, 0x0a }, 3079 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
3056 .rlen = 512, 3080 .rlen = 512,
3057 } 3081 }
3058}; 3082};
@@ -3060,196 +3084,196 @@ static struct cipher_testvec aes_lrw_dec_tv_template[] = {
3060static struct cipher_testvec aes_xts_enc_tv_template[] = { 3084static struct cipher_testvec aes_xts_enc_tv_template[] = {
3061 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */ 3085 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3062 { /* XTS-AES 1 */ 3086 { /* XTS-AES 1 */
3063 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3087 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3064 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3088 "\x00\x00\x00\x00\x00\x00\x00\x00"
3065 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3089 "\x00\x00\x00\x00\x00\x00\x00\x00"
3066 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3090 "\x00\x00\x00\x00\x00\x00\x00\x00",
3067 .klen = 32, 3091 .klen = 32,
3068 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3092 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3069 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3093 "\x00\x00\x00\x00\x00\x00\x00\x00",
3070 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3094 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
3071 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3095 "\x00\x00\x00\x00\x00\x00\x00\x00"
3072 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3096 "\x00\x00\x00\x00\x00\x00\x00\x00"
3073 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3097 "\x00\x00\x00\x00\x00\x00\x00\x00",
3074 .ilen = 32, 3098 .ilen = 32,
3075 .result = { 0x91, 0x7c, 0xf6, 0x9e, 0xbd, 0x68, 0xb2, 0xec, 3099 .result = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3076 0x9b, 0x9f, 0xe9, 0xa3, 0xea, 0xdd, 0xa6, 0x92, 3100 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3077 0xcd, 0x43, 0xd2, 0xf5, 0x95, 0x98, 0xed, 0x85, 3101 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3078 0x8c, 0x02, 0xc2, 0x65, 0x2f, 0xbf, 0x92, 0x2e }, 3102 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
3079 .rlen = 32, 3103 .rlen = 32,
3080 }, { /* XTS-AES 2 */ 3104 }, { /* XTS-AES 2 */
3081 .key = { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 3105 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3082 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 3106 "\x11\x11\x11\x11\x11\x11\x11\x11"
3083 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 3107 "\x22\x22\x22\x22\x22\x22\x22\x22"
3084 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 }, 3108 "\x22\x22\x22\x22\x22\x22\x22\x22",
3085 .klen = 32, 3109 .klen = 32,
3086 .iv = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 3110 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3087 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3111 "\x00\x00\x00\x00\x00\x00\x00\x00",
3088 .input = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3112 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3089 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3113 "\x44\x44\x44\x44\x44\x44\x44\x44"
3090 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3114 "\x44\x44\x44\x44\x44\x44\x44\x44"
3091 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }, 3115 "\x44\x44\x44\x44\x44\x44\x44\x44",
3092 .ilen = 32, 3116 .ilen = 32,
3093 .result = { 0xc4, 0x54, 0x18, 0x5e, 0x6a, 0x16, 0x93, 0x6e, 3117 .result = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3094 0x39, 0x33, 0x40, 0x38, 0xac, 0xef, 0x83, 0x8b, 3118 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3095 0xfb, 0x18, 0x6f, 0xff, 0x74, 0x80, 0xad, 0xc4, 3119 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3096 0x28, 0x93, 0x82, 0xec, 0xd6, 0xd3, 0x94, 0xf0 }, 3120 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
3097 .rlen = 32, 3121 .rlen = 32,
3098 }, { /* XTS-AES 3 */ 3122 }, { /* XTS-AES 3 */
3099 .key = { 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 3123 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3100 0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0, 3124 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3101 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 3125 "\x22\x22\x22\x22\x22\x22\x22\x22"
3102 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 }, 3126 "\x22\x22\x22\x22\x22\x22\x22\x22",
3103 .klen = 32, 3127 .klen = 32,
3104 .iv = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 3128 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3129 "\x00\x00\x00\x00\x00\x00\x00\x00",
3106 .input = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3130 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3107 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3131 "\x44\x44\x44\x44\x44\x44\x44\x44"
3108 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3132 "\x44\x44\x44\x44\x44\x44\x44\x44"
3109 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }, 3133 "\x44\x44\x44\x44\x44\x44\x44\x44",
3110 .ilen = 32, 3134 .ilen = 32,
3111 .result = { 0xaf, 0x85, 0x33, 0x6b, 0x59, 0x7a, 0xfc, 0x1a, 3135 .result = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3112 0x90, 0x0b, 0x2e, 0xb2, 0x1e, 0xc9, 0x49, 0xd2, 3136 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3113 0x92, 0xdf, 0x4c, 0x04, 0x7e, 0x0b, 0x21, 0x53, 3137 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3114 0x21, 0x86, 0xa5, 0x97, 0x1a, 0x22, 0x7a, 0x89 }, 3138 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
3115 .rlen = 32, 3139 .rlen = 32,
3116 }, { /* XTS-AES 4 */ 3140 }, { /* XTS-AES 4 */
3117 .key = { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45, 3141 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3118 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26, 3142 "\x23\x53\x60\x28\x74\x71\x35\x26"
3119 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93, 3143 "\x31\x41\x59\x26\x53\x58\x97\x93"
3120 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95 }, 3144 "\x23\x84\x62\x64\x33\x83\x27\x95",
3121 .klen = 32, 3145 .klen = 32,
3122 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3146 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3123 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3147 "\x00\x00\x00\x00\x00\x00\x00\x00",
3124 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 3148 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3125 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 3149 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3126 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 3150 "\x10\x11\x12\x13\x14\x15\x16\x17"
3127 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 3151 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3128 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 3152 "\x20\x21\x22\x23\x24\x25\x26\x27"
3129 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 3153 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3130 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 3154 "\x30\x31\x32\x33\x34\x35\x36\x37"
3131 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 3155 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3132 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 3156 "\x40\x41\x42\x43\x44\x45\x46\x47"
3133 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 3157 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3134 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 3158 "\x50\x51\x52\x53\x54\x55\x56\x57"
3135 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 3159 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3136 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 3160 "\x60\x61\x62\x63\x64\x65\x66\x67"
3137 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 3161 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3138 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 3162 "\x70\x71\x72\x73\x74\x75\x76\x77"
3139 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 3163 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3140 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 3164 "\x80\x81\x82\x83\x84\x85\x86\x87"
3141 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 3165 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3142 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 3166 "\x90\x91\x92\x93\x94\x95\x96\x97"
3143 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 3167 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3144 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 3168 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3145 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 3169 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3146 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 3170 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3147 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 3171 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3148 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 3172 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3149 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 3173 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3150 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 3174 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3151 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 3175 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3152 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 3176 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3153 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 3177 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3154 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 3178 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3155 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 3179 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3156 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 3180 "\x00\x01\x02\x03\x04\x05\x06\x07"
3157 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 3181 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3158 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 3182 "\x10\x11\x12\x13\x14\x15\x16\x17"
3159 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 3183 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3160 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 3184 "\x20\x21\x22\x23\x24\x25\x26\x27"
3161 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 3185 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3162 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 3186 "\x30\x31\x32\x33\x34\x35\x36\x37"
3163 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 3187 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3164 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 3188 "\x40\x41\x42\x43\x44\x45\x46\x47"
3165 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 3189 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3166 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 3190 "\x50\x51\x52\x53\x54\x55\x56\x57"
3167 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 3191 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3168 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 3192 "\x60\x61\x62\x63\x64\x65\x66\x67"
3169 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 3193 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3170 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 3194 "\x70\x71\x72\x73\x74\x75\x76\x77"
3171 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 3195 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3172 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 3196 "\x80\x81\x82\x83\x84\x85\x86\x87"
3173 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 3197 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3174 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 3198 "\x90\x91\x92\x93\x94\x95\x96\x97"
3175 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 3199 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3176 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 3200 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3177 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 3201 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3178 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 3202 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3179 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 3203 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3180 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 3204 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3181 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 3205 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3182 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 3206 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3183 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 3207 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3184 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 3208 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3185 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 3209 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3186 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 3210 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3187 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }, 3211 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
3188 .ilen = 512, 3212 .ilen = 512,
3189 .result = { 0x27, 0xa7, 0x47, 0x9b, 0xef, 0xa1, 0xd4, 0x76, 3213 .result = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3190 0x48, 0x9f, 0x30, 0x8c, 0xd4, 0xcf, 0xa6, 0xe2, 3214 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3191 0xa9, 0x6e, 0x4b, 0xbe, 0x32, 0x08, 0xff, 0x25, 3215 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3192 0x28, 0x7d, 0xd3, 0x81, 0x96, 0x16, 0xe8, 0x9c, 3216 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3193 0xc7, 0x8c, 0xf7, 0xf5, 0xe5, 0x43, 0x44, 0x5f, 3217 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3194 0x83, 0x33, 0xd8, 0xfa, 0x7f, 0x56, 0x00, 0x00, 3218 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3195 0x05, 0x27, 0x9f, 0xa5, 0xd8, 0xb5, 0xe4, 0xad, 3219 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3196 0x40, 0xe7, 0x36, 0xdd, 0xb4, 0xd3, 0x54, 0x12, 3220 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3197 0x32, 0x80, 0x63, 0xfd, 0x2a, 0xab, 0x53, 0xe5, 3221 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3198 0xea, 0x1e, 0x0a, 0x9f, 0x33, 0x25, 0x00, 0xa5, 3222 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3199 0xdf, 0x94, 0x87, 0xd0, 0x7a, 0x5c, 0x92, 0xcc, 3223 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3200 0x51, 0x2c, 0x88, 0x66, 0xc7, 0xe8, 0x60, 0xce, 3224 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3201 0x93, 0xfd, 0xf1, 0x66, 0xa2, 0x49, 0x12, 0xb4, 3225 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3202 0x22, 0x97, 0x61, 0x46, 0xae, 0x20, 0xce, 0x84, 3226 "\x22\x97\x61\x46\xae\x20\xce\x84"
3203 0x6b, 0xb7, 0xdc, 0x9b, 0xa9, 0x4a, 0x76, 0x7a, 3227 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3204 0xae, 0xf2, 0x0c, 0x0d, 0x61, 0xad, 0x02, 0x65, 3228 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3205 0x5e, 0xa9, 0x2d, 0xc4, 0xc4, 0xe4, 0x1a, 0x89, 3229 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3206 0x52, 0xc6, 0x51, 0xd3, 0x31, 0x74, 0xbe, 0x51, 3230 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3207 0xa1, 0x0c, 0x42, 0x11, 0x10, 0xe6, 0xd8, 0x15, 3231 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3208 0x88, 0xed, 0xe8, 0x21, 0x03, 0xa2, 0x52, 0xd8, 3232 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3209 0xa7, 0x50, 0xe8, 0x76, 0x8d, 0xef, 0xff, 0xed, 3233 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3210 0x91, 0x22, 0x81, 0x0a, 0xae, 0xb9, 0x9f, 0x91, 3234 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3211 0x72, 0xaf, 0x82, 0xb6, 0x04, 0xdc, 0x4b, 0x8e, 3235 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3212 0x51, 0xbc, 0xb0, 0x82, 0x35, 0xa6, 0xf4, 0x34, 3236 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3213 0x13, 0x32, 0xe4, 0xca, 0x60, 0x48, 0x2a, 0x4b, 3237 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3214 0xa1, 0xa0, 0x3b, 0x3e, 0x65, 0x00, 0x8f, 0xc5, 3238 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3215 0xda, 0x76, 0xb7, 0x0b, 0xf1, 0x69, 0x0d, 0xb4, 3239 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3216 0xea, 0xe2, 0x9c, 0x5f, 0x1b, 0xad, 0xd0, 0x3c, 3240 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3217 0x5c, 0xcf, 0x2a, 0x55, 0xd7, 0x05, 0xdd, 0xcd, 3241 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3218 0x86, 0xd4, 0x49, 0x51, 0x1c, 0xeb, 0x7e, 0xc3, 3242 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3219 0x0b, 0xf1, 0x2b, 0x1f, 0xa3, 0x5b, 0x91, 0x3f, 3243 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3220 0x9f, 0x74, 0x7a, 0x8a, 0xfd, 0x1b, 0x13, 0x0e, 3244 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3221 0x94, 0xbf, 0xf9, 0x4e, 0xff, 0xd0, 0x1a, 0x91, 3245 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3222 0x73, 0x5c, 0xa1, 0x72, 0x6a, 0xcd, 0x0b, 0x19, 3246 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3223 0x7c, 0x4e, 0x5b, 0x03, 0x39, 0x36, 0x97, 0xe1, 3247 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3224 0x26, 0x82, 0x6f, 0xb6, 0xbb, 0xde, 0x8e, 0xcc, 3248 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3225 0x1e, 0x08, 0x29, 0x85, 0x16, 0xe2, 0xc9, 0xed, 3249 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3226 0x03, 0xff, 0x3c, 0x1b, 0x78, 0x60, 0xf6, 0xde, 3250 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3227 0x76, 0xd4, 0xce, 0xcd, 0x94, 0xc8, 0x11, 0x98, 3251 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3228 0x55, 0xef, 0x52, 0x97, 0xca, 0x67, 0xe9, 0xf3, 3252 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3229 0xe7, 0xff, 0x72, 0xb1, 0xe9, 0x97, 0x85, 0xca, 3253 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3230 0x0a, 0x7e, 0x77, 0x20, 0xc5, 0xb3, 0x6d, 0xc6, 3254 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3231 0xd7, 0x2c, 0xac, 0x95, 0x74, 0xc8, 0xcb, 0xbc, 3255 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3232 0x2f, 0x80, 0x1e, 0x23, 0xe5, 0x6f, 0xd3, 0x44, 3256 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3233 0xb0, 0x7f, 0x22, 0x15, 0x4b, 0xeb, 0xa0, 0xf0, 3257 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3234 0x8c, 0xe8, 0x89, 0x1e, 0x64, 0x3e, 0xd9, 0x95, 3258 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3235 0xc9, 0x4d, 0x9a, 0x69, 0xc9, 0xf1, 0xb5, 0xf4, 3259 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3236 0x99, 0x02, 0x7a, 0x78, 0x57, 0x2a, 0xee, 0xbd, 3260 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3237 0x74, 0xd2, 0x0c, 0xc3, 0x98, 0x81, 0xc2, 0x13, 3261 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3238 0xee, 0x77, 0x0b, 0x10, 0x10, 0xe4, 0xbe, 0xa7, 3262 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3239 0x18, 0x84, 0x69, 0x77, 0xae, 0x11, 0x9f, 0x7a, 3263 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3240 0x02, 0x3a, 0xb5, 0x8c, 0xca, 0x0a, 0xd7, 0x52, 3264 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3241 0xaf, 0xe6, 0x56, 0xbb, 0x3c, 0x17, 0x25, 0x6a, 3265 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3242 0x9f, 0x6e, 0x9b, 0xf1, 0x9f, 0xdd, 0x5a, 0x38, 3266 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3243 0xfc, 0x82, 0xbb, 0xe8, 0x72, 0xc5, 0x53, 0x9e, 3267 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3244 0xdb, 0x60, 0x9e, 0xf4, 0xf7, 0x9c, 0x20, 0x3e, 3268 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3245 0xbb, 0x14, 0x0f, 0x2e, 0x58, 0x3c, 0xb2, 0xad, 3269 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3246 0x15, 0xb4, 0xaa, 0x5b, 0x65, 0x50, 0x16, 0xa8, 3270 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3247 0x44, 0x92, 0x77, 0xdb, 0xd4, 0x77, 0xef, 0x2c, 3271 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3248 0x8d, 0x6c, 0x01, 0x7d, 0xb7, 0x38, 0xb1, 0x8d, 3272 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3249 0xeb, 0x4a, 0x42, 0x7d, 0x19, 0x23, 0xce, 0x3f, 3273 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3250 0xf2, 0x62, 0x73, 0x57, 0x79, 0xa4, 0x18, 0xf2, 3274 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3251 0x0a, 0x28, 0x2d, 0xf9, 0x20, 0x14, 0x7b, 0xea, 3275 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3252 0xbe, 0x42, 0x1e, 0xe5, 0x31, 0x9d, 0x05, 0x68 }, 3276 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
3253 .rlen = 512, 3277 .rlen = 512,
3254 } 3278 }
3255}; 3279};
@@ -3257,196 +3281,196 @@ static struct cipher_testvec aes_xts_enc_tv_template[] = {
3257static struct cipher_testvec aes_xts_dec_tv_template[] = { 3281static struct cipher_testvec aes_xts_dec_tv_template[] = {
3258 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */ 3282 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3259 { /* XTS-AES 1 */ 3283 { /* XTS-AES 1 */
3260 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3284 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3285 "\x00\x00\x00\x00\x00\x00\x00\x00"
3262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3286 "\x00\x00\x00\x00\x00\x00\x00\x00"
3263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3287 "\x00\x00\x00\x00\x00\x00\x00\x00",
3264 .klen = 32, 3288 .klen = 32,
3265 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3289 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3266 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3290 "\x00\x00\x00\x00\x00\x00\x00\x00",
3267 .input = { 0x91, 0x7c, 0xf6, 0x9e, 0xbd, 0x68, 0xb2, 0xec, 3291 .input = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3268 0x9b, 0x9f, 0xe9, 0xa3, 0xea, 0xdd, 0xa6, 0x92, 3292 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3269 0xcd, 0x43, 0xd2, 0xf5, 0x95, 0x98, 0xed, 0x85, 3293 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3270 0x8c, 0x02, 0xc2, 0x65, 0x2f, 0xbf, 0x92, 0x2e }, 3294 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
3271 .ilen = 32, 3295 .ilen = 32,
3272 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3296 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
3273 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3297 "\x00\x00\x00\x00\x00\x00\x00\x00"
3274 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3298 "\x00\x00\x00\x00\x00\x00\x00\x00"
3275 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3299 "\x00\x00\x00\x00\x00\x00\x00\x00",
3276 .rlen = 32, 3300 .rlen = 32,
3277 }, { /* XTS-AES 2 */ 3301 }, { /* XTS-AES 2 */
3278 .key = { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 3302 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3279 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 3303 "\x11\x11\x11\x11\x11\x11\x11\x11"
3280 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 3304 "\x22\x22\x22\x22\x22\x22\x22\x22"
3281 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 }, 3305 "\x22\x22\x22\x22\x22\x22\x22\x22",
3282 .klen = 32, 3306 .klen = 32,
3283 .iv = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 3307 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3284 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3308 "\x00\x00\x00\x00\x00\x00\x00\x00",
3285 .input = { 0xc4, 0x54, 0x18, 0x5e, 0x6a, 0x16, 0x93, 0x6e, 3309 .input = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3286 0x39, 0x33, 0x40, 0x38, 0xac, 0xef, 0x83, 0x8b, 3310 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3287 0xfb, 0x18, 0x6f, 0xff, 0x74, 0x80, 0xad, 0xc4, 3311 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3288 0x28, 0x93, 0x82, 0xec, 0xd6, 0xd3, 0x94, 0xf0 }, 3312 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
3289 .ilen = 32, 3313 .ilen = 32,
3290 .result = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3314 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3291 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3315 "\x44\x44\x44\x44\x44\x44\x44\x44"
3292 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3316 "\x44\x44\x44\x44\x44\x44\x44\x44"
3293 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }, 3317 "\x44\x44\x44\x44\x44\x44\x44\x44",
3294 .rlen = 32, 3318 .rlen = 32,
3295 }, { /* XTS-AES 3 */ 3319 }, { /* XTS-AES 3 */
3296 .key = { 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 3320 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3297 0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0, 3321 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3298 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 3322 "\x22\x22\x22\x22\x22\x22\x22\x22"
3299 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 }, 3323 "\x22\x22\x22\x22\x22\x22\x22\x22",
3300 .klen = 32, 3324 .klen = 32,
3301 .iv = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 3325 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3326 "\x00\x00\x00\x00\x00\x00\x00\x00",
3303 .input = { 0xaf, 0x85, 0x33, 0x6b, 0x59, 0x7a, 0xfc, 0x1a, 3327 .input = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3304 0x90, 0x0b, 0x2e, 0xb2, 0x1e, 0xc9, 0x49, 0xd2, 3328 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3305 0x92, 0xdf, 0x4c, 0x04, 0x7e, 0x0b, 0x21, 0x53, 3329 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3306 0x21, 0x86, 0xa5, 0x97, 0x1a, 0x22, 0x7a, 0x89 }, 3330 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
3307 .ilen = 32, 3331 .ilen = 32,
3308 .result = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3332 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3309 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3333 "\x44\x44\x44\x44\x44\x44\x44\x44"
3310 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 3334 "\x44\x44\x44\x44\x44\x44\x44\x44"
3311 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }, 3335 "\x44\x44\x44\x44\x44\x44\x44\x44",
3312 .rlen = 32, 3336 .rlen = 32,
3313 }, { /* XTS-AES 4 */ 3337 }, { /* XTS-AES 4 */
3314 .key = { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45, 3338 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3315 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26, 3339 "\x23\x53\x60\x28\x74\x71\x35\x26"
3316 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93, 3340 "\x31\x41\x59\x26\x53\x58\x97\x93"
3317 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95 }, 3341 "\x23\x84\x62\x64\x33\x83\x27\x95",
3318 .klen = 32, 3342 .klen = 32,
3319 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3343 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3320 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3344 "\x00\x00\x00\x00\x00\x00\x00\x00",
3321 .input = { 0x27, 0xa7, 0x47, 0x9b, 0xef, 0xa1, 0xd4, 0x76, 3345 .input = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3322 0x48, 0x9f, 0x30, 0x8c, 0xd4, 0xcf, 0xa6, 0xe2, 3346 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3323 0xa9, 0x6e, 0x4b, 0xbe, 0x32, 0x08, 0xff, 0x25, 3347 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3324 0x28, 0x7d, 0xd3, 0x81, 0x96, 0x16, 0xe8, 0x9c, 3348 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3325 0xc7, 0x8c, 0xf7, 0xf5, 0xe5, 0x43, 0x44, 0x5f, 3349 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3326 0x83, 0x33, 0xd8, 0xfa, 0x7f, 0x56, 0x00, 0x00, 3350 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3327 0x05, 0x27, 0x9f, 0xa5, 0xd8, 0xb5, 0xe4, 0xad, 3351 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3328 0x40, 0xe7, 0x36, 0xdd, 0xb4, 0xd3, 0x54, 0x12, 3352 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3329 0x32, 0x80, 0x63, 0xfd, 0x2a, 0xab, 0x53, 0xe5, 3353 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3330 0xea, 0x1e, 0x0a, 0x9f, 0x33, 0x25, 0x00, 0xa5, 3354 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3331 0xdf, 0x94, 0x87, 0xd0, 0x7a, 0x5c, 0x92, 0xcc, 3355 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3332 0x51, 0x2c, 0x88, 0x66, 0xc7, 0xe8, 0x60, 0xce, 3356 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3333 0x93, 0xfd, 0xf1, 0x66, 0xa2, 0x49, 0x12, 0xb4, 3357 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3334 0x22, 0x97, 0x61, 0x46, 0xae, 0x20, 0xce, 0x84, 3358 "\x22\x97\x61\x46\xae\x20\xce\x84"
3335 0x6b, 0xb7, 0xdc, 0x9b, 0xa9, 0x4a, 0x76, 0x7a, 3359 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3336 0xae, 0xf2, 0x0c, 0x0d, 0x61, 0xad, 0x02, 0x65, 3360 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3337 0x5e, 0xa9, 0x2d, 0xc4, 0xc4, 0xe4, 0x1a, 0x89, 3361 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3338 0x52, 0xc6, 0x51, 0xd3, 0x31, 0x74, 0xbe, 0x51, 3362 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3339 0xa1, 0x0c, 0x42, 0x11, 0x10, 0xe6, 0xd8, 0x15, 3363 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3340 0x88, 0xed, 0xe8, 0x21, 0x03, 0xa2, 0x52, 0xd8, 3364 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3341 0xa7, 0x50, 0xe8, 0x76, 0x8d, 0xef, 0xff, 0xed, 3365 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3342 0x91, 0x22, 0x81, 0x0a, 0xae, 0xb9, 0x9f, 0x91, 3366 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3343 0x72, 0xaf, 0x82, 0xb6, 0x04, 0xdc, 0x4b, 0x8e, 3367 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3344 0x51, 0xbc, 0xb0, 0x82, 0x35, 0xa6, 0xf4, 0x34, 3368 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3345 0x13, 0x32, 0xe4, 0xca, 0x60, 0x48, 0x2a, 0x4b, 3369 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3346 0xa1, 0xa0, 0x3b, 0x3e, 0x65, 0x00, 0x8f, 0xc5, 3370 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3347 0xda, 0x76, 0xb7, 0x0b, 0xf1, 0x69, 0x0d, 0xb4, 3371 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3348 0xea, 0xe2, 0x9c, 0x5f, 0x1b, 0xad, 0xd0, 0x3c, 3372 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3349 0x5c, 0xcf, 0x2a, 0x55, 0xd7, 0x05, 0xdd, 0xcd, 3373 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3350 0x86, 0xd4, 0x49, 0x51, 0x1c, 0xeb, 0x7e, 0xc3, 3374 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3351 0x0b, 0xf1, 0x2b, 0x1f, 0xa3, 0x5b, 0x91, 0x3f, 3375 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3352 0x9f, 0x74, 0x7a, 0x8a, 0xfd, 0x1b, 0x13, 0x0e, 3376 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3353 0x94, 0xbf, 0xf9, 0x4e, 0xff, 0xd0, 0x1a, 0x91, 3377 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3354 0x73, 0x5c, 0xa1, 0x72, 0x6a, 0xcd, 0x0b, 0x19, 3378 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3355 0x7c, 0x4e, 0x5b, 0x03, 0x39, 0x36, 0x97, 0xe1, 3379 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3356 0x26, 0x82, 0x6f, 0xb6, 0xbb, 0xde, 0x8e, 0xcc, 3380 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3357 0x1e, 0x08, 0x29, 0x85, 0x16, 0xe2, 0xc9, 0xed, 3381 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3358 0x03, 0xff, 0x3c, 0x1b, 0x78, 0x60, 0xf6, 0xde, 3382 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3359 0x76, 0xd4, 0xce, 0xcd, 0x94, 0xc8, 0x11, 0x98, 3383 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3360 0x55, 0xef, 0x52, 0x97, 0xca, 0x67, 0xe9, 0xf3, 3384 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3361 0xe7, 0xff, 0x72, 0xb1, 0xe9, 0x97, 0x85, 0xca, 3385 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3362 0x0a, 0x7e, 0x77, 0x20, 0xc5, 0xb3, 0x6d, 0xc6, 3386 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3363 0xd7, 0x2c, 0xac, 0x95, 0x74, 0xc8, 0xcb, 0xbc, 3387 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3364 0x2f, 0x80, 0x1e, 0x23, 0xe5, 0x6f, 0xd3, 0x44, 3388 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3365 0xb0, 0x7f, 0x22, 0x15, 0x4b, 0xeb, 0xa0, 0xf0, 3389 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3366 0x8c, 0xe8, 0x89, 0x1e, 0x64, 0x3e, 0xd9, 0x95, 3390 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3367 0xc9, 0x4d, 0x9a, 0x69, 0xc9, 0xf1, 0xb5, 0xf4, 3391 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3368 0x99, 0x02, 0x7a, 0x78, 0x57, 0x2a, 0xee, 0xbd, 3392 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3369 0x74, 0xd2, 0x0c, 0xc3, 0x98, 0x81, 0xc2, 0x13, 3393 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3370 0xee, 0x77, 0x0b, 0x10, 0x10, 0xe4, 0xbe, 0xa7, 3394 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3371 0x18, 0x84, 0x69, 0x77, 0xae, 0x11, 0x9f, 0x7a, 3395 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3372 0x02, 0x3a, 0xb5, 0x8c, 0xca, 0x0a, 0xd7, 0x52, 3396 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3373 0xaf, 0xe6, 0x56, 0xbb, 0x3c, 0x17, 0x25, 0x6a, 3397 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3374 0x9f, 0x6e, 0x9b, 0xf1, 0x9f, 0xdd, 0x5a, 0x38, 3398 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3375 0xfc, 0x82, 0xbb, 0xe8, 0x72, 0xc5, 0x53, 0x9e, 3399 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3376 0xdb, 0x60, 0x9e, 0xf4, 0xf7, 0x9c, 0x20, 0x3e, 3400 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3377 0xbb, 0x14, 0x0f, 0x2e, 0x58, 0x3c, 0xb2, 0xad, 3401 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3378 0x15, 0xb4, 0xaa, 0x5b, 0x65, 0x50, 0x16, 0xa8, 3402 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3379 0x44, 0x92, 0x77, 0xdb, 0xd4, 0x77, 0xef, 0x2c, 3403 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3380 0x8d, 0x6c, 0x01, 0x7d, 0xb7, 0x38, 0xb1, 0x8d, 3404 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3381 0xeb, 0x4a, 0x42, 0x7d, 0x19, 0x23, 0xce, 0x3f, 3405 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3382 0xf2, 0x62, 0x73, 0x57, 0x79, 0xa4, 0x18, 0xf2, 3406 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3383 0x0a, 0x28, 0x2d, 0xf9, 0x20, 0x14, 0x7b, 0xea, 3407 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3384 0xbe, 0x42, 0x1e, 0xe5, 0x31, 0x9d, 0x05, 0x68 }, 3408 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
3385 .ilen = 512, 3409 .ilen = 512,
3386 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 3410 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
3387 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 3411 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3388 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 3412 "\x10\x11\x12\x13\x14\x15\x16\x17"
3389 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 3413 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3390 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 3414 "\x20\x21\x22\x23\x24\x25\x26\x27"
3391 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 3415 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3392 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 3416 "\x30\x31\x32\x33\x34\x35\x36\x37"
3393 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 3417 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3394 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 3418 "\x40\x41\x42\x43\x44\x45\x46\x47"
3395 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 3419 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3396 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 3420 "\x50\x51\x52\x53\x54\x55\x56\x57"
3397 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 3421 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3398 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 3422 "\x60\x61\x62\x63\x64\x65\x66\x67"
3399 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 3423 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3400 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 3424 "\x70\x71\x72\x73\x74\x75\x76\x77"
3401 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 3425 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3402 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 3426 "\x80\x81\x82\x83\x84\x85\x86\x87"
3403 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 3427 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3404 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 3428 "\x90\x91\x92\x93\x94\x95\x96\x97"
3405 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 3429 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3406 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 3430 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3407 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 3431 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3408 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 3432 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3409 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 3433 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3410 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 3434 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3411 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 3435 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3412 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 3436 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3413 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 3437 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3414 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 3438 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3415 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 3439 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3416 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 3440 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3417 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 3441 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3418 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 3442 "\x00\x01\x02\x03\x04\x05\x06\x07"
3419 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 3443 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3420 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 3444 "\x10\x11\x12\x13\x14\x15\x16\x17"
3421 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 3445 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3422 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 3446 "\x20\x21\x22\x23\x24\x25\x26\x27"
3423 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 3447 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3424 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 3448 "\x30\x31\x32\x33\x34\x35\x36\x37"
3425 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 3449 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3426 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 3450 "\x40\x41\x42\x43\x44\x45\x46\x47"
3427 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 3451 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3428 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 3452 "\x50\x51\x52\x53\x54\x55\x56\x57"
3429 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 3453 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3430 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 3454 "\x60\x61\x62\x63\x64\x65\x66\x67"
3431 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 3455 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3432 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 3456 "\x70\x71\x72\x73\x74\x75\x76\x77"
3433 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 3457 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3434 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 3458 "\x80\x81\x82\x83\x84\x85\x86\x87"
3435 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 3459 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3436 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 3460 "\x90\x91\x92\x93\x94\x95\x96\x97"
3437 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 3461 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3438 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 3462 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3439 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 3463 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3440 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 3464 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3441 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 3465 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3442 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 3466 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3443 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 3467 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3444 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 3468 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3445 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 3469 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3446 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 3470 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3447 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 3471 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3448 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 3472 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3449 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }, 3473 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
3450 .rlen = 512, 3474 .rlen = 512,
3451 } 3475 }
3452}; 3476};
@@ -3454,1836 +3478,1841 @@ static struct cipher_testvec aes_xts_dec_tv_template[] = {
3454 3478
3455static struct cipher_testvec aes_ctr_enc_tv_template[] = { 3479static struct cipher_testvec aes_ctr_enc_tv_template[] = {
3456 { /* From RFC 3686 */ 3480 { /* From RFC 3686 */
3457 .key = { 0xae, 0x68, 0x52, 0xf8, 0x12, 0x10, 0x67, 0xcc, 3481 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
3458 0x4b, 0xf7, 0xa5, 0x76, 0x55, 0x77, 0xf3, 0x9e, 3482 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
3459 0x00, 0x00, 0x00, 0x30 }, 3483 "\x00\x00\x00\x30",
3460 .klen = 20, 3484 .klen = 20,
3461 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 3485 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3462 .input = { "Single block msg" }, 3486 .input = "Single block msg",
3463 .ilen = 16, 3487 .ilen = 16,
3464 .result = { 0xe4, 0x09, 0x5d, 0x4f, 0xb7, 0xa7, 0xb3, 0x79, 3488 .result = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
3465 0x2d, 0x61, 0x75, 0xa3, 0x26, 0x13, 0x11, 0xb8 }, 3489 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
3466 .rlen = 16, 3490 .rlen = 16,
3467 }, { 3491 }, {
3468 .key = { 0x7e, 0x24, 0x06, 0x78, 0x17, 0xfa, 0xe0, 0xd7, 3492 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
3469 0x43, 0xd6, 0xce, 0x1f, 0x32, 0x53, 0x91, 0x63, 3493 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
3470 0x00, 0x6c, 0xb6, 0xdb }, 3494 "\x00\x6c\xb6\xdb",
3471 .klen = 20, 3495 .klen = 20,
3472 .iv = { 0xc0, 0x54, 0x3b, 0x59, 0xda, 0x48, 0xd9, 0x0b }, 3496 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
3473 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 3497 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3474 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 3498 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3475 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 3499 "\x10\x11\x12\x13\x14\x15\x16\x17"
3476 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 3500 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
3477 .ilen = 32, 3501 .ilen = 32,
3478 .result = { 0x51, 0x04, 0xa1, 0x06, 0x16, 0x8a, 0x72, 0xd9, 3502 .result = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
3479 0x79, 0x0d, 0x41, 0xee, 0x8e, 0xda, 0xd3, 0x88, 3503 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
3480 0xeb, 0x2e, 0x1e, 0xfc, 0x46, 0xda, 0x57, 0xc8, 3504 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
3481 0xfc, 0xe6, 0x30, 0xdf, 0x91, 0x41, 0xbe, 0x28 }, 3505 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
3482 .rlen = 32, 3506 .rlen = 32,
3483 }, { 3507 }, {
3484 .key = { 0x16, 0xaf, 0x5b, 0x14, 0x5f, 0xc9, 0xf5, 0x79, 3508 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
3485 0xc1, 0x75, 0xf9, 0x3e, 0x3b, 0xfb, 0x0e, 0xed, 3509 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
3486 0x86, 0x3d, 0x06, 0xcc, 0xfd, 0xb7, 0x85, 0x15, 3510 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
3487 0x00, 0x00, 0x00, 0x48 }, 3511 "\x00\x00\x00\x48",
3488 .klen = 28, 3512 .klen = 28,
3489 .iv = { 0x36, 0x73, 0x3c, 0x14, 0x7d, 0x6d, 0x93, 0xcb }, 3513 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
3490 .input = { "Single block msg" }, 3514 .input = "Single block msg",
3491 .ilen = 16, 3515 .ilen = 16,
3492 .result = { 0x4b, 0x55, 0x38, 0x4f, 0xe2, 0x59, 0xc9, 0xc8, 3516 .result = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
3493 0x4e, 0x79, 0x35, 0xa0, 0x03, 0xcb, 0xe9, 0x28 }, 3517 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
3494 .rlen = 16, 3518 .rlen = 16,
3495 }, { 3519 }, {
3496 .key = { 0x7c, 0x5c, 0xb2, 0x40, 0x1b, 0x3d, 0xc3, 0x3c, 3520 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
3497 0x19, 0xe7, 0x34, 0x08, 0x19, 0xe0, 0xf6, 0x9c, 3521 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
3498 0x67, 0x8c, 0x3d, 0xb8, 0xe6, 0xf6, 0xa9, 0x1a, 3522 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
3499 0x00, 0x96, 0xb0, 0x3b }, 3523 "\x00\x96\xb0\x3b",
3500 .klen = 28, 3524 .klen = 28,
3501 .iv = { 0x02, 0x0c, 0x6e, 0xad, 0xc2, 0xcb, 0x50, 0x0d }, 3525 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
3502 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 3526 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3503 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 3527 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3504 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 3528 "\x10\x11\x12\x13\x14\x15\x16\x17"
3505 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 3529 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
3506 .ilen = 32, 3530 .ilen = 32,
3507 .result = { 0x45, 0x32, 0x43, 0xfc, 0x60, 0x9b, 0x23, 0x32, 3531 .result = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
3508 0x7e, 0xdf, 0xaa, 0xfa, 0x71, 0x31, 0xcd, 0x9f, 3532 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
3509 0x84, 0x90, 0x70, 0x1c, 0x5a, 0xd4, 0xa7, 0x9c, 3533 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
3510 0xfc, 0x1f, 0xe0, 0xff, 0x42, 0xf4, 0xfb, 0x00 }, 3534 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
3511 .rlen = 32, 3535 .rlen = 32,
3512 }, { 3536 }, {
3513 .key = { 0x77, 0x6b, 0xef, 0xf2, 0x85, 0x1d, 0xb0, 0x6f, 3537 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
3514 0x4c, 0x8a, 0x05, 0x42, 0xc8, 0x69, 0x6f, 0x6c, 3538 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
3515 0x6a, 0x81, 0xaf, 0x1e, 0xec, 0x96, 0xb4, 0xd3, 3539 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
3516 0x7f, 0xc1, 0xd6, 0x89, 0xe6, 0xc1, 0xc1, 0x04, 3540 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
3517 0x00, 0x00, 0x00, 0x60 }, 3541 "\x00\x00\x00\x60",
3518 .klen = 36, 3542 .klen = 36,
3519 .iv = { 0xdb, 0x56, 0x72, 0xc9, 0x7a, 0xa8, 0xf0, 0xb2 }, 3543 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
3520 .input = { "Single block msg" }, 3544 .input = "Single block msg",
3521 .ilen = 16, 3545 .ilen = 16,
3522 .result = { 0x14, 0x5a, 0xd0, 0x1d, 0xbf, 0x82, 0x4e, 0xc7, 3546 .result = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
3523 0x56, 0x08, 0x63, 0xdc, 0x71, 0xe3, 0xe0, 0xc0 }, 3547 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
3524 .rlen = 16, 3548 .rlen = 16,
3525 }, { 3549 }, {
3526 .key = { 0xf6, 0xd6, 0x6d, 0x6b, 0xd5, 0x2d, 0x59, 0xbb, 3550 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
3527 0x07, 0x96, 0x36, 0x58, 0x79, 0xef, 0xf8, 0x86, 3551 "\x07\x96\x36\x58\x79\xef\xf8\x86"
3528 0xc6, 0x6d, 0xd5, 0x1a, 0x5b, 0x6a, 0x99, 0x74, 3552 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
3529 0x4b, 0x50, 0x59, 0x0c, 0x87, 0xa2, 0x38, 0x84, 3553 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
3530 0x00, 0xfa, 0xac, 0x24 }, 3554 "\x00\xfa\xac\x24",
3531 .klen = 36, 3555 .klen = 36,
3532 .iv = { 0xc1, 0x58, 0x5e, 0xf1, 0x5a, 0x43, 0xd8, 0x75 }, 3556 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
3533 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 3557 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3534 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 3558 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3535 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 3559 "\x10\x11\x12\x13\x14\x15\x16\x17"
3536 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 3560 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
3537 .ilen = 32, 3561 .ilen = 32,
3538 .result = { 0xf0, 0x5e, 0x23, 0x1b, 0x38, 0x94, 0x61, 0x2c, 3562 .result = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
3539 0x49, 0xee, 0x00, 0x0b, 0x80, 0x4e, 0xb2, 0xa9, 3563 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
3540 0xb8, 0x30, 0x6b, 0x50, 0x8f, 0x83, 0x9d, 0x6a, 3564 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
3541 0x55, 0x30, 0x83, 0x1d, 0x93, 0x44, 0xaf, 0x1c }, 3565 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
3542 .rlen = 32, 3566 .rlen = 32,
3543 }, { 3567 }, {
3544 // generated using Crypto++ 3568 // generated using Crypto++
3545 .key = { 3569 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
3546 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 3570 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3547 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 3571 "\x10\x11\x12\x13\x14\x15\x16\x17"
3548 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 3572 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3549 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 3573 "\x00\x00\x00\x00",
3550 0x00, 0x00, 0x00, 0x00,
3551 },
3552 .klen = 32 + 4, 3574 .klen = 32 + 4,
3553 .iv = { 3575 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3554 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3576 .input =
3555 }, 3577 "\x00\x01\x02\x03\x04\x05\x06\x07"
3556 .input = { 3578 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3557 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 3579 "\x10\x11\x12\x13\x14\x15\x16\x17"
3558 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 3580 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3559 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 3581 "\x20\x21\x22\x23\x24\x25\x26\x27"
3560 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 3582 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3561 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 3583 "\x30\x31\x32\x33\x34\x35\x36\x37"
3562 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 3584 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3563 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 3585 "\x40\x41\x42\x43\x44\x45\x46\x47"
3564 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 3586 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3565 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 3587 "\x50\x51\x52\x53\x54\x55\x56\x57"
3566 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 3588 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3567 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 3589 "\x60\x61\x62\x63\x64\x65\x66\x67"
3568 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 3590 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3569 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 3591 "\x70\x71\x72\x73\x74\x75\x76\x77"
3570 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 3592 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3571 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 3593 "\x80\x81\x82\x83\x84\x85\x86\x87"
3572 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 3594 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3573 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 3595 "\x90\x91\x92\x93\x94\x95\x96\x97"
3574 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 3596 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3575 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 3597 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3576 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 3598 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3577 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 3599 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3578 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 3600 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3579 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 3601 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3580 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 3602 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3581 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 3603 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3582 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 3604 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3583 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 3605 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3584 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 3606 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3585 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 3607 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3586 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 3608 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3587 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 3609 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
3588 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 3610 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
3589 0x00, 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15, 3611 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
3590 0x18, 0x1b, 0x1e, 0x21, 0x24, 0x27, 0x2a, 0x2d, 3612 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
3591 0x30, 0x33, 0x36, 0x39, 0x3c, 0x3f, 0x42, 0x45, 3613 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
3592 0x48, 0x4b, 0x4e, 0x51, 0x54, 0x57, 0x5a, 0x5d, 3614 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
3593 0x60, 0x63, 0x66, 0x69, 0x6c, 0x6f, 0x72, 0x75, 3615 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
3594 0x78, 0x7b, 0x7e, 0x81, 0x84, 0x87, 0x8a, 0x8d, 3616 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
3595 0x90, 0x93, 0x96, 0x99, 0x9c, 0x9f, 0xa2, 0xa5, 3617 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
3596 0xa8, 0xab, 0xae, 0xb1, 0xb4, 0xb7, 0xba, 0xbd, 3618 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
3597 0xc0, 0xc3, 0xc6, 0xc9, 0xcc, 0xcf, 0xd2, 0xd5, 3619 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
3598 0xd8, 0xdb, 0xde, 0xe1, 0xe4, 0xe7, 0xea, 0xed, 3620 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
3599 0xf0, 0xf3, 0xf6, 0xf9, 0xfc, 0xff, 0x02, 0x05, 3621 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
3600 0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x1a, 0x1d, 3622 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
3601 0x20, 0x23, 0x26, 0x29, 0x2c, 0x2f, 0x32, 0x35, 3623 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
3602 0x38, 0x3b, 0x3e, 0x41, 0x44, 0x47, 0x4a, 0x4d, 3624 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
3603 0x50, 0x53, 0x56, 0x59, 0x5c, 0x5f, 0x62, 0x65, 3625 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
3604 0x68, 0x6b, 0x6e, 0x71, 0x74, 0x77, 0x7a, 0x7d, 3626 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
3605 0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x95, 3627 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
3606 0x98, 0x9b, 0x9e, 0xa1, 0xa4, 0xa7, 0xaa, 0xad, 3628 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
3607 0xb0, 0xb3, 0xb6, 0xb9, 0xbc, 0xbf, 0xc2, 0xc5, 3629 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
3608 0xc8, 0xcb, 0xce, 0xd1, 0xd4, 0xd7, 0xda, 0xdd, 3630 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
3609 0xe0, 0xe3, 0xe6, 0xe9, 0xec, 0xef, 0xf2, 0xf5, 3631 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
3610 0xf8, 0xfb, 0xfe, 0x01, 0x04, 0x07, 0x0a, 0x0d, 3632 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
3611 0x10, 0x13, 0x16, 0x19, 0x1c, 0x1f, 0x22, 0x25, 3633 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
3612 0x28, 0x2b, 0x2e, 0x31, 0x34, 0x37, 0x3a, 0x3d, 3634 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
3613 0x40, 0x43, 0x46, 0x49, 0x4c, 0x4f, 0x52, 0x55, 3635 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
3614 0x58, 0x5b, 0x5e, 0x61, 0x64, 0x67, 0x6a, 0x6d, 3636 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
3615 0x70, 0x73, 0x76, 0x79, 0x7c, 0x7f, 0x82, 0x85, 3637 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
3616 0x88, 0x8b, 0x8e, 0x91, 0x94, 0x97, 0x9a, 0x9d, 3638 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
3617 0xa0, 0xa3, 0xa6, 0xa9, 0xac, 0xaf, 0xb2, 0xb5, 3639 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
3618 0xb8, 0xbb, 0xbe, 0xc1, 0xc4, 0xc7, 0xca, 0xcd, 3640 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
3619 0xd0, 0xd3, 0xd6, 0xd9, 0xdc, 0xdf, 0xe2, 0xe5, 3641 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
3620 0xe8, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa, 0xfd, 3642 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
3621 0x00, 0x05, 0x0a, 0x0f, 0x14, 0x19, 0x1e, 0x23, 3643 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
3622 0x28, 0x2d, 0x32, 0x37, 0x3c, 0x41, 0x46, 0x4b, 3644 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
3623 0x50, 0x55, 0x5a, 0x5f, 0x64, 0x69, 0x6e, 0x73, 3645 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
3624 0x78, 0x7d, 0x82, 0x87, 0x8c, 0x91, 0x96, 0x9b, 3646 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
3625 0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb9, 0xbe, 0xc3, 3647 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
3626 0xc8, 0xcd, 0xd2, 0xd7, 0xdc, 0xe1, 0xe6, 0xeb, 3648 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
3627 0xf0, 0xf5, 0xfa, 0xff, 0x04, 0x09, 0x0e, 0x13, 3649 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
3628 0x18, 0x1d, 0x22, 0x27, 0x2c, 0x31, 0x36, 0x3b, 3650 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
3629 0x40, 0x45, 0x4a, 0x4f, 0x54, 0x59, 0x5e, 0x63, 3651 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
3630 0x68, 0x6d, 0x72, 0x77, 0x7c, 0x81, 0x86, 0x8b, 3652 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
3631 0x90, 0x95, 0x9a, 0x9f, 0xa4, 0xa9, 0xae, 0xb3, 3653 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
3632 0xb8, 0xbd, 0xc2, 0xc7, 0xcc, 0xd1, 0xd6, 0xdb, 3654 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
3633 0xe0, 0xe5, 0xea, 0xef, 0xf4, 0xf9, 0xfe, 0x03, 3655 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
3634 0x08, 0x0d, 0x12, 0x17, 0x1c, 0x21, 0x26, 0x2b, 3656 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
3635 0x30, 0x35, 0x3a, 0x3f, 0x44, 0x49, 0x4e, 0x53, 3657 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
3636 0x58, 0x5d, 0x62, 0x67, 0x6c, 0x71, 0x76, 0x7b, 3658 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
3637 0x80, 0x85, 0x8a, 0x8f, 0x94, 0x99, 0x9e, 0xa3, 3659 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
3638 0xa8, 0xad, 0xb2, 0xb7, 0xbc, 0xc1, 0xc6, 0xcb, 3660 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
3639 0xd0, 0xd5, 0xda, 0xdf, 0xe4, 0xe9, 0xee, 0xf3, 3661 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
3640 0xf8, 0xfd, 0x02, 0x07, 0x0c, 0x11, 0x16, 0x1b, 3662 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
3641 0x20, 0x25, 0x2a, 0x2f, 0x34, 0x39, 0x3e, 0x43, 3663 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
3642 0x48, 0x4d, 0x52, 0x57, 0x5c, 0x61, 0x66, 0x6b, 3664 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
3643 0x70, 0x75, 0x7a, 0x7f, 0x84, 0x89, 0x8e, 0x93, 3665 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
3644 0x98, 0x9d, 0xa2, 0xa7, 0xac, 0xb1, 0xb6, 0xbb, 3666 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
3645 0xc0, 0xc5, 0xca, 0xcf, 0xd4, 0xd9, 0xde, 0xe3, 3667 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
3646 0xe8, 0xed, 0xf2, 0xf7, 0xfc, 0x01, 0x06, 0x0b, 3668 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
3647 0x10, 0x15, 0x1a, 0x1f, 0x24, 0x29, 0x2e, 0x33, 3669 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
3648 0x38, 0x3d, 0x42, 0x47, 0x4c, 0x51, 0x56, 0x5b, 3670 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
3649 0x60, 0x65, 0x6a, 0x6f, 0x74, 0x79, 0x7e, 0x83, 3671 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
3650 0x88, 0x8d, 0x92, 0x97, 0x9c, 0xa1, 0xa6, 0xab, 3672 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
3651 0xb0, 0xb5, 0xba, 0xbf, 0xc4, 0xc9, 0xce, 0xd3, 3673 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
3652 0xd8, 0xdd, 0xe2, 0xe7, 0xec, 0xf1, 0xf6, 0xfb, 3674 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
3653 0x00, 0x07, 0x0e, 0x15, 0x1c, 0x23, 0x2a, 0x31, 3675 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
3654 0x38, 0x3f, 0x46, 0x4d, 0x54, 0x5b, 0x62, 0x69, 3676 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
3655 0x70, 0x77, 0x7e, 0x85, 0x8c, 0x93, 0x9a, 0xa1, 3677 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
3656 0xa8, 0xaf, 0xb6, 0xbd, 0xc4, 0xcb, 0xd2, 0xd9, 3678 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
3657 0xe0, 0xe7, 0xee, 0xf5, 0xfc, 0x03, 0x0a, 0x11, 3679 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
3658 0x18, 0x1f, 0x26, 0x2d, 0x34, 0x3b, 0x42, 0x49, 3680 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
3659 0x50, 0x57, 0x5e, 0x65, 0x6c, 0x73, 0x7a, 0x81, 3681 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
3660 0x88, 0x8f, 0x96, 0x9d, 0xa4, 0xab, 0xb2, 0xb9, 3682 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
3661 0xc0, 0xc7, 0xce, 0xd5, 0xdc, 0xe3, 0xea, 0xf1, 3683 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
3662 0xf8, 0xff, 0x06, 0x0d, 0x14, 0x1b, 0x22, 0x29, 3684 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
3663 0x30, 0x37, 0x3e, 0x45, 0x4c, 0x53, 0x5a, 0x61, 3685 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
3664 0x68, 0x6f, 0x76, 0x7d, 0x84, 0x8b, 0x92, 0x99, 3686 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
3665 0xa0, 0xa7, 0xae, 0xb5, 0xbc, 0xc3, 0xca, 0xd1, 3687 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
3666 0xd8, 0xdf, 0xe6, 0xed, 0xf4, 0xfb, 0x02, 0x09, 3688 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
3667 0x10, 0x17, 0x1e, 0x25, 0x2c, 0x33, 0x3a, 0x41, 3689 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
3668 0x48, 0x4f, 0x56, 0x5d, 0x64, 0x6b, 0x72, 0x79, 3690 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
3669 0x80, 0x87, 0x8e, 0x95, 0x9c, 0xa3, 0xaa, 0xb1, 3691 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
3670 0xb8, 0xbf, 0xc6, 0xcd, 0xd4, 0xdb, 0xe2, 0xe9, 3692 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
3671 0xf0, 0xf7, 0xfe, 0x05, 0x0c, 0x13, 0x1a, 0x21, 3693 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
3672 0x28, 0x2f, 0x36, 0x3d, 0x44, 0x4b, 0x52, 0x59, 3694 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
3673 0x60, 0x67, 0x6e, 0x75, 0x7c, 0x83, 0x8a, 0x91, 3695 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
3674 0x98, 0x9f, 0xa6, 0xad, 0xb4, 0xbb, 0xc2, 0xc9, 3696 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
3675 0xd0, 0xd7, 0xde, 0xe5, 0xec, 0xf3, 0xfa, 0x01, 3697 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
3676 0x08, 0x0f, 0x16, 0x1d, 0x24, 0x2b, 0x32, 0x39, 3698 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
3677 0x40, 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 3699 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
3678 0x78, 0x7f, 0x86, 0x8d, 0x94, 0x9b, 0xa2, 0xa9, 3700 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
3679 0xb0, 0xb7, 0xbe, 0xc5, 0xcc, 0xd3, 0xda, 0xe1, 3701 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
3680 0xe8, 0xef, 0xf6, 0xfd, 0x04, 0x0b, 0x12, 0x19, 3702 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
3681 0x20, 0x27, 0x2e, 0x35, 0x3c, 0x43, 0x4a, 0x51, 3703 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
3682 0x58, 0x5f, 0x66, 0x6d, 0x74, 0x7b, 0x82, 0x89, 3704 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
3683 0x90, 0x97, 0x9e, 0xa5, 0xac, 0xb3, 0xba, 0xc1, 3705 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
3684 0xc8, 0xcf, 0xd6, 0xdd, 0xe4, 0xeb, 0xf2, 0xf9, 3706 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
3685 0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 3707 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
3686 0x48, 0x51, 0x5a, 0x63, 0x6c, 0x75, 0x7e, 0x87, 3708 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
3687 0x90, 0x99, 0xa2, 0xab, 0xb4, 0xbd, 0xc6, 0xcf, 3709 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
3688 0xd8, 0xe1, 0xea, 0xf3, 0xfc, 0x05, 0x0e, 0x17, 3710 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
3689 0x20, 0x29, 0x32, 0x3b, 0x44, 0x4d, 0x56, 0x5f, 3711 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
3690 0x68, 0x71, 0x7a, 0x83, 0x8c, 0x95, 0x9e, 0xa7, 3712 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
3691 0xb0, 0xb9, 0xc2, 0xcb, 0xd4, 0xdd, 0xe6, 0xef, 3713 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
3692 0xf8, 0x01, 0x0a, 0x13, 0x1c, 0x25, 0x2e, 0x37, 3714 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
3693 0x40, 0x49, 0x52, 0x5b, 0x64, 0x6d, 0x76, 0x7f, 3715 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
3694 0x88, 0x91, 0x9a, 0xa3, 0xac, 0xb5, 0xbe, 0xc7, 3716 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
3695 0xd0, 0xd9, 0xe2, 0xeb, 0xf4, 0xfd, 0x06, 0x0f, 3717 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
3696 0x18, 0x21, 0x2a, 0x33, 0x3c, 0x45, 0x4e, 0x57, 3718 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
3697 0x60, 0x69, 0x72, 0x7b, 0x84, 0x8d, 0x96, 0x9f, 3719 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
3698 0xa8, 0xb1, 0xba, 0xc3, 0xcc, 0xd5, 0xde, 0xe7, 3720 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
3699 0xf0, 0xf9, 0x02, 0x0b, 0x14, 0x1d, 0x26, 0x2f, 3721 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
3700 0x38, 0x41, 0x4a, 0x53, 0x5c, 0x65, 0x6e, 0x77, 3722 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
3701 0x80, 0x89, 0x92, 0x9b, 0xa4, 0xad, 0xb6, 0xbf, 3723 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
3702 0xc8, 0xd1, 0xda, 0xe3, 0xec, 0xf5, 0xfe, 0x07, 3724 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
3703 0x10, 0x19, 0x22, 0x2b, 0x34, 0x3d, 0x46, 0x4f, 3725 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
3704 0x58, 0x61, 0x6a, 0x73, 0x7c, 0x85, 0x8e, 0x97, 3726 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
3705 0xa0, 0xa9, 0xb2, 0xbb, 0xc4, 0xcd, 0xd6, 0xdf, 3727 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
3706 0xe8, 0xf1, 0xfa, 0x03, 0x0c, 0x15, 0x1e, 0x27, 3728 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
3707 0x30, 0x39, 0x42, 0x4b, 0x54, 0x5d, 0x66, 0x6f, 3729 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
3708 0x78, 0x81, 0x8a, 0x93, 0x9c, 0xa5, 0xae, 0xb7, 3730 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
3709 0xc0, 0xc9, 0xd2, 0xdb, 0xe4, 0xed, 0xf6, 0xff, 3731 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
3710 0x08, 0x11, 0x1a, 0x23, 0x2c, 0x35, 0x3e, 0x47, 3732 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
3711 0x50, 0x59, 0x62, 0x6b, 0x74, 0x7d, 0x86, 0x8f, 3733 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
3712 0x98, 0xa1, 0xaa, 0xb3, 0xbc, 0xc5, 0xce, 0xd7, 3734 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
3713 0xe0, 0xe9, 0xf2, 0xfb, 0x04, 0x0d, 0x16, 0x1f, 3735 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
3714 0x28, 0x31, 0x3a, 0x43, 0x4c, 0x55, 0x5e, 0x67, 3736 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
3715 0x70, 0x79, 0x82, 0x8b, 0x94, 0x9d, 0xa6, 0xaf, 3737 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
3716 0xb8, 0xc1, 0xca, 0xd3, 0xdc, 0xe5, 0xee, 0xf7, 3738 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
3717 0x00, 0x0b, 0x16, 0x21, 0x2c, 0x37, 0x42, 0x4d, 3739 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
3718 0x58, 0x63, 0x6e, 0x79, 0x84, 0x8f, 0x9a, 0xa5, 3740 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
3719 0xb0, 0xbb, 0xc6, 0xd1, 0xdc, 0xe7, 0xf2, 0xfd, 3741 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
3720 0x08, 0x13, 0x1e, 0x29, 0x34, 0x3f, 0x4a, 0x55, 3742 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
3721 0x60, 0x6b, 0x76, 0x81, 0x8c, 0x97, 0xa2, 0xad, 3743 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
3722 0xb8, 0xc3, 0xce, 0xd9, 0xe4, 0xef, 0xfa, 0x05, 3744 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
3723 0x10, 0x1b, 0x26, 0x31, 0x3c, 0x47, 0x52, 0x5d, 3745 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
3724 0x68, 0x73, 0x7e, 0x89, 0x94, 0x9f, 0xaa, 0xb5, 3746 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
3725 0xc0, 0xcb, 0xd6, 0xe1, 0xec, 0xf7, 0x02, 0x0d, 3747 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
3726 0x18, 0x23, 0x2e, 0x39, 0x44, 0x4f, 0x5a, 0x65, 3748 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
3727 0x70, 0x7b, 0x86, 0x91, 0x9c, 0xa7, 0xb2, 0xbd, 3749 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
3728 0xc8, 0xd3, 0xde, 0xe9, 0xf4, 0xff, 0x0a, 0x15, 3750 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
3729 0x20, 0x2b, 0x36, 0x41, 0x4c, 0x57, 0x62, 0x6d, 3751 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
3730 0x78, 0x83, 0x8e, 0x99, 0xa4, 0xaf, 0xba, 0xc5, 3752 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
3731 0xd0, 0xdb, 0xe6, 0xf1, 0xfc, 0x07, 0x12, 0x1d, 3753 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
3732 0x28, 0x33, 0x3e, 0x49, 0x54, 0x5f, 0x6a, 0x75, 3754 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
3733 0x80, 0x8b, 0x96, 0xa1, 0xac, 0xb7, 0xc2, 0xcd, 3755 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
3734 0xd8, 0xe3, 0xee, 0xf9, 0x04, 0x0f, 0x1a, 0x25, 3756 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
3735 0x30, 0x3b, 0x46, 0x51, 0x5c, 0x67, 0x72, 0x7d, 3757 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
3736 0x88, 0x93, 0x9e, 0xa9, 0xb4, 0xbf, 0xca, 0xd5, 3758 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
3737 0xe0, 0xeb, 0xf6, 0x01, 0x0c, 0x17, 0x22, 0x2d, 3759 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
3738 0x38, 0x43, 0x4e, 0x59, 0x64, 0x6f, 0x7a, 0x85, 3760 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
3739 0x90, 0x9b, 0xa6, 0xb1, 0xbc, 0xc7, 0xd2, 0xdd, 3761 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
3740 0xe8, 0xf3, 0xfe, 0x09, 0x14, 0x1f, 0x2a, 0x35, 3762 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
3741 0x40, 0x4b, 0x56, 0x61, 0x6c, 0x77, 0x82, 0x8d, 3763 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
3742 0x98, 0xa3, 0xae, 0xb9, 0xc4, 0xcf, 0xda, 0xe5, 3764 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
3743 0xf0, 0xfb, 0x06, 0x11, 0x1c, 0x27, 0x32, 0x3d, 3765 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
3744 0x48, 0x53, 0x5e, 0x69, 0x74, 0x7f, 0x8a, 0x95, 3766 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
3745 0xa0, 0xab, 0xb6, 0xc1, 0xcc, 0xd7, 0xe2, 0xed, 3767 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
3746 0xf8, 0x03, 0x0e, 0x19, 0x24, 0x2f, 0x3a, 0x45, 3768 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
3747 0x50, 0x5b, 0x66, 0x71, 0x7c, 0x87, 0x92, 0x9d, 3769 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
3748 0xa8, 0xb3, 0xbe, 0xc9, 0xd4, 0xdf, 0xea, 0xf5, 3770 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
3749 0x00, 0x0d, 0x1a, 0x27, 0x34, 0x41, 0x4e, 0x5b, 3771 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
3750 0x68, 0x75, 0x82, 0x8f, 0x9c, 0xa9, 0xb6, 0xc3, 3772 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
3751 0xd0, 0xdd, 0xea, 0xf7, 0x04, 0x11, 0x1e, 0x2b, 3773 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
3752 0x38, 0x45, 0x52, 0x5f, 0x6c, 0x79, 0x86, 0x93, 3774 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
3753 0xa0, 0xad, 0xba, 0xc7, 0xd4, 0xe1, 0xee, 0xfb, 3775 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
3754 0x08, 0x15, 0x22, 0x2f, 0x3c, 0x49, 0x56, 0x63, 3776 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
3755 0x70, 0x7d, 0x8a, 0x97, 0xa4, 0xb1, 0xbe, 0xcb, 3777 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
3756 0xd8, 0xe5, 0xf2, 0xff, 0x0c, 0x19, 0x26, 0x33, 3778 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
3757 0x40, 0x4d, 0x5a, 0x67, 0x74, 0x81, 0x8e, 0x9b, 3779 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
3758 0xa8, 0xb5, 0xc2, 0xcf, 0xdc, 0xe9, 0xf6, 0x03, 3780 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
3759 0x10, 0x1d, 0x2a, 0x37, 0x44, 0x51, 0x5e, 0x6b, 3781 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
3760 0x78, 0x85, 0x92, 0x9f, 0xac, 0xb9, 0xc6, 0xd3, 3782 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
3761 0xe0, 0xed, 0xfa, 0x07, 0x14, 0x21, 0x2e, 0x3b, 3783 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
3762 0x48, 0x55, 0x62, 0x6f, 0x7c, 0x89, 0x96, 0xa3, 3784 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
3763 0xb0, 0xbd, 0xca, 0xd7, 0xe4, 0xf1, 0xfe, 0x0b, 3785 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
3764 0x18, 0x25, 0x32, 0x3f, 0x4c, 0x59, 0x66, 0x73, 3786 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
3765 0x80, 0x8d, 0x9a, 0xa7, 0xb4, 0xc1, 0xce, 0xdb, 3787 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
3766 0xe8, 0xf5, 0x02, 0x0f, 0x1c, 0x29, 0x36, 0x43, 3788 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
3767 0x50, 0x5d, 0x6a, 0x77, 0x84, 0x91, 0x9e, 0xab, 3789 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
3768 0xb8, 0xc5, 0xd2, 0xdf, 0xec, 0xf9, 0x06, 0x13, 3790 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
3769 0x20, 0x2d, 0x3a, 0x47, 0x54, 0x61, 0x6e, 0x7b, 3791 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
3770 0x88, 0x95, 0xa2, 0xaf, 0xbc, 0xc9, 0xd6, 0xe3, 3792 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
3771 0xf0, 0xfd, 0x0a, 0x17, 0x24, 0x31, 0x3e, 0x4b, 3793 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
3772 0x58, 0x65, 0x72, 0x7f, 0x8c, 0x99, 0xa6, 0xb3, 3794 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
3773 0xc0, 0xcd, 0xda, 0xe7, 0xf4, 0x01, 0x0e, 0x1b, 3795 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
3774 0x28, 0x35, 0x42, 0x4f, 0x5c, 0x69, 0x76, 0x83, 3796 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
3775 0x90, 0x9d, 0xaa, 0xb7, 0xc4, 0xd1, 0xde, 0xeb, 3797 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
3776 0xf8, 0x05, 0x12, 0x1f, 0x2c, 0x39, 0x46, 0x53, 3798 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
3777 0x60, 0x6d, 0x7a, 0x87, 0x94, 0xa1, 0xae, 0xbb, 3799 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
3778 0xc8, 0xd5, 0xe2, 0xef, 0xfc, 0x09, 0x16, 0x23, 3800 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
3779 0x30, 0x3d, 0x4a, 0x57, 0x64, 0x71, 0x7e, 0x8b, 3801 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
3780 0x98, 0xa5, 0xb2, 0xbf, 0xcc, 0xd9, 0xe6, 0xf3, 3802 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
3781 0x00, 0x0f, 0x1e, 0x2d, 0x3c, 0x4b, 0x5a, 0x69, 3803 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
3782 0x78, 0x87, 0x96, 0xa5, 0xb4, 0xc3, 0xd2, 0xe1, 3804 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
3783 0xf0, 0xff, 0x0e, 0x1d, 0x2c, 0x3b, 0x4a, 0x59, 3805 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
3784 0x68, 0x77, 0x86, 0x95, 0xa4, 0xb3, 0xc2, 0xd1, 3806 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
3785 0xe0, 0xef, 0xfe, 0x0d, 0x1c, 0x2b, 0x3a, 0x49, 3807 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
3786 0x58, 0x67, 0x76, 0x85, 0x94, 0xa3, 0xb2, 0xc1, 3808 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
3787 0xd0, 0xdf, 0xee, 0xfd, 0x0c, 0x1b, 0x2a, 0x39, 3809 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
3788 0x48, 0x57, 0x66, 0x75, 0x84, 0x93, 0xa2, 0xb1, 3810 "\x38\x47\x56\x65\x74\x83\x92\xa1"
3789 0xc0, 0xcf, 0xde, 0xed, 0xfc, 0x0b, 0x1a, 0x29, 3811 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
3790 0x38, 0x47, 0x56, 0x65, 0x74, 0x83, 0x92, 0xa1, 3812 "\x28\x37\x46\x55\x64\x73\x82\x91"
3791 0xb0, 0xbf, 0xce, 0xdd, 0xec, 0xfb, 0x0a, 0x19, 3813 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
3792 0x28, 0x37, 0x46, 0x55, 0x64, 0x73, 0x82, 0x91, 3814 "\x18\x27\x36\x45\x54\x63\x72\x81"
3793 0xa0, 0xaf, 0xbe, 0xcd, 0xdc, 0xeb, 0xfa, 0x09, 3815 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
3794 0x18, 0x27, 0x36, 0x45, 0x54, 0x63, 0x72, 0x81, 3816 "\x08\x17\x26\x35\x44\x53\x62\x71"
3795 0x90, 0x9f, 0xae, 0xbd, 0xcc, 0xdb, 0xea, 0xf9, 3817 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
3796 0x08, 0x17, 0x26, 0x35, 0x44, 0x53, 0x62, 0x71, 3818 "\xf8\x07\x16\x25\x34\x43\x52\x61"
3797 0x80, 0x8f, 0x9e, 0xad, 0xbc, 0xcb, 0xda, 0xe9, 3819 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
3798 0xf8, 0x07, 0x16, 0x25, 0x34, 0x43, 0x52, 0x61, 3820 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
3799 0x70, 0x7f, 0x8e, 0x9d, 0xac, 0xbb, 0xca, 0xd9, 3821 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
3800 0xe8, 0xf7, 0x06, 0x15, 0x24, 0x33, 0x42, 0x51, 3822 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
3801 0x60, 0x6f, 0x7e, 0x8d, 0x9c, 0xab, 0xba, 0xc9, 3823 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
3802 0xd8, 0xe7, 0xf6, 0x05, 0x14, 0x23, 0x32, 0x41, 3824 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
3803 0x50, 0x5f, 0x6e, 0x7d, 0x8c, 0x9b, 0xaa, 0xb9, 3825 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
3804 0xc8, 0xd7, 0xe6, 0xf5, 0x04, 0x13, 0x22, 0x31, 3826 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
3805 0x40, 0x4f, 0x5e, 0x6d, 0x7c, 0x8b, 0x9a, 0xa9, 3827 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
3806 0xb8, 0xc7, 0xd6, 0xe5, 0xf4, 0x03, 0x12, 0x21, 3828 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
3807 0x30, 0x3f, 0x4e, 0x5d, 0x6c, 0x7b, 0x8a, 0x99, 3829 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
3808 0xa8, 0xb7, 0xc6, 0xd5, 0xe4, 0xf3, 0x02, 0x11, 3830 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
3809 0x20, 0x2f, 0x3e, 0x4d, 0x5c, 0x6b, 0x7a, 0x89, 3831 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
3810 0x98, 0xa7, 0xb6, 0xc5, 0xd4, 0xe3, 0xf2, 0x01, 3832 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
3811 0x10, 0x1f, 0x2e, 0x3d, 0x4c, 0x5b, 0x6a, 0x79, 3833 "\x00\x11\x22\x33\x44\x55\x66\x77"
3812 0x88, 0x97, 0xa6, 0xb5, 0xc4, 0xd3, 0xe2, 0xf1, 3834 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
3813 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 3835 "\x10\x21\x32\x43\x54\x65\x76\x87"
3814 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 3836 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
3815 0x10, 0x21, 0x32, 0x43, 0x54, 0x65, 0x76, 0x87, 3837 "\x20\x31\x42\x53\x64\x75\x86\x97"
3816 0x98, 0xa9, 0xba, 0xcb, 0xdc, 0xed, 0xfe, 0x0f, 3838 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
3817 0x20, 0x31, 0x42, 0x53, 0x64, 0x75, 0x86, 0x97, 3839 "\x30\x41\x52\x63\x74\x85\x96\xa7"
3818 0xa8, 0xb9, 0xca, 0xdb, 0xec, 0xfd, 0x0e, 0x1f, 3840 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
3819 0x30, 0x41, 0x52, 0x63, 0x74, 0x85, 0x96, 0xa7, 3841 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
3820 0xb8, 0xc9, 0xda, 0xeb, 0xfc, 0x0d, 0x1e, 0x2f, 3842 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
3821 0x40, 0x51, 0x62, 0x73, 0x84, 0x95, 0xa6, 0xb7, 3843 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
3822 0xc8, 0xd9, 0xea, 0xfb, 0x0c, 0x1d, 0x2e, 0x3f, 3844 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
3823 0x50, 0x61, 0x72, 0x83, 0x94, 0xa5, 0xb6, 0xc7, 3845 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
3824 0xd8, 0xe9, 0xfa, 0x0b, 0x1c, 0x2d, 0x3e, 0x4f, 3846 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
3825 0x60, 0x71, 0x82, 0x93, 0xa4, 0xb5, 0xc6, 0xd7, 3847 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
3826 0xe8, 0xf9, 0x0a, 0x1b, 0x2c, 0x3d, 0x4e, 0x5f, 3848 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
3827 0x70, 0x81, 0x92, 0xa3, 0xb4, 0xc5, 0xd6, 0xe7, 3849 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
3828 0xf8, 0x09, 0x1a, 0x2b, 0x3c, 0x4d, 0x5e, 0x6f, 3850 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
3829 0x80, 0x91, 0xa2, 0xb3, 0xc4, 0xd5, 0xe6, 0xf7, 3851 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
3830 0x08, 0x19, 0x2a, 0x3b, 0x4c, 0x5d, 0x6e, 0x7f, 3852 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
3831 0x90, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf6, 0x07, 3853 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
3832 0x18, 0x29, 0x3a, 0x4b, 0x5c, 0x6d, 0x7e, 0x8f, 3854 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
3833 0xa0, 0xb1, 0xc2, 0xd3, 0xe4, 0xf5, 0x06, 0x17, 3855 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
3834 0x28, 0x39, 0x4a, 0x5b, 0x6c, 0x7d, 0x8e, 0x9f, 3856 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
3835 0xb0, 0xc1, 0xd2, 0xe3, 0xf4, 0x05, 0x16, 0x27, 3857 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
3836 0x38, 0x49, 0x5a, 0x6b, 0x7c, 0x8d, 0x9e, 0xaf, 3858 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
3837 0xc0, 0xd1, 0xe2, 0xf3, 0x04, 0x15, 0x26, 0x37, 3859 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
3838 0x48, 0x59, 0x6a, 0x7b, 0x8c, 0x9d, 0xae, 0xbf, 3860 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
3839 0xd0, 0xe1, 0xf2, 0x03, 0x14, 0x25, 0x36, 0x47, 3861 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
3840 0x58, 0x69, 0x7a, 0x8b, 0x9c, 0xad, 0xbe, 0xcf, 3862 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
3841 0xe0, 0xf1, 0x02, 0x13, 0x24, 0x35, 0x46, 0x57, 3863 "\xf0\x01\x12\x23\x34\x45\x56\x67"
3842 0x68, 0x79, 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf, 3864 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
3843 0xf0, 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 3865 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
3844 0x78, 0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 3866 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
3845 0x00, 0x13, 0x26, 0x39, 0x4c, 0x5f, 0x72, 0x85, 3867 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
3846 0x98, 0xab, 0xbe, 0xd1, 0xe4, 0xf7, 0x0a, 0x1d, 3868 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
3847 0x30, 0x43, 0x56, 0x69, 0x7c, 0x8f, 0xa2, 0xb5, 3869 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
3848 0xc8, 0xdb, 0xee, 0x01, 0x14, 0x27, 0x3a, 0x4d, 3870 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
3849 0x60, 0x73, 0x86, 0x99, 0xac, 0xbf, 0xd2, 0xe5, 3871 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
3850 0xf8, 0x0b, 0x1e, 0x31, 0x44, 0x57, 0x6a, 0x7d, 3872 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
3851 0x90, 0xa3, 0xb6, 0xc9, 0xdc, 0xef, 0x02, 0x15, 3873 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
3852 0x28, 0x3b, 0x4e, 0x61, 0x74, 0x87, 0x9a, 0xad, 3874 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
3853 0xc0, 0xd3, 0xe6, 0xf9, 0x0c, 0x1f, 0x32, 0x45, 3875 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
3854 0x58, 0x6b, 0x7e, 0x91, 0xa4, 0xb7, 0xca, 0xdd, 3876 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
3855 0xf0, 0x03, 0x16, 0x29, 0x3c, 0x4f, 0x62, 0x75, 3877 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
3856 0x88, 0x9b, 0xae, 0xc1, 0xd4, 0xe7, 0xfa, 0x0d, 3878 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
3857 0x20, 0x33, 0x46, 0x59, 0x6c, 0x7f, 0x92, 0xa5, 3879 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
3858 0xb8, 0xcb, 0xde, 0xf1, 0x04, 0x17, 0x2a, 0x3d, 3880 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
3859 0x50, 0x63, 0x76, 0x89, 0x9c, 0xaf, 0xc2, 0xd5, 3881 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
3860 0xe8, 0xfb, 0x0e, 0x21, 0x34, 0x47, 0x5a, 0x6d, 3882 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
3861 0x80, 0x93, 0xa6, 0xb9, 0xcc, 0xdf, 0xf2, 0x05, 3883 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
3862 0x18, 0x2b, 0x3e, 0x51, 0x64, 0x77, 0x8a, 0x9d, 3884 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
3863 0xb0, 0xc3, 0xd6, 0xe9, 0xfc, 0x0f, 0x22, 0x35, 3885 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
3864 0x48, 0x5b, 0x6e, 0x81, 0x94, 0xa7, 0xba, 0xcd, 3886 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
3865 0xe0, 0xf3, 0x06, 0x19, 0x2c, 0x3f, 0x52, 0x65, 3887 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
3866 0x78, 0x8b, 0x9e, 0xb1, 0xc4, 0xd7, 0xea, 0xfd, 3888 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
3867 0x10, 0x23, 0x36, 0x49, 0x5c, 0x6f, 0x82, 0x95, 3889 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
3868 0xa8, 0xbb, 0xce, 0xe1, 0xf4, 0x07, 0x1a, 0x2d, 3890 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
3869 0x40, 0x53, 0x66, 0x79, 0x8c, 0x9f, 0xb2, 0xc5, 3891 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
3870 0xd8, 0xeb, 0xfe, 0x11, 0x24, 0x37, 0x4a, 0x5d, 3892 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
3871 0x70, 0x83, 0x96, 0xa9, 0xbc, 0xcf, 0xe2, 0xf5, 3893 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
3872 0x08, 0x1b, 0x2e, 0x41, 0x54, 0x67, 0x7a, 0x8d, 3894 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
3873 0xa0, 0xb3, 0xc6, 0xd9, 0xec, 0xff, 0x12, 0x25, 3895 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
3874 0x38, 0x4b, 0x5e, 0x71, 0x84, 0x97, 0xaa, 0xbd, 3896 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
3875 0xd0, 0xe3, 0xf6, 0x09, 0x1c, 0x2f, 0x42, 0x55, 3897 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
3876 0x68, 0x7b, 0x8e, 0xa1, 0xb4, 0xc7, 0xda, 0xed, 3898 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
3877 0x00, 0x15, 0x2a, 0x3f, 0x54, 0x69, 0x7e, 0x93, 3899 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
3878 0xa8, 0xbd, 0xd2, 0xe7, 0xfc, 0x11, 0x26, 0x3b, 3900 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
3879 0x50, 0x65, 0x7a, 0x8f, 0xa4, 0xb9, 0xce, 0xe3, 3901 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
3880 0xf8, 0x0d, 0x22, 0x37, 0x4c, 0x61, 0x76, 0x8b, 3902 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
3881 0xa0, 0xb5, 0xca, 0xdf, 0xf4, 0x09, 0x1e, 0x33, 3903 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
3882 0x48, 0x5d, 0x72, 0x87, 0x9c, 0xb1, 0xc6, 0xdb, 3904 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
3883 0xf0, 0x05, 0x1a, 0x2f, 0x44, 0x59, 0x6e, 0x83, 3905 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
3884 0x98, 0xad, 0xc2, 0xd7, 0xec, 0x01, 0x16, 0x2b, 3906 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
3885 0x40, 0x55, 0x6a, 0x7f, 0x94, 0xa9, 0xbe, 0xd3, 3907 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
3886 0xe8, 0xfd, 0x12, 0x27, 0x3c, 0x51, 0x66, 0x7b, 3908 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
3887 0x90, 0xa5, 0xba, 0xcf, 0xe4, 0xf9, 0x0e, 0x23, 3909 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
3888 0x38, 0x4d, 0x62, 0x77, 0x8c, 0xa1, 0xb6, 0xcb, 3910 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
3889 0xe0, 0xf5, 0x0a, 0x1f, 0x34, 0x49, 0x5e, 0x73, 3911 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
3890 0x88, 0x9d, 0xb2, 0xc7, 0xdc, 0xf1, 0x06, 0x1b, 3912 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
3891 0x30, 0x45, 0x5a, 0x6f, 0x84, 0x99, 0xae, 0xc3, 3913 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
3892 0xd8, 0xed, 0x02, 0x17, 0x2c, 0x41, 0x56, 0x6b, 3914 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
3893 0x80, 0x95, 0xaa, 0xbf, 0xd4, 0xe9, 0xfe, 0x13, 3915 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
3894 0x28, 0x3d, 0x52, 0x67, 0x7c, 0x91, 0xa6, 0xbb, 3916 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
3895 0xd0, 0xe5, 0xfa, 0x0f, 0x24, 0x39, 0x4e, 0x63, 3917 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
3896 0x78, 0x8d, 0xa2, 0xb7, 0xcc, 0xe1, 0xf6, 0x0b, 3918 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
3897 0x20, 0x35, 0x4a, 0x5f, 0x74, 0x89, 0x9e, 0xb3, 3919 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
3898 0xc8, 0xdd, 0xf2, 0x07, 0x1c, 0x31, 0x46, 0x5b, 3920 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
3899 0x70, 0x85, 0x9a, 0xaf, 0xc4, 0xd9, 0xee, 0x03, 3921 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
3900 0x18, 0x2d, 0x42, 0x57, 0x6c, 0x81, 0x96, 0xab, 3922 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
3901 0xc0, 0xd5, 0xea, 0xff, 0x14, 0x29, 0x3e, 0x53, 3923 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
3902 0x68, 0x7d, 0x92, 0xa7, 0xbc, 0xd1, 0xe6, 0xfb, 3924 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
3903 0x10, 0x25, 0x3a, 0x4f, 0x64, 0x79, 0x8e, 0xa3, 3925 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
3904 0xb8, 0xcd, 0xe2, 0xf7, 0x0c, 0x21, 0x36, 0x4b, 3926 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
3905 0x60, 0x75, 0x8a, 0x9f, 0xb4, 0xc9, 0xde, 0xf3, 3927 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
3906 0x08, 0x1d, 0x32, 0x47, 0x5c, 0x71, 0x86, 0x9b, 3928 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
3907 0xb0, 0xc5, 0xda, 0xef, 0x04, 0x19, 0x2e, 0x43, 3929 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
3908 0x58, 0x6d, 0x82, 0x97, 0xac, 0xc1, 0xd6, 0xeb, 3930 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
3909 0x00, 0x17, 0x2e, 0x45, 0x5c, 0x73, 0x8a, 0xa1, 3931 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
3910 0xb8, 0xcf, 0xe6, 0xfd, 0x14, 0x2b, 0x42, 0x59, 3932 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
3911 0x70, 0x87, 0x9e, 0xb5, 0xcc, 0xe3, 0xfa, 0x11, 3933 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
3912 0x28, 0x3f, 0x56, 0x6d, 0x84, 0x9b, 0xb2, 0xc9, 3934 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
3913 0xe0, 0xf7, 0x0e, 0x25, 0x3c, 0x53, 0x6a, 0x81, 3935 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
3914 0x98, 0xaf, 0xc6, 0xdd, 0xf4, 0x0b, 0x22, 0x39, 3936 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
3915 0x50, 0x67, 0x7e, 0x95, 0xac, 0xc3, 0xda, 0xf1, 3937 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
3916 0x08, 0x1f, 0x36, 0x4d, 0x64, 0x7b, 0x92, 0xa9, 3938 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
3917 0xc0, 0xd7, 0xee, 0x05, 0x1c, 0x33, 0x4a, 0x61, 3939 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
3918 0x78, 0x8f, 0xa6, 0xbd, 0xd4, 0xeb, 0x02, 0x19, 3940 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
3919 0x30, 0x47, 0x5e, 0x75, 0x8c, 0xa3, 0xba, 0xd1, 3941 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
3920 0xe8, 0xff, 0x16, 0x2d, 0x44, 0x5b, 0x72, 0x89, 3942 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
3921 0xa0, 0xb7, 0xce, 0xe5, 0xfc, 0x13, 0x2a, 0x41, 3943 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
3922 0x58, 0x6f, 0x86, 0x9d, 0xb4, 0xcb, 0xe2, 0xf9, 3944 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
3923 0x10, 0x27, 0x3e, 0x55, 0x6c, 0x83, 0x9a, 0xb1, 3945 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
3924 0xc8, 0xdf, 0xf6, 0x0d, 0x24, 0x3b, 0x52, 0x69, 3946 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
3925 0x80, 0x97, 0xae, 0xc5, 0xdc, 0xf3, 0x0a, 0x21, 3947 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
3926 0x38, 0x4f, 0x66, 0x7d, 0x94, 0xab, 0xc2, 0xd9, 3948 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
3927 0xf0, 0x07, 0x1e, 0x35, 0x4c, 0x63, 0x7a, 0x91, 3949 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
3928 0xa8, 0xbf, 0xd6, 0xed, 0x04, 0x1b, 0x32, 0x49, 3950 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
3929 0x60, 0x77, 0x8e, 0xa5, 0xbc, 0xd3, 0xea, 0x01, 3951 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
3930 0x18, 0x2f, 0x46, 0x5d, 0x74, 0x8b, 0xa2, 0xb9, 3952 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
3931 0xd0, 0xe7, 0xfe, 0x15, 0x2c, 0x43, 0x5a, 0x71, 3953 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
3932 0x88, 0x9f, 0xb6, 0xcd, 0xe4, 0xfb, 0x12, 0x29, 3954 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
3933 0x40, 0x57, 0x6e, 0x85, 0x9c, 0xb3, 0xca, 0xe1, 3955 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
3934 0xf8, 0x0f, 0x26, 0x3d, 0x54, 0x6b, 0x82, 0x99, 3956 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
3935 0xb0, 0xc7, 0xde, 0xf5, 0x0c, 0x23, 0x3a, 0x51, 3957 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
3936 0x68, 0x7f, 0x96, 0xad, 0xc4, 0xdb, 0xf2, 0x09, 3958 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
3937 0x20, 0x37, 0x4e, 0x65, 0x7c, 0x93, 0xaa, 0xc1, 3959 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
3938 0xd8, 0xef, 0x06, 0x1d, 0x34, 0x4b, 0x62, 0x79, 3960 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
3939 0x90, 0xa7, 0xbe, 0xd5, 0xec, 0x03, 0x1a, 0x31, 3961 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
3940 0x48, 0x5f, 0x76, 0x8d, 0xa4, 0xbb, 0xd2, 0xe9, 3962 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
3941 0x00, 0x19, 0x32, 0x4b, 0x64, 0x7d, 0x96, 0xaf, 3963 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
3942 0xc8, 0xe1, 0xfa, 0x13, 0x2c, 0x45, 0x5e, 0x77, 3964 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
3943 0x90, 0xa9, 0xc2, 0xdb, 0xf4, 0x0d, 0x26, 0x3f, 3965 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
3944 0x58, 0x71, 0x8a, 0xa3, 0xbc, 0xd5, 0xee, 0x07, 3966 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
3945 0x20, 0x39, 0x52, 0x6b, 0x84, 0x9d, 0xb6, 0xcf, 3967 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
3946 0xe8, 0x01, 0x1a, 0x33, 0x4c, 0x65, 0x7e, 0x97, 3968 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
3947 0xb0, 0xc9, 0xe2, 0xfb, 0x14, 0x2d, 0x46, 0x5f, 3969 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
3948 0x78, 0x91, 0xaa, 0xc3, 0xdc, 0xf5, 0x0e, 0x27, 3970 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
3949 0x40, 0x59, 0x72, 0x8b, 0xa4, 0xbd, 0xd6, 0xef, 3971 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
3950 0x08, 0x21, 0x3a, 0x53, 0x6c, 0x85, 0x9e, 0xb7, 3972 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
3951 0xd0, 0xe9, 0x02, 0x1b, 0x34, 0x4d, 0x66, 0x7f, 3973 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
3952 0x98, 0xb1, 0xca, 0xe3, 0xfc, 0x15, 0x2e, 0x47, 3974 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
3953 0x60, 0x79, 0x92, 0xab, 0xc4, 0xdd, 0xf6, 0x0f, 3975 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
3954 0x28, 0x41, 0x5a, 0x73, 0x8c, 0xa5, 0xbe, 0xd7, 3976 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
3955 0xf0, 0x09, 0x22, 0x3b, 0x54, 0x6d, 0x86, 0x9f, 3977 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
3956 0xb8, 0xd1, 0xea, 0x03, 0x1c, 0x35, 0x4e, 0x67, 3978 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
3957 0x80, 0x99, 0xb2, 0xcb, 0xe4, 0xfd, 0x16, 0x2f, 3979 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
3958 0x48, 0x61, 0x7a, 0x93, 0xac, 0xc5, 0xde, 0xf7, 3980 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
3959 0x10, 0x29, 0x42, 0x5b, 0x74, 0x8d, 0xa6, 0xbf, 3981 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
3960 0xd8, 0xf1, 0x0a, 0x23, 0x3c, 0x55, 0x6e, 0x87, 3982 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
3961 0xa0, 0xb9, 0xd2, 0xeb, 0x04, 0x1d, 0x36, 0x4f, 3983 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
3962 0x68, 0x81, 0x9a, 0xb3, 0xcc, 0xe5, 0xfe, 0x17, 3984 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
3963 0x30, 0x49, 0x62, 0x7b, 0x94, 0xad, 0xc6, 0xdf, 3985 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
3964 0xf8, 0x11, 0x2a, 0x43, 0x5c, 0x75, 0x8e, 0xa7, 3986 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
3965 0xc0, 0xd9, 0xf2, 0x0b, 0x24, 0x3d, 0x56, 0x6f, 3987 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
3966 0x88, 0xa1, 0xba, 0xd3, 0xec, 0x05, 0x1e, 0x37, 3988 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
3967 0x50, 0x69, 0x82, 0x9b, 0xb4, 0xcd, 0xe6, 0xff, 3989 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
3968 0x18, 0x31, 0x4a, 0x63, 0x7c, 0x95, 0xae, 0xc7, 3990 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
3969 0xe0, 0xf9, 0x12, 0x2b, 0x44, 0x5d, 0x76, 0x8f, 3991 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
3970 0xa8, 0xc1, 0xda, 0xf3, 0x0c, 0x25, 0x3e, 0x57, 3992 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
3971 0x70, 0x89, 0xa2, 0xbb, 0xd4, 0xed, 0x06, 0x1f, 3993 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
3972 0x38, 0x51, 0x6a, 0x83, 0x9c, 0xb5, 0xce, 0xe7, 3994 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
3973 0x00, 0x1b, 0x36, 0x51, 0x6c, 0x87, 0xa2, 0xbd, 3995 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
3974 0xd8, 0xf3, 0x0e, 0x29, 0x44, 0x5f, 0x7a, 0x95, 3996 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
3975 0xb0, 0xcb, 0xe6, 0x01, 0x1c, 0x37, 0x52, 0x6d, 3997 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
3976 0x88, 0xa3, 0xbe, 0xd9, 0xf4, 0x0f, 0x2a, 0x45, 3998 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
3977 0x60, 0x7b, 0x96, 0xb1, 0xcc, 0xe7, 0x02, 0x1d, 3999 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
3978 0x38, 0x53, 0x6e, 0x89, 0xa4, 0xbf, 0xda, 0xf5, 4000 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
3979 0x10, 0x2b, 0x46, 0x61, 0x7c, 0x97, 0xb2, 0xcd, 4001 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
3980 0xe8, 0x03, 0x1e, 0x39, 0x54, 0x6f, 0x8a, 0xa5, 4002 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
3981 0xc0, 0xdb, 0xf6, 0x11, 0x2c, 0x47, 0x62, 0x7d, 4003 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
3982 0x98, 0xb3, 0xce, 0xe9, 0x04, 0x1f, 0x3a, 0x55, 4004 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
3983 0x70, 0x8b, 0xa6, 0xc1, 0xdc, 0xf7, 0x12, 0x2d, 4005 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
3984 0x48, 0x63, 0x7e, 0x99, 0xb4, 0xcf, 0xea, 0x05, 4006 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
3985 0x20, 0x3b, 0x56, 0x71, 0x8c, 0xa7, 0xc2, 0xdd, 4007 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
3986 0xf8, 0x13, 0x2e, 0x49, 0x64, 0x7f, 0x9a, 0xb5, 4008 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
3987 0xd0, 0xeb, 0x06, 0x21, 0x3c, 0x57, 0x72, 0x8d, 4009 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
3988 0xa8, 0xc3, 0xde, 0xf9, 0x14, 0x2f, 0x4a, 0x65, 4010 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
3989 0x80, 0x9b, 0xb6, 0xd1, 0xec, 0x07, 0x22, 0x3d, 4011 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
3990 0x58, 0x73, 0x8e, 0xa9, 0xc4, 0xdf, 0xfa, 0x15, 4012 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
3991 0x30, 0x4b, 0x66, 0x81, 0x9c, 0xb7, 0xd2, 0xed, 4013 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
3992 0x08, 0x23, 0x3e, 0x59, 0x74, 0x8f, 0xaa, 0xc5, 4014 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
3993 0xe0, 0xfb, 0x16, 0x31, 0x4c, 0x67, 0x82, 0x9d, 4015 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
3994 0xb8, 0xd3, 0xee, 0x09, 0x24, 0x3f, 0x5a, 0x75, 4016 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
3995 0x90, 0xab, 0xc6, 0xe1, 0xfc, 0x17, 0x32, 0x4d, 4017 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
3996 0x68, 0x83, 0x9e, 0xb9, 0xd4, 0xef, 0x0a, 0x25, 4018 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
3997 0x40, 0x5b, 0x76, 0x91, 0xac, 0xc7, 0xe2, 0xfd, 4019 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
3998 0x18, 0x33, 0x4e, 0x69, 0x84, 0x9f, 0xba, 0xd5, 4020 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
3999 0xf0, 0x0b, 0x26, 0x41, 0x5c, 0x77, 0x92, 0xad, 4021 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
4000 0xc8, 0xe3, 0xfe, 0x19, 0x34, 0x4f, 0x6a, 0x85, 4022 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
4001 0xa0, 0xbb, 0xd6, 0xf1, 0x0c, 0x27, 0x42, 0x5d, 4023 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
4002 0x78, 0x93, 0xae, 0xc9, 0xe4, 0xff, 0x1a, 0x35, 4024 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
4003 0x50, 0x6b, 0x86, 0xa1, 0xbc, 0xd7, 0xf2, 0x0d, 4025 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
4004 0x28, 0x43, 0x5e, 0x79, 0x94, 0xaf, 0xca, 0xe5, 4026 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
4005 0x00, 0x1d, 0x3a, 0x57, 0x74, 0x91, 0xae, 0xcb, 4027 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
4006 0xe8, 0x05, 0x22, 0x3f, 0x5c, 0x79, 0x96, 0xb3, 4028 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
4007 0xd0, 0xed, 0x0a, 0x27, 0x44, 0x61, 0x7e, 0x9b, 4029 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
4008 0xb8, 0xd5, 0xf2, 0x0f, 0x2c, 0x49, 0x66, 0x83, 4030 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
4009 0xa0, 0xbd, 0xda, 0xf7, 0x14, 0x31, 0x4e, 0x6b, 4031 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
4010 0x88, 0xa5, 0xc2, 0xdf, 0xfc, 0x19, 0x36, 0x53, 4032 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
4011 0x70, 0x8d, 0xaa, 0xc7, 0xe4, 0x01, 0x1e, 0x3b, 4033 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
4012 0x58, 0x75, 0x92, 0xaf, 0xcc, 0xe9, 0x06, 0x23, 4034 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
4013 0x40, 0x5d, 0x7a, 0x97, 0xb4, 0xd1, 0xee, 0x0b, 4035 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
4014 0x28, 0x45, 0x62, 0x7f, 0x9c, 0xb9, 0xd6, 0xf3, 4036 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
4015 0x10, 0x2d, 0x4a, 0x67, 0x84, 0xa1, 0xbe, 0xdb, 4037 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
4016 0xf8, 0x15, 0x32, 0x4f, 0x6c, 0x89, 0xa6, 0xc3, 4038 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
4017 0xe0, 0xfd, 0x1a, 0x37, 0x54, 0x71, 0x8e, 0xab, 4039 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
4018 0xc8, 0xe5, 0x02, 0x1f, 0x3c, 0x59, 0x76, 0x93, 4040 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
4019 0xb0, 0xcd, 0xea, 0x07, 0x24, 0x41, 0x5e, 0x7b, 4041 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
4020 0x98, 0xb5, 0xd2, 0xef, 0x0c, 0x29, 0x46, 0x63, 4042 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
4021 0x80, 0x9d, 0xba, 0xd7, 0xf4, 0x11, 0x2e, 0x4b, 4043 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
4022 0x68, 0x85, 0xa2, 0xbf, 0xdc, 0xf9, 0x16, 0x33, 4044 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
4023 0x50, 0x6d, 0x8a, 0xa7, 0xc4, 0xe1, 0xfe, 0x1b, 4045 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
4024 0x38, 0x55, 0x72, 0x8f, 0xac, 0xc9, 0xe6, 0x03, 4046 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
4025 0x20, 0x3d, 0x5a, 0x77, 0x94, 0xb1, 0xce, 0xeb, 4047 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
4026 0x08, 0x25, 0x42, 0x5f, 0x7c, 0x99, 0xb6, 0xd3, 4048 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
4027 0xf0, 0x0d, 0x2a, 0x47, 0x64, 0x81, 0x9e, 0xbb, 4049 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
4028 0xd8, 0xf5, 0x12, 0x2f, 0x4c, 0x69, 0x86, 0xa3, 4050 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
4029 0xc0, 0xdd, 0xfa, 0x17, 0x34, 0x51, 0x6e, 0x8b, 4051 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
4030 0xa8, 0xc5, 0xe2, 0xff, 0x1c, 0x39, 0x56, 0x73, 4052 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
4031 0x90, 0xad, 0xca, 0xe7, 0x04, 0x21, 0x3e, 0x5b, 4053 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
4032 0x78, 0x95, 0xb2, 0xcf, 0xec, 0x09, 0x26, 0x43, 4054 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
4033 0x60, 0x7d, 0x9a, 0xb7, 0xd4, 0xf1, 0x0e, 0x2b, 4055 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
4034 0x48, 0x65, 0x82, 0x9f, 0xbc, 0xd9, 0xf6, 0x13, 4056 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
4035 0x30, 0x4d, 0x6a, 0x87, 0xa4, 0xc1, 0xde, 0xfb, 4057 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
4036 0x18, 0x35, 0x52, 0x6f, 0x8c, 0xa9, 0xc6, 0xe3, 4058 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
4037 0x00, 0x1f, 0x3e, 0x5d, 0x7c, 0x9b, 0xba, 0xd9, 4059 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
4038 0xf8, 0x17, 0x36, 0x55, 0x74, 0x93, 0xb2, 0xd1, 4060 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
4039 0xf0, 0x0f, 0x2e, 0x4d, 0x6c, 0x8b, 0xaa, 0xc9, 4061 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
4040 0xe8, 0x07, 0x26, 0x45, 0x64, 0x83, 0xa2, 0xc1, 4062 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
4041 0xe0, 0xff, 0x1e, 0x3d, 0x5c, 0x7b, 0x9a, 0xb9, 4063 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
4042 0xd8, 0xf7, 0x16, 0x35, 0x54, 0x73, 0x92, 0xb1, 4064 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
4043 0xd0, 0xef, 0x0e, 0x2d, 0x4c, 0x6b, 0x8a, 0xa9, 4065 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
4044 0xc8, 0xe7, 0x06, 0x25, 0x44, 0x63, 0x82, 0xa1, 4066 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
4045 0xc0, 0xdf, 0xfe, 0x1d, 0x3c, 0x5b, 0x7a, 0x99, 4067 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
4046 0xb8, 0xd7, 0xf6, 0x15, 0x34, 0x53, 0x72, 0x91, 4068 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
4047 0xb0, 0xcf, 0xee, 0x0d, 0x2c, 0x4b, 0x6a, 0x89, 4069 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
4048 0xa8, 0xc7, 0xe6, 0x05, 0x24, 0x43, 0x62, 0x81, 4070 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
4049 0xa0, 0xbf, 0xde, 0xfd, 0x1c, 0x3b, 0x5a, 0x79, 4071 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
4050 0x98, 0xb7, 0xd6, 0xf5, 0x14, 0x33, 0x52, 0x71, 4072 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
4051 0x90, 0xaf, 0xce, 0xed, 0x0c, 0x2b, 0x4a, 0x69, 4073 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
4052 0x88, 0xa7, 0xc6, 0xe5, 0x04, 0x23, 0x42, 0x61, 4074 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
4053 0x80, 0x9f, 0xbe, 0xdd, 0xfc, 0x1b, 0x3a, 0x59, 4075 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
4054 0x78, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51, 4076 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
4055 0x70, 0x8f, 0xae, 0xcd, 0xec, 0x0b, 0x2a, 0x49, 4077 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
4056 0x68, 0x87, 0xa6, 0xc5, 0xe4, 0x03, 0x22, 0x41, 4078 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
4057 0x60, 0x7f, 0x9e, 0xbd, 0xdc, 0xfb, 0x1a, 0x39, 4079 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
4058 0x58, 0x77, 0x96, 0xb5, 0xd4, 0xf3, 0x12, 0x31, 4080 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
4059 0x50, 0x6f, 0x8e, 0xad, 0xcc, 0xeb, 0x0a, 0x29, 4081 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
4060 0x48, 0x67, 0x86, 0xa5, 0xc4, 0xe3, 0x02, 0x21, 4082 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
4061 0x40, 0x5f, 0x7e, 0x9d, 0xbc, 0xdb, 0xfa, 0x19, 4083 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
4062 0x38, 0x57, 0x76, 0x95, 0xb4, 0xd3, 0xf2, 0x11, 4084 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
4063 0x30, 0x4f, 0x6e, 0x8d, 0xac, 0xcb, 0xea, 0x09, 4085 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
4064 0x28, 0x47, 0x66, 0x85, 0xa4, 0xc3, 0xe2, 0x01, 4086 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
4065 0x20, 0x3f, 0x5e, 0x7d, 0x9c, 0xbb, 0xda, 0xf9, 4087 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
4066 0x18, 0x37, 0x56, 0x75, 0x94, 0xb3, 0xd2, 0xf1, 4088 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
4067 0x10, 0x2f, 0x4e, 0x6d, 0x8c, 0xab, 0xca, 0xe9, 4089 "\x00\x21\x42\x63",
4068 0x08, 0x27, 0x46, 0x65, 0x84, 0xa3, 0xc2, 0xe1,
4069 0x00, 0x21, 0x42, 0x63,
4070 },
4071 .ilen = 4100, 4090 .ilen = 4100,
4072 .result = { 4091 .result =
4073 0xf0, 0x5c, 0x74, 0xad, 0x4e, 0xbc, 0x99, 0xe2, 4092 "\xf0\x5c\x74\xad\x4e\xbc\x99\xe2"
4074 0xae, 0xff, 0x91, 0x3a, 0x44, 0xcf, 0x38, 0x32, 4093 "\xae\xff\x91\x3a\x44\xcf\x38\x32"
4075 0x1e, 0xad, 0xa7, 0xcd, 0xa1, 0x39, 0x95, 0xaa, 4094 "\x1e\xad\xa7\xcd\xa1\x39\x95\xaa"
4076 0x10, 0xb1, 0xb3, 0x2e, 0x04, 0x31, 0x8f, 0x86, 4095 "\x10\xb1\xb3\x2e\x04\x31\x8f\x86"
4077 0xf2, 0x62, 0x74, 0x70, 0x0c, 0xa4, 0x46, 0x08, 4096 "\xf2\x62\x74\x70\x0c\xa4\x46\x08"
4078 0xa8, 0xb7, 0x99, 0xa8, 0xe9, 0xd2, 0x73, 0x79, 4097 "\xa8\xb7\x99\xa8\xe9\xd2\x73\x79"
4079 0x7e, 0x6e, 0xd4, 0x8f, 0x1e, 0xc7, 0x8e, 0x31, 4098 "\x7e\x6e\xd4\x8f\x1e\xc7\x8e\x31"
4080 0x0b, 0xfa, 0x4b, 0xce, 0xfd, 0xf3, 0x57, 0x71, 4099 "\x0b\xfa\x4b\xce\xfd\xf3\x57\x71"
4081 0xe9, 0x46, 0x03, 0xa5, 0x3d, 0x34, 0x00, 0xe2, 4100 "\xe9\x46\x03\xa5\x3d\x34\x00\xe2"
4082 0x18, 0xff, 0x75, 0x6d, 0x06, 0x2d, 0x00, 0xab, 4101 "\x18\xff\x75\x6d\x06\x2d\x00\xab"
4083 0xb9, 0x3e, 0x6c, 0x59, 0xc5, 0x84, 0x06, 0xb5, 4102 "\xb9\x3e\x6c\x59\xc5\x84\x06\xb5"
4084 0x8b, 0xd0, 0x89, 0x9c, 0x4a, 0x79, 0x16, 0xc6, 4103 "\x8b\xd0\x89\x9c\x4a\x79\x16\xc6"
4085 0x3d, 0x74, 0x54, 0xfa, 0x44, 0xcd, 0x23, 0x26, 4104 "\x3d\x74\x54\xfa\x44\xcd\x23\x26"
4086 0x5c, 0xcf, 0x7e, 0x28, 0x92, 0x32, 0xbf, 0xdf, 4105 "\x5c\xcf\x7e\x28\x92\x32\xbf\xdf"
4087 0xa7, 0x20, 0x3c, 0x74, 0x58, 0x2a, 0x9a, 0xde, 4106 "\xa7\x20\x3c\x74\x58\x2a\x9a\xde"
4088 0x61, 0x00, 0x1c, 0x4f, 0xff, 0x59, 0xc4, 0x22, 4107 "\x61\x00\x1c\x4f\xff\x59\xc4\x22"
4089 0xac, 0x3c, 0xd0, 0xe8, 0x6c, 0xf9, 0x97, 0x1b, 4108 "\xac\x3c\xd0\xe8\x6c\xf9\x97\x1b"
4090 0x58, 0x9b, 0xad, 0x71, 0xe8, 0xa9, 0xb5, 0x0d, 4109 "\x58\x9b\xad\x71\xe8\xa9\xb5\x0d"
4091 0xee, 0x2f, 0x04, 0x1f, 0x7f, 0xbc, 0x99, 0xee, 4110 "\xee\x2f\x04\x1f\x7f\xbc\x99\xee"
4092 0x84, 0xff, 0x42, 0x60, 0xdc, 0x3a, 0x18, 0xa5, 4111 "\x84\xff\x42\x60\xdc\x3a\x18\xa5"
4093 0x81, 0xf9, 0xef, 0xdc, 0x7a, 0x0f, 0x65, 0x41, 4112 "\x81\xf9\xef\xdc\x7a\x0f\x65\x41"
4094 0x2f, 0xa3, 0xd3, 0xf9, 0xc2, 0xcb, 0xc0, 0x4d, 4113 "\x2f\xa3\xd3\xf9\xc2\xcb\xc0\x4d"
4095 0x8f, 0xd3, 0x76, 0x96, 0xad, 0x49, 0x6d, 0x38, 4114 "\x8f\xd3\x76\x96\xad\x49\x6d\x38"
4096 0x3d, 0x39, 0x0b, 0x6c, 0x80, 0xb7, 0x54, 0x69, 4115 "\x3d\x39\x0b\x6c\x80\xb7\x54\x69"
4097 0xf0, 0x2c, 0x90, 0x02, 0x29, 0x0d, 0x1c, 0x12, 4116 "\xf0\x2c\x90\x02\x29\x0d\x1c\x12"
4098 0xad, 0x55, 0xc3, 0x8b, 0x68, 0xd9, 0xcc, 0xb3, 4117 "\xad\x55\xc3\x8b\x68\xd9\xcc\xb3"
4099 0xb2, 0x64, 0x33, 0x90, 0x5e, 0xca, 0x4b, 0xe2, 4118 "\xb2\x64\x33\x90\x5e\xca\x4b\xe2"
4100 0xfb, 0x75, 0xdc, 0x63, 0xf7, 0x9f, 0x82, 0x74, 4119 "\xfb\x75\xdc\x63\xf7\x9f\x82\x74"
4101 0xf0, 0xc9, 0xaa, 0x7f, 0xe9, 0x2a, 0x9b, 0x33, 4120 "\xf0\xc9\xaa\x7f\xe9\x2a\x9b\x33"
4102 0xbc, 0x88, 0x00, 0x7f, 0xca, 0xb2, 0x1f, 0x14, 4121 "\xbc\x88\x00\x7f\xca\xb2\x1f\x14"
4103 0xdb, 0xc5, 0x8e, 0x7b, 0x11, 0x3c, 0x3e, 0x08, 4122 "\xdb\xc5\x8e\x7b\x11\x3c\x3e\x08"
4104 0xf3, 0x83, 0xe8, 0xe0, 0x94, 0x86, 0x2e, 0x92, 4123 "\xf3\x83\xe8\xe0\x94\x86\x2e\x92"
4105 0x78, 0x6b, 0x01, 0xc9, 0xc7, 0x83, 0xba, 0x21, 4124 "\x78\x6b\x01\xc9\xc7\x83\xba\x21"
4106 0x6a, 0x25, 0x15, 0x33, 0x4e, 0x45, 0x08, 0xec, 4125 "\x6a\x25\x15\x33\x4e\x45\x08\xec"
4107 0x35, 0xdb, 0xe0, 0x6e, 0x31, 0x51, 0x79, 0xa9, 4126 "\x35\xdb\xe0\x6e\x31\x51\x79\xa9"
4108 0x42, 0x44, 0x65, 0xc1, 0xa0, 0xf1, 0xf9, 0x2a, 4127 "\x42\x44\x65\xc1\xa0\xf1\xf9\x2a"
4109 0x70, 0xd5, 0xb6, 0xc6, 0xc1, 0x8c, 0x39, 0xfc, 4128 "\x70\xd5\xb6\xc6\xc1\x8c\x39\xfc"
4110 0x25, 0xa6, 0x55, 0xd9, 0xdd, 0x2d, 0x4c, 0xec, 4129 "\x25\xa6\x55\xd9\xdd\x2d\x4c\xec"
4111 0x49, 0xc6, 0xeb, 0x0e, 0xa8, 0x25, 0x2a, 0x16, 4130 "\x49\xc6\xeb\x0e\xa8\x25\x2a\x16"
4112 0x1b, 0x66, 0x84, 0xda, 0xe2, 0x92, 0xe5, 0xc0, 4131 "\x1b\x66\x84\xda\xe2\x92\xe5\xc0"
4113 0xc8, 0x53, 0x07, 0xaf, 0x80, 0x84, 0xec, 0xfd, 4132 "\xc8\x53\x07\xaf\x80\x84\xec\xfd"
4114 0xcd, 0xd1, 0x6e, 0xcd, 0x6f, 0x6a, 0xf5, 0x36, 4133 "\xcd\xd1\x6e\xcd\x6f\x6a\xf5\x36"
4115 0xc5, 0x15, 0xe5, 0x25, 0x7d, 0x77, 0xd1, 0x1a, 4134 "\xc5\x15\xe5\x25\x7d\x77\xd1\x1a"
4116 0x93, 0x36, 0xa9, 0xcf, 0x7c, 0xa4, 0x54, 0x4a, 4135 "\x93\x36\xa9\xcf\x7c\xa4\x54\x4a"
4117 0x06, 0x51, 0x48, 0x4e, 0xf6, 0x59, 0x87, 0xd2, 4136 "\x06\x51\x48\x4e\xf6\x59\x87\xd2"
4118 0x04, 0x02, 0xef, 0xd3, 0x44, 0xde, 0x76, 0x31, 4137 "\x04\x02\xef\xd3\x44\xde\x76\x31"
4119 0xb3, 0x34, 0x17, 0x1b, 0x9d, 0x66, 0x11, 0x9f, 4138 "\xb3\x34\x17\x1b\x9d\x66\x11\x9f"
4120 0x1e, 0xcc, 0x17, 0xe9, 0xc7, 0x3c, 0x1b, 0xe7, 4139 "\x1e\xcc\x17\xe9\xc7\x3c\x1b\xe7"
4121 0xcb, 0x50, 0x08, 0xfc, 0xdc, 0x2b, 0x24, 0xdb, 4140 "\xcb\x50\x08\xfc\xdc\x2b\x24\xdb"
4122 0x65, 0x83, 0xd0, 0x3b, 0xe3, 0x30, 0xea, 0x94, 4141 "\x65\x83\xd0\x3b\xe3\x30\xea\x94"
4123 0x6c, 0xe7, 0xe8, 0x35, 0x32, 0xc7, 0xdb, 0x64, 4142 "\x6c\xe7\xe8\x35\x32\xc7\xdb\x64"
4124 0xb4, 0x01, 0xab, 0x36, 0x2c, 0x77, 0x13, 0xaf, 4143 "\xb4\x01\xab\x36\x2c\x77\x13\xaf"
4125 0xf8, 0x2b, 0x88, 0x3f, 0x54, 0x39, 0xc4, 0x44, 4144 "\xf8\x2b\x88\x3f\x54\x39\xc4\x44"
4126 0xfe, 0xef, 0x6f, 0x68, 0x34, 0xbe, 0x0f, 0x05, 4145 "\xfe\xef\x6f\x68\x34\xbe\x0f\x05"
4127 0x16, 0x6d, 0xf6, 0x0a, 0x30, 0xe7, 0xe3, 0xed, 4146 "\x16\x6d\xf6\x0a\x30\xe7\xe3\xed"
4128 0xc4, 0xde, 0x3c, 0x1b, 0x13, 0xd8, 0xdb, 0xfe, 4147 "\xc4\xde\x3c\x1b\x13\xd8\xdb\xfe"
4129 0x41, 0x62, 0xe5, 0x28, 0xd4, 0x8d, 0xa3, 0xc7, 4148 "\x41\x62\xe5\x28\xd4\x8d\xa3\xc7"
4130 0x93, 0x97, 0xc6, 0x48, 0x45, 0x1d, 0x9f, 0x83, 4149 "\x93\x97\xc6\x48\x45\x1d\x9f\x83"
4131 0xdf, 0x4b, 0x40, 0x3e, 0x42, 0x25, 0x87, 0x80, 4150 "\xdf\x4b\x40\x3e\x42\x25\x87\x80"
4132 0x4c, 0x7d, 0xa8, 0xd4, 0x98, 0x23, 0x95, 0x75, 4151 "\x4c\x7d\xa8\xd4\x98\x23\x95\x75"
4133 0x41, 0x8c, 0xda, 0x41, 0x9b, 0xd4, 0xa7, 0x06, 4152 "\x41\x8c\xda\x41\x9b\xd4\xa7\x06"
4134 0xb5, 0xf1, 0x71, 0x09, 0x53, 0xbe, 0xca, 0xbf, 4153 "\xb5\xf1\x71\x09\x53\xbe\xca\xbf"
4135 0x32, 0x03, 0xed, 0xf0, 0x50, 0x1c, 0x56, 0x39, 4154 "\x32\x03\xed\xf0\x50\x1c\x56\x39"
4136 0x5b, 0xa4, 0x75, 0x18, 0xf7, 0x9b, 0x58, 0xef, 4155 "\x5b\xa4\x75\x18\xf7\x9b\x58\xef"
4137 0x53, 0xfc, 0x2a, 0x38, 0x23, 0x15, 0x75, 0xcd, 4156 "\x53\xfc\x2a\x38\x23\x15\x75\xcd"
4138 0x45, 0xe5, 0x5a, 0x82, 0x55, 0xba, 0x21, 0xfa, 4157 "\x45\xe5\x5a\x82\x55\xba\x21\xfa"
4139 0xd4, 0xbd, 0xc6, 0x94, 0x7c, 0xc5, 0x80, 0x12, 4158 "\xd4\xbd\xc6\x94\x7c\xc5\x80\x12"
4140 0xf7, 0x4b, 0x32, 0xc4, 0x9a, 0x82, 0xd8, 0x28, 4159 "\xf7\x4b\x32\xc4\x9a\x82\xd8\x28"
4141 0x8f, 0xd9, 0xc2, 0x0f, 0x60, 0x03, 0xbe, 0x5e, 4160 "\x8f\xd9\xc2\x0f\x60\x03\xbe\x5e"
4142 0x21, 0xd6, 0x5f, 0x58, 0xbf, 0x5c, 0xb1, 0x32, 4161 "\x21\xd6\x5f\x58\xbf\x5c\xb1\x32"
4143 0x82, 0x8d, 0xa9, 0xe5, 0xf2, 0x66, 0x1a, 0xc0, 4162 "\x82\x8d\xa9\xe5\xf2\x66\x1a\xc0"
4144 0xa0, 0xbc, 0x58, 0x2f, 0x71, 0xf5, 0x2f, 0xed, 4163 "\xa0\xbc\x58\x2f\x71\xf5\x2f\xed"
4145 0xd1, 0x26, 0xb9, 0xd8, 0x49, 0x5a, 0x07, 0x19, 4164 "\xd1\x26\xb9\xd8\x49\x5a\x07\x19"
4146 0x01, 0x7c, 0x59, 0xb0, 0xf8, 0xa4, 0xb7, 0xd3, 4165 "\x01\x7c\x59\xb0\xf8\xa4\xb7\xd3"
4147 0x7b, 0x1a, 0x8c, 0x38, 0xf4, 0x50, 0xa4, 0x59, 4166 "\x7b\x1a\x8c\x38\xf4\x50\xa4\x59"
4148 0xb0, 0xcc, 0x41, 0x0b, 0x88, 0x7f, 0xe5, 0x31, 4167 "\xb0\xcc\x41\x0b\x88\x7f\xe5\x31"
4149 0xb3, 0x42, 0xba, 0xa2, 0x7e, 0xd4, 0x32, 0x71, 4168 "\xb3\x42\xba\xa2\x7e\xd4\x32\x71"
4150 0x45, 0x87, 0x48, 0xa9, 0xc2, 0xf2, 0x89, 0xb3, 4169 "\x45\x87\x48\xa9\xc2\xf2\x89\xb3"
4151 0xe4, 0xa7, 0x7e, 0x52, 0x15, 0x61, 0xfa, 0xfe, 4170 "\xe4\xa7\x7e\x52\x15\x61\xfa\xfe"
4152 0xc9, 0xdd, 0x81, 0xeb, 0x13, 0xab, 0xab, 0xc3, 4171 "\xc9\xdd\x81\xeb\x13\xab\xab\xc3"
4153 0x98, 0x59, 0xd8, 0x16, 0x3d, 0x14, 0x7a, 0x1c, 4172 "\x98\x59\xd8\x16\x3d\x14\x7a\x1c"
4154 0x3c, 0x41, 0x9a, 0x16, 0x16, 0x9b, 0xd2, 0xd2, 4173 "\x3c\x41\x9a\x16\x16\x9b\xd2\xd2"
4155 0x69, 0x3a, 0x29, 0x23, 0xac, 0x86, 0x32, 0xa5, 4174 "\x69\x3a\x29\x23\xac\x86\x32\xa5"
4156 0x48, 0x9c, 0x9e, 0xf3, 0x47, 0x77, 0x81, 0x70, 4175 "\x48\x9c\x9e\xf3\x47\x77\x81\x70"
4157 0x24, 0xe8, 0x85, 0xd2, 0xf5, 0xb5, 0xfa, 0xff, 4176 "\x24\xe8\x85\xd2\xf5\xb5\xfa\xff"
4158 0x59, 0x6a, 0xd3, 0x50, 0x59, 0x43, 0x59, 0xde, 4177 "\x59\x6a\xd3\x50\x59\x43\x59\xde"
4159 0xd9, 0xf1, 0x55, 0xa5, 0x0c, 0xc3, 0x1a, 0x1a, 4178 "\xd9\xf1\x55\xa5\x0c\xc3\x1a\x1a"
4160 0x18, 0x34, 0x0d, 0x1a, 0x63, 0x33, 0xed, 0x10, 4179 "\x18\x34\x0d\x1a\x63\x33\xed\x10"
4161 0xe0, 0x1d, 0x2a, 0x18, 0xd2, 0xc0, 0x54, 0xa8, 4180 "\xe0\x1d\x2a\x18\xd2\xc0\x54\xa8"
4162 0xca, 0xb5, 0x9a, 0xd3, 0xdd, 0xca, 0x45, 0x84, 4181 "\xca\xb5\x9a\xd3\xdd\xca\x45\x84"
4163 0x50, 0xe7, 0x0f, 0xfe, 0xa4, 0x99, 0x5a, 0xbe, 4182 "\x50\xe7\x0f\xfe\xa4\x99\x5a\xbe"
4164 0x43, 0x2d, 0x9a, 0xcb, 0x92, 0x3f, 0x5a, 0x1d, 4183 "\x43\x2d\x9a\xcb\x92\x3f\x5a\x1d"
4165 0x85, 0xd8, 0xc9, 0xdf, 0x68, 0xc9, 0x12, 0x80, 4184 "\x85\xd8\xc9\xdf\x68\xc9\x12\x80"
4166 0x56, 0x0c, 0xdc, 0x00, 0xdc, 0x3a, 0x7d, 0x9d, 4185 "\x56\x0c\xdc\x00\xdc\x3a\x7d\x9d"
4167 0xa3, 0xa2, 0xe8, 0x4d, 0xbf, 0xf9, 0x70, 0xa0, 4186 "\xa3\xa2\xe8\x4d\xbf\xf9\x70\xa0"
4168 0xa4, 0x13, 0x4f, 0x6b, 0xaf, 0x0a, 0x89, 0x7f, 4187 "\xa4\x13\x4f\x6b\xaf\x0a\x89\x7f"
4169 0xda, 0xf0, 0xbf, 0x9b, 0xc8, 0x1d, 0xe5, 0xf8, 4188 "\xda\xf0\xbf\x9b\xc8\x1d\xe5\xf8"
4170 0x2e, 0x8b, 0x07, 0xb5, 0x73, 0x1b, 0xcc, 0xa2, 4189 "\x2e\x8b\x07\xb5\x73\x1b\xcc\xa2"
4171 0xa6, 0xad, 0x30, 0xbc, 0x78, 0x3c, 0x5b, 0x10, 4190 "\xa6\xad\x30\xbc\x78\x3c\x5b\x10"
4172 0xfa, 0x5e, 0x62, 0x2d, 0x9e, 0x64, 0xb3, 0x33, 4191 "\xfa\x5e\x62\x2d\x9e\x64\xb3\x33"
4173 0xce, 0xf9, 0x1f, 0x86, 0xe7, 0x8b, 0xa2, 0xb8, 4192 "\xce\xf9\x1f\x86\xe7\x8b\xa2\xb8"
4174 0xe8, 0x99, 0x57, 0x8c, 0x11, 0xed, 0x66, 0xd9, 4193 "\xe8\x99\x57\x8c\x11\xed\x66\xd9"
4175 0x3c, 0x72, 0xb9, 0xc3, 0xe6, 0x4e, 0x17, 0x3a, 4194 "\x3c\x72\xb9\xc3\xe6\x4e\x17\x3a"
4176 0x6a, 0xcb, 0x42, 0x24, 0x06, 0xed, 0x3e, 0x4e, 4195 "\x6a\xcb\x42\x24\x06\xed\x3e\x4e"
4177 0xa3, 0xe8, 0x6a, 0x94, 0xda, 0x0d, 0x4e, 0xd5, 4196 "\xa3\xe8\x6a\x94\xda\x0d\x4e\xd5"
4178 0x14, 0x19, 0xcf, 0xb6, 0x26, 0xd8, 0x2e, 0xcc, 4197 "\x14\x19\xcf\xb6\x26\xd8\x2e\xcc"
4179 0x64, 0x76, 0x38, 0x49, 0x4d, 0xfe, 0x30, 0x6d, 4198 "\x64\x76\x38\x49\x4d\xfe\x30\x6d"
4180 0xe4, 0xc8, 0x8c, 0x7b, 0xc4, 0xe0, 0x35, 0xba, 4199 "\xe4\xc8\x8c\x7b\xc4\xe0\x35\xba"
4181 0x22, 0x6e, 0x76, 0xe1, 0x1a, 0xf2, 0x53, 0xc3, 4200 "\x22\x6e\x76\xe1\x1a\xf2\x53\xc3"
4182 0x28, 0xa2, 0x82, 0x1f, 0x61, 0x69, 0xad, 0xc1, 4201 "\x28\xa2\x82\x1f\x61\x69\xad\xc1"
4183 0x7b, 0x28, 0x4b, 0x1e, 0x6c, 0x85, 0x95, 0x9b, 4202 "\x7b\x28\x4b\x1e\x6c\x85\x95\x9b"
4184 0x51, 0xb5, 0x17, 0x7f, 0x12, 0x69, 0x8c, 0x24, 4203 "\x51\xb5\x17\x7f\x12\x69\x8c\x24"
4185 0xd5, 0xc7, 0x5a, 0x5a, 0x11, 0x54, 0xff, 0x5a, 4204 "\xd5\xc7\x5a\x5a\x11\x54\xff\x5a"
4186 0xf7, 0x16, 0xc3, 0x91, 0xa6, 0xf0, 0xdc, 0x0a, 4205 "\xf7\x16\xc3\x91\xa6\xf0\xdc\x0a"
4187 0xb6, 0xa7, 0x4a, 0x0d, 0x7a, 0x58, 0xfe, 0xa5, 4206 "\xb6\xa7\x4a\x0d\x7a\x58\xfe\xa5"
4188 0xf5, 0xcb, 0x8f, 0x7b, 0x0e, 0xea, 0x57, 0xe7, 4207 "\xf5\xcb\x8f\x7b\x0e\xea\x57\xe7"
4189 0xbd, 0x79, 0xd6, 0x1c, 0x88, 0x23, 0x6c, 0xf2, 4208 "\xbd\x79\xd6\x1c\x88\x23\x6c\xf2"
4190 0x4d, 0x29, 0x77, 0x53, 0x35, 0x6a, 0x00, 0x8d, 4209 "\x4d\x29\x77\x53\x35\x6a\x00\x8d"
4191 0xcd, 0xa3, 0x58, 0xbe, 0x77, 0x99, 0x18, 0xf8, 4210 "\xcd\xa3\x58\xbe\x77\x99\x18\xf8"
4192 0xe6, 0xe1, 0x8f, 0xe9, 0x37, 0x8f, 0xe3, 0xe2, 4211 "\xe6\xe1\x8f\xe9\x37\x8f\xe3\xe2"
4193 0x5a, 0x8a, 0x93, 0x25, 0xaf, 0xf3, 0x78, 0x80, 4212 "\x5a\x8a\x93\x25\xaf\xf3\x78\x80"
4194 0xbe, 0xa6, 0x1b, 0xc6, 0xac, 0x8b, 0x1c, 0x91, 4213 "\xbe\xa6\x1b\xc6\xac\x8b\x1c\x91"
4195 0x58, 0xe1, 0x9f, 0x89, 0x35, 0x9d, 0x1d, 0x21, 4214 "\x58\xe1\x9f\x89\x35\x9d\x1d\x21"
4196 0x29, 0x9f, 0xf4, 0x99, 0x02, 0x27, 0x0f, 0xa8, 4215 "\x29\x9f\xf4\x99\x02\x27\x0f\xa8"
4197 0x4f, 0x79, 0x94, 0x2b, 0x33, 0x2c, 0xda, 0xa2, 4216 "\x4f\x79\x94\x2b\x33\x2c\xda\xa2"
4198 0x26, 0x39, 0x83, 0x94, 0xef, 0x27, 0xd8, 0x53, 4217 "\x26\x39\x83\x94\xef\x27\xd8\x53"
4199 0x8f, 0x66, 0x0d, 0xe4, 0x41, 0x7d, 0x34, 0xcd, 4218 "\x8f\x66\x0d\xe4\x41\x7d\x34\xcd"
4200 0x43, 0x7c, 0x95, 0x0a, 0x53, 0xef, 0x66, 0xda, 4219 "\x43\x7c\x95\x0a\x53\xef\x66\xda"
4201 0x7e, 0x9b, 0xf3, 0x93, 0xaf, 0xd0, 0x73, 0x71, 4220 "\x7e\x9b\xf3\x93\xaf\xd0\x73\x71"
4202 0xba, 0x40, 0x9b, 0x74, 0xf8, 0xd7, 0xd7, 0x41, 4221 "\xba\x40\x9b\x74\xf8\xd7\xd7\x41"
4203 0x6d, 0xaf, 0x72, 0x9c, 0x8d, 0x21, 0x87, 0x3c, 4222 "\x6d\xaf\x72\x9c\x8d\x21\x87\x3c"
4204 0xfd, 0x0a, 0x90, 0xa9, 0x47, 0x96, 0x9e, 0xd3, 4223 "\xfd\x0a\x90\xa9\x47\x96\x9e\xd3"
4205 0x88, 0xee, 0x73, 0xcf, 0x66, 0x2f, 0x52, 0x56, 4224 "\x88\xee\x73\xcf\x66\x2f\x52\x56"
4206 0x6d, 0xa9, 0x80, 0x4c, 0xe2, 0x6f, 0x62, 0x88, 4225 "\x6d\xa9\x80\x4c\xe2\x6f\x62\x88"
4207 0x3f, 0x0e, 0x54, 0x17, 0x48, 0x80, 0x5d, 0xd3, 4226 "\x3f\x0e\x54\x17\x48\x80\x5d\xd3"
4208 0xc3, 0xda, 0x25, 0x3d, 0xa1, 0xc8, 0xcb, 0x9f, 4227 "\xc3\xda\x25\x3d\xa1\xc8\xcb\x9f"
4209 0x9b, 0x70, 0xb3, 0xa1, 0xeb, 0x04, 0x52, 0xa1, 4228 "\x9b\x70\xb3\xa1\xeb\x04\x52\xa1"
4210 0xf2, 0x22, 0x0f, 0xfc, 0xc8, 0x18, 0xfa, 0xf9, 4229 "\xf2\x22\x0f\xfc\xc8\x18\xfa\xf9"
4211 0x85, 0x9c, 0xf1, 0xac, 0xeb, 0x0c, 0x02, 0x46, 4230 "\x85\x9c\xf1\xac\xeb\x0c\x02\x46"
4212 0x75, 0xd2, 0xf5, 0x2c, 0xe3, 0xd2, 0x59, 0x94, 4231 "\x75\xd2\xf5\x2c\xe3\xd2\x59\x94"
4213 0x12, 0xf3, 0x3c, 0xfc, 0xd7, 0x92, 0xfa, 0x36, 4232 "\x12\xf3\x3c\xfc\xd7\x92\xfa\x36"
4214 0xba, 0x61, 0x34, 0x38, 0x7c, 0xda, 0x48, 0x3e, 4233 "\xba\x61\x34\x38\x7c\xda\x48\x3e"
4215 0x08, 0xc9, 0x39, 0x23, 0x5e, 0x02, 0x2c, 0x1a, 4234 "\x08\xc9\x39\x23\x5e\x02\x2c\x1a"
4216 0x18, 0x7e, 0xb4, 0xd9, 0xfd, 0x9e, 0x40, 0x02, 4235 "\x18\x7e\xb4\xd9\xfd\x9e\x40\x02"
4217 0xb1, 0x33, 0x37, 0x32, 0xe7, 0xde, 0xd6, 0xd0, 4236 "\xb1\x33\x37\x32\xe7\xde\xd6\xd0"
4218 0x7c, 0x58, 0x65, 0x4b, 0xf8, 0x34, 0x27, 0x9c, 4237 "\x7c\x58\x65\x4b\xf8\x34\x27\x9c"
4219 0x44, 0xb4, 0xbd, 0xe9, 0xe9, 0x4c, 0x78, 0x7d, 4238 "\x44\xb4\xbd\xe9\xe9\x4c\x78\x7d"
4220 0x4b, 0x9f, 0xce, 0xb1, 0xcd, 0x47, 0xa5, 0x37, 4239 "\x4b\x9f\xce\xb1\xcd\x47\xa5\x37"
4221 0xe5, 0x6d, 0xbd, 0xb9, 0x43, 0x94, 0x0a, 0xd4, 4240 "\xe5\x6d\xbd\xb9\x43\x94\x0a\xd4"
4222 0xd6, 0xf9, 0x04, 0x5f, 0xb5, 0x66, 0x6c, 0x1a, 4241 "\xd6\xf9\x04\x5f\xb5\x66\x6c\x1a"
4223 0x35, 0x12, 0xe3, 0x36, 0x28, 0x27, 0x36, 0x58, 4242 "\x35\x12\xe3\x36\x28\x27\x36\x58"
4224 0x01, 0x2b, 0x79, 0xe4, 0xba, 0x6d, 0x10, 0x7d, 4243 "\x01\x2b\x79\xe4\xba\x6d\x10\x7d"
4225 0x65, 0xdf, 0x84, 0x95, 0xf4, 0xd5, 0xb6, 0x8f, 4244 "\x65\xdf\x84\x95\xf4\xd5\xb6\x8f"
4226 0x2b, 0x9f, 0x96, 0x00, 0x86, 0x60, 0xf0, 0x21, 4245 "\x2b\x9f\x96\x00\x86\x60\xf0\x21"
4227 0x76, 0xa8, 0x6a, 0x8c, 0x28, 0x1c, 0xb3, 0x6b, 4246 "\x76\xa8\x6a\x8c\x28\x1c\xb3\x6b"
4228 0x97, 0xd7, 0xb6, 0x53, 0x2a, 0xcc, 0xab, 0x40, 4247 "\x97\xd7\xb6\x53\x2a\xcc\xab\x40"
4229 0x9d, 0x62, 0x79, 0x58, 0x52, 0xe6, 0x65, 0xb7, 4248 "\x9d\x62\x79\x58\x52\xe6\x65\xb7"
4230 0xab, 0x55, 0x67, 0x9c, 0x89, 0x7c, 0x03, 0xb0, 4249 "\xab\x55\x67\x9c\x89\x7c\x03\xb0"
4231 0x73, 0x59, 0xc5, 0x81, 0xf5, 0x18, 0x17, 0x5c, 4250 "\x73\x59\xc5\x81\xf5\x18\x17\x5c"
4232 0x89, 0xf3, 0x78, 0x35, 0x44, 0x62, 0x78, 0x72, 4251 "\x89\xf3\x78\x35\x44\x62\x78\x72"
4233 0xd0, 0x96, 0xeb, 0x31, 0xe7, 0x87, 0x77, 0x14, 4252 "\xd0\x96\xeb\x31\xe7\x87\x77\x14"
4234 0x99, 0x51, 0xf2, 0x59, 0x26, 0x9e, 0xb5, 0xa6, 4253 "\x99\x51\xf2\x59\x26\x9e\xb5\xa6"
4235 0x45, 0xfe, 0x6e, 0xbd, 0x07, 0x4c, 0x94, 0x5a, 4254 "\x45\xfe\x6e\xbd\x07\x4c\x94\x5a"
4236 0xa5, 0x7d, 0xfc, 0xf1, 0x2b, 0x77, 0xe2, 0xfe, 4255 "\xa5\x7d\xfc\xf1\x2b\x77\xe2\xfe"
4237 0x17, 0xd4, 0x84, 0xa0, 0xac, 0xb5, 0xc7, 0xda, 4256 "\x17\xd4\x84\xa0\xac\xb5\xc7\xda"
4238 0xa9, 0x1a, 0xb6, 0xf3, 0x74, 0x11, 0xb4, 0x9d, 4257 "\xa9\x1a\xb6\xf3\x74\x11\xb4\x9d"
4239 0xfb, 0x79, 0x2e, 0x04, 0x2d, 0x50, 0x28, 0x83, 4258 "\xfb\x79\x2e\x04\x2d\x50\x28\x83"
4240 0xbf, 0xc6, 0x52, 0xd3, 0x34, 0xd6, 0xe8, 0x7a, 4259 "\xbf\xc6\x52\xd3\x34\xd6\xe8\x7a"
4241 0xb6, 0xea, 0xe7, 0xa8, 0x6c, 0x15, 0x1e, 0x2c, 4260 "\xb6\xea\xe7\xa8\x6c\x15\x1e\x2c"
4242 0x57, 0xbc, 0x48, 0x4e, 0x5f, 0x5c, 0xb6, 0x92, 4261 "\x57\xbc\x48\x4e\x5f\x5c\xb6\x92"
4243 0xd2, 0x49, 0x77, 0x81, 0x6d, 0x90, 0x70, 0xae, 4262 "\xd2\x49\x77\x81\x6d\x90\x70\xae"
4244 0x98, 0xa1, 0x03, 0x0d, 0x6b, 0xb9, 0x77, 0x14, 4263 "\x98\xa1\x03\x0d\x6b\xb9\x77\x14"
4245 0xf1, 0x4e, 0x23, 0xd3, 0xf8, 0x68, 0xbd, 0xc2, 4264 "\xf1\x4e\x23\xd3\xf8\x68\xbd\xc2"
4246 0xfe, 0x04, 0xb7, 0x5c, 0xc5, 0x17, 0x60, 0x8f, 4265 "\xfe\x04\xb7\x5c\xc5\x17\x60\x8f"
4247 0x65, 0x54, 0xa4, 0x7a, 0x42, 0xdc, 0x18, 0x0d, 4266 "\x65\x54\xa4\x7a\x42\xdc\x18\x0d"
4248 0xb5, 0xcf, 0x0f, 0xd3, 0xc7, 0x91, 0x66, 0x1b, 4267 "\xb5\xcf\x0f\xd3\xc7\x91\x66\x1b"
4249 0x45, 0x42, 0x27, 0x75, 0x50, 0xe5, 0xee, 0xb8, 4268 "\x45\x42\x27\x75\x50\xe5\xee\xb8"
4250 0x7f, 0x33, 0x2c, 0xba, 0x4a, 0x92, 0x4d, 0x2c, 4269 "\x7f\x33\x2c\xba\x4a\x92\x4d\x2c"
4251 0x3c, 0xe3, 0x0d, 0x80, 0x01, 0xba, 0x0d, 0x29, 4270 "\x3c\xe3\x0d\x80\x01\xba\x0d\x29"
4252 0xd8, 0x3c, 0xe9, 0x13, 0x16, 0x57, 0xe6, 0xea, 4271 "\xd8\x3c\xe9\x13\x16\x57\xe6\xea"
4253 0x94, 0x52, 0xe7, 0x00, 0x4d, 0x30, 0xb0, 0x0f, 4272 "\x94\x52\xe7\x00\x4d\x30\xb0\x0f"
4254 0x35, 0xb8, 0xb8, 0xa7, 0xb1, 0xb5, 0x3b, 0x44, 4273 "\x35\xb8\xb8\xa7\xb1\xb5\x3b\x44"
4255 0xe1, 0x2f, 0xfd, 0x88, 0xed, 0x43, 0xe7, 0x52, 4274 "\xe1\x2f\xfd\x88\xed\x43\xe7\x52"
4256 0x10, 0x93, 0xb3, 0x8a, 0x30, 0x6b, 0x0a, 0xf7, 4275 "\x10\x93\xb3\x8a\x30\x6b\x0a\xf7"
4257 0x23, 0xc6, 0x50, 0x9d, 0x4a, 0xb0, 0xde, 0xc3, 4276 "\x23\xc6\x50\x9d\x4a\xb0\xde\xc3"
4258 0xdc, 0x9b, 0x2f, 0x01, 0x56, 0x36, 0x09, 0xc5, 4277 "\xdc\x9b\x2f\x01\x56\x36\x09\xc5"
4259 0x2f, 0x6b, 0xfe, 0xf1, 0xd8, 0x27, 0x45, 0x03, 4278 "\x2f\x6b\xfe\xf1\xd8\x27\x45\x03"
4260 0x30, 0x5e, 0x5c, 0x5b, 0xb4, 0x62, 0x0e, 0x1a, 4279 "\x30\x5e\x5c\x5b\xb4\x62\x0e\x1a"
4261 0xa9, 0x21, 0x2b, 0x92, 0x94, 0x87, 0x62, 0x57, 4280 "\xa9\x21\x2b\x92\x94\x87\x62\x57"
4262 0x4c, 0x10, 0x74, 0x1a, 0xf1, 0x0a, 0xc5, 0x84, 4281 "\x4c\x10\x74\x1a\xf1\x0a\xc5\x84"
4263 0x3b, 0x9e, 0x72, 0x02, 0xd7, 0xcc, 0x09, 0x56, 4282 "\x3b\x9e\x72\x02\xd7\xcc\x09\x56"
4264 0xbd, 0x54, 0xc1, 0xf0, 0xc3, 0xe3, 0xb3, 0xf8, 4283 "\xbd\x54\xc1\xf0\xc3\xe3\xb3\xf8"
4265 0xd2, 0x0d, 0x61, 0xcb, 0xef, 0xce, 0x0d, 0x05, 4284 "\xd2\x0d\x61\xcb\xef\xce\x0d\x05"
4266 0xb0, 0x98, 0xd9, 0x8e, 0x4f, 0xf9, 0xbc, 0x93, 4285 "\xb0\x98\xd9\x8e\x4f\xf9\xbc\x93"
4267 0xa6, 0xea, 0xc8, 0xcf, 0x10, 0x53, 0x4b, 0xf1, 4286 "\xa6\xea\xc8\xcf\x10\x53\x4b\xf1"
4268 0xec, 0xfc, 0x89, 0xf9, 0x64, 0xb0, 0x22, 0xbf, 4287 "\xec\xfc\x89\xf9\x64\xb0\x22\xbf"
4269 0x9e, 0x55, 0x46, 0x9f, 0x7c, 0x50, 0x8e, 0x84, 4288 "\x9e\x55\x46\x9f\x7c\x50\x8e\x84"
4270 0x54, 0x20, 0x98, 0xd7, 0x6c, 0x40, 0x1e, 0xdb, 4289 "\x54\x20\x98\xd7\x6c\x40\x1e\xdb"
4271 0x69, 0x34, 0x78, 0x61, 0x24, 0x21, 0x9c, 0x8a, 4290 "\x69\x34\x78\x61\x24\x21\x9c\x8a"
4272 0xb3, 0x62, 0x31, 0x8b, 0x6e, 0xf5, 0x2a, 0x35, 4291 "\xb3\x62\x31\x8b\x6e\xf5\x2a\x35"
4273 0x86, 0x13, 0xb1, 0x6c, 0x64, 0x2e, 0x41, 0xa5, 4292 "\x86\x13\xb1\x6c\x64\x2e\x41\xa5"
4274 0x05, 0xf2, 0x42, 0xba, 0xd2, 0x3a, 0x0d, 0x8e, 4293 "\x05\xf2\x42\xba\xd2\x3a\x0d\x8e"
4275 0x8a, 0x59, 0x94, 0x3c, 0xcf, 0x36, 0x27, 0x82, 4294 "\x8a\x59\x94\x3c\xcf\x36\x27\x82"
4276 0xc2, 0x45, 0xee, 0x58, 0xcd, 0x88, 0xb4, 0xec, 4295 "\xc2\x45\xee\x58\xcd\x88\xb4\xec"
4277 0xde, 0xb2, 0x96, 0x0a, 0xaf, 0x38, 0x6f, 0x88, 4296 "\xde\xb2\x96\x0a\xaf\x38\x6f\x88"
4278 0xd7, 0xd8, 0xe1, 0xdf, 0xb9, 0x96, 0xa9, 0x0a, 4297 "\xd7\xd8\xe1\xdf\xb9\x96\xa9\x0a"
4279 0xb1, 0x95, 0x28, 0x86, 0x20, 0xe9, 0x17, 0x49, 4298 "\xb1\x95\x28\x86\x20\xe9\x17\x49"
4280 0xa2, 0x29, 0x38, 0xaa, 0xa5, 0xe9, 0x6e, 0xf1, 4299 "\xa2\x29\x38\xaa\xa5\xe9\x6e\xf1"
4281 0x19, 0x27, 0xc0, 0xd5, 0x2a, 0x22, 0xc3, 0x0b, 4300 "\x19\x27\xc0\xd5\x2a\x22\xc3\x0b"
4282 0xdb, 0x7c, 0x73, 0x10, 0xb9, 0xba, 0x89, 0x76, 4301 "\xdb\x7c\x73\x10\xb9\xba\x89\x76"
4283 0x54, 0xae, 0x7d, 0x71, 0xb3, 0x93, 0xf6, 0x32, 4302 "\x54\xae\x7d\x71\xb3\x93\xf6\x32"
4284 0xe6, 0x47, 0x43, 0x55, 0xac, 0xa0, 0x0d, 0xc2, 4303 "\xe6\x47\x43\x55\xac\xa0\x0d\xc2"
4285 0x93, 0x27, 0x4a, 0x8e, 0x0e, 0x74, 0x15, 0xc7, 4304 "\x93\x27\x4a\x8e\x0e\x74\x15\xc7"
4286 0x0b, 0x85, 0xd9, 0x0c, 0xa9, 0x30, 0x7a, 0x3e, 4305 "\x0b\x85\xd9\x0c\xa9\x30\x7a\x3e"
4287 0xea, 0x8f, 0x85, 0x6d, 0x3a, 0x12, 0x4f, 0x72, 4306 "\xea\x8f\x85\x6d\x3a\x12\x4f\x72"
4288 0x69, 0x58, 0x7a, 0x80, 0xbb, 0xb5, 0x97, 0xf3, 4307 "\x69\x58\x7a\x80\xbb\xb5\x97\xf3"
4289 0xcf, 0x70, 0xd2, 0x5d, 0xdd, 0x4d, 0x21, 0x79, 4308 "\xcf\x70\xd2\x5d\xdd\x4d\x21\x79"
4290 0x54, 0x4d, 0xe4, 0x05, 0xe8, 0xbd, 0xc2, 0x62, 4309 "\x54\x4d\xe4\x05\xe8\xbd\xc2\x62"
4291 0xb1, 0x3b, 0x77, 0x1c, 0xd6, 0x5c, 0xf3, 0xa0, 4310 "\xb1\x3b\x77\x1c\xd6\x5c\xf3\xa0"
4292 0x79, 0x00, 0xa8, 0x6c, 0x29, 0xd9, 0x18, 0x24, 4311 "\x79\x00\xa8\x6c\x29\xd9\x18\x24"
4293 0x36, 0xa2, 0x46, 0xc0, 0x96, 0x65, 0x7f, 0xbd, 4312 "\x36\xa2\x46\xc0\x96\x65\x7f\xbd"
4294 0x2a, 0xed, 0x36, 0x16, 0x0c, 0xaa, 0x9f, 0xf4, 4313 "\x2a\xed\x36\x16\x0c\xaa\x9f\xf4"
4295 0xc5, 0xb4, 0xe2, 0x12, 0xed, 0x69, 0xed, 0x4f, 4314 "\xc5\xb4\xe2\x12\xed\x69\xed\x4f"
4296 0x26, 0x2c, 0x39, 0x52, 0x89, 0x98, 0xe7, 0x2c, 4315 "\x26\x2c\x39\x52\x89\x98\xe7\x2c"
4297 0x99, 0xa4, 0x9e, 0xa3, 0x9b, 0x99, 0x46, 0x7a, 4316 "\x99\xa4\x9e\xa3\x9b\x99\x46\x7a"
4298 0x3a, 0xdc, 0xa8, 0x59, 0xa3, 0xdb, 0xc3, 0x3b, 4317 "\x3a\xdc\xa8\x59\xa3\xdb\xc3\x3b"
4299 0x95, 0x0d, 0x3b, 0x09, 0x6e, 0xee, 0x83, 0x5d, 4318 "\x95\x0d\x3b\x09\x6e\xee\x83\x5d"
4300 0x32, 0x4d, 0xed, 0xab, 0xfa, 0x98, 0x14, 0x4e, 4319 "\x32\x4d\xed\xab\xfa\x98\x14\x4e"
4301 0xc3, 0x15, 0x45, 0x53, 0x61, 0xc4, 0x93, 0xbd, 4320 "\xc3\x15\x45\x53\x61\xc4\x93\xbd"
4302 0x90, 0xf4, 0x99, 0x95, 0x4c, 0xe6, 0x76, 0x92, 4321 "\x90\xf4\x99\x95\x4c\xe6\x76\x92"
4303 0x29, 0x90, 0x46, 0x30, 0x92, 0x69, 0x7d, 0x13, 4322 "\x29\x90\x46\x30\x92\x69\x7d\x13"
4304 0xf2, 0xa5, 0xcd, 0x69, 0x49, 0x44, 0xb2, 0x0f, 4323 "\xf2\xa5\xcd\x69\x49\x44\xb2\x0f"
4305 0x63, 0x40, 0x36, 0x5f, 0x09, 0xe2, 0x78, 0xf8, 4324 "\x63\x40\x36\x5f\x09\xe2\x78\xf8"
4306 0x91, 0xe3, 0xe2, 0xfa, 0x10, 0xf7, 0xc8, 0x24, 4325 "\x91\xe3\xe2\xfa\x10\xf7\xc8\x24"
4307 0xa8, 0x89, 0x32, 0x5c, 0x37, 0x25, 0x1d, 0xb2, 4326 "\xa8\x89\x32\x5c\x37\x25\x1d\xb2"
4308 0xea, 0x17, 0x8a, 0x0a, 0xa9, 0x64, 0xc3, 0x7c, 4327 "\xea\x17\x8a\x0a\xa9\x64\xc3\x7c"
4309 0x3c, 0x7c, 0xbd, 0xc6, 0x79, 0x34, 0xe7, 0xe2, 4328 "\x3c\x7c\xbd\xc6\x79\x34\xe7\xe2"
4310 0x85, 0x8e, 0xbf, 0xf8, 0xde, 0x92, 0xa0, 0xae, 4329 "\x85\x8e\xbf\xf8\xde\x92\xa0\xae"
4311 0x20, 0xc4, 0xf6, 0xbb, 0x1f, 0x38, 0x19, 0x0e, 4330 "\x20\xc4\xf6\xbb\x1f\x38\x19\x0e"
4312 0xe8, 0x79, 0x9c, 0xa1, 0x23, 0xe9, 0x54, 0x7e, 4331 "\xe8\x79\x9c\xa1\x23\xe9\x54\x7e"
4313 0x37, 0x2f, 0xe2, 0x94, 0x32, 0xaf, 0xa0, 0x23, 4332 "\x37\x2f\xe2\x94\x32\xaf\xa0\x23"
4314 0x49, 0xe4, 0xc0, 0xb3, 0xac, 0x00, 0x8f, 0x36, 4333 "\x49\xe4\xc0\xb3\xac\x00\x8f\x36"
4315 0x05, 0xc4, 0xa6, 0x96, 0xec, 0x05, 0x98, 0x4f, 4334 "\x05\xc4\xa6\x96\xec\x05\x98\x4f"
4316 0x96, 0x67, 0x57, 0x1f, 0x20, 0x86, 0x1b, 0x2d, 4335 "\x96\x67\x57\x1f\x20\x86\x1b\x2d"
4317 0x69, 0xe4, 0x29, 0x93, 0x66, 0x5f, 0xaf, 0x6b, 4336 "\x69\xe4\x29\x93\x66\x5f\xaf\x6b"
4318 0x88, 0x26, 0x2c, 0x67, 0x02, 0x4b, 0x52, 0xd0, 4337 "\x88\x26\x2c\x67\x02\x4b\x52\xd0"
4319 0x83, 0x7a, 0x43, 0x1f, 0xc0, 0x71, 0x15, 0x25, 4338 "\x83\x7a\x43\x1f\xc0\x71\x15\x25"
4320 0x77, 0x65, 0x08, 0x60, 0x11, 0x76, 0x4c, 0x8d, 4339 "\x77\x65\x08\x60\x11\x76\x4c\x8d"
4321 0xed, 0xa9, 0x27, 0xc6, 0xb1, 0x2a, 0x2c, 0x6a, 4340 "\xed\xa9\x27\xc6\xb1\x2a\x2c\x6a"
4322 0x4a, 0x97, 0xf5, 0xc6, 0xb7, 0x70, 0x42, 0xd3, 4341 "\x4a\x97\xf5\xc6\xb7\x70\x42\xd3"
4323 0x03, 0xd1, 0x24, 0x95, 0xec, 0x6d, 0xab, 0x38, 4342 "\x03\xd1\x24\x95\xec\x6d\xab\x38"
4324 0x72, 0xce, 0xe2, 0x8b, 0x33, 0xd7, 0x51, 0x09, 4343 "\x72\xce\xe2\x8b\x33\xd7\x51\x09"
4325 0xdc, 0x45, 0xe0, 0x09, 0x96, 0x32, 0xf3, 0xc4, 4344 "\xdc\x45\xe0\x09\x96\x32\xf3\xc4"
4326 0x84, 0xdc, 0x73, 0x73, 0x2d, 0x1b, 0x11, 0x98, 4345 "\x84\xdc\x73\x73\x2d\x1b\x11\x98"
4327 0xc5, 0x0e, 0x69, 0x28, 0x94, 0xc7, 0xb5, 0x4d, 4346 "\xc5\x0e\x69\x28\x94\xc7\xb5\x4d"
4328 0xc8, 0x8a, 0xd0, 0xaa, 0x13, 0x2e, 0x18, 0x74, 4347 "\xc8\x8a\xd0\xaa\x13\x2e\x18\x74"
4329 0xdd, 0xd1, 0x1e, 0xf3, 0x90, 0xe8, 0xfc, 0x9a, 4348 "\xdd\xd1\x1e\xf3\x90\xe8\xfc\x9a"
4330 0x72, 0x4a, 0x0e, 0xd1, 0xe4, 0xfb, 0x0d, 0x96, 4349 "\x72\x4a\x0e\xd1\xe4\xfb\x0d\x96"
4331 0xd1, 0x0c, 0x79, 0x85, 0x1b, 0x1c, 0xfe, 0xe1, 4350 "\xd1\x0c\x79\x85\x1b\x1c\xfe\xe1"
4332 0x62, 0x8f, 0x7a, 0x73, 0x32, 0xab, 0xc8, 0x18, 4351 "\x62\x8f\x7a\x73\x32\xab\xc8\x18"
4333 0x69, 0xe3, 0x34, 0x30, 0xdf, 0x13, 0xa6, 0xe5, 4352 "\x69\xe3\x34\x30\xdf\x13\xa6\xe5"
4334 0xe8, 0x0e, 0x67, 0x7f, 0x81, 0x11, 0xb4, 0x60, 4353 "\xe8\x0e\x67\x7f\x81\x11\xb4\x60"
4335 0xc7, 0xbd, 0x79, 0x65, 0x50, 0xdc, 0xc4, 0x5b, 4354 "\xc7\xbd\x79\x65\x50\xdc\xc4\x5b"
4336 0xde, 0x39, 0xa4, 0x01, 0x72, 0x63, 0xf3, 0xd1, 4355 "\xde\x39\xa4\x01\x72\x63\xf3\xd1"
4337 0x64, 0x4e, 0xdf, 0xfc, 0x27, 0x92, 0x37, 0x0d, 4356 "\x64\x4e\xdf\xfc\x27\x92\x37\x0d"
4338 0x57, 0xcd, 0x11, 0x4f, 0x11, 0x04, 0x8e, 0x1d, 4357 "\x57\xcd\x11\x4f\x11\x04\x8e\x1d"
4339 0x16, 0xf7, 0xcd, 0x92, 0x9a, 0x99, 0x30, 0x14, 4358 "\x16\xf7\xcd\x92\x9a\x99\x30\x14"
4340 0xf1, 0x7c, 0x67, 0x1b, 0x1f, 0x41, 0x0b, 0xe8, 4359 "\xf1\x7c\x67\x1b\x1f\x41\x0b\xe8"
4341 0x32, 0xe8, 0xb8, 0xc1, 0x4f, 0x54, 0x86, 0x4f, 4360 "\x32\xe8\xb8\xc1\x4f\x54\x86\x4f"
4342 0xe5, 0x79, 0x81, 0x73, 0xcd, 0x43, 0x59, 0x68, 4361 "\xe5\x79\x81\x73\xcd\x43\x59\x68"
4343 0x73, 0x02, 0x3b, 0x78, 0x21, 0x72, 0x43, 0x00, 4362 "\x73\x02\x3b\x78\x21\x72\x43\x00"
4344 0x49, 0x17, 0xf7, 0x00, 0xaf, 0x68, 0x24, 0x53, 4363 "\x49\x17\xf7\x00\xaf\x68\x24\x53"
4345 0x05, 0x0a, 0xc3, 0x33, 0xe0, 0x33, 0x3f, 0x69, 4364 "\x05\x0a\xc3\x33\xe0\x33\x3f\x69"
4346 0xd2, 0x84, 0x2f, 0x0b, 0xed, 0xde, 0x04, 0xf4, 4365 "\xd2\x84\x2f\x0b\xed\xde\x04\xf4"
4347 0x11, 0x94, 0x13, 0x69, 0x51, 0x09, 0x28, 0xde, 4366 "\x11\x94\x13\x69\x51\x09\x28\xde"
4348 0x57, 0x5c, 0xef, 0xdc, 0x9a, 0x49, 0x1c, 0x17, 4367 "\x57\x5c\xef\xdc\x9a\x49\x1c\x17"
4349 0x97, 0xf3, 0x96, 0xc1, 0x7f, 0x5d, 0x2e, 0x7d, 4368 "\x97\xf3\x96\xc1\x7f\x5d\x2e\x7d"
4350 0x55, 0xb8, 0xb3, 0x02, 0x09, 0xb3, 0x1f, 0xe7, 4369 "\x55\xb8\xb3\x02\x09\xb3\x1f\xe7"
4351 0xc9, 0x8d, 0xa3, 0x36, 0x34, 0x8a, 0x77, 0x13, 4370 "\xc9\x8d\xa3\x36\x34\x8a\x77\x13"
4352 0x30, 0x63, 0x4c, 0xa5, 0xcd, 0xc3, 0xe0, 0x7e, 4371 "\x30\x63\x4c\xa5\xcd\xc3\xe0\x7e"
4353 0x05, 0xa1, 0x7b, 0x0c, 0xcb, 0x74, 0x47, 0x31, 4372 "\x05\xa1\x7b\x0c\xcb\x74\x47\x31"
4354 0x62, 0x03, 0x43, 0xf1, 0x87, 0xb4, 0xb0, 0x85, 4373 "\x62\x03\x43\xf1\x87\xb4\xb0\x85"
4355 0x87, 0x8e, 0x4b, 0x25, 0xc7, 0xcf, 0xae, 0x4b, 4374 "\x87\x8e\x4b\x25\xc7\xcf\xae\x4b"
4356 0x36, 0x46, 0x3e, 0x62, 0xbc, 0x6f, 0xeb, 0x5f, 4375 "\x36\x46\x3e\x62\xbc\x6f\xeb\x5f"
4357 0x73, 0xac, 0xe6, 0x07, 0xee, 0xc1, 0xa1, 0xd6, 4376 "\x73\xac\xe6\x07\xee\xc1\xa1\xd6"
4358 0xc4, 0xab, 0xc9, 0xd6, 0x89, 0x45, 0xe1, 0xf1, 4377 "\xc4\xab\xc9\xd6\x89\x45\xe1\xf1"
4359 0x04, 0x4e, 0x1a, 0x6f, 0xbb, 0x4f, 0x3a, 0xa3, 4378 "\x04\x4e\x1a\x6f\xbb\x4f\x3a\xa3"
4360 0xa0, 0xcb, 0xa3, 0x0a, 0xd8, 0x71, 0x35, 0x55, 4379 "\xa0\xcb\xa3\x0a\xd8\x71\x35\x55"
4361 0xe4, 0xbc, 0x2e, 0x04, 0x06, 0xe6, 0xff, 0x5b, 4380 "\xe4\xbc\x2e\x04\x06\xe6\xff\x5b"
4362 0x1c, 0xc0, 0x11, 0x7c, 0xc5, 0x17, 0xf3, 0x38, 4381 "\x1c\xc0\x11\x7c\xc5\x17\xf3\x38"
4363 0xcf, 0xe9, 0xba, 0x0f, 0x0e, 0xef, 0x02, 0xc2, 4382 "\xcf\xe9\xba\x0f\x0e\xef\x02\xc2"
4364 0x8d, 0xc6, 0xbc, 0x4b, 0x67, 0x20, 0x95, 0xd7, 4383 "\x8d\xc6\xbc\x4b\x67\x20\x95\xd7"
4365 0x2c, 0x45, 0x5b, 0x86, 0x44, 0x8c, 0x6f, 0x2e, 4384 "\x2c\x45\x5b\x86\x44\x8c\x6f\x2e"
4366 0x7e, 0x9f, 0x1c, 0x77, 0xba, 0x6b, 0x0e, 0xa3, 4385 "\x7e\x9f\x1c\x77\xba\x6b\x0e\xa3"
4367 0x69, 0xdc, 0xab, 0x24, 0x57, 0x60, 0x47, 0xc1, 4386 "\x69\xdc\xab\x24\x57\x60\x47\xc1"
4368 0xd1, 0xa5, 0x9d, 0x23, 0xe6, 0xb1, 0x37, 0xfe, 4387 "\xd1\xa5\x9d\x23\xe6\xb1\x37\xfe"
4369 0x93, 0xd2, 0x4c, 0x46, 0xf9, 0x0c, 0xc6, 0xfb, 4388 "\x93\xd2\x4c\x46\xf9\x0c\xc6\xfb"
4370 0xd6, 0x9d, 0x99, 0x69, 0xab, 0x7a, 0x07, 0x0c, 4389 "\xd6\x9d\x99\x69\xab\x7a\x07\x0c"
4371 0x65, 0xe7, 0xc4, 0x08, 0x96, 0xe2, 0xa5, 0x01, 4390 "\x65\xe7\xc4\x08\x96\xe2\xa5\x01"
4372 0x3f, 0x46, 0x07, 0x05, 0x7e, 0xe8, 0x9a, 0x90, 4391 "\x3f\x46\x07\x05\x7e\xe8\x9a\x90"
4373 0x50, 0xdc, 0xe9, 0x7a, 0xea, 0xa1, 0x39, 0x6e, 4392 "\x50\xdc\xe9\x7a\xea\xa1\x39\x6e"
4374 0x66, 0xe4, 0x6f, 0xa5, 0x5f, 0xb2, 0xd9, 0x5b, 4393 "\x66\xe4\x6f\xa5\x5f\xb2\xd9\x5b"
4375 0xf5, 0xdb, 0x2a, 0x32, 0xf0, 0x11, 0x6f, 0x7c, 4394 "\xf5\xdb\x2a\x32\xf0\x11\x6f\x7c"
4376 0x26, 0x10, 0x8f, 0x3d, 0x80, 0xe9, 0x58, 0xf7, 4395 "\x26\x10\x8f\x3d\x80\xe9\x58\xf7"
4377 0xe0, 0xa8, 0x57, 0xf8, 0xdb, 0x0e, 0xce, 0x99, 4396 "\xe0\xa8\x57\xf8\xdb\x0e\xce\x99"
4378 0x63, 0x19, 0x3d, 0xd5, 0xec, 0x1b, 0x77, 0x69, 4397 "\x63\x19\x3d\xd5\xec\x1b\x77\x69"
4379 0x98, 0xf6, 0xe4, 0x5f, 0x67, 0x17, 0x4b, 0x09, 4398 "\x98\xf6\xe4\x5f\x67\x17\x4b\x09"
4380 0x85, 0x62, 0x82, 0x70, 0x18, 0xe2, 0x9a, 0x78, 4399 "\x85\x62\x82\x70\x18\xe2\x9a\x78"
4381 0xe2, 0x62, 0xbd, 0xb4, 0xf1, 0x42, 0xc6, 0xfb, 4400 "\xe2\x62\xbd\xb4\xf1\x42\xc6\xfb"
4382 0x08, 0xd0, 0xbd, 0xeb, 0x4e, 0x09, 0xf2, 0xc8, 4401 "\x08\xd0\xbd\xeb\x4e\x09\xf2\xc8"
4383 0x1e, 0xdc, 0x3d, 0x32, 0x21, 0x56, 0x9c, 0x4f, 4402 "\x1e\xdc\x3d\x32\x21\x56\x9c\x4f"
4384 0x35, 0xf3, 0x61, 0x06, 0x72, 0x84, 0xc4, 0x32, 4403 "\x35\xf3\x61\x06\x72\x84\xc4\x32"
4385 0xf2, 0xf1, 0xfa, 0x0b, 0x2f, 0xc3, 0xdb, 0x02, 4404 "\xf2\xf1\xfa\x0b\x2f\xc3\xdb\x02"
4386 0x04, 0xc2, 0xde, 0x57, 0x64, 0x60, 0x8d, 0xcf, 4405 "\x04\xc2\xde\x57\x64\x60\x8d\xcf"
4387 0xcb, 0x86, 0x5d, 0x97, 0x3e, 0xb1, 0x9c, 0x01, 4406 "\xcb\x86\x5d\x97\x3e\xb1\x9c\x01"
4388 0xd6, 0x28, 0x8f, 0x99, 0xbc, 0x46, 0xeb, 0x05, 4407 "\xd6\x28\x8f\x99\xbc\x46\xeb\x05"
4389 0xaf, 0x7e, 0xb8, 0x21, 0x2a, 0x56, 0x85, 0x1c, 4408 "\xaf\x7e\xb8\x21\x2a\x56\x85\x1c"
4390 0xb3, 0x71, 0xa0, 0xde, 0xca, 0x96, 0xf1, 0x78, 4409 "\xb3\x71\xa0\xde\xca\x96\xf1\x78"
4391 0x49, 0xa2, 0x99, 0x81, 0x80, 0x5c, 0x01, 0xf5, 4410 "\x49\xa2\x99\x81\x80\x5c\x01\xf5"
4392 0xa0, 0xa2, 0x56, 0x63, 0xe2, 0x70, 0x07, 0xa5, 4411 "\xa0\xa2\x56\x63\xe2\x70\x07\xa5"
4393 0x95, 0xd6, 0x85, 0xeb, 0x36, 0x9e, 0xa9, 0x51, 4412 "\x95\xd6\x85\xeb\x36\x9e\xa9\x51"
4394 0x66, 0x56, 0x5f, 0x1d, 0x02, 0x19, 0xe2, 0xf6, 4413 "\x66\x56\x5f\x1d\x02\x19\xe2\xf6"
4395 0x4f, 0x73, 0x38, 0x09, 0x75, 0x64, 0x48, 0xe0, 4414 "\x4f\x73\x38\x09\x75\x64\x48\xe0"
4396 0xf1, 0x7e, 0x0e, 0xe8, 0x9d, 0xf9, 0xed, 0x94, 4415 "\xf1\x7e\x0e\xe8\x9d\xf9\xed\x94"
4397 0xfe, 0x16, 0x26, 0x62, 0x49, 0x74, 0xf4, 0xb0, 4416 "\xfe\x16\x26\x62\x49\x74\xf4\xb0"
4398 0xd4, 0xa9, 0x6c, 0xb0, 0xfd, 0x53, 0xe9, 0x81, 4417 "\xd4\xa9\x6c\xb0\xfd\x53\xe9\x81"
4399 0xe0, 0x7a, 0xbf, 0xcf, 0xb5, 0xc4, 0x01, 0x81, 4418 "\xe0\x7a\xbf\xcf\xb5\xc4\x01\x81"
4400 0x79, 0x99, 0x77, 0x01, 0x3b, 0xe9, 0xa2, 0xb6, 4419 "\x79\x99\x77\x01\x3b\xe9\xa2\xb6"
4401 0xe6, 0x6a, 0x8a, 0x9e, 0x56, 0x1c, 0x8d, 0x1e, 4420 "\xe6\x6a\x8a\x9e\x56\x1c\x8d\x1e"
4402 0x8f, 0x06, 0x55, 0x2c, 0x6c, 0xdc, 0x92, 0x87, 4421 "\x8f\x06\x55\x2c\x6c\xdc\x92\x87"
4403 0x64, 0x3b, 0x4b, 0x19, 0xa1, 0x13, 0x64, 0x1d, 4422 "\x64\x3b\x4b\x19\xa1\x13\x64\x1d"
4404 0x4a, 0xe9, 0xc0, 0x00, 0xb8, 0x95, 0xef, 0x6b, 4423 "\x4a\xe9\xc0\x00\xb8\x95\xef\x6b"
4405 0x1a, 0x86, 0x6d, 0x37, 0x52, 0x02, 0xc2, 0xe0, 4424 "\x1a\x86\x6d\x37\x52\x02\xc2\xe0"
4406 0xc8, 0xbb, 0x42, 0x0c, 0x02, 0x21, 0x4a, 0xc9, 4425 "\xc8\xbb\x42\x0c\x02\x21\x4a\xc9"
4407 0xef, 0xa0, 0x54, 0xe4, 0x5e, 0x16, 0x53, 0x81, 4426 "\xef\xa0\x54\xe4\x5e\x16\x53\x81"
4408 0x70, 0x62, 0x10, 0xaf, 0xde, 0xb8, 0xb5, 0xd3, 4427 "\x70\x62\x10\xaf\xde\xb8\xb5\xd3"
4409 0xe8, 0x5e, 0x6c, 0xc3, 0x8a, 0x3e, 0x18, 0x07, 4428 "\xe8\x5e\x6c\xc3\x8a\x3e\x18\x07"
4410 0xf2, 0x2f, 0x7d, 0xa7, 0xe1, 0x3d, 0x4e, 0xb4, 4429 "\xf2\x2f\x7d\xa7\xe1\x3d\x4e\xb4"
4411 0x26, 0xa7, 0xa3, 0x93, 0x86, 0xb2, 0x04, 0x1e, 4430 "\x26\xa7\xa3\x93\x86\xb2\x04\x1e"
4412 0x53, 0x5d, 0x86, 0xd6, 0xde, 0x65, 0xca, 0xe3, 4431 "\x53\x5d\x86\xd6\xde\x65\xca\xe3"
4413 0x4e, 0xc1, 0xcf, 0xef, 0xc8, 0x70, 0x1b, 0x83, 4432 "\x4e\xc1\xcf\xef\xc8\x70\x1b\x83"
4414 0x13, 0xdd, 0x18, 0x8b, 0x0d, 0x76, 0xd2, 0xf6, 4433 "\x13\xdd\x18\x8b\x0d\x76\xd2\xf6"
4415 0x37, 0x7a, 0x93, 0x7a, 0x50, 0x11, 0x9f, 0x96, 4434 "\x37\x7a\x93\x7a\x50\x11\x9f\x96"
4416 0x86, 0x25, 0xfd, 0xac, 0xdc, 0xbe, 0x18, 0x93, 4435 "\x86\x25\xfd\xac\xdc\xbe\x18\x93"
4417 0x19, 0x6b, 0xec, 0x58, 0x4f, 0xb9, 0x75, 0xa7, 4436 "\x19\x6b\xec\x58\x4f\xb9\x75\xa7"
4418 0xdd, 0x3f, 0x2f, 0xec, 0xc8, 0x5a, 0x84, 0xab, 4437 "\xdd\x3f\x2f\xec\xc8\x5a\x84\xab"
4419 0xd5, 0xe4, 0x8a, 0x07, 0xf6, 0x4d, 0x23, 0xd6, 4438 "\xd5\xe4\x8a\x07\xf6\x4d\x23\xd6"
4420 0x03, 0xfb, 0x03, 0x6a, 0xea, 0x66, 0xbf, 0xd4, 4439 "\x03\xfb\x03\x6a\xea\x66\xbf\xd4"
4421 0xb1, 0x34, 0xfb, 0x78, 0xe9, 0x55, 0xdc, 0x7c, 4440 "\xb1\x34\xfb\x78\xe9\x55\xdc\x7c"
4422 0x3d, 0x9c, 0xe5, 0x9a, 0xac, 0xc3, 0x7a, 0x80, 4441 "\x3d\x9c\xe5\x9a\xac\xc3\x7a\x80"
4423 0x24, 0x6d, 0xa0, 0xef, 0x25, 0x7c, 0xb7, 0xea, 4442 "\x24\x6d\xa0\xef\x25\x7c\xb7\xea"
4424 0xce, 0x4d, 0x5f, 0x18, 0x60, 0xce, 0x87, 0x22, 4443 "\xce\x4d\x5f\x18\x60\xce\x87\x22"
4425 0x66, 0x2f, 0xd5, 0xdd, 0xdd, 0x02, 0x21, 0x75, 4444 "\x66\x2f\xd5\xdd\xdd\x02\x21\x75"
4426 0x82, 0xa0, 0x1f, 0x58, 0xc6, 0xd3, 0x62, 0xf7, 4445 "\x82\xa0\x1f\x58\xc6\xd3\x62\xf7"
4427 0x32, 0xd8, 0xaf, 0x1e, 0x07, 0x77, 0x51, 0x96, 4446 "\x32\xd8\xaf\x1e\x07\x77\x51\x96"
4428 0xd5, 0x6b, 0x1e, 0x7e, 0x80, 0x02, 0xe8, 0x67, 4447 "\xd5\x6b\x1e\x7e\x80\x02\xe8\x67"
4429 0xea, 0x17, 0x0b, 0x10, 0xd2, 0x3f, 0x28, 0x25, 4448 "\xea\x17\x0b\x10\xd2\x3f\x28\x25"
4430 0x4f, 0x05, 0x77, 0x02, 0x14, 0x69, 0xf0, 0x2c, 4449 "\x4f\x05\x77\x02\x14\x69\xf0\x2c"
4431 0xbe, 0x0c, 0xf1, 0x74, 0x30, 0xd1, 0xb9, 0x9b, 4450 "\xbe\x0c\xf1\x74\x30\xd1\xb9\x9b"
4432 0xfc, 0x8c, 0xbb, 0x04, 0x16, 0xd9, 0xba, 0xc3, 4451 "\xfc\x8c\xbb\x04\x16\xd9\xba\xc3"
4433 0xbc, 0x91, 0x8a, 0xc4, 0x30, 0xa4, 0xb0, 0x12, 4452 "\xbc\x91\x8a\xc4\x30\xa4\xb0\x12"
4434 0x4c, 0x21, 0x87, 0xcb, 0xc9, 0x1d, 0x16, 0x96, 4453 "\x4c\x21\x87\xcb\xc9\x1d\x16\x96"
4435 0x07, 0x6f, 0x23, 0x54, 0xb9, 0x6f, 0x79, 0xe5, 4454 "\x07\x6f\x23\x54\xb9\x6f\x79\xe5"
4436 0x64, 0xc0, 0x64, 0xda, 0xb1, 0xae, 0xdd, 0x60, 4455 "\x64\xc0\x64\xda\xb1\xae\xdd\x60"
4437 0x6c, 0x1a, 0x9d, 0xd3, 0x04, 0x8e, 0x45, 0xb0, 4456 "\x6c\x1a\x9d\xd3\x04\x8e\x45\xb0"
4438 0x92, 0x61, 0xd0, 0x48, 0x81, 0xed, 0x5e, 0x1d, 4457 "\x92\x61\xd0\x48\x81\xed\x5e\x1d"
4439 0xa0, 0xc9, 0xa4, 0x33, 0xc7, 0x13, 0x51, 0x5d, 4458 "\xa0\xc9\xa4\x33\xc7\x13\x51\x5d"
4440 0x7f, 0x83, 0x73, 0xb6, 0x70, 0x18, 0x65, 0x3e, 4459 "\x7f\x83\x73\xb6\x70\x18\x65\x3e"
4441 0x2f, 0x0e, 0x7a, 0x12, 0x39, 0x98, 0xab, 0xd8, 4460 "\x2f\x0e\x7a\x12\x39\x98\xab\xd8"
4442 0x7e, 0x6f, 0xa3, 0xd1, 0xba, 0x56, 0xad, 0xbd, 4461 "\x7e\x6f\xa3\xd1\xba\x56\xad\xbd"
4443 0xf0, 0x03, 0x01, 0x1c, 0x85, 0x35, 0x9f, 0xeb, 4462 "\xf0\x03\x01\x1c\x85\x35\x9f\xeb"
4444 0x19, 0x63, 0xa1, 0xaf, 0xfe, 0x2d, 0x35, 0x50, 4463 "\x19\x63\xa1\xaf\xfe\x2d\x35\x50"
4445 0x39, 0xa0, 0x65, 0x7c, 0x95, 0x7e, 0x6b, 0xfe, 4464 "\x39\xa0\x65\x7c\x95\x7e\x6b\xfe"
4446 0xc1, 0xac, 0x07, 0x7c, 0x98, 0x4f, 0xbe, 0x57, 4465 "\xc1\xac\x07\x7c\x98\x4f\xbe\x57"
4447 0xa7, 0x22, 0xec, 0xe2, 0x7e, 0x29, 0x09, 0x53, 4466 "\xa7\x22\xec\xe2\x7e\x29\x09\x53"
4448 0xe8, 0xbf, 0xb4, 0x7e, 0x3f, 0x8f, 0xfc, 0x14, 4467 "\xe8\xbf\xb4\x7e\x3f\x8f\xfc\x14"
4449 0xce, 0x54, 0xf9, 0x18, 0x58, 0xb5, 0xff, 0x44, 4468 "\xce\x54\xf9\x18\x58\xb5\xff\x44"
4450 0x05, 0x9d, 0xce, 0x1b, 0xb6, 0x82, 0x23, 0xc8, 4469 "\x05\x9d\xce\x1b\xb6\x82\x23\xc8"
4451 0x2e, 0xbc, 0x69, 0xbb, 0x4a, 0x29, 0x0f, 0x65, 4470 "\x2e\xbc\x69\xbb\x4a\x29\x0f\x65"
4452 0x94, 0xf0, 0x63, 0x06, 0x0e, 0xef, 0x8c, 0xbd, 4471 "\x94\xf0\x63\x06\x0e\xef\x8c\xbd"
4453 0xff, 0xfd, 0xb0, 0x21, 0x6e, 0x57, 0x05, 0x75, 4472 "\xff\xfd\xb0\x21\x6e\x57\x05\x75"
4454 0xda, 0xd5, 0xc4, 0xeb, 0x8d, 0x32, 0xf7, 0x50, 4473 "\xda\xd5\xc4\xeb\x8d\x32\xf7\x50"
4455 0xd3, 0x6f, 0x22, 0xed, 0x5f, 0x8e, 0xa2, 0x5b, 4474 "\xd3\x6f\x22\xed\x5f\x8e\xa2\x5b"
4456 0x80, 0x8c, 0xc8, 0x78, 0x40, 0x24, 0x4b, 0x89, 4475 "\x80\x8c\xc8\x78\x40\x24\x4b\x89"
4457 0x30, 0xce, 0x7a, 0x97, 0x0e, 0xc4, 0xaf, 0xef, 4476 "\x30\xce\x7a\x97\x0e\xc4\xaf\xef"
4458 0x9b, 0xb4, 0xcd, 0x66, 0x74, 0x14, 0x04, 0x2b, 4477 "\x9b\xb4\xcd\x66\x74\x14\x04\x2b"
4459 0xf7, 0xce, 0x0b, 0x1c, 0x6e, 0xc2, 0x78, 0x8c, 4478 "\xf7\xce\x0b\x1c\x6e\xc2\x78\x8c"
4460 0xca, 0xc5, 0xd0, 0x1c, 0x95, 0x4a, 0x91, 0x2d, 4479 "\xca\xc5\xd0\x1c\x95\x4a\x91\x2d"
4461 0xa7, 0x20, 0xeb, 0x86, 0x52, 0xb7, 0x67, 0xd8, 4480 "\xa7\x20\xeb\x86\x52\xb7\x67\xd8"
4462 0x0c, 0xd6, 0x04, 0x14, 0xde, 0x51, 0x74, 0x75, 4481 "\x0c\xd6\x04\x14\xde\x51\x74\x75"
4463 0xe7, 0x11, 0xb4, 0x87, 0xa3, 0x3d, 0x2d, 0xad, 4482 "\xe7\x11\xb4\x87\xa3\x3d\x2d\xad"
4464 0x4f, 0xef, 0xa0, 0x0f, 0x70, 0x00, 0x6d, 0x13, 4483 "\x4f\xef\xa0\x0f\x70\x00\x6d\x13"
4465 0x19, 0x1d, 0x41, 0x50, 0xe9, 0xd8, 0xf0, 0x32, 4484 "\x19\x1d\x41\x50\xe9\xd8\xf0\x32"
4466 0x71, 0xbc, 0xd3, 0x11, 0xf2, 0xac, 0xbe, 0xaf, 4485 "\x71\xbc\xd3\x11\xf2\xac\xbe\xaf"
4467 0x75, 0x46, 0x65, 0x4e, 0x07, 0x34, 0x37, 0xa3, 4486 "\x75\x46\x65\x4e\x07\x34\x37\xa3"
4468 0x89, 0xfe, 0x75, 0xd4, 0x70, 0x4c, 0xc6, 0x3f, 4487 "\x89\xfe\x75\xd4\x70\x4c\xc6\x3f"
4469 0x69, 0x24, 0x0e, 0x38, 0x67, 0x43, 0x8c, 0xde, 4488 "\x69\x24\x0e\x38\x67\x43\x8c\xde"
4470 0x06, 0xb5, 0xb8, 0xe7, 0xc4, 0xf0, 0x41, 0x8f, 4489 "\x06\xb5\xb8\xe7\xc4\xf0\x41\x8f"
4471 0xf0, 0xbd, 0x2f, 0x0b, 0xb9, 0x18, 0xf8, 0xde, 4490 "\xf0\xbd\x2f\x0b\xb9\x18\xf8\xde"
4472 0x64, 0xb1, 0xdb, 0xee, 0x00, 0x50, 0x77, 0xe1, 4491 "\x64\xb1\xdb\xee\x00\x50\x77\xe1"
4473 0xc7, 0xff, 0xa6, 0xfa, 0xdd, 0x70, 0xf4, 0xe3, 4492 "\xc7\xff\xa6\xfa\xdd\x70\xf4\xe3"
4474 0x93, 0xe9, 0x77, 0x35, 0x3d, 0x4b, 0x2f, 0x2b, 4493 "\x93\xe9\x77\x35\x3d\x4b\x2f\x2b"
4475 0x6d, 0x55, 0xf0, 0xfc, 0x88, 0x54, 0x4e, 0x89, 4494 "\x6d\x55\xf0\xfc\x88\x54\x4e\x89"
4476 0xc1, 0x8a, 0x23, 0x31, 0x2d, 0x14, 0x2a, 0xb8, 4495 "\xc1\x8a\x23\x31\x2d\x14\x2a\xb8"
4477 0x1b, 0x15, 0xdd, 0x9e, 0x6e, 0x7b, 0xda, 0x05, 4496 "\x1b\x15\xdd\x9e\x6e\x7b\xda\x05"
4478 0x91, 0x7d, 0x62, 0x64, 0x96, 0x72, 0xde, 0xfc, 4497 "\x91\x7d\x62\x64\x96\x72\xde\xfc"
4479 0xc1, 0xec, 0xf0, 0x23, 0x51, 0x6f, 0xdb, 0x5b, 4498 "\xc1\xec\xf0\x23\x51\x6f\xdb\x5b"
4480 0x1d, 0x08, 0x57, 0xce, 0x09, 0xb8, 0xf6, 0xcd, 4499 "\x1d\x08\x57\xce\x09\xb8\xf6\xcd"
4481 0x8d, 0x95, 0xf2, 0x20, 0xbf, 0x0f, 0x20, 0x57, 4500 "\x8d\x95\xf2\x20\xbf\x0f\x20\x57"
4482 0x98, 0x81, 0x84, 0x4f, 0x15, 0x5c, 0x76, 0xe7, 4501 "\x98\x81\x84\x4f\x15\x5c\x76\xe7"
4483 0x3e, 0x0a, 0x3a, 0x6c, 0xc4, 0x8a, 0xbe, 0x78, 4502 "\x3e\x0a\x3a\x6c\xc4\x8a\xbe\x78"
4484 0x74, 0x77, 0xc3, 0x09, 0x4b, 0x5d, 0x48, 0xe4, 4503 "\x74\x77\xc3\x09\x4b\x5d\x48\xe4"
4485 0xc8, 0xcb, 0x0b, 0xea, 0x17, 0x28, 0xcf, 0xcf, 4504 "\xc8\xcb\x0b\xea\x17\x28\xcf\xcf"
4486 0x31, 0x32, 0x44, 0xa4, 0xe5, 0x0e, 0x1a, 0x98, 4505 "\x31\x32\x44\xa4\xe5\x0e\x1a\x98"
4487 0x94, 0xc4, 0xf0, 0xff, 0xae, 0x3e, 0x44, 0xe8, 4506 "\x94\xc4\xf0\xff\xae\x3e\x44\xe8"
4488 0xa5, 0xb3, 0xb5, 0x37, 0x2f, 0xe8, 0xaf, 0x6f, 4507 "\xa5\xb3\xb5\x37\x2f\xe8\xaf\x6f"
4489 0x28, 0xc1, 0x37, 0x5f, 0x31, 0xd2, 0xb9, 0x33, 4508 "\x28\xc1\x37\x5f\x31\xd2\xb9\x33"
4490 0xb1, 0xb2, 0x52, 0x94, 0x75, 0x2c, 0x29, 0x59, 4509 "\xb1\xb2\x52\x94\x75\x2c\x29\x59"
4491 0x06, 0xc2, 0x25, 0xe8, 0x71, 0x65, 0x4e, 0xed, 4510 "\x06\xc2\x25\xe8\x71\x65\x4e\xed"
4492 0xc0, 0x9c, 0xb1, 0xbb, 0x25, 0xdc, 0x6c, 0xe7, 4511 "\xc0\x9c\xb1\xbb\x25\xdc\x6c\xe7"
4493 0x4b, 0xa5, 0x7a, 0x54, 0x7a, 0x60, 0xff, 0x7a, 4512 "\x4b\xa5\x7a\x54\x7a\x60\xff\x7a"
4494 0xe0, 0x50, 0x40, 0x96, 0x35, 0x63, 0xe4, 0x0b, 4513 "\xe0\x50\x40\x96\x35\x63\xe4\x0b"
4495 0x76, 0xbd, 0xa4, 0x65, 0x00, 0x1b, 0x57, 0x88, 4514 "\x76\xbd\xa4\x65\x00\x1b\x57\x88"
4496 0xae, 0xed, 0x39, 0x88, 0x42, 0x11, 0x3c, 0xed, 4515 "\xae\xed\x39\x88\x42\x11\x3c\xed"
4497 0x85, 0x67, 0x7d, 0xb9, 0x68, 0x82, 0xe9, 0x43, 4516 "\x85\x67\x7d\xb9\x68\x82\xe9\x43"
4498 0x3c, 0x47, 0x53, 0xfa, 0xe8, 0xf8, 0x9f, 0x1f, 4517 "\x3c\x47\x53\xfa\xe8\xf8\x9f\x1f"
4499 0x9f, 0xef, 0x0f, 0xf7, 0x30, 0xd9, 0x30, 0x0e, 4518 "\x9f\xef\x0f\xf7\x30\xd9\x30\x0e"
4500 0xb9, 0x9f, 0x69, 0x18, 0x2f, 0x7e, 0xf8, 0xf8, 4519 "\xb9\x9f\x69\x18\x2f\x7e\xf8\xf8"
4501 0xf8, 0x8c, 0x0f, 0xd4, 0x02, 0x4d, 0xea, 0xcd, 4520 "\xf8\x8c\x0f\xd4\x02\x4d\xea\xcd"
4502 0x0a, 0x9c, 0x6f, 0x71, 0x6d, 0x5a, 0x4c, 0x60, 4521 "\x0a\x9c\x6f\x71\x6d\x5a\x4c\x60"
4503 0xce, 0x20, 0x56, 0x32, 0xc6, 0xc5, 0x99, 0x1f, 4522 "\xce\x20\x56\x32\xc6\xc5\x99\x1f"
4504 0x09, 0xe6, 0x4e, 0x18, 0x1a, 0x15, 0x13, 0xa8, 4523 "\x09\xe6\x4e\x18\x1a\x15\x13\xa8"
4505 0x7d, 0xb1, 0x6b, 0xc0, 0xb2, 0x6d, 0xf8, 0x26, 4524 "\x7d\xb1\x6b\xc0\xb2\x6d\xf8\x26"
4506 0x66, 0xf8, 0x3d, 0x18, 0x74, 0x70, 0x66, 0x7a, 4525 "\x66\xf8\x3d\x18\x74\x70\x66\x7a"
4507 0x34, 0x17, 0xde, 0xba, 0x47, 0xf1, 0x06, 0x18, 4526 "\x34\x17\xde\xba\x47\xf1\x06\x18"
4508 0xcb, 0xaf, 0xeb, 0x4a, 0x1e, 0x8f, 0xa7, 0x77, 4527 "\xcb\xaf\xeb\x4a\x1e\x8f\xa7\x77"
4509 0xe0, 0x3b, 0x78, 0x62, 0x66, 0xc9, 0x10, 0xea, 4528 "\xe0\x3b\x78\x62\x66\xc9\x10\xea"
4510 0x1f, 0xb7, 0x29, 0x0a, 0x45, 0xa1, 0x1d, 0x1e, 4529 "\x1f\xb7\x29\x0a\x45\xa1\x1d\x1e"
4511 0x1d, 0xe2, 0x65, 0x61, 0x50, 0x9c, 0xd7, 0x05, 4530 "\x1d\xe2\x65\x61\x50\x9c\xd7\x05"
4512 0xf2, 0x0b, 0x5b, 0x12, 0x61, 0x02, 0xc8, 0xe5, 4531 "\xf2\x0b\x5b\x12\x61\x02\xc8\xe5"
4513 0x63, 0x4f, 0x20, 0x0c, 0x07, 0x17, 0x33, 0x5e, 4532 "\x63\x4f\x20\x0c\x07\x17\x33\x5e"
4514 0x03, 0x9a, 0x53, 0x0f, 0x2e, 0x55, 0xfe, 0x50, 4533 "\x03\x9a\x53\x0f\x2e\x55\xfe\x50"
4515 0x43, 0x7d, 0xd0, 0xb6, 0x7e, 0x5a, 0xda, 0xae, 4534 "\x43\x7d\xd0\xb6\x7e\x5a\xda\xae"
4516 0x58, 0xef, 0x15, 0xa9, 0x83, 0xd9, 0x46, 0xb1, 4535 "\x58\xef\x15\xa9\x83\xd9\x46\xb1"
4517 0x42, 0xaa, 0xf5, 0x02, 0x6c, 0xce, 0x92, 0x06, 4536 "\x42\xaa\xf5\x02\x6c\xce\x92\x06"
4518 0x1b, 0xdb, 0x66, 0x45, 0x91, 0x79, 0xc2, 0x2d, 4537 "\x1b\xdb\x66\x45\x91\x79\xc2\x2d"
4519 0xe6, 0x53, 0xd3, 0x14, 0xfd, 0xbb, 0x44, 0x63, 4538 "\xe6\x53\xd3\x14\xfd\xbb\x44\x63"
4520 0xc6, 0xd7, 0x3d, 0x7a, 0x0c, 0x75, 0x78, 0x9d, 4539 "\xc6\xd7\x3d\x7a\x0c\x75\x78\x9d"
4521 0x5c, 0xa6, 0x39, 0xb3, 0xe5, 0x63, 0xca, 0x8b, 4540 "\x5c\xa6\x39\xb3\xe5\x63\xca\x8b"
4522 0xfe, 0xd3, 0xef, 0x60, 0x83, 0xf6, 0x8e, 0x70, 4541 "\xfe\xd3\xef\x60\x83\xf6\x8e\x70"
4523 0xb6, 0x67, 0xc7, 0x77, 0xed, 0x23, 0xef, 0x4c, 4542 "\xb6\x67\xc7\x77\xed\x23\xef\x4c"
4524 0xf0, 0xed, 0x2d, 0x07, 0x59, 0x6f, 0xc1, 0x01, 4543 "\xf0\xed\x2d\x07\x59\x6f\xc1\x01"
4525 0x34, 0x37, 0x08, 0xab, 0xd9, 0x1f, 0x09, 0xb1, 4544 "\x34\x37\x08\xab\xd9\x1f\x09\xb1"
4526 0xce, 0x5b, 0x17, 0xff, 0x74, 0xf8, 0x9c, 0xd5, 4545 "\xce\x5b\x17\xff\x74\xf8\x9c\xd5"
4527 0x2c, 0x56, 0x39, 0x79, 0x0f, 0x69, 0x44, 0x75, 4546 "\x2c\x56\x39\x79\x0f\x69\x44\x75"
4528 0x58, 0x27, 0x01, 0xc4, 0xbf, 0xa7, 0xa1, 0x1d, 4547 "\x58\x27\x01\xc4\xbf\xa7\xa1\x1d"
4529 0x90, 0x17, 0x77, 0x86, 0x5a, 0x3f, 0xd9, 0xd1, 4548 "\x90\x17\x77\x86\x5a\x3f\xd9\xd1"
4530 0x0e, 0xa0, 0x10, 0xf8, 0xec, 0x1e, 0xa5, 0x7f, 4549 "\x0e\xa0\x10\xf8\xec\x1e\xa5\x7f"
4531 0x5e, 0x36, 0xd1, 0xe3, 0x04, 0x2c, 0x70, 0xf7, 4550 "\x5e\x36\xd1\xe3\x04\x2c\x70\xf7"
4532 0x8e, 0xc0, 0x98, 0x2f, 0x6c, 0x94, 0x2b, 0x41, 4551 "\x8e\xc0\x98\x2f\x6c\x94\x2b\x41"
4533 0xb7, 0x60, 0x00, 0xb7, 0x2e, 0xb8, 0x02, 0x8d, 4552 "\xb7\x60\x00\xb7\x2e\xb8\x02\x8d"
4534 0xb8, 0xb0, 0xd3, 0x86, 0xba, 0x1d, 0xd7, 0x90, 4553 "\xb8\xb0\xd3\x86\xba\x1d\xd7\x90"
4535 0xd6, 0xb6, 0xe1, 0xfc, 0xd7, 0xd8, 0x28, 0x06, 4554 "\xd6\xb6\xe1\xfc\xd7\xd8\x28\x06"
4536 0x63, 0x9b, 0xce, 0x61, 0x24, 0x79, 0xc0, 0x70, 4555 "\x63\x9b\xce\x61\x24\x79\xc0\x70"
4537 0x52, 0xd0, 0xb6, 0xd4, 0x28, 0x95, 0x24, 0x87, 4556 "\x52\xd0\xb6\xd4\x28\x95\x24\x87"
4538 0x03, 0x1f, 0xb7, 0x9a, 0xda, 0xa3, 0xfb, 0x52, 4557 "\x03\x1f\xb7\x9a\xda\xa3\xfb\x52"
4539 0x5b, 0x68, 0xe7, 0x4c, 0x8c, 0x24, 0xe1, 0x42, 4558 "\x5b\x68\xe7\x4c\x8c\x24\xe1\x42"
4540 0xf7, 0xd5, 0xfd, 0xad, 0x06, 0x32, 0x9f, 0xba, 4559 "\xf7\xd5\xfd\xad\x06\x32\x9f\xba"
4541 0xc1, 0xfc, 0xdd, 0xc6, 0xfc, 0xfc, 0xb3, 0x38, 4560 "\xc1\xfc\xdd\xc6\xfc\xfc\xb3\x38"
4542 0x74, 0x56, 0x58, 0x40, 0x02, 0x37, 0x52, 0x2c, 4561 "\x74\x56\x58\x40\x02\x37\x52\x2c"
4543 0x55, 0xcc, 0xb3, 0x9e, 0x7a, 0xe9, 0xd4, 0x38, 4562 "\x55\xcc\xb3\x9e\x7a\xe9\xd4\x38"
4544 0x41, 0x5e, 0x0c, 0x35, 0xe2, 0x11, 0xd1, 0x13, 4563 "\x41\x5e\x0c\x35\xe2\x11\xd1\x13"
4545 0xf8, 0xb7, 0x8d, 0x72, 0x6b, 0x22, 0x2a, 0xb0, 4564 "\xf8\xb7\x8d\x72\x6b\x22\x2a\xb0"
4546 0xdb, 0x08, 0xba, 0x35, 0xb9, 0x3f, 0xc8, 0xd3, 4565 "\xdb\x08\xba\x35\xb9\x3f\xc8\xd3"
4547 0x24, 0x90, 0xec, 0x58, 0xd2, 0x09, 0xc7, 0x2d, 4566 "\x24\x90\xec\x58\xd2\x09\xc7\x2d"
4548 0xed, 0x38, 0x80, 0x36, 0x72, 0x43, 0x27, 0x49, 4567 "\xed\x38\x80\x36\x72\x43\x27\x49"
4549 0x4a, 0x80, 0x8a, 0xa2, 0xe8, 0xd3, 0xda, 0x30, 4568 "\x4a\x80\x8a\xa2\xe8\xd3\xda\x30"
4550 0x7d, 0xb6, 0x82, 0x37, 0x86, 0x92, 0x86, 0x3e, 4569 "\x7d\xb6\x82\x37\x86\x92\x86\x3e"
4551 0x08, 0xb2, 0x28, 0x5a, 0x55, 0x44, 0x24, 0x7d, 4570 "\x08\xb2\x28\x5a\x55\x44\x24\x7d"
4552 0x40, 0x48, 0x8a, 0xb6, 0x89, 0x58, 0x08, 0xa0, 4571 "\x40\x48\x8a\xb6\x89\x58\x08\xa0"
4553 0xd6, 0x6d, 0x3a, 0x17, 0xbf, 0xf6, 0x54, 0xa2, 4572 "\xd6\x6d\x3a\x17\xbf\xf6\x54\xa2"
4554 0xf5, 0xd3, 0x8c, 0x0f, 0x78, 0x12, 0x57, 0x8b, 4573 "\xf5\xd3\x8c\x0f\x78\x12\x57\x8b"
4555 0xd5, 0xc2, 0xfd, 0x58, 0x5b, 0x7f, 0x38, 0xe3, 4574 "\xd5\xc2\xfd\x58\x5b\x7f\x38\xe3"
4556 0xcc, 0xb7, 0x7c, 0x48, 0xb3, 0x20, 0xe8, 0x81, 4575 "\xcc\xb7\x7c\x48\xb3\x20\xe8\x81"
4557 0x14, 0x32, 0x45, 0x05, 0xe0, 0xdb, 0x9f, 0x75, 4576 "\x14\x32\x45\x05\xe0\xdb\x9f\x75"
4558 0x85, 0xb4, 0x6a, 0xfc, 0x95, 0xe3, 0x54, 0x22, 4577 "\x85\xb4\x6a\xfc\x95\xe3\x54\x22"
4559 0x12, 0xee, 0x30, 0xfe, 0xd8, 0x30, 0xef, 0x34, 4578 "\x12\xee\x30\xfe\xd8\x30\xef\x34"
4560 0x50, 0xab, 0x46, 0x30, 0x98, 0x2f, 0xb7, 0xc0, 4579 "\x50\xab\x46\x30\x98\x2f\xb7\xc0"
4561 0x15, 0xa2, 0x83, 0xb6, 0xf2, 0x06, 0x21, 0xa2, 4580 "\x15\xa2\x83\xb6\xf2\x06\x21\xa2"
4562 0xc3, 0x26, 0x37, 0x14, 0xd1, 0x4d, 0xb5, 0x10, 4581 "\xc3\x26\x37\x14\xd1\x4d\xb5\x10"
4563 0x52, 0x76, 0x4d, 0x6a, 0xee, 0xb5, 0x2b, 0x15, 4582 "\x52\x76\x4d\x6a\xee\xb5\x2b\x15"
4564 0xb7, 0xf9, 0x51, 0xe8, 0x2a, 0xaf, 0xc7, 0xfa, 4583 "\xb7\xf9\x51\xe8\x2a\xaf\xc7\xfa"
4565 0x77, 0xaf, 0xb0, 0x05, 0x4d, 0xd1, 0x68, 0x8e, 4584 "\x77\xaf\xb0\x05\x4d\xd1\x68\x8e"
4566 0x74, 0x05, 0x9f, 0x9d, 0x93, 0xa5, 0x3e, 0x7f, 4585 "\x74\x05\x9f\x9d\x93\xa5\x3e\x7f"
4567 0x4e, 0x5f, 0x9d, 0xcb, 0x09, 0xc7, 0x83, 0xe3, 4586 "\x4e\x5f\x9d\xcb\x09\xc7\x83\xe3"
4568 0x02, 0x9d, 0x27, 0x1f, 0xef, 0x85, 0x05, 0x8d, 4587 "\x02\x9d\x27\x1f\xef\x85\x05\x8d"
4569 0xec, 0x55, 0x88, 0x0f, 0x0d, 0x7c, 0x4c, 0xe8, 4588 "\xec\x55\x88\x0f\x0d\x7c\x4c\xe8"
4570 0xa1, 0x75, 0xa0, 0xd8, 0x06, 0x47, 0x14, 0xef, 4589 "\xa1\x75\xa0\xd8\x06\x47\x14\xef"
4571 0xaa, 0x61, 0xcf, 0x26, 0x15, 0xad, 0xd8, 0xa3, 4590 "\xaa\x61\xcf\x26\x15\xad\xd8\xa3"
4572 0xaa, 0x75, 0xf2, 0x78, 0x4a, 0x5a, 0x61, 0xdf, 4591 "\xaa\x75\xf2\x78\x4a\x5a\x61\xdf"
4573 0x8b, 0xc7, 0x04, 0xbc, 0xb2, 0x32, 0xd2, 0x7e, 4592 "\x8b\xc7\x04\xbc\xb2\x32\xd2\x7e"
4574 0x42, 0xee, 0xb4, 0x2f, 0x51, 0xff, 0x7b, 0x2e, 4593 "\x42\xee\xb4\x2f\x51\xff\x7b\x2e"
4575 0xd3, 0x02, 0xe8, 0xdc, 0x5d, 0x0d, 0x50, 0xdc, 4594 "\xd3\x02\xe8\xdc\x5d\x0d\x50\xdc"
4576 0xae, 0xb7, 0x46, 0xf9, 0xa8, 0xe6, 0xd0, 0x16, 4595 "\xae\xb7\x46\xf9\xa8\xe6\xd0\x16"
4577 0xcc, 0xe6, 0x2c, 0x81, 0xc7, 0xad, 0xe9, 0xf0, 4596 "\xcc\xe6\x2c\x81\xc7\xad\xe9\xf0"
4578 0x05, 0x72, 0x6d, 0x3d, 0x0a, 0x7a, 0xa9, 0x02, 4597 "\x05\x72\x6d\x3d\x0a\x7a\xa9\x02"
4579 0xac, 0x82, 0x93, 0x6e, 0xb6, 0x1c, 0x28, 0xfc, 4598 "\xac\x82\x93\x6e\xb6\x1c\x28\xfc"
4580 0x44, 0x12, 0xfb, 0x73, 0x77, 0xd4, 0x13, 0x39, 4599 "\x44\x12\xfb\x73\x77\xd4\x13\x39"
4581 0x29, 0x88, 0x8a, 0xf3, 0x5c, 0xa6, 0x36, 0xa0, 4600 "\x29\x88\x8a\xf3\x5c\xa6\x36\xa0"
4582 0x2a, 0xed, 0x7e, 0xb1, 0x1d, 0xd6, 0x4c, 0x6b, 4601 "\x2a\xed\x7e\xb1\x1d\xd6\x4c\x6b"
4583 0x41, 0x01, 0x18, 0x5d, 0x5d, 0x07, 0x97, 0xa6, 4602 "\x41\x01\x18\x5d\x5d\x07\x97\xa6"
4584 0x4b, 0xef, 0x31, 0x18, 0xea, 0xac, 0xb1, 0x84, 4603 "\x4b\xef\x31\x18\xea\xac\xb1\x84"
4585 0x21, 0xed, 0xda, 0x86, 4604 "\x21\xed\xda\x86",
4586 },
4587 .rlen = 4100, 4605 .rlen = 4100,
4588 }, 4606 },
4589}; 4607};
4590 4608
4591static struct cipher_testvec aes_ctr_dec_tv_template[] = { 4609static struct cipher_testvec aes_ctr_dec_tv_template[] = {
4592 { /* From RFC 3686 */ 4610 { /* From RFC 3686 */
4593 .key = { 0xae, 0x68, 0x52, 0xf8, 0x12, 0x10, 0x67, 0xcc, 4611 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
4594 0x4b, 0xf7, 0xa5, 0x76, 0x55, 0x77, 0xf3, 0x9e, 4612 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
4595 0x00, 0x00, 0x00, 0x30 }, 4613 "\x00\x00\x00\x30",
4596 .klen = 20, 4614 .klen = 20,
4597 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 4615 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
4598 .input = { 0xe4, 0x09, 0x5d, 0x4f, 0xb7, 0xa7, 0xb3, 0x79, 4616 .input = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
4599 0x2d, 0x61, 0x75, 0xa3, 0x26, 0x13, 0x11, 0xb8 }, 4617 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
4600 .ilen = 16, 4618 .ilen = 16,
4601 .result = { "Single block msg" }, 4619 .result = "Single block msg",
4602 .rlen = 16, 4620 .rlen = 16,
4603 }, { 4621 }, {
4604 .key = { 0x7e, 0x24, 0x06, 0x78, 0x17, 0xfa, 0xe0, 0xd7, 4622 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
4605 0x43, 0xd6, 0xce, 0x1f, 0x32, 0x53, 0x91, 0x63, 4623 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
4606 0x00, 0x6c, 0xb6, 0xdb }, 4624 "\x00\x6c\xb6\xdb",
4607 .klen = 20, 4625 .klen = 20,
4608 .iv = { 0xc0, 0x54, 0x3b, 0x59, 0xda, 0x48, 0xd9, 0x0b }, 4626 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
4609 .input = { 0x51, 0x04, 0xa1, 0x06, 0x16, 0x8a, 0x72, 0xd9, 4627 .input = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
4610 0x79, 0x0d, 0x41, 0xee, 0x8e, 0xda, 0xd3, 0x88, 4628 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
4611 0xeb, 0x2e, 0x1e, 0xfc, 0x46, 0xda, 0x57, 0xc8, 4629 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
4612 0xfc, 0xe6, 0x30, 0xdf, 0x91, 0x41, 0xbe, 0x28 }, 4630 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
4613 .ilen = 32, 4631 .ilen = 32,
4614 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 4632 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4615 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 4633 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4616 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 4634 "\x10\x11\x12\x13\x14\x15\x16\x17"
4617 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 4635 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
4618 .rlen = 32, 4636 .rlen = 32,
4619 }, { 4637 }, {
4620 .key = { 0x16, 0xaf, 0x5b, 0x14, 0x5f, 0xc9, 0xf5, 0x79, 4638 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
4621 0xc1, 0x75, 0xf9, 0x3e, 0x3b, 0xfb, 0x0e, 0xed, 4639 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
4622 0x86, 0x3d, 0x06, 0xcc, 0xfd, 0xb7, 0x85, 0x15, 4640 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
4623 0x00, 0x00, 0x00, 0x48 }, 4641 "\x00\x00\x00\x48",
4624 .klen = 28, 4642 .klen = 28,
4625 .iv = { 0x36, 0x73, 0x3c, 0x14, 0x7d, 0x6d, 0x93, 0xcb }, 4643 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
4626 .input = { 0x4b, 0x55, 0x38, 0x4f, 0xe2, 0x59, 0xc9, 0xc8, 4644 .input = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
4627 0x4e, 0x79, 0x35, 0xa0, 0x03, 0xcb, 0xe9, 0x28 }, 4645 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
4628 .ilen = 16, 4646 .ilen = 16,
4629 .result = { "Single block msg" }, 4647 .result = "Single block msg",
4630 .rlen = 16, 4648 .rlen = 16,
4631 }, { 4649 }, {
4632 .key = { 0x7c, 0x5c, 0xb2, 0x40, 0x1b, 0x3d, 0xc3, 0x3c, 4650 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
4633 0x19, 0xe7, 0x34, 0x08, 0x19, 0xe0, 0xf6, 0x9c, 4651 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
4634 0x67, 0x8c, 0x3d, 0xb8, 0xe6, 0xf6, 0xa9, 0x1a, 4652 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
4635 0x00, 0x96, 0xb0, 0x3b }, 4653 "\x00\x96\xb0\x3b",
4636 .klen = 28, 4654 .klen = 28,
4637 .iv = { 0x02, 0x0c, 0x6e, 0xad, 0xc2, 0xcb, 0x50, 0x0d }, 4655 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
4638 .input = { 0x45, 0x32, 0x43, 0xfc, 0x60, 0x9b, 0x23, 0x32, 4656 .input = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
4639 0x7e, 0xdf, 0xaa, 0xfa, 0x71, 0x31, 0xcd, 0x9f, 4657 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
4640 0x84, 0x90, 0x70, 0x1c, 0x5a, 0xd4, 0xa7, 0x9c, 4658 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
4641 0xfc, 0x1f, 0xe0, 0xff, 0x42, 0xf4, 0xfb, 0x00 }, 4659 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
4642 .ilen = 32, 4660 .ilen = 32,
4643 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 4661 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4644 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 4662 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4645 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 4663 "\x10\x11\x12\x13\x14\x15\x16\x17"
4646 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 4664 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
4647 .rlen = 32, 4665 .rlen = 32,
4648 }, { 4666 }, {
4649 .key = { 0x77, 0x6b, 0xef, 0xf2, 0x85, 0x1d, 0xb0, 0x6f, 4667 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
4650 0x4c, 0x8a, 0x05, 0x42, 0xc8, 0x69, 0x6f, 0x6c, 4668 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
4651 0x6a, 0x81, 0xaf, 0x1e, 0xec, 0x96, 0xb4, 0xd3, 4669 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
4652 0x7f, 0xc1, 0xd6, 0x89, 0xe6, 0xc1, 0xc1, 0x04, 4670 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
4653 0x00, 0x00, 0x00, 0x60 }, 4671 "\x00\x00\x00\x60",
4654 .klen = 36, 4672 .klen = 36,
4655 .iv = { 0xdb, 0x56, 0x72, 0xc9, 0x7a, 0xa8, 0xf0, 0xb2 }, 4673 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
4656 .input = { 0x14, 0x5a, 0xd0, 0x1d, 0xbf, 0x82, 0x4e, 0xc7, 4674 .input = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
4657 0x56, 0x08, 0x63, 0xdc, 0x71, 0xe3, 0xe0, 0xc0 }, 4675 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
4658 .ilen = 16, 4676 .ilen = 16,
4659 .result = { "Single block msg" }, 4677 .result = "Single block msg",
4660 .rlen = 16, 4678 .rlen = 16,
4661 }, { 4679 }, {
4662 .key = { 0xf6, 0xd6, 0x6d, 0x6b, 0xd5, 0x2d, 0x59, 0xbb, 4680 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
4663 0x07, 0x96, 0x36, 0x58, 0x79, 0xef, 0xf8, 0x86, 4681 "\x07\x96\x36\x58\x79\xef\xf8\x86"
4664 0xc6, 0x6d, 0xd5, 0x1a, 0x5b, 0x6a, 0x99, 0x74, 4682 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
4665 0x4b, 0x50, 0x59, 0x0c, 0x87, 0xa2, 0x38, 0x84, 4683 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
4666 0x00, 0xfa, 0xac, 0x24 }, 4684 "\x00\xfa\xac\x24",
4667 .klen = 36, 4685 .klen = 36,
4668 .iv = { 0xc1, 0x58, 0x5e, 0xf1, 0x5a, 0x43, 0xd8, 0x75 }, 4686 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
4669 .input = { 0xf0, 0x5e, 0x23, 0x1b, 0x38, 0x94, 0x61, 0x2c, 4687 .input = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
4670 0x49, 0xee, 0x00, 0x0b, 0x80, 0x4e, 0xb2, 0xa9, 4688 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
4671 0xb8, 0x30, 0x6b, 0x50, 0x8f, 0x83, 0x9d, 0x6a, 4689 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
4672 0x55, 0x30, 0x83, 0x1d, 0x93, 0x44, 0xaf, 0x1c }, 4690 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
4673 .ilen = 32, 4691 .ilen = 32,
4674 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 4692 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4675 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 4693 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4676 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 4694 "\x10\x11\x12\x13\x14\x15\x16\x17"
4677 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 4695 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
4678 .rlen = 32, 4696 .rlen = 32,
4679 }, 4697 },
4680}; 4698};
4681 4699
4682static struct aead_testvec aes_gcm_enc_tv_template[] = { 4700static struct aead_testvec aes_gcm_enc_tv_template[] = {
4683 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */ 4701 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
4702 .key = zeroed_string,
4684 .klen = 16, 4703 .klen = 16,
4685 .result = { 0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61, 4704 .result = "\x58\xe2\xfc\xce\xfa\x7e\x30\x61"
4686 0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a }, 4705 "\x36\x7f\x1d\x57\xa4\xe7\x45\x5a",
4687 .rlen = 16, 4706 .rlen = 16,
4688 }, { 4707 }, {
4708 .key = zeroed_string,
4689 .klen = 16, 4709 .klen = 16,
4710 .input = zeroed_string,
4690 .ilen = 16, 4711 .ilen = 16,
4691 .result = { 0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92, 4712 .result = "\x03\x88\xda\xce\x60\xb6\xa3\x92"
4692 0xf3, 0x28, 0xc2, 0xb9, 0x71, 0xb2, 0xfe, 0x78, 4713 "\xf3\x28\xc2\xb9\x71\xb2\xfe\x78"
4693 0xab, 0x6e, 0x47, 0xd4, 0x2c, 0xec, 0x13, 0xbd, 4714 "\xab\x6e\x47\xd4\x2c\xec\x13\xbd"
4694 0xf5, 0x3a, 0x67, 0xb2, 0x12, 0x57, 0xbd, 0xdf }, 4715 "\xf5\x3a\x67\xb2\x12\x57\xbd\xdf",
4695 .rlen = 32, 4716 .rlen = 32,
4696 }, { 4717 }, {
4697 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4718 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4698 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 }, 4719 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
4699 .klen = 16, 4720 .klen = 16,
4700 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 4721 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4701 0xde, 0xca, 0xf8, 0x88 }, 4722 "\xde\xca\xf8\x88",
4702 .input = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 4723 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4703 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 4724 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4704 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 4725 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4705 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 4726 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4706 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 4727 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4707 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 4728 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4708 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 4729 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4709 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 }, 4730 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
4710 .ilen = 64, 4731 .ilen = 64,
4711 .result = { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 4732 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4712 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 4733 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4713 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 4734 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4714 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 4735 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4715 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 4736 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4716 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 4737 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4717 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 4738 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4718 0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85, 4739 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
4719 0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6, 4740 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
4720 0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4 }, 4741 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
4721 .rlen = 80, 4742 .rlen = 80,
4722 }, { 4743 }, {
4723 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4744 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4724 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 }, 4745 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
4725 .klen = 16, 4746 .klen = 16,
4726 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 4747 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4727 0xde, 0xca, 0xf8, 0x88 }, 4748 "\xde\xca\xf8\x88",
4728 .input = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 4749 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4729 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 4750 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4730 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 4751 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4731 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 4752 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4732 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 4753 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4733 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 4754 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4734 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 4755 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4735 0xba, 0x63, 0x7b, 0x39 }, 4756 "\xba\x63\x7b\x39",
4736 .ilen = 60, 4757 .ilen = 60,
4737 .assoc = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 4758 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4738 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 4759 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4739 0xab, 0xad, 0xda, 0xd2 }, 4760 "\xab\xad\xda\xd2",
4740 .alen = 20, 4761 .alen = 20,
4741 .result = { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 4762 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4742 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 4763 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4743 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 4764 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4744 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 4765 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4745 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 4766 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4746 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 4767 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4747 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 4768 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4748 0x3d, 0x58, 0xe0, 0x91, 4769 "\x3d\x58\xe0\x91"
4749 0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb, 4770 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
4750 0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47 }, 4771 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
4751 .rlen = 76, 4772 .rlen = 76,
4752 }, { 4773 }, {
4774 .key = zeroed_string,
4753 .klen = 24, 4775 .klen = 24,
4754 .result = { 0xcd, 0x33, 0xb2, 0x8a, 0xc7, 0x73, 0xf7, 0x4b, 4776 .result = "\xcd\x33\xb2\x8a\xc7\x73\xf7\x4b"
4755 0xa0, 0x0e, 0xd1, 0xf3, 0x12, 0x57, 0x24, 0x35 }, 4777 "\xa0\x0e\xd1\xf3\x12\x57\x24\x35",
4756 .rlen = 16, 4778 .rlen = 16,
4757 }, { 4779 }, {
4780 .key = zeroed_string,
4758 .klen = 24, 4781 .klen = 24,
4782 .input = zeroed_string,
4759 .ilen = 16, 4783 .ilen = 16,
4760 .result = { 0x98, 0xe7, 0x24, 0x7c, 0x07, 0xf0, 0xfe, 0x41, 4784 .result = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
4761 0x1c, 0x26, 0x7e, 0x43, 0x84, 0xb0, 0xf6, 0x00, 4785 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
4762 0x2f, 0xf5, 0x8d, 0x80, 0x03, 0x39, 0x27, 0xab, 4786 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
4763 0x8e, 0xf4, 0xd4, 0x58, 0x75, 0x14, 0xf0, 0xfb }, 4787 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
4764 .rlen = 32, 4788 .rlen = 32,
4765 }, { 4789 }, {
4766 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4790 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4767 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 4791 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4768 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c }, 4792 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
4769 .klen = 24, 4793 .klen = 24,
4770 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 4794 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4771 0xde, 0xca, 0xf8, 0x88 }, 4795 "\xde\xca\xf8\x88",
4772 .input = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 4796 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4773 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 4797 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4774 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 4798 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4775 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 4799 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4776 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 4800 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4777 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 4801 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4778 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 4802 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4779 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 }, 4803 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
4780 .ilen = 64, 4804 .ilen = 64,
4781 .result = { 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41, 4805 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
4782 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57, 4806 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
4783 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84, 4807 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
4784 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c, 4808 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
4785 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25, 4809 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
4786 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47, 4810 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
4787 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9, 4811 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
4788 0xcc, 0xda, 0x27, 0x10, 0xac, 0xad, 0xe2, 0x56, 4812 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
4789 0x99, 0x24, 0xa7, 0xc8, 0x58, 0x73, 0x36, 0xbf, 4813 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
4790 0xb1, 0x18, 0x02, 0x4d, 0xb8, 0x67, 0x4a, 0x14 }, 4814 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
4791 .rlen = 80, 4815 .rlen = 80,
4792 }, { 4816 }, {
4793 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4817 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4794 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 4818 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4795 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c }, 4819 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
4796 .klen = 24, 4820 .klen = 24,
4797 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 4821 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4798 0xde, 0xca, 0xf8, 0x88 }, 4822 "\xde\xca\xf8\x88",
4799 .input = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 4823 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4800 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 4824 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4801 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 4825 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4802 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 4826 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4803 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 4827 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4804 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 4828 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4805 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 4829 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4806 0xba, 0x63, 0x7b, 0x39 }, 4830 "\xba\x63\x7b\x39",
4807 .ilen = 60, 4831 .ilen = 60,
4808 .assoc = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 4832 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4809 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 4833 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4810 0xab, 0xad, 0xda, 0xd2 }, 4834 "\xab\xad\xda\xd2",
4811 .alen = 20, 4835 .alen = 20,
4812 .result = { 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41, 4836 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
4813 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57, 4837 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
4814 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84, 4838 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
4815 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c, 4839 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
4816 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25, 4840 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
4817 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47, 4841 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
4818 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9, 4842 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
4819 0xcc, 0xda, 0x27, 0x10, 4843 "\xcc\xda\x27\x10"
4820 0x25, 0x19, 0x49, 0x8e, 0x80, 0xf1, 0x47, 0x8f, 4844 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
4821 0x37, 0xba, 0x55, 0xbd, 0x6d, 0x27, 0x61, 0x8c }, 4845 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
4822 .rlen = 76, 4846 .rlen = 76,
4823 .np = 2, 4847 .np = 2,
4824 .tap = { 32, 28 }, 4848 .tap = { 32, 28 },
4825 .anp = 2, 4849 .anp = 2,
4826 .atap = { 8, 12 } 4850 .atap = { 8, 12 }
4827 }, { 4851 }, {
4852 .key = zeroed_string,
4828 .klen = 32, 4853 .klen = 32,
4829 .result = { 0x53, 0x0f, 0x8a, 0xfb, 0xc7, 0x45, 0x36, 0xb9, 4854 .result = "\x53\x0f\x8a\xfb\xc7\x45\x36\xb9"
4830 0xa9, 0x63, 0xb4, 0xf1, 0xc4, 0xcb, 0x73, 0x8b }, 4855 "\xa9\x63\xb4\xf1\xc4\xcb\x73\x8b",
4831 .rlen = 16, 4856 .rlen = 16,
4832 } 4857 }
4833}; 4858};
4834 4859
4835static struct aead_testvec aes_gcm_dec_tv_template[] = { 4860static struct aead_testvec aes_gcm_dec_tv_template[] = {
4836 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */ 4861 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
4862 .key = zeroed_string,
4837 .klen = 32, 4863 .klen = 32,
4838 .input = { 0xce, 0xa7, 0x40, 0x3d, 0x4d, 0x60, 0x6b, 0x6e, 4864 .input = "\xce\xa7\x40\x3d\x4d\x60\x6b\x6e"
4839 0x07, 0x4e, 0xc5, 0xd3, 0xba, 0xf3, 0x9d, 0x18, 4865 "\x07\x4e\xc5\xd3\xba\xf3\x9d\x18"
4840 0xd0, 0xd1, 0xc8, 0xa7, 0x99, 0x99, 0x6b, 0xf0, 4866 "\xd0\xd1\xc8\xa7\x99\x99\x6b\xf0"
4841 0x26, 0x5b, 0x98, 0xb5, 0xd4, 0x8a, 0xb9, 0x19 }, 4867 "\x26\x5b\x98\xb5\xd4\x8a\xb9\x19",
4842 .ilen = 32, 4868 .ilen = 32,
4869 .result = zeroed_string,
4843 .rlen = 16, 4870 .rlen = 16,
4844 }, { 4871 }, {
4845 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4872 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4846 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 4873 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4847 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4874 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4848 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 }, 4875 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
4849 .klen = 32, 4876 .klen = 32,
4850 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 4877 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4851 0xde, 0xca, 0xf8, 0x88 }, 4878 "\xde\xca\xf8\x88",
4852 .input = { 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07, 4879 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
4853 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d, 4880 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
4854 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9, 4881 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
4855 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa, 4882 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
4856 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d, 4883 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
4857 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38, 4884 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
4858 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a, 4885 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
4859 0xbc, 0xc9, 0xf6, 0x62, 0x89, 0x80, 0x15, 0xad, 4886 "\xbc\xc9\xf6\x62\x89\x80\x15\xad"
4860 0xb0, 0x94, 0xda, 0xc5, 0xd9, 0x34, 0x71, 0xbd, 4887 "\xb0\x94\xda\xc5\xd9\x34\x71\xbd"
4861 0xec, 0x1a, 0x50, 0x22, 0x70, 0xe3, 0xcc, 0x6c }, 4888 "\xec\x1a\x50\x22\x70\xe3\xcc\x6c",
4862 .ilen = 80, 4889 .ilen = 80,
4863 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 4890 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4864 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 4891 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4865 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 4892 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4866 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 4893 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4867 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 4894 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4868 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 4895 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4869 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 4896 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4870 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 }, 4897 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
4871 .rlen = 64, 4898 .rlen = 64,
4872 }, { 4899 }, {
4873 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4900 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4874 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 4901 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4875 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4902 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4876 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 }, 4903 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
4877 .klen = 32, 4904 .klen = 32,
4878 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 4905 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4879 0xde, 0xca, 0xf8, 0x88 }, 4906 "\xde\xca\xf8\x88",
4880 .input = { 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07, 4907 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
4881 0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d, 4908 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
4882 0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9, 4909 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
4883 0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa, 4910 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
4884 0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d, 4911 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
4885 0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38, 4912 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
4886 0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a, 4913 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
4887 0xbc, 0xc9, 0xf6, 0x62, 4914 "\xbc\xc9\xf6\x62"
4888 0x76, 0xfc, 0x6e, 0xce, 0x0f, 0x4e, 0x17, 0x68, 4915 "\x76\xfc\x6e\xce\x0f\x4e\x17\x68"
4889 0xcd, 0xdf, 0x88, 0x53, 0xbb, 0x2d, 0x55, 0x1b }, 4916 "\xcd\xdf\x88\x53\xbb\x2d\x55\x1b",
4890 .ilen = 76, 4917 .ilen = 76,
4891 .assoc = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 4918 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4892 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 4919 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4893 0xab, 0xad, 0xda, 0xd2 }, 4920 "\xab\xad\xda\xd2",
4894 .alen = 20, 4921 .alen = 20,
4895 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 4922 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4896 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 4923 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4897 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 4924 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4898 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 4925 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4899 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 4926 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4900 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 4927 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4901 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 4928 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4902 0xba, 0x63, 0x7b, 0x39 }, 4929 "\xba\x63\x7b\x39",
4903 .rlen = 60, 4930 .rlen = 60,
4904 .np = 2, 4931 .np = 2,
4905 .tap = { 48, 28 }, 4932 .tap = { 48, 28 },
4906 .anp = 3, 4933 .anp = 3,
4907 .atap = { 8, 8, 4 } 4934 .atap = { 8, 8, 4 }
4908 }, { 4935 }, {
4909 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4936 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4910 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 }, 4937 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
4911 .klen = 16, 4938 .klen = 16,
4912 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 4939 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4913 0xde, 0xca, 0xf8, 0x88 }, 4940 "\xde\xca\xf8\x88",
4914 .input = { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 4941 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4915 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 4942 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4916 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 4943 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4917 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 4944 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4918 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 4945 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4919 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 4946 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4920 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 4947 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4921 0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85, 4948 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
4922 0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6, 4949 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
4923 0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4 }, 4950 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
4924 .ilen = 80, 4951 .ilen = 80,
4925 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 4952 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4926 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 4953 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4927 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 4954 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4928 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 4955 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4929 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 4956 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4930 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 4957 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4931 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 4958 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4932 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 }, 4959 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
4933 .rlen = 64, 4960 .rlen = 64,
4934 }, { 4961 }, {
4935 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 4962 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4936 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 }, 4963 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
4937 .klen = 16, 4964 .klen = 16,
4938 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 4965 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4939 0xde, 0xca, 0xf8, 0x88 }, 4966 "\xde\xca\xf8\x88",
4940 .input = { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, 4967 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4941 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, 4968 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4942 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, 4969 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4943 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, 4970 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4944 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, 4971 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4945 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, 4972 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4946 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, 4973 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4947 0x3d, 0x58, 0xe0, 0x91, 4974 "\x3d\x58\xe0\x91"
4948 0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb, 4975 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
4949 0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47 }, 4976 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
4950 .ilen = 76, 4977 .ilen = 76,
4951 .assoc = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 4978 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4952 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 4979 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4953 0xab, 0xad, 0xda, 0xd2 }, 4980 "\xab\xad\xda\xd2",
4954 .alen = 20, 4981 .alen = 20,
4955 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 4982 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4956 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 4983 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4957 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 4984 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4958 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 4985 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4959 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 4986 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4960 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 4987 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4961 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 4988 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4962 0xba, 0x63, 0x7b, 0x39 }, 4989 "\xba\x63\x7b\x39",
4963 .rlen = 60, 4990 .rlen = 60,
4964 }, { 4991 }, {
4992 .key = zeroed_string,
4965 .klen = 24, 4993 .klen = 24,
4966 .input = { 0x98, 0xe7, 0x24, 0x7c, 0x07, 0xf0, 0xfe, 0x41, 4994 .input = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
4967 0x1c, 0x26, 0x7e, 0x43, 0x84, 0xb0, 0xf6, 0x00, 4995 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
4968 0x2f, 0xf5, 0x8d, 0x80, 0x03, 0x39, 0x27, 0xab, 4996 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
4969 0x8e, 0xf4, 0xd4, 0x58, 0x75, 0x14, 0xf0, 0xfb }, 4997 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
4970 .ilen = 32, 4998 .ilen = 32,
4999 .result = zeroed_string,
4971 .rlen = 16, 5000 .rlen = 16,
4972 }, { 5001 }, {
4973 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 5002 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4974 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 5003 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4975 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c }, 5004 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
4976 .klen = 24, 5005 .klen = 24,
4977 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 5006 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4978 0xde, 0xca, 0xf8, 0x88 }, 5007 "\xde\xca\xf8\x88",
4979 .input = { 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41, 5008 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
4980 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57, 5009 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
4981 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84, 5010 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
4982 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c, 5011 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
4983 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25, 5012 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
4984 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47, 5013 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
4985 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9, 5014 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
4986 0xcc, 0xda, 0x27, 0x10, 0xac, 0xad, 0xe2, 0x56, 5015 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
4987 0x99, 0x24, 0xa7, 0xc8, 0x58, 0x73, 0x36, 0xbf, 5016 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
4988 0xb1, 0x18, 0x02, 0x4d, 0xb8, 0x67, 0x4a, 0x14 }, 5017 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
4989 .ilen = 80, 5018 .ilen = 80,
4990 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 5019 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4991 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 5020 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4992 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 5021 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4993 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 5022 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4994 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 5023 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4995 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 5024 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4996 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 5025 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4997 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 }, 5026 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
4998 .rlen = 64, 5027 .rlen = 64,
4999 }, { 5028 }, {
5000 .key = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 5029 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5001 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 5030 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5002 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c }, 5031 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
5003 .klen = 24, 5032 .klen = 24,
5004 .iv = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, 5033 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5005 0xde, 0xca, 0xf8, 0x88 }, 5034 "\xde\xca\xf8\x88",
5006 .input = { 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41, 5035 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5007 0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57, 5036 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5008 0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84, 5037 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5009 0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c, 5038 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5010 0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25, 5039 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5011 0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47, 5040 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5012 0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9, 5041 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5013 0xcc, 0xda, 0x27, 0x10, 5042 "\xcc\xda\x27\x10"
5014 0x25, 0x19, 0x49, 0x8e, 0x80, 0xf1, 0x47, 0x8f, 5043 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5015 0x37, 0xba, 0x55, 0xbd, 0x6d, 0x27, 0x61, 0x8c }, 5044 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
5016 .ilen = 76, 5045 .ilen = 76,
5017 .assoc = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 5046 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5018 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, 5047 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5019 0xab, 0xad, 0xda, 0xd2 }, 5048 "\xab\xad\xda\xd2",
5020 .alen = 20, 5049 .alen = 20,
5021 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, 5050 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5022 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, 5051 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5023 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, 5052 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5024 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, 5053 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5025 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, 5054 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5026 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, 5055 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5027 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, 5056 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5028 0xba, 0x63, 0x7b, 0x39 }, 5057 "\xba\x63\x7b\x39",
5029 .rlen = 60, 5058 .rlen = 60,
5030 } 5059 }
5031}; 5060};
5032 5061
5033static struct aead_testvec aes_ccm_enc_tv_template[] = { 5062static struct aead_testvec aes_ccm_enc_tv_template[] = {
5034 { /* From RFC 3610 */ 5063 { /* From RFC 3610 */
5035 .key = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 5064 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5036 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }, 5065 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
5037 .klen = 16, 5066 .klen = 16,
5038 .iv = { 0x01, 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 5067 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5039 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 }, 5068 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5040 .assoc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, 5069 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
5041 .alen = 8, 5070 .alen = 8,
5042 .input = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 5071 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5043 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 5072 "\x10\x11\x12\x13\x14\x15\x16\x17"
5044 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e }, 5073 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
5045 .ilen = 23, 5074 .ilen = 23,
5046 .result = { 0x58, 0x8c, 0x97, 0x9a, 0x61, 0xc6, 0x63, 0xd2, 5075 .result = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5047 0xf0, 0x66, 0xd0, 0xc2, 0xc0, 0xf9, 0x89, 0x80, 5076 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5048 0x6d, 0x5f, 0x6b, 0x61, 0xda, 0xc3, 0x84, 0x17, 5077 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5049 0xe8, 0xd1, 0x2c, 0xfd, 0xf9, 0x26, 0xe0 }, 5078 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
5050 .rlen = 31, 5079 .rlen = 31,
5051 }, { 5080 }, {
5052 .key = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 5081 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5053 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }, 5082 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
5054 .klen = 16, 5083 .klen = 16,
5055 .iv = { 0x01, 0x00, 0x00, 0x00, 0x07, 0x06, 0x05, 0x04, 5084 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5056 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 }, 5085 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5057 .assoc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 5086 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5058 0x08, 0x09, 0x0a, 0x0b }, 5087 "\x08\x09\x0a\x0b",
5059 .alen = 12, 5088 .alen = 12,
5060 .input = { 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 5089 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5061 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 5090 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5062 0x1c, 0x1d, 0x1e, 0x1f }, 5091 "\x1c\x1d\x1e\x1f",
5063 .ilen = 20, 5092 .ilen = 20,
5064 .result = { 0xdc, 0xf1, 0xfb, 0x7b, 0x5d, 0x9e, 0x23, 0xfb, 5093 .result = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5065 0x9d, 0x4e, 0x13, 0x12, 0x53, 0x65, 0x8a, 0xd8, 5094 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5066 0x6e, 0xbd, 0xca, 0x3e, 0x51, 0xe8, 0x3f, 0x07, 5095 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5067 0x7d, 0x9c, 0x2d, 0x93 }, 5096 "\x7d\x9c\x2d\x93",
5068 .rlen = 28, 5097 .rlen = 28,
5069 }, { 5098 }, {
5070 .key = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 5099 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5071 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }, 5100 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
5072 .klen = 16, 5101 .klen = 16,
5073 .iv = { 0x01, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x09, 0x08, 5102 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5074 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 }, 5103 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5075 .assoc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, 5104 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
5076 .alen = 8, 5105 .alen = 8,
5077 .input = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 5106 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5078 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 5107 "\x10\x11\x12\x13\x14\x15\x16\x17"
5079 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 5108 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5080 0x20 }, 5109 "\x20",
5081 .ilen = 25, 5110 .ilen = 25,
5082 .result = { 0x82, 0x53, 0x1a, 0x60, 0xcc, 0x24, 0x94, 0x5a, 5111 .result = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5083 0x4b, 0x82, 0x79, 0x18, 0x1a, 0xb5, 0xc8, 0x4d, 5112 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5084 0xf2, 0x1c, 0xe7, 0xf9, 0xb7, 0x3f, 0x42, 0xe1, 5113 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5085 0x97, 0xea, 0x9c, 0x07, 0xe5, 0x6b, 0x5e, 0xb1, 5114 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5086 0x7e, 0x5f, 0x4e }, 5115 "\x7e\x5f\x4e",
5087 .rlen = 35, 5116 .rlen = 35,
5088 }, { 5117 }, {
5089 .key = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 5118 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5090 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }, 5119 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
5091 .klen = 16, 5120 .klen = 16,
5092 .iv = { 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0b, 0x0a, 0x09, 5121 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5093 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 }, 5122 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5094 .assoc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 5123 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5095 0x08, 0x09, 0x0a, 0x0b }, 5124 "\x08\x09\x0a\x0b",
5096 .alen = 12, 5125 .alen = 12,
5097 .input = { 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 5126 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5098 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 5127 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5099 0x1c, 0x1d, 0x1e }, 5128 "\x1c\x1d\x1e",
5100 .ilen = 19, 5129 .ilen = 19,
5101 .result = { 0x07, 0x34, 0x25, 0x94, 0x15, 0x77, 0x85, 0x15, 5130 .result = "\x07\x34\x25\x94\x15\x77\x85\x15"
5102 0x2b, 0x07, 0x40, 0x98, 0x33, 0x0a, 0xbb, 0x14, 5131 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5103 0x1b, 0x94, 0x7b, 0x56, 0x6a, 0xa9, 0x40, 0x6b, 5132 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5104 0x4d, 0x99, 0x99, 0x88, 0xdd }, 5133 "\x4d\x99\x99\x88\xdd",
5105 .rlen = 29, 5134 .rlen = 29,
5106 }, { 5135 }, {
5107 .key = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3, 5136 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5108 0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b }, 5137 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
5109 .klen = 16, 5138 .klen = 16,
5110 .iv = { 0x01, 0x00, 0x33, 0x56, 0x8e, 0xf7, 0xb2, 0x63, 5139 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5111 0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 }, 5140 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5112 .assoc = { 0x63, 0x01, 0x8f, 0x76, 0xdc, 0x8a, 0x1b, 0xcb }, 5141 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
5113 .alen = 8, 5142 .alen = 8,
5114 .input = { 0x90, 0x20, 0xea, 0x6f, 0x91, 0xbd, 0xd8, 0x5a, 5143 .input = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5115 0xfa, 0x00, 0x39, 0xba, 0x4b, 0xaf, 0xf9, 0xbf, 5144 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5116 0xb7, 0x9c, 0x70, 0x28, 0x94, 0x9c, 0xd0, 0xec }, 5145 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
5117 .ilen = 24, 5146 .ilen = 24,
5118 .result = { 0x4c, 0xcb, 0x1e, 0x7c, 0xa9, 0x81, 0xbe, 0xfa, 5147 .result = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5119 0xa0, 0x72, 0x6c, 0x55, 0xd3, 0x78, 0x06, 0x12, 5148 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5120 0x98, 0xc8, 0x5c, 0x92, 0x81, 0x4a, 0xbc, 0x33, 5149 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5121 0xc5, 0x2e, 0xe8, 0x1d, 0x7d, 0x77, 0xc0, 0x8a }, 5150 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
5122 .rlen = 32, 5151 .rlen = 32,
5123 }, { 5152 }, {
5124 .key = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3, 5153 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5125 0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b }, 5154 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
5126 .klen = 16, 5155 .klen = 16,
5127 .iv = { 0x01, 0x00, 0xd5, 0x60, 0x91, 0x2d, 0x3f, 0x70, 5156 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5128 0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 }, 5157 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5129 .assoc = { 0xcd, 0x90, 0x44, 0xd2, 0xb7, 0x1f, 0xdb, 0x81, 5158 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5130 0x20, 0xea, 0x60, 0xc0 }, 5159 "\x20\xea\x60\xc0",
5131 .alen = 12, 5160 .alen = 12,
5132 .input = { 0x64, 0x35, 0xac, 0xba, 0xfb, 0x11, 0xa8, 0x2e, 5161 .input = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5133 0x2f, 0x07, 0x1d, 0x7c, 0xa4, 0xa5, 0xeb, 0xd9, 5162 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5134 0x3a, 0x80, 0x3b, 0xa8, 0x7f }, 5163 "\x3a\x80\x3b\xa8\x7f",
5135 .ilen = 21, 5164 .ilen = 21,
5136 .result = { 0x00, 0x97, 0x69, 0xec, 0xab, 0xdf, 0x48, 0x62, 5165 .result = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5137 0x55, 0x94, 0xc5, 0x92, 0x51, 0xe6, 0x03, 0x57, 5166 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5138 0x22, 0x67, 0x5e, 0x04, 0xc8, 0x47, 0x09, 0x9e, 5167 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5139 0x5a, 0xe0, 0x70, 0x45, 0x51 }, 5168 "\x5a\xe0\x70\x45\x51",
5140 .rlen = 29, 5169 .rlen = 29,
5141 }, { 5170 }, {
5142 .key = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3, 5171 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5143 0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b }, 5172 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
5144 .klen = 16, 5173 .klen = 16,
5145 .iv = { 0x01, 0x00, 0x42, 0xff, 0xf8, 0xf1, 0x95, 0x1c, 5174 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5146 0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 }, 5175 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5147 .assoc = { 0xd8, 0x5b, 0xc7, 0xe6, 0x9f, 0x94, 0x4f, 0xb8 }, 5176 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
5148 .alen = 8, 5177 .alen = 8,
5149 .input = { 0x8a, 0x19, 0xb9, 0x50, 0xbc, 0xf7, 0x1a, 0x01, 5178 .input = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5150 0x8e, 0x5e, 0x67, 0x01, 0xc9, 0x17, 0x87, 0x65, 5179 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5151 0x98, 0x09, 0xd6, 0x7d, 0xbe, 0xdd, 0x18 }, 5180 "\x98\x09\xd6\x7d\xbe\xdd\x18",
5152 .ilen = 23, 5181 .ilen = 23,
5153 .result = { 0xbc, 0x21, 0x8d, 0xaa, 0x94, 0x74, 0x27, 0xb6, 5182 .result = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5154 0xdb, 0x38, 0x6a, 0x99, 0xac, 0x1a, 0xef, 0x23, 5183 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5155 0xad, 0xe0, 0xb5, 0x29, 0x39, 0xcb, 0x6a, 0x63, 5184 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5156 0x7c, 0xf9, 0xbe, 0xc2, 0x40, 0x88, 0x97, 0xc6, 5185 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5157 0xba }, 5186 "\xba",
5158 .rlen = 33, 5187 .rlen = 33,
5159 }, 5188 },
5160}; 5189};
5161 5190
5162static struct aead_testvec aes_ccm_dec_tv_template[] = { 5191static struct aead_testvec aes_ccm_dec_tv_template[] = {
5163 { /* From RFC 3610 */ 5192 { /* From RFC 3610 */
5164 .key = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 5193 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5165 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }, 5194 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
5166 .klen = 16, 5195 .klen = 16,
5167 .iv = { 0x01, 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 5196 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5168 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 }, 5197 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5169 .assoc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, 5198 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
5170 .alen = 8, 5199 .alen = 8,
5171 .input = { 0x58, 0x8c, 0x97, 0x9a, 0x61, 0xc6, 0x63, 0xd2, 5200 .input = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5172 0xf0, 0x66, 0xd0, 0xc2, 0xc0, 0xf9, 0x89, 0x80, 5201 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5173 0x6d, 0x5f, 0x6b, 0x61, 0xda, 0xc3, 0x84, 0x17, 5202 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5174 0xe8, 0xd1, 0x2c, 0xfd, 0xf9, 0x26, 0xe0 }, 5203 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
5175 .ilen = 31, 5204 .ilen = 31,
5176 .result = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 5205 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5177 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 5206 "\x10\x11\x12\x13\x14\x15\x16\x17"
5178 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e }, 5207 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
5179 .rlen = 23, 5208 .rlen = 23,
5180 }, { 5209 }, {
5181 .key = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 5210 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5182 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }, 5211 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
5183 .klen = 16, 5212 .klen = 16,
5184 .iv = { 0x01, 0x00, 0x00, 0x00, 0x07, 0x06, 0x05, 0x04, 5213 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5185 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 }, 5214 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5186 .assoc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 5215 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5187 0x08, 0x09, 0x0a, 0x0b }, 5216 "\x08\x09\x0a\x0b",
5188 .alen = 12, 5217 .alen = 12,
5189 .input = { 0xdc, 0xf1, 0xfb, 0x7b, 0x5d, 0x9e, 0x23, 0xfb, 5218 .input = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5190 0x9d, 0x4e, 0x13, 0x12, 0x53, 0x65, 0x8a, 0xd8, 5219 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5191 0x6e, 0xbd, 0xca, 0x3e, 0x51, 0xe8, 0x3f, 0x07, 5220 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5192 0x7d, 0x9c, 0x2d, 0x93 }, 5221 "\x7d\x9c\x2d\x93",
5193 .ilen = 28, 5222 .ilen = 28,
5194 .result = { 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 5223 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5195 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 5224 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5196 0x1c, 0x1d, 0x1e, 0x1f }, 5225 "\x1c\x1d\x1e\x1f",
5197 .rlen = 20, 5226 .rlen = 20,
5198 }, { 5227 }, {
5199 .key = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 5228 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5200 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }, 5229 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
5201 .klen = 16, 5230 .klen = 16,
5202 .iv = { 0x01, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x09, 0x08, 5231 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5203 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 }, 5232 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5204 .assoc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, 5233 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
5205 .alen = 8, 5234 .alen = 8,
5206 .input = { 0x82, 0x53, 0x1a, 0x60, 0xcc, 0x24, 0x94, 0x5a, 5235 .input = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5207 0x4b, 0x82, 0x79, 0x18, 0x1a, 0xb5, 0xc8, 0x4d, 5236 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5208 0xf2, 0x1c, 0xe7, 0xf9, 0xb7, 0x3f, 0x42, 0xe1, 5237 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5209 0x97, 0xea, 0x9c, 0x07, 0xe5, 0x6b, 0x5e, 0xb1, 5238 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5210 0x7e, 0x5f, 0x4e }, 5239 "\x7e\x5f\x4e",
5211 .ilen = 35, 5240 .ilen = 35,
5212 .result = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 5241 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5213 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 5242 "\x10\x11\x12\x13\x14\x15\x16\x17"
5214 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 5243 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5215 0x20 }, 5244 "\x20",
5216 .rlen = 25, 5245 .rlen = 25,
5217 }, { 5246 }, {
5218 .key = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 5247 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5219 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf }, 5248 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
5220 .klen = 16, 5249 .klen = 16,
5221 .iv = { 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0b, 0x0a, 0x09, 5250 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5222 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 }, 5251 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5223 .assoc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 5252 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5224 0x08, 0x09, 0x0a, 0x0b }, 5253 "\x08\x09\x0a\x0b",
5225 .alen = 12, 5254 .alen = 12,
5226 .input = { 0x07, 0x34, 0x25, 0x94, 0x15, 0x77, 0x85, 0x15, 5255 .input = "\x07\x34\x25\x94\x15\x77\x85\x15"
5227 0x2b, 0x07, 0x40, 0x98, 0x33, 0x0a, 0xbb, 0x14, 5256 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5228 0x1b, 0x94, 0x7b, 0x56, 0x6a, 0xa9, 0x40, 0x6b, 5257 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5229 0x4d, 0x99, 0x99, 0x88, 0xdd }, 5258 "\x4d\x99\x99\x88\xdd",
5230 .ilen = 29, 5259 .ilen = 29,
5231 .result = { 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 5260 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5232 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 5261 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5233 0x1c, 0x1d, 0x1e }, 5262 "\x1c\x1d\x1e",
5234 .rlen = 19, 5263 .rlen = 19,
5235 }, { 5264 }, {
5236 .key = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3, 5265 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5237 0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b }, 5266 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
5238 .klen = 16, 5267 .klen = 16,
5239 .iv = { 0x01, 0x00, 0x33, 0x56, 0x8e, 0xf7, 0xb2, 0x63, 5268 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5240 0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 }, 5269 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5241 .assoc = { 0x63, 0x01, 0x8f, 0x76, 0xdc, 0x8a, 0x1b, 0xcb }, 5270 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
5242 .alen = 8, 5271 .alen = 8,
5243 .input = { 0x4c, 0xcb, 0x1e, 0x7c, 0xa9, 0x81, 0xbe, 0xfa, 5272 .input = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5244 0xa0, 0x72, 0x6c, 0x55, 0xd3, 0x78, 0x06, 0x12, 5273 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5245 0x98, 0xc8, 0x5c, 0x92, 0x81, 0x4a, 0xbc, 0x33, 5274 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5246 0xc5, 0x2e, 0xe8, 0x1d, 0x7d, 0x77, 0xc0, 0x8a }, 5275 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
5247 .ilen = 32, 5276 .ilen = 32,
5248 .result = { 0x90, 0x20, 0xea, 0x6f, 0x91, 0xbd, 0xd8, 0x5a, 5277 .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5249 0xfa, 0x00, 0x39, 0xba, 0x4b, 0xaf, 0xf9, 0xbf, 5278 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5250 0xb7, 0x9c, 0x70, 0x28, 0x94, 0x9c, 0xd0, 0xec }, 5279 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
5251 .rlen = 24, 5280 .rlen = 24,
5252 }, { 5281 }, {
5253 .key = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3, 5282 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5254 0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b }, 5283 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
5255 .klen = 16, 5284 .klen = 16,
5256 .iv = { 0x01, 0x00, 0xd5, 0x60, 0x91, 0x2d, 0x3f, 0x70, 5285 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5257 0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 }, 5286 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5258 .assoc = { 0xcd, 0x90, 0x44, 0xd2, 0xb7, 0x1f, 0xdb, 0x81, 5287 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5259 0x20, 0xea, 0x60, 0xc0 }, 5288 "\x20\xea\x60\xc0",
5260 .alen = 12, 5289 .alen = 12,
5261 .input = { 0x00, 0x97, 0x69, 0xec, 0xab, 0xdf, 0x48, 0x62, 5290 .input = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5262 0x55, 0x94, 0xc5, 0x92, 0x51, 0xe6, 0x03, 0x57, 5291 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5263 0x22, 0x67, 0x5e, 0x04, 0xc8, 0x47, 0x09, 0x9e, 5292 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5264 0x5a, 0xe0, 0x70, 0x45, 0x51 }, 5293 "\x5a\xe0\x70\x45\x51",
5265 .ilen = 29, 5294 .ilen = 29,
5266 .result = { 0x64, 0x35, 0xac, 0xba, 0xfb, 0x11, 0xa8, 0x2e, 5295 .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5267 0x2f, 0x07, 0x1d, 0x7c, 0xa4, 0xa5, 0xeb, 0xd9, 5296 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5268 0x3a, 0x80, 0x3b, 0xa8, 0x7f }, 5297 "\x3a\x80\x3b\xa8\x7f",
5269 .rlen = 21, 5298 .rlen = 21,
5270 }, { 5299 }, {
5271 .key = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3, 5300 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5272 0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b }, 5301 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
5273 .klen = 16, 5302 .klen = 16,
5274 .iv = { 0x01, 0x00, 0x42, 0xff, 0xf8, 0xf1, 0x95, 0x1c, 5303 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5275 0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 }, 5304 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5276 .assoc = { 0xd8, 0x5b, 0xc7, 0xe6, 0x9f, 0x94, 0x4f, 0xb8 }, 5305 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
5277 .alen = 8, 5306 .alen = 8,
5278 .input = { 0xbc, 0x21, 0x8d, 0xaa, 0x94, 0x74, 0x27, 0xb6, 5307 .input = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5279 0xdb, 0x38, 0x6a, 0x99, 0xac, 0x1a, 0xef, 0x23, 5308 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5280 0xad, 0xe0, 0xb5, 0x29, 0x39, 0xcb, 0x6a, 0x63, 5309 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5281 0x7c, 0xf9, 0xbe, 0xc2, 0x40, 0x88, 0x97, 0xc6, 5310 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5282 0xba }, 5311 "\xba",
5283 .ilen = 33, 5312 .ilen = 33,
5284 .result = { 0x8a, 0x19, 0xb9, 0x50, 0xbc, 0xf7, 0x1a, 0x01, 5313 .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5285 0x8e, 0x5e, 0x67, 0x01, 0xc9, 0x17, 0x87, 0x65, 5314 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5286 0x98, 0x09, 0xd6, 0x7d, 0xbe, 0xdd, 0x18 }, 5315 "\x98\x09\xd6\x7d\xbe\xdd\x18",
5287 .rlen = 23, 5316 .rlen = 23,
5288 }, 5317 },
5289}; 5318};
@@ -5294,54 +5323,54 @@ static struct aead_testvec aes_ccm_dec_tv_template[] = {
5294 5323
5295static struct cipher_testvec cast5_enc_tv_template[] = { 5324static struct cipher_testvec cast5_enc_tv_template[] = {
5296 { 5325 {
5297 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 5326 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5298 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9a }, 5327 "\x23\x45\x67\x89\x34\x56\x78\x9a",
5299 .klen = 16, 5328 .klen = 16,
5300 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5329 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5301 .ilen = 8, 5330 .ilen = 8,
5302 .result = { 0x23, 0x8b, 0x4f, 0xe5, 0x84, 0x7e, 0x44, 0xb2 }, 5331 .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
5303 .rlen = 8, 5332 .rlen = 8,
5304 }, { 5333 }, {
5305 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 5334 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5306 0x23, 0x45 }, 5335 "\x23\x45",
5307 .klen = 10, 5336 .klen = 10,
5308 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5337 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5309 .ilen = 8, 5338 .ilen = 8,
5310 .result = { 0xeb, 0x6a, 0x71, 0x1a, 0x2c, 0x02, 0x27, 0x1b }, 5339 .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
5311 .rlen = 8, 5340 .rlen = 8,
5312 }, { 5341 }, {
5313 .key = { 0x01, 0x23, 0x45, 0x67, 0x12 }, 5342 .key = "\x01\x23\x45\x67\x12",
5314 .klen = 5, 5343 .klen = 5,
5315 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5344 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5316 .ilen = 8, 5345 .ilen = 8,
5317 .result = { 0x7a, 0xc8, 0x16, 0xd1, 0x6e, 0x9b, 0x30, 0x2e }, 5346 .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
5318 .rlen = 8, 5347 .rlen = 8,
5319 }, 5348 },
5320}; 5349};
5321 5350
5322static struct cipher_testvec cast5_dec_tv_template[] = { 5351static struct cipher_testvec cast5_dec_tv_template[] = {
5323 { 5352 {
5324 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 5353 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5325 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9a }, 5354 "\x23\x45\x67\x89\x34\x56\x78\x9a",
5326 .klen = 16, 5355 .klen = 16,
5327 .input = { 0x23, 0x8b, 0x4f, 0xe5, 0x84, 0x7e, 0x44, 0xb2 }, 5356 .input = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
5328 .ilen = 8, 5357 .ilen = 8,
5329 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5358 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5330 .rlen = 8, 5359 .rlen = 8,
5331 }, { 5360 }, {
5332 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 5361 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5333 0x23, 0x45 }, 5362 "\x23\x45",
5334 .klen = 10, 5363 .klen = 10,
5335 .input = { 0xeb, 0x6a, 0x71, 0x1a, 0x2c, 0x02, 0x27, 0x1b }, 5364 .input = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
5336 .ilen = 8, 5365 .ilen = 8,
5337 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5366 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5338 .rlen = 8, 5367 .rlen = 8,
5339 }, { 5368 }, {
5340 .key = { 0x01, 0x23, 0x45, 0x67, 0x12 }, 5369 .key = "\x01\x23\x45\x67\x12",
5341 .klen = 5, 5370 .klen = 5,
5342 .input = { 0x7a, 0xc8, 0x16, 0xd1, 0x6e, 0x9b, 0x30, 0x2e }, 5371 .input = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
5343 .ilen = 8, 5372 .ilen = 8,
5344 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5373 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5345 .rlen = 8, 5374 .rlen = 8,
5346 }, 5375 },
5347}; 5376};
@@ -5354,132 +5383,132 @@ static struct cipher_testvec cast5_dec_tv_template[] = {
5354 5383
5355static struct cipher_testvec arc4_enc_tv_template[] = { 5384static struct cipher_testvec arc4_enc_tv_template[] = {
5356 { 5385 {
5357 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5386 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5358 .klen = 8, 5387 .klen = 8,
5359 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5388 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5360 .ilen = 8, 5389 .ilen = 8,
5361 .result = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 }, 5390 .result = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
5362 .rlen = 8, 5391 .rlen = 8,
5363 }, { 5392 }, {
5364 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5393 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5365 .klen = 8, 5394 .klen = 8,
5366 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5395 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
5367 .ilen = 8, 5396 .ilen = 8,
5368 .result = { 0x74, 0x94, 0xc2, 0xe7, 0x10, 0x4b, 0x08, 0x79 }, 5397 .result = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
5369 .rlen = 8, 5398 .rlen = 8,
5370 }, { 5399 }, {
5371 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5400 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
5372 .klen = 8, 5401 .klen = 8,
5373 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5402 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
5374 .ilen = 8, 5403 .ilen = 8,
5375 .result = { 0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a }, 5404 .result = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
5376 .rlen = 8, 5405 .rlen = 8,
5377 }, { 5406 }, {
5378 .key = { 0xef, 0x01, 0x23, 0x45}, 5407 .key = "\xef\x01\x23\x45",
5379 .klen = 4, 5408 .klen = 4,
5380 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5409 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5381 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5410 "\x00\x00\x00\x00\x00\x00\x00\x00"
5382 0x00, 0x00, 0x00, 0x00 }, 5411 "\x00\x00\x00\x00",
5383 .ilen = 20, 5412 .ilen = 20,
5384 .result = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf, 5413 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5385 0xbd, 0x61, 0x5a, 0x11, 0x62, 0xe1, 0xc7, 0xba, 5414 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5386 0x36, 0xb6, 0x78, 0x58 }, 5415 "\x36\xb6\x78\x58",
5387 .rlen = 20, 5416 .rlen = 20,
5388 }, { 5417 }, {
5389 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5418 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5390 .klen = 8, 5419 .klen = 8,
5391 .input = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 5420 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5392 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 5421 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5393 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 5422 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5394 0x12, 0x34, 0x56, 0x78 }, 5423 "\x12\x34\x56\x78",
5395 .ilen = 28, 5424 .ilen = 28,
5396 .result = { 0x66, 0xa0, 0x94, 0x9f, 0x8a, 0xf7, 0xd6, 0x89, 5425 .result = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5397 0x1f, 0x7f, 0x83, 0x2b, 0xa8, 0x33, 0xc0, 0x0c, 5426 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5398 0x89, 0x2e, 0xbe, 0x30, 0x14, 0x3c, 0xe2, 0x87, 5427 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5399 0x40, 0x01, 0x1e, 0xcf }, 5428 "\x40\x01\x1e\xcf",
5400 .rlen = 28, 5429 .rlen = 28,
5401 }, { 5430 }, {
5402 .key = { 0xef, 0x01, 0x23, 0x45 }, 5431 .key = "\xef\x01\x23\x45",
5403 .klen = 4, 5432 .klen = 4,
5404 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5433 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5405 0x00, 0x00 }, 5434 "\x00\x00",
5406 .ilen = 10, 5435 .ilen = 10,
5407 .result = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf, 5436 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5408 0xbd, 0x61 }, 5437 "\xbd\x61",
5409 .rlen = 10, 5438 .rlen = 10,
5410 }, { 5439 }, {
5411 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 5440 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5412 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5441 "\x00\x00\x00\x00\x00\x00\x00\x00",
5413 .klen = 16, 5442 .klen = 16,
5414 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF }, 5443 .input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
5415 .ilen = 8, 5444 .ilen = 8,
5416 .result = { 0x69, 0x72, 0x36, 0x59, 0x1B, 0x52, 0x42, 0xB1 }, 5445 .result = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
5417 .rlen = 8, 5446 .rlen = 8,
5418 }, 5447 },
5419}; 5448};
5420 5449
5421static struct cipher_testvec arc4_dec_tv_template[] = { 5450static struct cipher_testvec arc4_dec_tv_template[] = {
5422 { 5451 {
5423 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5452 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5424 .klen = 8, 5453 .klen = 8,
5425 .input = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 }, 5454 .input = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
5426 .ilen = 8, 5455 .ilen = 8,
5427 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5456 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5428 .rlen = 8, 5457 .rlen = 8,
5429 }, { 5458 }, {
5430 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5459 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5431 .klen = 8, 5460 .klen = 8,
5432 .input = { 0x74, 0x94, 0xc2, 0xe7, 0x10, 0x4b, 0x08, 0x79 }, 5461 .input = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
5433 .ilen = 8, 5462 .ilen = 8,
5434 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5463 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
5435 .rlen = 8, 5464 .rlen = 8,
5436 }, { 5465 }, {
5437 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5466 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
5438 .klen = 8, 5467 .klen = 8,
5439 .input = { 0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a }, 5468 .input = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
5440 .ilen = 8, 5469 .ilen = 8,
5441 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5470 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
5442 .rlen = 8, 5471 .rlen = 8,
5443 }, { 5472 }, {
5444 .key = { 0xef, 0x01, 0x23, 0x45}, 5473 .key = "\xef\x01\x23\x45",
5445 .klen = 4, 5474 .klen = 4,
5446 .input = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf, 5475 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5447 0xbd, 0x61, 0x5a, 0x11, 0x62, 0xe1, 0xc7, 0xba, 5476 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5448 0x36, 0xb6, 0x78, 0x58 }, 5477 "\x36\xb6\x78\x58",
5449 .ilen = 20, 5478 .ilen = 20,
5450 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5479 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5451 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5480 "\x00\x00\x00\x00\x00\x00\x00\x00"
5452 0x00, 0x00, 0x00, 0x00 }, 5481 "\x00\x00\x00\x00",
5453 .rlen = 20, 5482 .rlen = 20,
5454 }, { 5483 }, {
5455 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 5484 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
5456 .klen = 8, 5485 .klen = 8,
5457 .input = { 0x66, 0xa0, 0x94, 0x9f, 0x8a, 0xf7, 0xd6, 0x89, 5486 .input = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5458 0x1f, 0x7f, 0x83, 0x2b, 0xa8, 0x33, 0xc0, 0x0c, 5487 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5459 0x89, 0x2e, 0xbe, 0x30, 0x14, 0x3c, 0xe2, 0x87, 5488 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5460 0x40, 0x01, 0x1e, 0xcf }, 5489 "\x40\x01\x1e\xcf",
5461 .ilen = 28, 5490 .ilen = 28,
5462 .result = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 5491 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5463 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 5492 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5464 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 5493 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5465 0x12, 0x34, 0x56, 0x78 }, 5494 "\x12\x34\x56\x78",
5466 .rlen = 28, 5495 .rlen = 28,
5467 }, { 5496 }, {
5468 .key = { 0xef, 0x01, 0x23, 0x45 }, 5497 .key = "\xef\x01\x23\x45",
5469 .klen = 4, 5498 .klen = 4,
5470 .input = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf, 5499 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5471 0xbd, 0x61 }, 5500 "\xbd\x61",
5472 .ilen = 10, 5501 .ilen = 10,
5473 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5502 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5474 0x00, 0x00 }, 5503 "\x00\x00",
5475 .rlen = 10, 5504 .rlen = 10,
5476 }, { 5505 }, {
5477 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 5506 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5478 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5507 "\x00\x00\x00\x00\x00\x00\x00\x00",
5479 .klen = 16, 5508 .klen = 16,
5480 .input = { 0x69, 0x72, 0x36, 0x59, 0x1B, 0x52, 0x42, 0xB1 }, 5509 .input = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
5481 .ilen = 8, 5510 .ilen = 8,
5482 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF }, 5511 .result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
5483 .rlen = 8, 5512 .rlen = 8,
5484 }, 5513 },
5485}; 5514};
@@ -5492,86 +5521,86 @@ static struct cipher_testvec arc4_dec_tv_template[] = {
5492 5521
5493static struct cipher_testvec tea_enc_tv_template[] = { 5522static struct cipher_testvec tea_enc_tv_template[] = {
5494 { 5523 {
5495 .key = { [0 ... 15] = 0x00 }, 5524 .key = zeroed_string,
5496 .klen = 16, 5525 .klen = 16,
5497 .input = { [0 ... 8] = 0x00 }, 5526 .input = zeroed_string,
5498 .ilen = 8, 5527 .ilen = 8,
5499 .result = { 0x0a, 0x3a, 0xea, 0x41, 0x40, 0xa9, 0xba, 0x94 }, 5528 .result = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
5500 .rlen = 8, 5529 .rlen = 8,
5501 }, { 5530 }, {
5502 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 5531 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5503 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 5532 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
5504 .klen = 16, 5533 .klen = 16,
5505 .input = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 5534 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
5506 .ilen = 8, 5535 .ilen = 8,
5507 .result = { 0x77, 0x5d, 0x2a, 0x6a, 0xf6, 0xce, 0x92, 0x09 }, 5536 .result = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
5508 .rlen = 8, 5537 .rlen = 8,
5509 }, { 5538 }, {
5510 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 5539 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5511 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 5540 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
5512 .klen = 16, 5541 .klen = 16,
5513 .input = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 5542 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5514 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 5543 "\x65\x73\x74\x5f\x76\x65\x63\x74",
5515 .ilen = 16, 5544 .ilen = 16,
5516 .result = { 0xbe, 0x7a, 0xbb, 0x81, 0x95, 0x2d, 0x1f, 0x1e, 5545 .result = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
5517 0xdd, 0x89, 0xa1, 0x25, 0x04, 0x21, 0xdf, 0x95 }, 5546 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
5518 .rlen = 16, 5547 .rlen = 16,
5519 }, { 5548 }, {
5520 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 5549 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5521 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 5550 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
5522 .klen = 16, 5551 .klen = 16,
5523 .input = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 5552 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
5524 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 5553 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5525 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 5554 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5526 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 5555 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
5527 .ilen = 32, 5556 .ilen = 32,
5528 .result = { 0xe0, 0x4d, 0x5d, 0x3c, 0xb7, 0x8c, 0x36, 0x47, 5557 .result = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
5529 0x94, 0x18, 0x95, 0x91, 0xa9, 0xfc, 0x49, 0xf8, 5558 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
5530 0x44, 0xd1, 0x2d, 0xc2, 0x99, 0xb8, 0x08, 0x2a, 5559 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
5531 0x07, 0x89, 0x73, 0xc2, 0x45, 0x92, 0xc6, 0x90 }, 5560 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
5532 .rlen = 32, 5561 .rlen = 32,
5533 } 5562 }
5534}; 5563};
5535 5564
5536static struct cipher_testvec tea_dec_tv_template[] = { 5565static struct cipher_testvec tea_dec_tv_template[] = {
5537 { 5566 {
5538 .key = { [0 ... 15] = 0x00 }, 5567 .key = zeroed_string,
5539 .klen = 16, 5568 .klen = 16,
5540 .input = { 0x0a, 0x3a, 0xea, 0x41, 0x40, 0xa9, 0xba, 0x94 }, 5569 .input = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
5541 .ilen = 8, 5570 .ilen = 8,
5542 .result = { [0 ... 8] = 0x00 }, 5571 .result = zeroed_string,
5543 .rlen = 8, 5572 .rlen = 8,
5544 }, { 5573 }, {
5545 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 5574 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5546 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 5575 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
5547 .klen = 16, 5576 .klen = 16,
5548 .input = { 0x77, 0x5d, 0x2a, 0x6a, 0xf6, 0xce, 0x92, 0x09 }, 5577 .input = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
5549 .ilen = 8, 5578 .ilen = 8,
5550 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 5579 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
5551 .rlen = 8, 5580 .rlen = 8,
5552 }, { 5581 }, {
5553 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 5582 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5554 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 5583 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
5555 .klen = 16, 5584 .klen = 16,
5556 .input = { 0xbe, 0x7a, 0xbb, 0x81, 0x95, 0x2d, 0x1f, 0x1e, 5585 .input = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
5557 0xdd, 0x89, 0xa1, 0x25, 0x04, 0x21, 0xdf, 0x95 }, 5586 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
5558 .ilen = 16, 5587 .ilen = 16,
5559 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 5588 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5560 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 5589 "\x65\x73\x74\x5f\x76\x65\x63\x74",
5561 .rlen = 16, 5590 .rlen = 16,
5562 }, { 5591 }, {
5563 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 5592 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5564 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 5593 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
5565 .klen = 16, 5594 .klen = 16,
5566 .input = { 0xe0, 0x4d, 0x5d, 0x3c, 0xb7, 0x8c, 0x36, 0x47, 5595 .input = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
5567 0x94, 0x18, 0x95, 0x91, 0xa9, 0xfc, 0x49, 0xf8, 5596 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
5568 0x44, 0xd1, 0x2d, 0xc2, 0x99, 0xb8, 0x08, 0x2a, 5597 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
5569 0x07, 0x89, 0x73, 0xc2, 0x45, 0x92, 0xc6, 0x90 }, 5598 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
5570 .ilen = 32, 5599 .ilen = 32,
5571 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 5600 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
5572 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 5601 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5573 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 5602 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5574 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 5603 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
5575 .rlen = 32, 5604 .rlen = 32,
5576 } 5605 }
5577}; 5606};
@@ -5584,86 +5613,86 @@ static struct cipher_testvec tea_dec_tv_template[] = {
5584 5613
5585static struct cipher_testvec xtea_enc_tv_template[] = { 5614static struct cipher_testvec xtea_enc_tv_template[] = {
5586 { 5615 {
5587 .key = { [0 ... 15] = 0x00 }, 5616 .key = zeroed_string,
5588 .klen = 16, 5617 .klen = 16,
5589 .input = { [0 ... 8] = 0x00 }, 5618 .input = zeroed_string,
5590 .ilen = 8, 5619 .ilen = 8,
5591 .result = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 }, 5620 .result = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
5592 .rlen = 8, 5621 .rlen = 8,
5593 }, { 5622 }, {
5594 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 5623 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5595 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 5624 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
5596 .klen = 16, 5625 .klen = 16,
5597 .input = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 5626 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
5598 .ilen = 8, 5627 .ilen = 8,
5599 .result = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 }, 5628 .result = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
5600 .rlen = 8, 5629 .rlen = 8,
5601 }, { 5630 }, {
5602 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 5631 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5603 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 5632 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
5604 .klen = 16, 5633 .klen = 16,
5605 .input = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d, 5634 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5606 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 5635 "\x65\x73\x74\x5f\x76\x65\x63\x74",
5607 .ilen = 16, 5636 .ilen = 16,
5608 .result = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea, 5637 .result = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
5609 0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c }, 5638 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
5610 .rlen = 16, 5639 .rlen = 16,
5611 }, { 5640 }, {
5612 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 5641 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5613 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 5642 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
5614 .klen = 16, 5643 .klen = 16,
5615 .input = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 5644 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
5616 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 5645 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5617 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 5646 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5618 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 5647 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
5619 .ilen = 32, 5648 .ilen = 32,
5620 .result = { 0x99, 0x81, 0x9f, 0x5d, 0x6f, 0x4b, 0x31, 0x3a, 5649 .result = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
5621 0x86, 0xff, 0x6f, 0xd0, 0xe3, 0x87, 0x70, 0x07, 5650 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
5622 0x4d, 0xb8, 0xcf, 0xf3, 0x99, 0x50, 0xb3, 0xd4, 5651 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
5623 0x73, 0xa2, 0xfa, 0xc9, 0x16, 0x59, 0x5d, 0x81 }, 5652 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
5624 .rlen = 32, 5653 .rlen = 32,
5625 } 5654 }
5626}; 5655};
5627 5656
5628static struct cipher_testvec xtea_dec_tv_template[] = { 5657static struct cipher_testvec xtea_dec_tv_template[] = {
5629 { 5658 {
5630 .key = { [0 ... 15] = 0x00 }, 5659 .key = zeroed_string,
5631 .klen = 16, 5660 .klen = 16,
5632 .input = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 }, 5661 .input = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
5633 .ilen = 8, 5662 .ilen = 8,
5634 .result = { [0 ... 8] = 0x00 }, 5663 .result = zeroed_string,
5635 .rlen = 8, 5664 .rlen = 8,
5636 }, { 5665 }, {
5637 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 5666 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5638 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 5667 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
5639 .klen = 16, 5668 .klen = 16,
5640 .input = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 }, 5669 .input = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
5641 .ilen = 8, 5670 .ilen = 8,
5642 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 5671 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
5643 .rlen = 8, 5672 .rlen = 8,
5644 }, { 5673 }, {
5645 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 5674 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5646 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 5675 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
5647 .klen = 16, 5676 .klen = 16,
5648 .input = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d, 5677 .input = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
5649 0x77, 0x4d, 0xd4, 0xb4, 0x87, 0x24, 0xe3, 0x9a }, 5678 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
5650 .ilen = 16, 5679 .ilen = 16,
5651 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 5680 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5652 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 5681 "\x65\x73\x74\x5f\x76\x65\x63\x74",
5653 .rlen = 16, 5682 .rlen = 16,
5654 }, { 5683 }, {
5655 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 5684 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5656 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 5685 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
5657 .klen = 16, 5686 .klen = 16,
5658 .input = { 0x99, 0x81, 0x9f, 0x5d, 0x6f, 0x4b, 0x31, 0x3a, 5687 .input = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
5659 0x86, 0xff, 0x6f, 0xd0, 0xe3, 0x87, 0x70, 0x07, 5688 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
5660 0x4d, 0xb8, 0xcf, 0xf3, 0x99, 0x50, 0xb3, 0xd4, 5689 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
5661 0x73, 0xa2, 0xfa, 0xc9, 0x16, 0x59, 0x5d, 0x81 }, 5690 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
5662 .ilen = 32, 5691 .ilen = 32,
5663 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 5692 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
5664 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 5693 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5665 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 5694 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5666 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 5695 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
5667 .rlen = 32, 5696 .rlen = 32,
5668 } 5697 }
5669}; 5698};
@@ -5676,92 +5705,92 @@ static struct cipher_testvec xtea_dec_tv_template[] = {
5676 5705
5677static struct cipher_testvec khazad_enc_tv_template[] = { 5706static struct cipher_testvec khazad_enc_tv_template[] = {
5678 { 5707 {
5679 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5708 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
5680 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5709 "\x00\x00\x00\x00\x00\x00\x00\x00",
5681 .klen = 16, 5710 .klen = 16,
5682 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5711 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
5683 .ilen = 8, 5712 .ilen = 8,
5684 .result = { 0x49, 0xa4, 0xce, 0x32, 0xac, 0x19, 0x0e, 0x3f }, 5713 .result = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
5685 .rlen = 8, 5714 .rlen = 8,
5686 }, { 5715 }, {
5687 .key = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 5716 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
5688 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 }, 5717 "\x38\x38\x38\x38\x38\x38\x38\x38",
5689 .klen = 16, 5718 .klen = 16,
5690 .input = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 }, 5719 .input = "\x38\x38\x38\x38\x38\x38\x38\x38",
5691 .ilen = 8, 5720 .ilen = 8,
5692 .result = { 0x7e, 0x82, 0x12, 0xa1, 0Xd9, 0X5b, 0Xe4, 0Xf9 }, 5721 .result = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
5693 .rlen = 8, 5722 .rlen = 8,
5694 }, { 5723 }, {
5695 .key = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 5724 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
5696 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 }, 5725 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
5697 .klen = 16, 5726 .klen = 16,
5698 .input = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 }, 5727 .input = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
5699 .ilen = 8, 5728 .ilen = 8,
5700 .result = { 0Xaa, 0Xbe, 0Xc1, 0X95, 0Xc5, 0X94, 0X1a, 0X9c }, 5729 .result = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
5701 .rlen = 8, 5730 .rlen = 8,
5702 }, { 5731 }, {
5703 .key = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 5732 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5704 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 5733 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
5705 .klen = 16, 5734 .klen = 16,
5706 .input = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 5735 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
5707 .ilen = 8, 5736 .ilen = 8,
5708 .result = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 }, 5737 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
5709 .rlen = 8, 5738 .rlen = 8,
5710 }, { 5739 }, {
5711 .key = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 5740 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5712 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 5741 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
5713 .klen = 16, 5742 .klen = 16,
5714 .input = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f , 5743 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5715 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 5744 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
5716 .ilen = 16, 5745 .ilen = 16,
5717 .result = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 , 5746 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
5718 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 }, 5747 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
5719 .rlen = 16, 5748 .rlen = 16,
5720 }, 5749 },
5721}; 5750};
5722 5751
5723static struct cipher_testvec khazad_dec_tv_template[] = { 5752static struct cipher_testvec khazad_dec_tv_template[] = {
5724 { 5753 {
5725 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5754 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
5726 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5755 "\x00\x00\x00\x00\x00\x00\x00\x00",
5727 .klen = 16, 5756 .klen = 16,
5728 .input = { 0X49, 0Xa4, 0Xce, 0X32, 0Xac, 0X19, 0X0e, 0X3f }, 5757 .input = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
5729 .ilen = 8, 5758 .ilen = 8,
5730 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 5759 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
5731 .rlen = 8, 5760 .rlen = 8,
5732 }, { 5761 }, {
5733 .key = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 5762 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
5734 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 }, 5763 "\x38\x38\x38\x38\x38\x38\x38\x38",
5735 .klen = 16, 5764 .klen = 16,
5736 .input = { 0X7e, 0X82, 0X12, 0Xa1, 0Xd9, 0X5b, 0Xe4, 0Xf9 }, 5765 .input = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
5737 .ilen = 8, 5766 .ilen = 8,
5738 .result = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 }, 5767 .result = "\x38\x38\x38\x38\x38\x38\x38\x38",
5739 .rlen = 8, 5768 .rlen = 8,
5740 }, { 5769 }, {
5741 .key = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 5770 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
5742 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 }, 5771 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
5743 .klen = 16, 5772 .klen = 16,
5744 .input = { 0Xaa, 0Xbe, 0Xc1, 0X95, 0Xc5, 0X94, 0X1a, 0X9c }, 5773 .input = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
5745 .ilen = 8, 5774 .ilen = 8,
5746 .result = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 }, 5775 .result = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
5747 .rlen = 8, 5776 .rlen = 8,
5748 }, { 5777 }, {
5749 .key = { 0x2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 5778 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5750 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 5779 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
5751 .klen = 16, 5780 .klen = 16,
5752 .input = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 }, 5781 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
5753 .ilen = 8, 5782 .ilen = 8,
5754 .result = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 5783 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
5755 .rlen = 8, 5784 .rlen = 8,
5756 }, { 5785 }, {
5757 .key = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 5786 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5758 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 5787 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
5759 .klen = 16, 5788 .klen = 16,
5760 .input = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 , 5789 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
5761 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 }, 5790 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
5762 .ilen = 16, 5791 .ilen = 16,
5763 .result = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f , 5792 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5764 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 5793 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
5765 .rlen = 16, 5794 .rlen = 16,
5766 }, 5795 },
5767}; 5796};
@@ -5777,196 +5806,196 @@ static struct cipher_testvec khazad_dec_tv_template[] = {
5777 5806
5778static struct cipher_testvec anubis_enc_tv_template[] = { 5807static struct cipher_testvec anubis_enc_tv_template[] = {
5779 { 5808 {
5780 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5809 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5781 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 5810 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
5782 .klen = 16, 5811 .klen = 16,
5783 .input = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5812 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5784 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 5813 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
5785 .ilen = 16, 5814 .ilen = 16,
5786 .result = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f, 5815 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5787 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90 }, 5816 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
5788 .rlen = 16, 5817 .rlen = 16,
5789 }, { 5818 }, {
5790 5819
5791 .key = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 5820 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
5792 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 5821 "\x03\x03\x03\x03\x03\x03\x03\x03"
5793 0x03, 0x03, 0x03, 0x03 }, 5822 "\x03\x03\x03\x03",
5794 .klen = 20, 5823 .klen = 20,
5795 .input = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 5824 .input = "\x03\x03\x03\x03\x03\x03\x03\x03"
5796 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 }, 5825 "\x03\x03\x03\x03\x03\x03\x03\x03",
5797 .ilen = 16, 5826 .ilen = 16,
5798 .result = { 0xdb, 0xf1, 0x42, 0xf4, 0xd1, 0x8a, 0xc7, 0x49, 5827 .result = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
5799 0x87, 0x41, 0x6f, 0x82, 0x0a, 0x98, 0x64, 0xae }, 5828 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
5800 .rlen = 16, 5829 .rlen = 16,
5801 }, { 5830 }, {
5802 .key = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 5831 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
5803 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 5832 "\x24\x24\x24\x24\x24\x24\x24\x24"
5804 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 5833 "\x24\x24\x24\x24\x24\x24\x24\x24"
5805 0x24, 0x24, 0x24, 0x24 }, 5834 "\x24\x24\x24\x24",
5806 .klen = 28, 5835 .klen = 28,
5807 .input = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 5836 .input = "\x24\x24\x24\x24\x24\x24\x24\x24"
5808 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24 }, 5837 "\x24\x24\x24\x24\x24\x24\x24\x24",
5809 .ilen = 16, 5838 .ilen = 16,
5810 .result = { 0xfd, 0x1b, 0x4a, 0xe3, 0xbf, 0xf0, 0xad, 0x3d, 5839 .result = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
5811 0x06, 0xd3, 0x61, 0x27, 0xfd, 0x13, 0x9e, 0xde }, 5840 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
5812 .rlen = 16, 5841 .rlen = 16,
5813 }, { 5842 }, {
5814 .key = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 5843 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
5815 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 5844 "\x25\x25\x25\x25\x25\x25\x25\x25"
5816 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 5845 "\x25\x25\x25\x25\x25\x25\x25\x25"
5817 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 }, 5846 "\x25\x25\x25\x25\x25\x25\x25\x25",
5818 .klen = 32, 5847 .klen = 32,
5819 .input = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 5848 .input = "\x25\x25\x25\x25\x25\x25\x25\x25"
5820 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 }, 5849 "\x25\x25\x25\x25\x25\x25\x25\x25",
5821 .ilen = 16, 5850 .ilen = 16,
5822 .result = { 0x1a, 0x91, 0xfb, 0x2b, 0xb7, 0x78, 0x6b, 0xc4, 5851 .result = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
5823 0x17, 0xd9, 0xff, 0x40, 0x3b, 0x0e, 0xe5, 0xfe }, 5852 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
5824 .rlen = 16, 5853 .rlen = 16,
5825 }, { 5854 }, {
5826 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5855 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5827 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5856 "\x35\x35\x35\x35\x35\x35\x35\x35"
5828 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5857 "\x35\x35\x35\x35\x35\x35\x35\x35"
5829 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5858 "\x35\x35\x35\x35\x35\x35\x35\x35"
5830 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 5859 "\x35\x35\x35\x35\x35\x35\x35\x35",
5831 .klen = 40, 5860 .klen = 40,
5832 .input = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5861 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
5833 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 5862 "\x35\x35\x35\x35\x35\x35\x35\x35",
5834 .ilen = 16, 5863 .ilen = 16,
5835 .result = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97, 5864 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5836 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee }, 5865 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
5837 .rlen = 16, 5866 .rlen = 16,
5838 }, 5867 },
5839}; 5868};
5840 5869
5841static struct cipher_testvec anubis_dec_tv_template[] = { 5870static struct cipher_testvec anubis_dec_tv_template[] = {
5842 { 5871 {
5843 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5872 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5844 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 5873 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
5845 .klen = 16, 5874 .klen = 16,
5846 .input = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f, 5875 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5847 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90 }, 5876 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
5848 .ilen = 16, 5877 .ilen = 16,
5849 .result = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5878 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5850 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 5879 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
5851 .rlen = 16, 5880 .rlen = 16,
5852 }, { 5881 }, {
5853 5882
5854 .key = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 5883 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
5855 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 5884 "\x03\x03\x03\x03\x03\x03\x03\x03"
5856 0x03, 0x03, 0x03, 0x03 }, 5885 "\x03\x03\x03\x03",
5857 .klen = 20, 5886 .klen = 20,
5858 .input = { 0xdb, 0xf1, 0x42, 0xf4, 0xd1, 0x8a, 0xc7, 0x49, 5887 .input = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
5859 0x87, 0x41, 0x6f, 0x82, 0x0a, 0x98, 0x64, 0xae }, 5888 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
5860 .ilen = 16, 5889 .ilen = 16,
5861 .result = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 5890 .result = "\x03\x03\x03\x03\x03\x03\x03\x03"
5862 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 }, 5891 "\x03\x03\x03\x03\x03\x03\x03\x03",
5863 .rlen = 16, 5892 .rlen = 16,
5864 }, { 5893 }, {
5865 .key = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 5894 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
5866 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 5895 "\x24\x24\x24\x24\x24\x24\x24\x24"
5867 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 5896 "\x24\x24\x24\x24\x24\x24\x24\x24"
5868 0x24, 0x24, 0x24, 0x24 }, 5897 "\x24\x24\x24\x24",
5869 .klen = 28, 5898 .klen = 28,
5870 .input = { 0xfd, 0x1b, 0x4a, 0xe3, 0xbf, 0xf0, 0xad, 0x3d, 5899 .input = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
5871 0x06, 0xd3, 0x61, 0x27, 0xfd, 0x13, 0x9e, 0xde }, 5900 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
5872 .ilen = 16, 5901 .ilen = 16,
5873 .result = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 5902 .result = "\x24\x24\x24\x24\x24\x24\x24\x24"
5874 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24 }, 5903 "\x24\x24\x24\x24\x24\x24\x24\x24",
5875 .rlen = 16, 5904 .rlen = 16,
5876 }, { 5905 }, {
5877 .key = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 5906 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
5878 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 5907 "\x25\x25\x25\x25\x25\x25\x25\x25"
5879 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 5908 "\x25\x25\x25\x25\x25\x25\x25\x25"
5880 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 }, 5909 "\x25\x25\x25\x25\x25\x25\x25\x25",
5881 .klen = 32, 5910 .klen = 32,
5882 .input = { 0x1a, 0x91, 0xfb, 0x2b, 0xb7, 0x78, 0x6b, 0xc4, 5911 .input = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
5883 0x17, 0xd9, 0xff, 0x40, 0x3b, 0x0e, 0xe5, 0xfe }, 5912 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
5884 .ilen = 16, 5913 .ilen = 16,
5885 .result = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 5914 .result = "\x25\x25\x25\x25\x25\x25\x25\x25"
5886 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 }, 5915 "\x25\x25\x25\x25\x25\x25\x25\x25",
5887 .rlen = 16, 5916 .rlen = 16,
5888 }, { 5917 }, {
5889 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5918 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5890 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5919 "\x35\x35\x35\x35\x35\x35\x35\x35"
5891 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5920 "\x35\x35\x35\x35\x35\x35\x35\x35"
5892 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5921 "\x35\x35\x35\x35\x35\x35\x35\x35"
5893 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 5922 "\x35\x35\x35\x35\x35\x35\x35\x35",
5894 .input = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97, 5923 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5895 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee }, 5924 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
5896 .klen = 40, 5925 .klen = 40,
5897 .ilen = 16, 5926 .ilen = 16,
5898 .result = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5927 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
5899 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 5928 "\x35\x35\x35\x35\x35\x35\x35\x35",
5900 .rlen = 16, 5929 .rlen = 16,
5901 }, 5930 },
5902}; 5931};
5903 5932
5904static struct cipher_testvec anubis_cbc_enc_tv_template[] = { 5933static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
5905 { 5934 {
5906 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5935 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5907 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 5936 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
5908 .klen = 16, 5937 .klen = 16,
5909 .input = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5938 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5910 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5939 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5911 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5940 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5912 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 5941 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
5913 .ilen = 32, 5942 .ilen = 32,
5914 .result = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f, 5943 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5915 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90, 5944 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
5916 0x86, 0xd8, 0xb5, 0x6f, 0x98, 0x5e, 0x8a, 0x66, 5945 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
5917 0x4f, 0x1f, 0x78, 0xa1, 0xbb, 0x37, 0xf1, 0xbe }, 5946 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
5918 .rlen = 32, 5947 .rlen = 32,
5919 }, { 5948 }, {
5920 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5949 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5921 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5950 "\x35\x35\x35\x35\x35\x35\x35\x35"
5922 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5951 "\x35\x35\x35\x35\x35\x35\x35\x35"
5923 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5952 "\x35\x35\x35\x35\x35\x35\x35\x35"
5924 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 5953 "\x35\x35\x35\x35\x35\x35\x35\x35",
5925 .klen = 40, 5954 .klen = 40,
5926 .input = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5955 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
5927 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5956 "\x35\x35\x35\x35\x35\x35\x35\x35"
5928 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5957 "\x35\x35\x35\x35\x35\x35\x35\x35"
5929 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 5958 "\x35\x35\x35\x35\x35\x35\x35\x35",
5930 .ilen = 32, 5959 .ilen = 32,
5931 .result = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97, 5960 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5932 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee, 5961 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
5933 0xa2, 0xbc, 0x06, 0x98, 0xc6, 0x4b, 0xda, 0x75, 5962 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
5934 0x2e, 0xaa, 0xbe, 0x58, 0xce, 0x01, 0x5b, 0xc7 }, 5963 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
5935 .rlen = 32, 5964 .rlen = 32,
5936 }, 5965 },
5937}; 5966};
5938 5967
5939static struct cipher_testvec anubis_cbc_dec_tv_template[] = { 5968static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
5940 { 5969 {
5941 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5970 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5942 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 5971 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
5943 .klen = 16, 5972 .klen = 16,
5944 .input = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f, 5973 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5945 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90, 5974 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
5946 0x86, 0xd8, 0xb5, 0x6f, 0x98, 0x5e, 0x8a, 0x66, 5975 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
5947 0x4f, 0x1f, 0x78, 0xa1, 0xbb, 0x37, 0xf1, 0xbe }, 5976 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
5948 .ilen = 32, 5977 .ilen = 32,
5949 .result = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5978 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5950 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5979 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5951 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 5980 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5952 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 5981 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
5953 .rlen = 32, 5982 .rlen = 32,
5954 }, { 5983 }, {
5955 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5984 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5956 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5985 "\x35\x35\x35\x35\x35\x35\x35\x35"
5957 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5986 "\x35\x35\x35\x35\x35\x35\x35\x35"
5958 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5987 "\x35\x35\x35\x35\x35\x35\x35\x35"
5959 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 5988 "\x35\x35\x35\x35\x35\x35\x35\x35",
5960 .klen = 40, 5989 .klen = 40,
5961 .input = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97, 5990 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5962 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee, 5991 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
5963 0xa2, 0xbc, 0x06, 0x98, 0xc6, 0x4b, 0xda, 0x75, 5992 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
5964 0x2e, 0xaa, 0xbe, 0x58, 0xce, 0x01, 0x5b, 0xc7 }, 5993 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
5965 .ilen = 32, 5994 .ilen = 32,
5966 .result = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5995 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
5967 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5996 "\x35\x35\x35\x35\x35\x35\x35\x35"
5968 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 5997 "\x35\x35\x35\x35\x35\x35\x35\x35"
5969 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 5998 "\x35\x35\x35\x35\x35\x35\x35\x35",
5970 .rlen = 32, 5999 .rlen = 32,
5971 }, 6000 },
5972}; 6001};
@@ -5979,86 +6008,86 @@ static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
5979 6008
5980static struct cipher_testvec xeta_enc_tv_template[] = { 6009static struct cipher_testvec xeta_enc_tv_template[] = {
5981 { 6010 {
5982 .key = { [0 ... 15] = 0x00 }, 6011 .key = zeroed_string,
5983 .klen = 16, 6012 .klen = 16,
5984 .input = { [0 ... 8] = 0x00 }, 6013 .input = zeroed_string,
5985 .ilen = 8, 6014 .ilen = 8,
5986 .result = { 0xaa, 0x22, 0x96, 0xe5, 0x6c, 0x61, 0xf3, 0x45 }, 6015 .result = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
5987 .rlen = 8, 6016 .rlen = 8,
5988 }, { 6017 }, {
5989 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 6018 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5990 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 6019 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
5991 .klen = 16, 6020 .klen = 16,
5992 .input = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 6021 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
5993 .ilen = 8, 6022 .ilen = 8,
5994 .result = { 0x82, 0x3e, 0xeb, 0x35, 0xdc, 0xdd, 0xd9, 0xc3 }, 6023 .result = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
5995 .rlen = 8, 6024 .rlen = 8,
5996 }, { 6025 }, {
5997 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 6026 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5998 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 6027 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
5999 .klen = 16, 6028 .klen = 16,
6000 .input = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 6029 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6001 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 6030 "\x65\x73\x74\x5f\x76\x65\x63\x74",
6002 .ilen = 16, 6031 .ilen = 16,
6003 .result = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea, 6032 .result = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6004 0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c }, 6033 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
6005 .rlen = 16, 6034 .rlen = 16,
6006 }, { 6035 }, {
6007 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 6036 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6008 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 6037 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
6009 .klen = 16, 6038 .klen = 16,
6010 .input = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 6039 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6011 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 6040 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6012 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 6041 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6013 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 6042 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
6014 .ilen = 32, 6043 .ilen = 32,
6015 .result = { 0x0b, 0x03, 0xcd, 0x8a, 0xbe, 0x95, 0xfd, 0xb1, 6044 .result = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6016 0xc1, 0x44, 0x91, 0x0b, 0xa5, 0xc9, 0x1b, 0xb4, 6045 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6017 0xa9, 0xda, 0x1e, 0x9e, 0xb1, 0x3e, 0x2a, 0x8f, 6046 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6018 0xea, 0xa5, 0x6a, 0x85, 0xd1, 0xf4, 0xa8, 0xa5 }, 6047 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
6019 .rlen = 32, 6048 .rlen = 32,
6020 } 6049 }
6021}; 6050};
6022 6051
6023static struct cipher_testvec xeta_dec_tv_template[] = { 6052static struct cipher_testvec xeta_dec_tv_template[] = {
6024 { 6053 {
6025 .key = { [0 ... 15] = 0x00 }, 6054 .key = zeroed_string,
6026 .klen = 16, 6055 .klen = 16,
6027 .input = { 0xaa, 0x22, 0x96, 0xe5, 0x6c, 0x61, 0xf3, 0x45 }, 6056 .input = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
6028 .ilen = 8, 6057 .ilen = 8,
6029 .result = { [0 ... 8] = 0x00 }, 6058 .result = zeroed_string,
6030 .rlen = 8, 6059 .rlen = 8,
6031 }, { 6060 }, {
6032 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 6061 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6033 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 6062 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
6034 .klen = 16, 6063 .klen = 16,
6035 .input = { 0x82, 0x3e, 0xeb, 0x35, 0xdc, 0xdd, 0xd9, 0xc3 }, 6064 .input = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
6036 .ilen = 8, 6065 .ilen = 8,
6037 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 6066 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
6038 .rlen = 8, 6067 .rlen = 8,
6039 }, { 6068 }, {
6040 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 6069 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6041 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 6070 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
6042 .klen = 16, 6071 .klen = 16,
6043 .input = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea, 6072 .input = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6044 0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c }, 6073 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
6045 .ilen = 16, 6074 .ilen = 16,
6046 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 6075 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6047 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 6076 "\x65\x73\x74\x5f\x76\x65\x63\x74",
6048 .rlen = 16, 6077 .rlen = 16,
6049 }, { 6078 }, {
6050 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 6079 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6051 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 6080 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
6052 .klen = 16, 6081 .klen = 16,
6053 .input = { 0x0b, 0x03, 0xcd, 0x8a, 0xbe, 0x95, 0xfd, 0xb1, 6082 .input = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6054 0xc1, 0x44, 0x91, 0x0b, 0xa5, 0xc9, 0x1b, 0xb4, 6083 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6055 0xa9, 0xda, 0x1e, 0x9e, 0xb1, 0x3e, 0x2a, 0x8f, 6084 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6056 0xea, 0xa5, 0x6a, 0x85, 0xd1, 0xf4, 0xa8, 0xa5 }, 6085 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
6057 .ilen = 32, 6086 .ilen = 32,
6058 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 6087 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6059 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 6088 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6060 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 6089 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6061 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 6090 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
6062 .rlen = 32, 6091 .rlen = 32,
6063 } 6092 }
6064}; 6093};
@@ -6071,59 +6100,59 @@ static struct cipher_testvec xeta_dec_tv_template[] = {
6071 6100
6072static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = { 6101static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6073 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */ 6102 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
6074 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6103 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
6075 .klen = 8, 6104 .klen = 8,
6076 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6105 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6077 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6106 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
6078 .ilen = 8, 6107 .ilen = 8,
6079 .result = { 0x0E, 0x09, 0x00, 0xC7, 0x3E, 0xF7, 0xED, 0x41 }, 6108 .result = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
6080 .rlen = 8, 6109 .rlen = 8,
6081 }, { 6110 }, {
6082 .key = { 0x11, 0x44, 0x77, 0xAA, 0xDD, 0x00, 0x33, 0x66 }, 6111 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
6083 .klen = 8, 6112 .klen = 8,
6084 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6113 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6085 .input = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0 }, 6114 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
6086 .ilen = 8, 6115 .ilen = 8,
6087 .result = { 0xD8, 0xED, 0x78, 0x74, 0x77, 0xEC, 0x06, 0x80 }, 6116 .result = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
6088 .rlen = 8, 6117 .rlen = 8,
6089 }, { /* From Arla */ 6118 }, { /* From Arla */
6090 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 6119 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6091 .klen = 8, 6120 .klen = 8,
6092 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6121 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6093 .input = "The quick brown fox jumps over the lazy dogs.\0\0", 6122 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6094 .ilen = 48, 6123 .ilen = 48,
6095 .result = { 0x00, 0xf0, 0xe, 0x11, 0x75, 0xe6, 0x23, 0x82, 6124 .result = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6096 0xee, 0xac, 0x98, 0x62, 0x44, 0x51, 0xe4, 0x84, 6125 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6097 0xc3, 0x59, 0xd8, 0xaa, 0x64, 0x60, 0xae, 0xf7, 6126 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6098 0xd2, 0xd9, 0x13, 0x79, 0x72, 0xa3, 0x45, 0x03, 6127 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6099 0x23, 0xb5, 0x62, 0xd7, 0x0c, 0xf5, 0x27, 0xd1, 6128 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6100 0xf8, 0x91, 0x3c, 0xac, 0x44, 0x22, 0x92, 0xef }, 6129 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
6101 .rlen = 48, 6130 .rlen = 48,
6102 }, { 6131 }, {
6103 .key = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6132 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6104 .klen = 8, 6133 .klen = 8,
6105 .iv = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 6134 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6106 .input = "The quick brown fox jumps over the lazy dogs.\0\0", 6135 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6107 .ilen = 48, 6136 .ilen = 48,
6108 .result = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c, 6137 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6109 0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d, 6138 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6110 0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58, 6139 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6111 0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0, 6140 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6112 0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94, 6141 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6113 0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f }, 6142 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
6114 .rlen = 48, 6143 .rlen = 48,
6115 }, { /* split-page version */ 6144 }, { /* split-page version */
6116 .key = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6145 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6117 .klen = 8, 6146 .klen = 8,
6118 .iv = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 6147 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6119 .input = "The quick brown fox jumps over the lazy dogs.\0\0", 6148 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6120 .ilen = 48, 6149 .ilen = 48,
6121 .result = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c, 6150 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6122 0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d, 6151 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6123 0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58, 6152 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6124 0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0, 6153 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6125 0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94, 6154 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6126 0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f }, 6155 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
6127 .rlen = 48, 6156 .rlen = 48,
6128 .np = 2, 6157 .np = 2,
6129 .tap = { 20, 28 }, 6158 .tap = { 20, 28 },
@@ -6132,57 +6161,57 @@ static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6132 6161
6133static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = { 6162static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6134 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */ 6163 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
6135 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6164 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
6136 .klen = 8, 6165 .klen = 8,
6137 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6166 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6138 .input = { 0x0E, 0x09, 0x00, 0xC7, 0x3E, 0xF7, 0xED, 0x41 }, 6167 .input = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
6139 .ilen = 8, 6168 .ilen = 8,
6140 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6169 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
6141 .rlen = 8, 6170 .rlen = 8,
6142 }, { 6171 }, {
6143 .key = { 0x11, 0x44, 0x77, 0xAA, 0xDD, 0x00, 0x33, 0x66 }, 6172 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
6144 .klen = 8, 6173 .klen = 8,
6145 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6174 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6146 .input = { 0xD8, 0xED, 0x78, 0x74, 0x77, 0xEC, 0x06, 0x80 }, 6175 .input = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
6147 .ilen = 8, 6176 .ilen = 8,
6148 .result = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0 }, 6177 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
6149 .rlen = 8, 6178 .rlen = 8,
6150 }, { /* From Arla */ 6179 }, { /* From Arla */
6151 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 6180 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6152 .klen = 8, 6181 .klen = 8,
6153 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6182 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6154 .input = { 0x00, 0xf0, 0xe, 0x11, 0x75, 0xe6, 0x23, 0x82, 6183 .input = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6155 0xee, 0xac, 0x98, 0x62, 0x44, 0x51, 0xe4, 0x84, 6184 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6156 0xc3, 0x59, 0xd8, 0xaa, 0x64, 0x60, 0xae, 0xf7, 6185 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6157 0xd2, 0xd9, 0x13, 0x79, 0x72, 0xa3, 0x45, 0x03, 6186 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6158 0x23, 0xb5, 0x62, 0xd7, 0x0c, 0xf5, 0x27, 0xd1, 6187 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6159 0xf8, 0x91, 0x3c, 0xac, 0x44, 0x22, 0x92, 0xef }, 6188 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
6160 .ilen = 48, 6189 .ilen = 48,
6161 .result = "The quick brown fox jumps over the lazy dogs.\0\0", 6190 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6162 .rlen = 48, 6191 .rlen = 48,
6163 }, { 6192 }, {
6164 .key = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6193 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6165 .klen = 8, 6194 .klen = 8,
6166 .iv = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 6195 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6167 .input = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c, 6196 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6168 0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d, 6197 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6169 0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58, 6198 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6170 0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0, 6199 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6171 0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94, 6200 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6172 0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f }, 6201 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
6173 .ilen = 48, 6202 .ilen = 48,
6174 .result = "The quick brown fox jumps over the lazy dogs.\0\0", 6203 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6175 .rlen = 48, 6204 .rlen = 48,
6176 }, { /* split-page version */ 6205 }, { /* split-page version */
6177 .key = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6206 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6178 .klen = 8, 6207 .klen = 8,
6179 .iv = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 6208 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6180 .input = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c, 6209 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6181 0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d, 6210 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6182 0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58, 6211 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6183 0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0, 6212 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6184 0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94, 6213 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6185 0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f }, 6214 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
6186 .ilen = 48, 6215 .ilen = 48,
6187 .result = "The quick brown fox jumps over the lazy dogs.\0\0", 6216 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6188 .rlen = 48, 6217 .rlen = 48,
@@ -6201,136 +6230,136 @@ static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6201 6230
6202static struct cipher_testvec camellia_enc_tv_template[] = { 6231static struct cipher_testvec camellia_enc_tv_template[] = {
6203 { 6232 {
6204 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6233 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6205 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6234 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6206 .klen = 16, 6235 .klen = 16,
6207 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6236 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6208 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6237 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6209 .ilen = 16, 6238 .ilen = 16,
6210 .result = { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73, 6239 .result = "\x67\x67\x31\x38\x54\x96\x69\x73"
6211 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 }, 6240 "\x08\x57\x06\x56\x48\xea\xbe\x43",
6212 .rlen = 16, 6241 .rlen = 16,
6213 }, { 6242 }, {
6214 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6243 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6215 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 6244 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6216 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, 6245 "\x00\x11\x22\x33\x44\x55\x66\x77",
6217 .klen = 24, 6246 .klen = 24,
6218 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6247 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6219 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6248 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6220 .ilen = 16, 6249 .ilen = 16,
6221 .result = { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8, 6250 .result = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6222 0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 }, 6251 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
6223 .rlen = 16, 6252 .rlen = 16,
6224 }, { 6253 }, {
6225 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6254 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6226 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 6255 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6227 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 6256 "\x00\x11\x22\x33\x44\x55\x66\x77"
6228 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 6257 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
6229 .klen = 32, 6258 .klen = 32,
6230 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6259 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6231 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6260 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6232 .ilen = 16, 6261 .ilen = 16,
6233 .result = { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c, 6262 .result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6234 0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 }, 6263 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
6235 .rlen = 16, 6264 .rlen = 16,
6236 }, 6265 },
6237}; 6266};
6238 6267
6239static struct cipher_testvec camellia_dec_tv_template[] = { 6268static struct cipher_testvec camellia_dec_tv_template[] = {
6240 { 6269 {
6241 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6270 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6242 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6271 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6243 .klen = 16, 6272 .klen = 16,
6244 .input = { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73, 6273 .input = "\x67\x67\x31\x38\x54\x96\x69\x73"
6245 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 }, 6274 "\x08\x57\x06\x56\x48\xea\xbe\x43",
6246 .ilen = 16, 6275 .ilen = 16,
6247 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6276 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6248 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6277 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6249 .rlen = 16, 6278 .rlen = 16,
6250 }, { 6279 }, {
6251 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6280 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6252 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 6281 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6253 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, 6282 "\x00\x11\x22\x33\x44\x55\x66\x77",
6254 .klen = 24, 6283 .klen = 24,
6255 .input = { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8, 6284 .input = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6256 0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 }, 6285 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
6257 .ilen = 16, 6286 .ilen = 16,
6258 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6287 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6259 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6288 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6260 .rlen = 16, 6289 .rlen = 16,
6261 }, { 6290 }, {
6262 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6291 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6263 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 6292 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6264 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 6293 "\x00\x11\x22\x33\x44\x55\x66\x77"
6265 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 6294 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
6266 .klen = 32, 6295 .klen = 32,
6267 .input = { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c, 6296 .input = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6268 0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 }, 6297 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
6269 .ilen = 16, 6298 .ilen = 16,
6270 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 6299 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6271 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 6300 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6272 .rlen = 16, 6301 .rlen = 16,
6273 }, 6302 },
6274}; 6303};
6275 6304
6276static struct cipher_testvec camellia_cbc_enc_tv_template[] = { 6305static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
6277 { 6306 {
6278 .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b, 6307 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6279 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 }, 6308 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
6280 .klen = 16, 6309 .klen = 16,
6281 .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30, 6310 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6282 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 }, 6311 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6283 .input = { "Single block msg" }, 6312 .input = "Single block msg",
6284 .ilen = 16, 6313 .ilen = 16,
6285 .result = { 0xea, 0x32, 0x12, 0x76, 0x3b, 0x50, 0x10, 0xe7, 6314 .result = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6286 0x18, 0xf6, 0xfd, 0x5d, 0xf6, 0x8f, 0x13, 0x51 }, 6315 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
6287 .rlen = 16, 6316 .rlen = 16,
6288 }, { 6317 }, {
6289 .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, 6318 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6290 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a }, 6319 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
6291 .klen = 16, 6320 .klen = 16,
6292 .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 6321 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6293 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 }, 6322 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6294 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 6323 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6295 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 6324 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6296 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 6325 "\x10\x11\x12\x13\x14\x15\x16\x17"
6297 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 6326 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
6298 .ilen = 32, 6327 .ilen = 32,
6299 .result = { 0xa5, 0xdf, 0x6e, 0x50, 0xda, 0x70, 0x6c, 0x01, 6328 .result = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6300 0x4a, 0xab, 0xf3, 0xf2, 0xd6, 0xfc, 0x6c, 0xfd, 6329 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6301 0x19, 0xb4, 0x3e, 0x57, 0x1c, 0x02, 0x5e, 0xa0, 6330 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6302 0x15, 0x78, 0xe0, 0x5e, 0xf2, 0xcb, 0x87, 0x16 }, 6331 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
6303 .rlen = 32, 6332 .rlen = 32,
6304 }, 6333 },
6305}; 6334};
6306 6335
6307static struct cipher_testvec camellia_cbc_dec_tv_template[] = { 6336static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6308 { 6337 {
6309 .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b, 6338 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6310 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 }, 6339 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
6311 .klen = 16, 6340 .klen = 16,
6312 .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30, 6341 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6313 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 }, 6342 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6314 .input = { 0xea, 0x32, 0x12, 0x76, 0x3b, 0x50, 0x10, 0xe7, 6343 .input = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6315 0x18, 0xf6, 0xfd, 0x5d, 0xf6, 0x8f, 0x13, 0x51 }, 6344 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
6316 .ilen = 16, 6345 .ilen = 16,
6317 .result = { "Single block msg" }, 6346 .result = "Single block msg",
6318 .rlen = 16, 6347 .rlen = 16,
6319 }, { 6348 }, {
6320 .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, 6349 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6321 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a }, 6350 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
6322 .klen = 16, 6351 .klen = 16,
6323 .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 6352 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6324 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 }, 6353 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6325 .input = { 0xa5, 0xdf, 0x6e, 0x50, 0xda, 0x70, 0x6c, 0x01, 6354 .input = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6326 0x4a, 0xab, 0xf3, 0xf2, 0xd6, 0xfc, 0x6c, 0xfd, 6355 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6327 0x19, 0xb4, 0x3e, 0x57, 0x1c, 0x02, 0x5e, 0xa0, 6356 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6328 0x15, 0x78, 0xe0, 0x5e, 0xf2, 0xcb, 0x87, 0x16 }, 6357 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
6329 .ilen = 32, 6358 .ilen = 32,
6330 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 6359 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6331 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 6360 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6332 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 6361 "\x10\x11\x12\x13\x14\x15\x16\x17"
6333 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 6362 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
6334 .rlen = 32, 6363 .rlen = 32,
6335 }, 6364 },
6336}; 6365};
@@ -6343,84 +6372,84 @@ static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6343 6372
6344static struct cipher_testvec seed_enc_tv_template[] = { 6373static struct cipher_testvec seed_enc_tv_template[] = {
6345 { 6374 {
6346 .key = { [0 ... 15] = 0x00 }, 6375 .key = zeroed_string,
6347 .klen = 16, 6376 .klen = 16,
6348 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 6377 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6349 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 6378 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
6350 .ilen = 16, 6379 .ilen = 16,
6351 .result = { 0x5e, 0xba, 0xc6, 0xe0, 0x05, 0x4e, 0x16, 0x68, 6380 .result = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6352 0x19, 0xaf, 0xf1, 0xcc, 0x6d, 0x34, 0x6c, 0xdb }, 6381 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
6353 .rlen = 16, 6382 .rlen = 16,
6354 }, { 6383 }, {
6355 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 6384 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6356 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 6385 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
6357 .klen = 16, 6386 .klen = 16,
6358 .input = { [0 ... 15] = 0x00 }, 6387 .input = zeroed_string,
6359 .ilen = 16, 6388 .ilen = 16,
6360 .result = { 0xc1, 0x1f, 0x22, 0xf2, 0x01, 0x40, 0x50, 0x50, 6389 .result = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6361 0x84, 0x48, 0x35, 0x97, 0xe4, 0x37, 0x0f, 0x43 }, 6390 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
6362 .rlen = 16, 6391 .rlen = 16,
6363 }, { 6392 }, {
6364 .key = { 0x47, 0x06, 0x48, 0x08, 0x51, 0xe6, 0x1b, 0xe8, 6393 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6365 0x5d, 0x74, 0xbf, 0xb3, 0xfd, 0x95, 0x61, 0x85 }, 6394 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
6366 .klen = 16, 6395 .klen = 16,
6367 .input = { 0x83, 0xa2, 0xf8, 0xa2, 0x88, 0x64, 0x1f, 0xb9, 6396 .input = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6368 0xa4, 0xe9, 0xa5, 0xcc, 0x2f, 0x13, 0x1c, 0x7d }, 6397 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
6369 .ilen = 16, 6398 .ilen = 16,
6370 .result = { 0xee, 0x54, 0xd1, 0x3e, 0xbc, 0xae, 0x70, 0x6d, 6399 .result = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6371 0x22, 0x6b, 0xc3, 0x14, 0x2c, 0xd4, 0x0d, 0x4a }, 6400 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
6372 .rlen = 16, 6401 .rlen = 16,
6373 }, { 6402 }, {
6374 .key = { 0x28, 0xdb, 0xc3, 0xbc, 0x49, 0xff, 0xd8, 0x7d, 6403 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6375 0xcf, 0xa5, 0x09, 0xb1, 0x1d, 0x42, 0x2b, 0xe7 }, 6404 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
6376 .klen = 16, 6405 .klen = 16,
6377 .input = { 0xb4, 0x1e, 0x6b, 0xe2, 0xeb, 0xa8, 0x4a, 0x14, 6406 .input = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6378 0x8e, 0x2e, 0xed, 0x84, 0x59, 0x3c, 0x5e, 0xc7 }, 6407 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
6379 .ilen = 16, 6408 .ilen = 16,
6380 .result = { 0x9b, 0x9b, 0x7b, 0xfc, 0xd1, 0x81, 0x3c, 0xb9, 6409 .result = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6381 0x5d, 0x0b, 0x36, 0x18, 0xf4, 0x0f, 0x51, 0x22 }, 6410 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
6382 .rlen = 16, 6411 .rlen = 16,
6383 } 6412 }
6384}; 6413};
6385 6414
6386static struct cipher_testvec seed_dec_tv_template[] = { 6415static struct cipher_testvec seed_dec_tv_template[] = {
6387 { 6416 {
6388 .key = { [0 ... 15] = 0x00 }, 6417 .key = zeroed_string,
6389 .klen = 16, 6418 .klen = 16,
6390 .input = { 0x5e, 0xba, 0xc6, 0xe0, 0x05, 0x4e, 0x16, 0x68, 6419 .input = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6391 0x19, 0xaf, 0xf1, 0xcc, 0x6d, 0x34, 0x6c, 0xdb }, 6420 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
6392 .ilen = 16, 6421 .ilen = 16,
6393 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 6422 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6394 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 6423 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
6395 .rlen = 16, 6424 .rlen = 16,
6396 }, { 6425 }, {
6397 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 6426 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6398 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 6427 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
6399 .klen = 16, 6428 .klen = 16,
6400 .input = { 0xc1, 0x1f, 0x22, 0xf2, 0x01, 0x40, 0x50, 0x50, 6429 .input = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6401 0x84, 0x48, 0x35, 0x97, 0xe4, 0x37, 0x0f, 0x43 }, 6430 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
6402 .ilen = 16, 6431 .ilen = 16,
6403 .result = { [0 ... 15] = 0x00 }, 6432 .result = zeroed_string,
6404 .rlen = 16, 6433 .rlen = 16,
6405 }, { 6434 }, {
6406 .key = { 0x47, 0x06, 0x48, 0x08, 0x51, 0xe6, 0x1b, 0xe8, 6435 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6407 0x5d, 0x74, 0xbf, 0xb3, 0xfd, 0x95, 0x61, 0x85 }, 6436 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
6408 .klen = 16, 6437 .klen = 16,
6409 .input = { 0xee, 0x54, 0xd1, 0x3e, 0xbc, 0xae, 0x70, 0x6d, 6438 .input = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6410 0x22, 0x6b, 0xc3, 0x14, 0x2c, 0xd4, 0x0d, 0x4a }, 6439 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
6411 .ilen = 16, 6440 .ilen = 16,
6412 .result = { 0x83, 0xa2, 0xf8, 0xa2, 0x88, 0x64, 0x1f, 0xb9, 6441 .result = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6413 0xa4, 0xe9, 0xa5, 0xcc, 0x2f, 0x13, 0x1c, 0x7d }, 6442 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
6414 .rlen = 16, 6443 .rlen = 16,
6415 }, { 6444 }, {
6416 .key = { 0x28, 0xdb, 0xc3, 0xbc, 0x49, 0xff, 0xd8, 0x7d, 6445 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6417 0xcf, 0xa5, 0x09, 0xb1, 0x1d, 0x42, 0x2b, 0xe7 }, 6446 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
6418 .klen = 16, 6447 .klen = 16,
6419 .input = { 0x9b, 0x9b, 0x7b, 0xfc, 0xd1, 0x81, 0x3c, 0xb9, 6448 .input = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6420 0x5d, 0x0b, 0x36, 0x18, 0xf4, 0x0f, 0x51, 0x22 }, 6449 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
6421 .ilen = 16, 6450 .ilen = 16,
6422 .result = { 0xb4, 0x1e, 0x6b, 0xe2, 0xeb, 0xa8, 0x4a, 0x14, 6451 .result = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6423 0x8e, 0x2e, 0xed, 0x84, 0x59, 0x3c, 0x5e, 0xc7 }, 6452 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
6424 .rlen = 16, 6453 .rlen = 16,
6425 } 6454 }
6426}; 6455};
@@ -6433,1204 +6462,1376 @@ static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
6433 * of input length. 6462 * of input length.
6434 */ 6463 */
6435 { /* Set 3, vector 0 */ 6464 { /* Set 3, vector 0 */
6436 .key = { 6465 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6437 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 6466 "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
6438 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
6439 },
6440 .klen = 16, 6467 .klen = 16,
6441 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6468 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6442 .input = { 6469 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6443 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6470 "\x00\x00\x00\x00\x00\x00\x00\x00"
6444 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6471 "\x00\x00\x00\x00\x00\x00\x00\x00"
6445 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6472 "\x00\x00\x00\x00\x00\x00\x00\x00"
6446 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6473 "\x00\x00\x00\x00\x00\x00\x00",
6447 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6448 },
6449 .ilen = 39, 6474 .ilen = 39,
6450 .result = { 6475 .result = "\x2D\xD5\xC3\xF7\xBA\x2B\x20\xF7"
6451 0x2D, 0xD5, 0xC3, 0xF7, 0xBA, 0x2B, 0x20, 0xF7, 6476 "\x68\x02\x41\x0C\x68\x86\x88\x89"
6452 0x68, 0x02, 0x41, 0x0C, 0x68, 0x86, 0x88, 0x89, 6477 "\x5A\xD8\xC1\xBD\x4E\xA6\xC9\xB1"
6453 0x5A, 0xD8, 0xC1, 0xBD, 0x4E, 0xA6, 0xC9, 0xB1, 6478 "\x40\xFB\x9B\x90\xE2\x10\x49\xBF"
6454 0x40, 0xFB, 0x9B, 0x90, 0xE2, 0x10, 0x49, 0xBF, 6479 "\x58\x3F\x52\x79\x70\xEB\xC1",
6455 0x58, 0x3F, 0x52, 0x79, 0x70, 0xEB, 0xC1,
6456 },
6457 .rlen = 39, 6480 .rlen = 39,
6458 }, { /* Set 5, vector 0 */ 6481 }, { /* Set 5, vector 0 */
6459 .key = { 6482 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6460 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6483 "\x00\x00\x00\x00\x00\x00\x00\x00",
6461 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
6462 },
6463 .klen = 16, 6484 .klen = 16,
6464 .iv = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6485 .iv = "\x80\x00\x00\x00\x00\x00\x00\x00",
6465 .input = { 6486 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6466 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6487 "\x00\x00\x00\x00\x00\x00\x00\x00"
6467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6488 "\x00\x00\x00\x00\x00\x00\x00\x00"
6468 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6489 "\x00\x00\x00\x00\x00\x00\x00\x00"
6469 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6490 "\x00\x00\x00\x00\x00\x00\x00\x00"
6470 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6491 "\x00\x00\x00\x00\x00\x00\x00\x00"
6471 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6492 "\x00\x00\x00\x00\x00\x00\x00\x00"
6472 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6493 "\x00\x00\x00\x00\x00\x00\x00\x00",
6473 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6474 },
6475 .ilen = 64, 6494 .ilen = 64,
6476 .result = { 6495 .result = "\xB6\x6C\x1E\x44\x46\xDD\x95\x57"
6477 0xB6, 0x6C, 0x1E, 0x44, 0x46, 0xDD, 0x95, 0x57, 6496 "\xE5\x78\xE2\x23\xB0\xB7\x68\x01"
6478 0xE5, 0x78, 0xE2, 0x23, 0xB0, 0xB7, 0x68, 0x01, 6497 "\x7B\x23\xB2\x67\xBB\x02\x34\xAE"
6479 0x7B, 0x23, 0xB2, 0x67, 0xBB, 0x02, 0x34, 0xAE, 6498 "\x46\x26\xBF\x44\x3F\x21\x97\x76"
6480 0x46, 0x26, 0xBF, 0x44, 0x3F, 0x21, 0x97, 0x76, 6499 "\x43\x6F\xB1\x9F\xD0\xE8\x86\x6F"
6481 0x43, 0x6F, 0xB1, 0x9F, 0xD0, 0xE8, 0x86, 0x6F, 6500 "\xCD\x0D\xE9\xA9\x53\x8F\x4A\x09"
6482 0xCD, 0x0D, 0xE9, 0xA9, 0x53, 0x8F, 0x4A, 0x09, 6501 "\xCA\x9A\xC0\x73\x2E\x30\xBC\xF9"
6483 0xCA, 0x9A, 0xC0, 0x73, 0x2E, 0x30, 0xBC, 0xF9, 6502 "\x8E\x4F\x13\xE4\xB9\xE2\x01\xD9",
6484 0x8E, 0x4F, 0x13, 0xE4, 0xB9, 0xE2, 0x01, 0xD9,
6485 },
6486 .rlen = 64, 6503 .rlen = 64,
6487 }, { /* Set 3, vector 27 */ 6504 }, { /* Set 3, vector 27 */
6488 .key = { 6505 .key = "\x1B\x1C\x1D\x1E\x1F\x20\x21\x22"
6489 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 6506 "\x23\x24\x25\x26\x27\x28\x29\x2A"
6490 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 6507 "\x2B\x2C\x2D\x2E\x2F\x30\x31\x32"
6491 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 6508 "\x33\x34\x35\x36\x37\x38\x39\x3A",
6492 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A
6493 },
6494 .klen = 32, 6509 .klen = 32,
6495 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 6510 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6496 .input = { 6511 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6497 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6512 "\x00\x00\x00\x00\x00\x00\x00\x00"
6498 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6513 "\x00\x00\x00\x00\x00\x00\x00\x00"
6499 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6514 "\x00\x00\x00\x00\x00\x00\x00\x00"
6500 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6515 "\x00\x00\x00\x00\x00\x00\x00\x00"
6501 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6516 "\x00\x00\x00\x00\x00\x00\x00\x00"
6502 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6517 "\x00\x00\x00\x00\x00\x00\x00\x00"
6503 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6518 "\x00\x00\x00\x00\x00\x00\x00\x00"
6504 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6519 "\x00\x00\x00\x00\x00\x00\x00\x00"
6505 6520 "\x00\x00\x00\x00\x00\x00\x00\x00"
6506 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6521 "\x00\x00\x00\x00\x00\x00\x00\x00"
6507 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6522 "\x00\x00\x00\x00\x00\x00\x00\x00"
6508 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6523 "\x00\x00\x00\x00\x00\x00\x00\x00"
6509 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6524 "\x00\x00\x00\x00\x00\x00\x00",
6510 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6511 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6512 },
6513 .ilen = 111, 6525 .ilen = 111,
6514 .result = { 6526 .result = "\xAE\x39\x50\x8E\xAC\x9A\xEC\xE7"
6515 0xAE, 0x39, 0x50, 0x8E, 0xAC, 0x9A, 0xEC, 0xE7, 6527 "\xBF\x97\xBB\x20\xB9\xDE\xE4\x1F"
6516 0xBF, 0x97, 0xBB, 0x20, 0xB9, 0xDE, 0xE4, 0x1F, 6528 "\x87\xD9\x47\xF8\x28\x91\x35\x98"
6517 0x87, 0xD9, 0x47, 0xF8, 0x28, 0x91, 0x35, 0x98, 6529 "\xDB\x72\xCC\x23\x29\x48\x56\x5E"
6518 0xDB, 0x72, 0xCC, 0x23, 0x29, 0x48, 0x56, 0x5E, 6530 "\x83\x7E\x0B\xF3\x7D\x5D\x38\x7B"
6519 0x83, 0x7E, 0x0B, 0xF3, 0x7D, 0x5D, 0x38, 0x7B, 6531 "\x2D\x71\x02\xB4\x3B\xB5\xD8\x23"
6520 0x2D, 0x71, 0x02, 0xB4, 0x3B, 0xB5, 0xD8, 0x23, 6532 "\xB0\x4A\xDF\x3C\xEC\xB6\xD9\x3B"
6521 0xB0, 0x4A, 0xDF, 0x3C, 0xEC, 0xB6, 0xD9, 0x3B, 6533 "\x9B\xA7\x52\xBE\xC5\xD4\x50\x59"
6522 0x9B, 0xA7, 0x52, 0xBE, 0xC5, 0xD4, 0x50, 0x59, 6534 "\x15\x14\xB4\x0E\x40\xE6\x53\xD1"
6523 6535 "\x83\x9C\x5B\xA0\x92\x29\x6B\x5E"
6524 0x15, 0x14, 0xB4, 0x0E, 0x40, 0xE6, 0x53, 0xD1, 6536 "\x96\x5B\x1E\x2F\xD3\xAC\xC1\x92"
6525 0x83, 0x9C, 0x5B, 0xA0, 0x92, 0x29, 0x6B, 0x5E, 6537 "\xB1\x41\x3F\x19\x2F\xC4\x3B\xC6"
6526 0x96, 0x5B, 0x1E, 0x2F, 0xD3, 0xAC, 0xC1, 0x92, 6538 "\x95\x46\x45\x54\xE9\x75\x03\x08"
6527 0xB1, 0x41, 0x3F, 0x19, 0x2F, 0xC4, 0x3B, 0xC6, 6539 "\x44\xAF\xE5\x8A\x81\x12\x09",
6528 0x95, 0x46, 0x45, 0x54, 0xE9, 0x75, 0x03, 0x08,
6529 0x44, 0xAF, 0xE5, 0x8A, 0x81, 0x12, 0x09,
6530 },
6531 .rlen = 111, 6540 .rlen = 111,
6532
6533 }, { /* Set 5, vector 27 */ 6541 }, { /* Set 5, vector 27 */
6534 .key = { 6542 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6535 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6543 "\x00\x00\x00\x00\x00\x00\x00\x00"
6536 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6544 "\x00\x00\x00\x00\x00\x00\x00\x00"
6537 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6545 "\x00\x00\x00\x00\x00\x00\x00\x00",
6538 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
6539 },
6540 .klen = 32, 6546 .klen = 32,
6541 .iv = { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 }, 6547 .iv = "\x00\x00\x00\x10\x00\x00\x00\x00",
6542 .input = { 6548 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6543 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6549 "\x00\x00\x00\x00\x00\x00\x00\x00"
6544 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6550 "\x00\x00\x00\x00\x00\x00\x00\x00"
6545 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6551 "\x00\x00\x00\x00\x00\x00\x00\x00"
6546 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6552 "\x00\x00\x00\x00\x00\x00\x00\x00"
6547 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6553 "\x00\x00\x00\x00\x00\x00\x00\x00"
6548 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6554 "\x00\x00\x00\x00\x00\x00\x00\x00"
6549 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6555 "\x00\x00\x00\x00\x00\x00\x00\x00"
6550 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6556 "\x00\x00\x00\x00\x00\x00\x00\x00"
6551 6557 "\x00\x00\x00\x00\x00\x00\x00\x00"
6552 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6558 "\x00\x00\x00\x00\x00\x00\x00\x00"
6553 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6559 "\x00\x00\x00\x00\x00\x00\x00\x00"
6554 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6560 "\x00\x00\x00\x00\x00\x00\x00\x00"
6555 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6561 "\x00\x00\x00\x00\x00\x00\x00\x00"
6556 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6562 "\x00\x00\x00\x00\x00\x00\x00\x00"
6557 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6563 "\x00\x00\x00\x00\x00\x00\x00\x00"
6558 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6564 "\x00",
6559 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6560
6561 0x00,
6562 },
6563 .ilen = 129, 6565 .ilen = 129,
6564 .result = { 6566 .result = "\xD2\xDB\x1A\x5C\xF1\xC1\xAC\xDB"
6565 0xD2, 0xDB, 0x1A, 0x5C, 0xF1, 0xC1, 0xAC, 0xDB, 6567 "\xE8\x1A\x7A\x43\x40\xEF\x53\x43"
6566 0xE8, 0x1A, 0x7A, 0x43, 0x40, 0xEF, 0x53, 0x43, 6568 "\x5E\x7F\x4B\x1A\x50\x52\x3F\x8D"
6567 0x5E, 0x7F, 0x4B, 0x1A, 0x50, 0x52, 0x3F, 0x8D, 6569 "\x28\x3D\xCF\x85\x1D\x69\x6E\x60"
6568 0x28, 0x3D, 0xCF, 0x85, 0x1D, 0x69, 0x6E, 0x60, 6570 "\xF2\xDE\x74\x56\x18\x1B\x84\x10"
6569 0xF2, 0xDE, 0x74, 0x56, 0x18, 0x1B, 0x84, 0x10, 6571 "\xD4\x62\xBA\x60\x50\xF0\x61\xF2"
6570 0xD4, 0x62, 0xBA, 0x60, 0x50, 0xF0, 0x61, 0xF2, 6572 "\x1C\x78\x7F\xC1\x24\x34\xAF\x58"
6571 0x1C, 0x78, 0x7F, 0xC1, 0x24, 0x34, 0xAF, 0x58, 6573 "\xBF\x2C\x59\xCA\x90\x77\xF3\xB0"
6572 0xBF, 0x2C, 0x59, 0xCA, 0x90, 0x77, 0xF3, 0xB0, 6574 "\x5B\x4A\xDF\x89\xCE\x2C\x2F\xFC"
6573 6575 "\x67\xF0\xE3\x45\xE8\xB3\xB3\x75"
6574 0x5B, 0x4A, 0xDF, 0x89, 0xCE, 0x2C, 0x2F, 0xFC, 6576 "\xA0\x95\x71\xA1\x29\x39\x94\xCA"
6575 0x67, 0xF0, 0xE3, 0x45, 0xE8, 0xB3, 0xB3, 0x75, 6577 "\x45\x2F\xBD\xCB\x10\xB6\xBE\x9F"
6576 0xA0, 0x95, 0x71, 0xA1, 0x29, 0x39, 0x94, 0xCA, 6578 "\x8E\xF9\xB2\x01\x0A\x5A\x0A\xB7"
6577 0x45, 0x2F, 0xBD, 0xCB, 0x10, 0xB6, 0xBE, 0x9F, 6579 "\x6B\x9D\x70\x8E\x4B\xD6\x2F\xCD"
6578 0x8E, 0xF9, 0xB2, 0x01, 0x0A, 0x5A, 0x0A, 0xB7, 6580 "\x2E\x40\x48\x75\xE9\xE2\x21\x45"
6579 0x6B, 0x9D, 0x70, 0x8E, 0x4B, 0xD6, 0x2F, 0xCD, 6581 "\x0B\xC9\xB6\xB5\x66\xBC\x9A\x59"
6580 0x2E, 0x40, 0x48, 0x75, 0xE9, 0xE2, 0x21, 0x45, 6582 "\x5A",
6581 0x0B, 0xC9, 0xB6, 0xB5, 0x66, 0xBC, 0x9A, 0x59,
6582
6583 0x5A,
6584 },
6585 .rlen = 129, 6583 .rlen = 129,
6586 }, { /* large test vector generated using Crypto++ */ 6584 }, { /* large test vector generated using Crypto++ */
6587 .key = { 6585 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6588 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 6586 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6589 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 6587 "\x10\x11\x12\x13\x14\x15\x16\x17"
6590 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 6588 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
6591 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
6592 },
6593 .klen = 32, 6589 .klen = 32,
6594 .iv = { 6590 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
6595 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6591 "\x00\x00\x00\x00\x00\x00\x00\x00",
6596 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6592 .input =
6597 }, 6593 "\x00\x01\x02\x03\x04\x05\x06\x07"
6598 .input = { 6594 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6599 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 6595 "\x10\x11\x12\x13\x14\x15\x16\x17"
6600 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 6596 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
6601 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 6597 "\x20\x21\x22\x23\x24\x25\x26\x27"
6602 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 6598 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
6603 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 6599 "\x30\x31\x32\x33\x34\x35\x36\x37"
6604 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 6600 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
6605 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 6601 "\x40\x41\x42\x43\x44\x45\x46\x47"
6606 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 6602 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
6607 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 6603 "\x50\x51\x52\x53\x54\x55\x56\x57"
6608 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 6604 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
6609 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 6605 "\x60\x61\x62\x63\x64\x65\x66\x67"
6610 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 6606 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
6611 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 6607 "\x70\x71\x72\x73\x74\x75\x76\x77"
6612 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 6608 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
6613 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 6609 "\x80\x81\x82\x83\x84\x85\x86\x87"
6614 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 6610 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
6615 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 6611 "\x90\x91\x92\x93\x94\x95\x96\x97"
6616 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 6612 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
6617 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 6613 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
6618 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 6614 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
6619 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 6615 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
6620 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 6616 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
6621 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 6617 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
6622 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 6618 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
6623 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 6619 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
6624 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 6620 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
6625 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 6621 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
6626 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 6622 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
6627 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 6623 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
6628 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 6624 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
6629 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 6625 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
6630 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 6626 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
6631 0x00, 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15, 6627 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
6632 0x18, 0x1b, 0x1e, 0x21, 0x24, 0x27, 0x2a, 0x2d, 6628 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
6633 0x30, 0x33, 0x36, 0x39, 0x3c, 0x3f, 0x42, 0x45, 6629 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
6634 0x48, 0x4b, 0x4e, 0x51, 0x54, 0x57, 0x5a, 0x5d, 6630 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
6635 0x60, 0x63, 0x66, 0x69, 0x6c, 0x6f, 0x72, 0x75, 6631 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
6636 0x78, 0x7b, 0x7e, 0x81, 0x84, 0x87, 0x8a, 0x8d, 6632 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
6637 0x90, 0x93, 0x96, 0x99, 0x9c, 0x9f, 0xa2, 0xa5, 6633 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
6638 0xa8, 0xab, 0xae, 0xb1, 0xb4, 0xb7, 0xba, 0xbd, 6634 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
6639 0xc0, 0xc3, 0xc6, 0xc9, 0xcc, 0xcf, 0xd2, 0xd5, 6635 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
6640 0xd8, 0xdb, 0xde, 0xe1, 0xe4, 0xe7, 0xea, 0xed, 6636 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
6641 0xf0, 0xf3, 0xf6, 0xf9, 0xfc, 0xff, 0x02, 0x05, 6637 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
6642 0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x1a, 0x1d, 6638 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
6643 0x20, 0x23, 0x26, 0x29, 0x2c, 0x2f, 0x32, 0x35, 6639 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
6644 0x38, 0x3b, 0x3e, 0x41, 0x44, 0x47, 0x4a, 0x4d, 6640 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
6645 0x50, 0x53, 0x56, 0x59, 0x5c, 0x5f, 0x62, 0x65, 6641 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
6646 0x68, 0x6b, 0x6e, 0x71, 0x74, 0x77, 0x7a, 0x7d, 6642 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
6647 0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x95, 6643 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
6648 0x98, 0x9b, 0x9e, 0xa1, 0xa4, 0xa7, 0xaa, 0xad, 6644 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
6649 0xb0, 0xb3, 0xb6, 0xb9, 0xbc, 0xbf, 0xc2, 0xc5, 6645 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
6650 0xc8, 0xcb, 0xce, 0xd1, 0xd4, 0xd7, 0xda, 0xdd, 6646 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
6651 0xe0, 0xe3, 0xe6, 0xe9, 0xec, 0xef, 0xf2, 0xf5, 6647 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
6652 0xf8, 0xfb, 0xfe, 0x01, 0x04, 0x07, 0x0a, 0x0d, 6648 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
6653 0x10, 0x13, 0x16, 0x19, 0x1c, 0x1f, 0x22, 0x25, 6649 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
6654 0x28, 0x2b, 0x2e, 0x31, 0x34, 0x37, 0x3a, 0x3d, 6650 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
6655 0x40, 0x43, 0x46, 0x49, 0x4c, 0x4f, 0x52, 0x55, 6651 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
6656 0x58, 0x5b, 0x5e, 0x61, 0x64, 0x67, 0x6a, 0x6d, 6652 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
6657 0x70, 0x73, 0x76, 0x79, 0x7c, 0x7f, 0x82, 0x85, 6653 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
6658 0x88, 0x8b, 0x8e, 0x91, 0x94, 0x97, 0x9a, 0x9d, 6654 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
6659 0xa0, 0xa3, 0xa6, 0xa9, 0xac, 0xaf, 0xb2, 0xb5, 6655 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
6660 0xb8, 0xbb, 0xbe, 0xc1, 0xc4, 0xc7, 0xca, 0xcd, 6656 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
6661 0xd0, 0xd3, 0xd6, 0xd9, 0xdc, 0xdf, 0xe2, 0xe5, 6657 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
6662 0xe8, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa, 0xfd, 6658 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
6663 0x00, 0x05, 0x0a, 0x0f, 0x14, 0x19, 0x1e, 0x23, 6659 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
6664 0x28, 0x2d, 0x32, 0x37, 0x3c, 0x41, 0x46, 0x4b, 6660 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
6665 0x50, 0x55, 0x5a, 0x5f, 0x64, 0x69, 0x6e, 0x73, 6661 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
6666 0x78, 0x7d, 0x82, 0x87, 0x8c, 0x91, 0x96, 0x9b, 6662 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
6667 0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb9, 0xbe, 0xc3, 6663 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
6668 0xc8, 0xcd, 0xd2, 0xd7, 0xdc, 0xe1, 0xe6, 0xeb, 6664 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
6669 0xf0, 0xf5, 0xfa, 0xff, 0x04, 0x09, 0x0e, 0x13, 6665 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
6670 0x18, 0x1d, 0x22, 0x27, 0x2c, 0x31, 0x36, 0x3b, 6666 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
6671 0x40, 0x45, 0x4a, 0x4f, 0x54, 0x59, 0x5e, 0x63, 6667 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
6672 0x68, 0x6d, 0x72, 0x77, 0x7c, 0x81, 0x86, 0x8b, 6668 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
6673 0x90, 0x95, 0x9a, 0x9f, 0xa4, 0xa9, 0xae, 0xb3, 6669 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
6674 0xb8, 0xbd, 0xc2, 0xc7, 0xcc, 0xd1, 0xd6, 0xdb, 6670 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
6675 0xe0, 0xe5, 0xea, 0xef, 0xf4, 0xf9, 0xfe, 0x03, 6671 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
6676 0x08, 0x0d, 0x12, 0x17, 0x1c, 0x21, 0x26, 0x2b, 6672 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
6677 0x30, 0x35, 0x3a, 0x3f, 0x44, 0x49, 0x4e, 0x53, 6673 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
6678 0x58, 0x5d, 0x62, 0x67, 0x6c, 0x71, 0x76, 0x7b, 6674 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
6679 0x80, 0x85, 0x8a, 0x8f, 0x94, 0x99, 0x9e, 0xa3, 6675 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
6680 0xa8, 0xad, 0xb2, 0xb7, 0xbc, 0xc1, 0xc6, 0xcb, 6676 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
6681 0xd0, 0xd5, 0xda, 0xdf, 0xe4, 0xe9, 0xee, 0xf3, 6677 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
6682 0xf8, 0xfd, 0x02, 0x07, 0x0c, 0x11, 0x16, 0x1b, 6678 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
6683 0x20, 0x25, 0x2a, 0x2f, 0x34, 0x39, 0x3e, 0x43, 6679 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
6684 0x48, 0x4d, 0x52, 0x57, 0x5c, 0x61, 0x66, 0x6b, 6680 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
6685 0x70, 0x75, 0x7a, 0x7f, 0x84, 0x89, 0x8e, 0x93, 6681 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
6686 0x98, 0x9d, 0xa2, 0xa7, 0xac, 0xb1, 0xb6, 0xbb, 6682 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
6687 0xc0, 0xc5, 0xca, 0xcf, 0xd4, 0xd9, 0xde, 0xe3, 6683 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
6688 0xe8, 0xed, 0xf2, 0xf7, 0xfc, 0x01, 0x06, 0x0b, 6684 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
6689 0x10, 0x15, 0x1a, 0x1f, 0x24, 0x29, 0x2e, 0x33, 6685 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
6690 0x38, 0x3d, 0x42, 0x47, 0x4c, 0x51, 0x56, 0x5b, 6686 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
6691 0x60, 0x65, 0x6a, 0x6f, 0x74, 0x79, 0x7e, 0x83, 6687 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
6692 0x88, 0x8d, 0x92, 0x97, 0x9c, 0xa1, 0xa6, 0xab, 6688 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
6693 0xb0, 0xb5, 0xba, 0xbf, 0xc4, 0xc9, 0xce, 0xd3, 6689 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
6694 0xd8, 0xdd, 0xe2, 0xe7, 0xec, 0xf1, 0xf6, 0xfb, 6690 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
6695 0x00, 0x07, 0x0e, 0x15, 0x1c, 0x23, 0x2a, 0x31, 6691 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
6696 0x38, 0x3f, 0x46, 0x4d, 0x54, 0x5b, 0x62, 0x69, 6692 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
6697 0x70, 0x77, 0x7e, 0x85, 0x8c, 0x93, 0x9a, 0xa1, 6693 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
6698 0xa8, 0xaf, 0xb6, 0xbd, 0xc4, 0xcb, 0xd2, 0xd9, 6694 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
6699 0xe0, 0xe7, 0xee, 0xf5, 0xfc, 0x03, 0x0a, 0x11, 6695 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
6700 0x18, 0x1f, 0x26, 0x2d, 0x34, 0x3b, 0x42, 0x49, 6696 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
6701 0x50, 0x57, 0x5e, 0x65, 0x6c, 0x73, 0x7a, 0x81, 6697 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
6702 0x88, 0x8f, 0x96, 0x9d, 0xa4, 0xab, 0xb2, 0xb9, 6698 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
6703 0xc0, 0xc7, 0xce, 0xd5, 0xdc, 0xe3, 0xea, 0xf1, 6699 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
6704 0xf8, 0xff, 0x06, 0x0d, 0x14, 0x1b, 0x22, 0x29, 6700 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
6705 0x30, 0x37, 0x3e, 0x45, 0x4c, 0x53, 0x5a, 0x61, 6701 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
6706 0x68, 0x6f, 0x76, 0x7d, 0x84, 0x8b, 0x92, 0x99, 6702 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
6707 0xa0, 0xa7, 0xae, 0xb5, 0xbc, 0xc3, 0xca, 0xd1, 6703 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
6708 0xd8, 0xdf, 0xe6, 0xed, 0xf4, 0xfb, 0x02, 0x09, 6704 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
6709 0x10, 0x17, 0x1e, 0x25, 0x2c, 0x33, 0x3a, 0x41, 6705 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
6710 0x48, 0x4f, 0x56, 0x5d, 0x64, 0x6b, 0x72, 0x79, 6706 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
6711 0x80, 0x87, 0x8e, 0x95, 0x9c, 0xa3, 0xaa, 0xb1, 6707 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
6712 0xb8, 0xbf, 0xc6, 0xcd, 0xd4, 0xdb, 0xe2, 0xe9, 6708 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
6713 0xf0, 0xf7, 0xfe, 0x05, 0x0c, 0x13, 0x1a, 0x21, 6709 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
6714 0x28, 0x2f, 0x36, 0x3d, 0x44, 0x4b, 0x52, 0x59, 6710 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
6715 0x60, 0x67, 0x6e, 0x75, 0x7c, 0x83, 0x8a, 0x91, 6711 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
6716 0x98, 0x9f, 0xa6, 0xad, 0xb4, 0xbb, 0xc2, 0xc9, 6712 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
6717 0xd0, 0xd7, 0xde, 0xe5, 0xec, 0xf3, 0xfa, 0x01, 6713 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
6718 0x08, 0x0f, 0x16, 0x1d, 0x24, 0x2b, 0x32, 0x39, 6714 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
6719 0x40, 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 6715 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
6720 0x78, 0x7f, 0x86, 0x8d, 0x94, 0x9b, 0xa2, 0xa9, 6716 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
6721 0xb0, 0xb7, 0xbe, 0xc5, 0xcc, 0xd3, 0xda, 0xe1, 6717 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
6722 0xe8, 0xef, 0xf6, 0xfd, 0x04, 0x0b, 0x12, 0x19, 6718 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
6723 0x20, 0x27, 0x2e, 0x35, 0x3c, 0x43, 0x4a, 0x51, 6719 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
6724 0x58, 0x5f, 0x66, 0x6d, 0x74, 0x7b, 0x82, 0x89, 6720 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
6725 0x90, 0x97, 0x9e, 0xa5, 0xac, 0xb3, 0xba, 0xc1, 6721 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
6726 0xc8, 0xcf, 0xd6, 0xdd, 0xe4, 0xeb, 0xf2, 0xf9, 6722 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
6727 0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 6723 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
6728 0x48, 0x51, 0x5a, 0x63, 0x6c, 0x75, 0x7e, 0x87, 6724 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
6729 0x90, 0x99, 0xa2, 0xab, 0xb4, 0xbd, 0xc6, 0xcf, 6725 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
6730 0xd8, 0xe1, 0xea, 0xf3, 0xfc, 0x05, 0x0e, 0x17, 6726 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
6731 0x20, 0x29, 0x32, 0x3b, 0x44, 0x4d, 0x56, 0x5f, 6727 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
6732 0x68, 0x71, 0x7a, 0x83, 0x8c, 0x95, 0x9e, 0xa7, 6728 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
6733 0xb0, 0xb9, 0xc2, 0xcb, 0xd4, 0xdd, 0xe6, 0xef, 6729 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
6734 0xf8, 0x01, 0x0a, 0x13, 0x1c, 0x25, 0x2e, 0x37, 6730 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
6735 0x40, 0x49, 0x52, 0x5b, 0x64, 0x6d, 0x76, 0x7f, 6731 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
6736 0x88, 0x91, 0x9a, 0xa3, 0xac, 0xb5, 0xbe, 0xc7, 6732 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
6737 0xd0, 0xd9, 0xe2, 0xeb, 0xf4, 0xfd, 0x06, 0x0f, 6733 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
6738 0x18, 0x21, 0x2a, 0x33, 0x3c, 0x45, 0x4e, 0x57, 6734 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
6739 0x60, 0x69, 0x72, 0x7b, 0x84, 0x8d, 0x96, 0x9f, 6735 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
6740 0xa8, 0xb1, 0xba, 0xc3, 0xcc, 0xd5, 0xde, 0xe7, 6736 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
6741 0xf0, 0xf9, 0x02, 0x0b, 0x14, 0x1d, 0x26, 0x2f, 6737 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
6742 0x38, 0x41, 0x4a, 0x53, 0x5c, 0x65, 0x6e, 0x77, 6738 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
6743 0x80, 0x89, 0x92, 0x9b, 0xa4, 0xad, 0xb6, 0xbf, 6739 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
6744 0xc8, 0xd1, 0xda, 0xe3, 0xec, 0xf5, 0xfe, 0x07, 6740 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
6745 0x10, 0x19, 0x22, 0x2b, 0x34, 0x3d, 0x46, 0x4f, 6741 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
6746 0x58, 0x61, 0x6a, 0x73, 0x7c, 0x85, 0x8e, 0x97, 6742 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
6747 0xa0, 0xa9, 0xb2, 0xbb, 0xc4, 0xcd, 0xd6, 0xdf, 6743 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
6748 0xe8, 0xf1, 0xfa, 0x03, 0x0c, 0x15, 0x1e, 0x27, 6744 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
6749 0x30, 0x39, 0x42, 0x4b, 0x54, 0x5d, 0x66, 0x6f, 6745 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
6750 0x78, 0x81, 0x8a, 0x93, 0x9c, 0xa5, 0xae, 0xb7, 6746 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
6751 0xc0, 0xc9, 0xd2, 0xdb, 0xe4, 0xed, 0xf6, 0xff, 6747 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
6752 0x08, 0x11, 0x1a, 0x23, 0x2c, 0x35, 0x3e, 0x47, 6748 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
6753 0x50, 0x59, 0x62, 0x6b, 0x74, 0x7d, 0x86, 0x8f, 6749 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
6754 0x98, 0xa1, 0xaa, 0xb3, 0xbc, 0xc5, 0xce, 0xd7, 6750 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
6755 0xe0, 0xe9, 0xf2, 0xfb, 0x04, 0x0d, 0x16, 0x1f, 6751 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
6756 0x28, 0x31, 0x3a, 0x43, 0x4c, 0x55, 0x5e, 0x67, 6752 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
6757 0x70, 0x79, 0x82, 0x8b, 0x94, 0x9d, 0xa6, 0xaf, 6753 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
6758 0xb8, 0xc1, 0xca, 0xd3, 0xdc, 0xe5, 0xee, 0xf7, 6754 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
6759 0x00, 0x0b, 0x16, 0x21, 0x2c, 0x37, 0x42, 0x4d, 6755 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
6760 0x58, 0x63, 0x6e, 0x79, 0x84, 0x8f, 0x9a, 0xa5, 6756 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
6761 0xb0, 0xbb, 0xc6, 0xd1, 0xdc, 0xe7, 0xf2, 0xfd, 6757 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
6762 0x08, 0x13, 0x1e, 0x29, 0x34, 0x3f, 0x4a, 0x55, 6758 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
6763 0x60, 0x6b, 0x76, 0x81, 0x8c, 0x97, 0xa2, 0xad, 6759 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
6764 0xb8, 0xc3, 0xce, 0xd9, 0xe4, 0xef, 0xfa, 0x05, 6760 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
6765 0x10, 0x1b, 0x26, 0x31, 0x3c, 0x47, 0x52, 0x5d, 6761 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
6766 0x68, 0x73, 0x7e, 0x89, 0x94, 0x9f, 0xaa, 0xb5, 6762 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
6767 0xc0, 0xcb, 0xd6, 0xe1, 0xec, 0xf7, 0x02, 0x0d, 6763 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
6768 0x18, 0x23, 0x2e, 0x39, 0x44, 0x4f, 0x5a, 0x65, 6764 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
6769 0x70, 0x7b, 0x86, 0x91, 0x9c, 0xa7, 0xb2, 0xbd, 6765 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
6770 0xc8, 0xd3, 0xde, 0xe9, 0xf4, 0xff, 0x0a, 0x15, 6766 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
6771 0x20, 0x2b, 0x36, 0x41, 0x4c, 0x57, 0x62, 0x6d, 6767 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
6772 0x78, 0x83, 0x8e, 0x99, 0xa4, 0xaf, 0xba, 0xc5, 6768 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
6773 0xd0, 0xdb, 0xe6, 0xf1, 0xfc, 0x07, 0x12, 0x1d, 6769 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
6774 0x28, 0x33, 0x3e, 0x49, 0x54, 0x5f, 0x6a, 0x75, 6770 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
6775 0x80, 0x8b, 0x96, 0xa1, 0xac, 0xb7, 0xc2, 0xcd, 6771 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
6776 0xd8, 0xe3, 0xee, 0xf9, 0x04, 0x0f, 0x1a, 0x25, 6772 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
6777 0x30, 0x3b, 0x46, 0x51, 0x5c, 0x67, 0x72, 0x7d, 6773 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
6778 0x88, 0x93, 0x9e, 0xa9, 0xb4, 0xbf, 0xca, 0xd5, 6774 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
6779 0xe0, 0xeb, 0xf6, 0x01, 0x0c, 0x17, 0x22, 0x2d, 6775 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
6780 0x38, 0x43, 0x4e, 0x59, 0x64, 0x6f, 0x7a, 0x85, 6776 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
6781 0x90, 0x9b, 0xa6, 0xb1, 0xbc, 0xc7, 0xd2, 0xdd, 6777 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
6782 0xe8, 0xf3, 0xfe, 0x09, 0x14, 0x1f, 0x2a, 0x35, 6778 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
6783 0x40, 0x4b, 0x56, 0x61, 0x6c, 0x77, 0x82, 0x8d, 6779 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
6784 0x98, 0xa3, 0xae, 0xb9, 0xc4, 0xcf, 0xda, 0xe5, 6780 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
6785 0xf0, 0xfb, 0x06, 0x11, 0x1c, 0x27, 0x32, 0x3d, 6781 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
6786 0x48, 0x53, 0x5e, 0x69, 0x74, 0x7f, 0x8a, 0x95, 6782 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
6787 0xa0, 0xab, 0xb6, 0xc1, 0xcc, 0xd7, 0xe2, 0xed, 6783 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
6788 0xf8, 0x03, 0x0e, 0x19, 0x24, 0x2f, 0x3a, 0x45, 6784 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
6789 0x50, 0x5b, 0x66, 0x71, 0x7c, 0x87, 0x92, 0x9d, 6785 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
6790 0xa8, 0xb3, 0xbe, 0xc9, 0xd4, 0xdf, 0xea, 0xf5, 6786 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
6791 0x00, 0x0d, 0x1a, 0x27, 0x34, 0x41, 0x4e, 0x5b, 6787 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
6792 0x68, 0x75, 0x82, 0x8f, 0x9c, 0xa9, 0xb6, 0xc3, 6788 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
6793 0xd0, 0xdd, 0xea, 0xf7, 0x04, 0x11, 0x1e, 0x2b, 6789 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
6794 0x38, 0x45, 0x52, 0x5f, 0x6c, 0x79, 0x86, 0x93, 6790 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
6795 0xa0, 0xad, 0xba, 0xc7, 0xd4, 0xe1, 0xee, 0xfb, 6791 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
6796 0x08, 0x15, 0x22, 0x2f, 0x3c, 0x49, 0x56, 0x63, 6792 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
6797 0x70, 0x7d, 0x8a, 0x97, 0xa4, 0xb1, 0xbe, 0xcb, 6793 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
6798 0xd8, 0xe5, 0xf2, 0xff, 0x0c, 0x19, 0x26, 0x33, 6794 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
6799 0x40, 0x4d, 0x5a, 0x67, 0x74, 0x81, 0x8e, 0x9b, 6795 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
6800 0xa8, 0xb5, 0xc2, 0xcf, 0xdc, 0xe9, 0xf6, 0x03, 6796 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
6801 0x10, 0x1d, 0x2a, 0x37, 0x44, 0x51, 0x5e, 0x6b, 6797 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
6802 0x78, 0x85, 0x92, 0x9f, 0xac, 0xb9, 0xc6, 0xd3, 6798 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
6803 0xe0, 0xed, 0xfa, 0x07, 0x14, 0x21, 0x2e, 0x3b, 6799 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
6804 0x48, 0x55, 0x62, 0x6f, 0x7c, 0x89, 0x96, 0xa3, 6800 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
6805 0xb0, 0xbd, 0xca, 0xd7, 0xe4, 0xf1, 0xfe, 0x0b, 6801 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
6806 0x18, 0x25, 0x32, 0x3f, 0x4c, 0x59, 0x66, 0x73, 6802 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
6807 0x80, 0x8d, 0x9a, 0xa7, 0xb4, 0xc1, 0xce, 0xdb, 6803 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
6808 0xe8, 0xf5, 0x02, 0x0f, 0x1c, 0x29, 0x36, 0x43, 6804 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
6809 0x50, 0x5d, 0x6a, 0x77, 0x84, 0x91, 0x9e, 0xab, 6805 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
6810 0xb8, 0xc5, 0xd2, 0xdf, 0xec, 0xf9, 0x06, 0x13, 6806 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
6811 0x20, 0x2d, 0x3a, 0x47, 0x54, 0x61, 0x6e, 0x7b, 6807 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
6812 0x88, 0x95, 0xa2, 0xaf, 0xbc, 0xc9, 0xd6, 0xe3, 6808 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
6813 0xf0, 0xfd, 0x0a, 0x17, 0x24, 0x31, 0x3e, 0x4b, 6809 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
6814 0x58, 0x65, 0x72, 0x7f, 0x8c, 0x99, 0xa6, 0xb3, 6810 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
6815 0xc0, 0xcd, 0xda, 0xe7, 0xf4, 0x01, 0x0e, 0x1b, 6811 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
6816 0x28, 0x35, 0x42, 0x4f, 0x5c, 0x69, 0x76, 0x83, 6812 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
6817 0x90, 0x9d, 0xaa, 0xb7, 0xc4, 0xd1, 0xde, 0xeb, 6813 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
6818 0xf8, 0x05, 0x12, 0x1f, 0x2c, 0x39, 0x46, 0x53, 6814 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
6819 0x60, 0x6d, 0x7a, 0x87, 0x94, 0xa1, 0xae, 0xbb, 6815 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
6820 0xc8, 0xd5, 0xe2, 0xef, 0xfc, 0x09, 0x16, 0x23, 6816 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
6821 0x30, 0x3d, 0x4a, 0x57, 0x64, 0x71, 0x7e, 0x8b, 6817 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
6822 0x98, 0xa5, 0xb2, 0xbf, 0xcc, 0xd9, 0xe6, 0xf3, 6818 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
6823 0x00, 0x0f, 0x1e, 0x2d, 0x3c, 0x4b, 0x5a, 0x69, 6819 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
6824 0x78, 0x87, 0x96, 0xa5, 0xb4, 0xc3, 0xd2, 0xe1, 6820 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
6825 0xf0, 0xff, 0x0e, 0x1d, 0x2c, 0x3b, 0x4a, 0x59, 6821 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
6826 0x68, 0x77, 0x86, 0x95, 0xa4, 0xb3, 0xc2, 0xd1, 6822 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
6827 0xe0, 0xef, 0xfe, 0x0d, 0x1c, 0x2b, 0x3a, 0x49, 6823 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
6828 0x58, 0x67, 0x76, 0x85, 0x94, 0xa3, 0xb2, 0xc1, 6824 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
6829 0xd0, 0xdf, 0xee, 0xfd, 0x0c, 0x1b, 0x2a, 0x39, 6825 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
6830 0x48, 0x57, 0x66, 0x75, 0x84, 0x93, 0xa2, 0xb1, 6826 "\x38\x47\x56\x65\x74\x83\x92\xa1"
6831 0xc0, 0xcf, 0xde, 0xed, 0xfc, 0x0b, 0x1a, 0x29, 6827 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
6832 0x38, 0x47, 0x56, 0x65, 0x74, 0x83, 0x92, 0xa1, 6828 "\x28\x37\x46\x55\x64\x73\x82\x91"
6833 0xb0, 0xbf, 0xce, 0xdd, 0xec, 0xfb, 0x0a, 0x19, 6829 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
6834 0x28, 0x37, 0x46, 0x55, 0x64, 0x73, 0x82, 0x91, 6830 "\x18\x27\x36\x45\x54\x63\x72\x81"
6835 0xa0, 0xaf, 0xbe, 0xcd, 0xdc, 0xeb, 0xfa, 0x09, 6831 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
6836 0x18, 0x27, 0x36, 0x45, 0x54, 0x63, 0x72, 0x81, 6832 "\x08\x17\x26\x35\x44\x53\x62\x71"
6837 0x90, 0x9f, 0xae, 0xbd, 0xcc, 0xdb, 0xea, 0xf9, 6833 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
6838 0x08, 0x17, 0x26, 0x35, 0x44, 0x53, 0x62, 0x71, 6834 "\xf8\x07\x16\x25\x34\x43\x52\x61"
6839 0x80, 0x8f, 0x9e, 0xad, 0xbc, 0xcb, 0xda, 0xe9, 6835 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
6840 0xf8, 0x07, 0x16, 0x25, 0x34, 0x43, 0x52, 0x61, 6836 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
6841 0x70, 0x7f, 0x8e, 0x9d, 0xac, 0xbb, 0xca, 0xd9, 6837 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
6842 0xe8, 0xf7, 0x06, 0x15, 0x24, 0x33, 0x42, 0x51, 6838 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
6843 0x60, 0x6f, 0x7e, 0x8d, 0x9c, 0xab, 0xba, 0xc9, 6839 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
6844 0xd8, 0xe7, 0xf6, 0x05, 0x14, 0x23, 0x32, 0x41, 6840 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
6845 0x50, 0x5f, 0x6e, 0x7d, 0x8c, 0x9b, 0xaa, 0xb9, 6841 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
6846 0xc8, 0xd7, 0xe6, 0xf5, 0x04, 0x13, 0x22, 0x31, 6842 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
6847 0x40, 0x4f, 0x5e, 0x6d, 0x7c, 0x8b, 0x9a, 0xa9, 6843 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
6848 0xb8, 0xc7, 0xd6, 0xe5, 0xf4, 0x03, 0x12, 0x21, 6844 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
6849 0x30, 0x3f, 0x4e, 0x5d, 0x6c, 0x7b, 0x8a, 0x99, 6845 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
6850 0xa8, 0xb7, 0xc6, 0xd5, 0xe4, 0xf3, 0x02, 0x11, 6846 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
6851 0x20, 0x2f, 0x3e, 0x4d, 0x5c, 0x6b, 0x7a, 0x89, 6847 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
6852 0x98, 0xa7, 0xb6, 0xc5, 0xd4, 0xe3, 0xf2, 0x01, 6848 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
6853 0x10, 0x1f, 0x2e, 0x3d, 0x4c, 0x5b, 0x6a, 0x79, 6849 "\x00\x11\x22\x33\x44\x55\x66\x77"
6854 0x88, 0x97, 0xa6, 0xb5, 0xc4, 0xd3, 0xe2, 0xf1, 6850 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
6855 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 6851 "\x10\x21\x32\x43\x54\x65\x76\x87"
6856 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 6852 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
6857 0x10, 0x21, 0x32, 0x43, 0x54, 0x65, 0x76, 0x87, 6853 "\x20\x31\x42\x53\x64\x75\x86\x97"
6858 0x98, 0xa9, 0xba, 0xcb, 0xdc, 0xed, 0xfe, 0x0f, 6854 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
6859 0x20, 0x31, 0x42, 0x53, 0x64, 0x75, 0x86, 0x97, 6855 "\x30\x41\x52\x63\x74\x85\x96\xa7"
6860 0xa8, 0xb9, 0xca, 0xdb, 0xec, 0xfd, 0x0e, 0x1f, 6856 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
6861 0x30, 0x41, 0x52, 0x63, 0x74, 0x85, 0x96, 0xa7, 6857 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
6862 0xb8, 0xc9, 0xda, 0xeb, 0xfc, 0x0d, 0x1e, 0x2f, 6858 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
6863 0x40, 0x51, 0x62, 0x73, 0x84, 0x95, 0xa6, 0xb7, 6859 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
6864 0xc8, 0xd9, 0xea, 0xfb, 0x0c, 0x1d, 0x2e, 0x3f, 6860 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
6865 0x50, 0x61, 0x72, 0x83, 0x94, 0xa5, 0xb6, 0xc7, 6861 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
6866 0xd8, 0xe9, 0xfa, 0x0b, 0x1c, 0x2d, 0x3e, 0x4f, 6862 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
6867 0x60, 0x71, 0x82, 0x93, 0xa4, 0xb5, 0xc6, 0xd7, 6863 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
6868 0xe8, 0xf9, 0x0a, 0x1b, 0x2c, 0x3d, 0x4e, 0x5f, 6864 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
6869 0x70, 0x81, 0x92, 0xa3, 0xb4, 0xc5, 0xd6, 0xe7, 6865 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
6870 0xf8, 0x09, 0x1a, 0x2b, 0x3c, 0x4d, 0x5e, 0x6f, 6866 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
6871 0x80, 0x91, 0xa2, 0xb3, 0xc4, 0xd5, 0xe6, 0xf7, 6867 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
6872 0x08, 0x19, 0x2a, 0x3b, 0x4c, 0x5d, 0x6e, 0x7f, 6868 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
6873 0x90, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf6, 0x07, 6869 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
6874 0x18, 0x29, 0x3a, 0x4b, 0x5c, 0x6d, 0x7e, 0x8f, 6870 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
6875 0xa0, 0xb1, 0xc2, 0xd3, 0xe4, 0xf5, 0x06, 0x17, 6871 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
6876 0x28, 0x39, 0x4a, 0x5b, 0x6c, 0x7d, 0x8e, 0x9f, 6872 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
6877 0xb0, 0xc1, 0xd2, 0xe3, 0xf4, 0x05, 0x16, 0x27, 6873 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
6878 0x38, 0x49, 0x5a, 0x6b, 0x7c, 0x8d, 0x9e, 0xaf, 6874 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
6879 0xc0, 0xd1, 0xe2, 0xf3, 0x04, 0x15, 0x26, 0x37, 6875 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
6880 0x48, 0x59, 0x6a, 0x7b, 0x8c, 0x9d, 0xae, 0xbf, 6876 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
6881 0xd0, 0xe1, 0xf2, 0x03, 0x14, 0x25, 0x36, 0x47, 6877 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
6882 0x58, 0x69, 0x7a, 0x8b, 0x9c, 0xad, 0xbe, 0xcf, 6878 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
6883 0xe0, 0xf1, 0x02, 0x13, 0x24, 0x35, 0x46, 0x57, 6879 "\xf0\x01\x12\x23\x34\x45\x56\x67"
6884 0x68, 0x79, 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf, 6880 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
6885 0xf0, 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 6881 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
6886 0x78, 0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 6882 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
6887 0x00, 0x13, 0x26, 0x39, 0x4c, 0x5f, 0x72, 0x85, 6883 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
6888 0x98, 0xab, 0xbe, 0xd1, 0xe4, 0xf7, 0x0a, 0x1d, 6884 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
6889 0x30, 0x43, 0x56, 0x69, 0x7c, 0x8f, 0xa2, 0xb5, 6885 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
6890 0xc8, 0xdb, 0xee, 0x01, 0x14, 0x27, 0x3a, 0x4d, 6886 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
6891 0x60, 0x73, 0x86, 0x99, 0xac, 0xbf, 0xd2, 0xe5, 6887 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
6892 0xf8, 0x0b, 0x1e, 0x31, 0x44, 0x57, 0x6a, 0x7d, 6888 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
6893 0x90, 0xa3, 0xb6, 0xc9, 0xdc, 0xef, 0x02, 0x15, 6889 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
6894 0x28, 0x3b, 0x4e, 0x61, 0x74, 0x87, 0x9a, 0xad, 6890 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
6895 0xc0, 0xd3, 0xe6, 0xf9, 0x0c, 0x1f, 0x32, 0x45, 6891 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
6896 0x58, 0x6b, 0x7e, 0x91, 0xa4, 0xb7, 0xca, 0xdd, 6892 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
6897 0xf0, 0x03, 0x16, 0x29, 0x3c, 0x4f, 0x62, 0x75, 6893 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
6898 0x88, 0x9b, 0xae, 0xc1, 0xd4, 0xe7, 0xfa, 0x0d, 6894 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
6899 0x20, 0x33, 0x46, 0x59, 0x6c, 0x7f, 0x92, 0xa5, 6895 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
6900 0xb8, 0xcb, 0xde, 0xf1, 0x04, 0x17, 0x2a, 0x3d, 6896 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
6901 0x50, 0x63, 0x76, 0x89, 0x9c, 0xaf, 0xc2, 0xd5, 6897 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
6902 0xe8, 0xfb, 0x0e, 0x21, 0x34, 0x47, 0x5a, 0x6d, 6898 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
6903 0x80, 0x93, 0xa6, 0xb9, 0xcc, 0xdf, 0xf2, 0x05, 6899 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
6904 0x18, 0x2b, 0x3e, 0x51, 0x64, 0x77, 0x8a, 0x9d, 6900 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
6905 0xb0, 0xc3, 0xd6, 0xe9, 0xfc, 0x0f, 0x22, 0x35, 6901 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
6906 0x48, 0x5b, 0x6e, 0x81, 0x94, 0xa7, 0xba, 0xcd, 6902 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
6907 0xe0, 0xf3, 0x06, 0x19, 0x2c, 0x3f, 0x52, 0x65, 6903 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
6908 0x78, 0x8b, 0x9e, 0xb1, 0xc4, 0xd7, 0xea, 0xfd, 6904 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
6909 0x10, 0x23, 0x36, 0x49, 0x5c, 0x6f, 0x82, 0x95, 6905 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
6910 0xa8, 0xbb, 0xce, 0xe1, 0xf4, 0x07, 0x1a, 0x2d, 6906 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
6911 0x40, 0x53, 0x66, 0x79, 0x8c, 0x9f, 0xb2, 0xc5, 6907 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
6912 0xd8, 0xeb, 0xfe, 0x11, 0x24, 0x37, 0x4a, 0x5d, 6908 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
6913 0x70, 0x83, 0x96, 0xa9, 0xbc, 0xcf, 0xe2, 0xf5, 6909 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
6914 0x08, 0x1b, 0x2e, 0x41, 0x54, 0x67, 0x7a, 0x8d, 6910 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
6915 0xa0, 0xb3, 0xc6, 0xd9, 0xec, 0xff, 0x12, 0x25, 6911 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
6916 0x38, 0x4b, 0x5e, 0x71, 0x84, 0x97, 0xaa, 0xbd, 6912 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
6917 0xd0, 0xe3, 0xf6, 0x09, 0x1c, 0x2f, 0x42, 0x55, 6913 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
6918 0x68, 0x7b, 0x8e, 0xa1, 0xb4, 0xc7, 0xda, 0xed, 6914 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
6919 0x00, 0x15, 0x2a, 0x3f, 0x54, 0x69, 0x7e, 0x93, 6915 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
6920 0xa8, 0xbd, 0xd2, 0xe7, 0xfc, 0x11, 0x26, 0x3b, 6916 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
6921 0x50, 0x65, 0x7a, 0x8f, 0xa4, 0xb9, 0xce, 0xe3, 6917 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
6922 0xf8, 0x0d, 0x22, 0x37, 0x4c, 0x61, 0x76, 0x8b, 6918 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
6923 0xa0, 0xb5, 0xca, 0xdf, 0xf4, 0x09, 0x1e, 0x33, 6919 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
6924 0x48, 0x5d, 0x72, 0x87, 0x9c, 0xb1, 0xc6, 0xdb, 6920 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
6925 0xf0, 0x05, 0x1a, 0x2f, 0x44, 0x59, 0x6e, 0x83, 6921 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
6926 0x98, 0xad, 0xc2, 0xd7, 0xec, 0x01, 0x16, 0x2b, 6922 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
6927 0x40, 0x55, 0x6a, 0x7f, 0x94, 0xa9, 0xbe, 0xd3, 6923 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
6928 0xe8, 0xfd, 0x12, 0x27, 0x3c, 0x51, 0x66, 0x7b, 6924 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
6929 0x90, 0xa5, 0xba, 0xcf, 0xe4, 0xf9, 0x0e, 0x23, 6925 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
6930 0x38, 0x4d, 0x62, 0x77, 0x8c, 0xa1, 0xb6, 0xcb, 6926 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
6931 0xe0, 0xf5, 0x0a, 0x1f, 0x34, 0x49, 0x5e, 0x73, 6927 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
6932 0x88, 0x9d, 0xb2, 0xc7, 0xdc, 0xf1, 0x06, 0x1b, 6928 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
6933 0x30, 0x45, 0x5a, 0x6f, 0x84, 0x99, 0xae, 0xc3, 6929 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
6934 0xd8, 0xed, 0x02, 0x17, 0x2c, 0x41, 0x56, 0x6b, 6930 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
6935 0x80, 0x95, 0xaa, 0xbf, 0xd4, 0xe9, 0xfe, 0x13, 6931 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
6936 0x28, 0x3d, 0x52, 0x67, 0x7c, 0x91, 0xa6, 0xbb, 6932 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
6937 0xd0, 0xe5, 0xfa, 0x0f, 0x24, 0x39, 0x4e, 0x63, 6933 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
6938 0x78, 0x8d, 0xa2, 0xb7, 0xcc, 0xe1, 0xf6, 0x0b, 6934 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
6939 0x20, 0x35, 0x4a, 0x5f, 0x74, 0x89, 0x9e, 0xb3, 6935 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
6940 0xc8, 0xdd, 0xf2, 0x07, 0x1c, 0x31, 0x46, 0x5b, 6936 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
6941 0x70, 0x85, 0x9a, 0xaf, 0xc4, 0xd9, 0xee, 0x03, 6937 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
6942 0x18, 0x2d, 0x42, 0x57, 0x6c, 0x81, 0x96, 0xab, 6938 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
6943 0xc0, 0xd5, 0xea, 0xff, 0x14, 0x29, 0x3e, 0x53, 6939 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
6944 0x68, 0x7d, 0x92, 0xa7, 0xbc, 0xd1, 0xe6, 0xfb, 6940 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
6945 0x10, 0x25, 0x3a, 0x4f, 0x64, 0x79, 0x8e, 0xa3, 6941 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
6946 0xb8, 0xcd, 0xe2, 0xf7, 0x0c, 0x21, 0x36, 0x4b, 6942 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
6947 0x60, 0x75, 0x8a, 0x9f, 0xb4, 0xc9, 0xde, 0xf3, 6943 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
6948 0x08, 0x1d, 0x32, 0x47, 0x5c, 0x71, 0x86, 0x9b, 6944 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
6949 0xb0, 0xc5, 0xda, 0xef, 0x04, 0x19, 0x2e, 0x43, 6945 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
6950 0x58, 0x6d, 0x82, 0x97, 0xac, 0xc1, 0xd6, 0xeb, 6946 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
6951 0x00, 0x17, 0x2e, 0x45, 0x5c, 0x73, 0x8a, 0xa1, 6947 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
6952 0xb8, 0xcf, 0xe6, 0xfd, 0x14, 0x2b, 0x42, 0x59, 6948 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
6953 0x70, 0x87, 0x9e, 0xb5, 0xcc, 0xe3, 0xfa, 0x11, 6949 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
6954 0x28, 0x3f, 0x56, 0x6d, 0x84, 0x9b, 0xb2, 0xc9, 6950 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
6955 0xe0, 0xf7, 0x0e, 0x25, 0x3c, 0x53, 0x6a, 0x81, 6951 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
6956 0x98, 0xaf, 0xc6, 0xdd, 0xf4, 0x0b, 0x22, 0x39, 6952 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
6957 0x50, 0x67, 0x7e, 0x95, 0xac, 0xc3, 0xda, 0xf1, 6953 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
6958 0x08, 0x1f, 0x36, 0x4d, 0x64, 0x7b, 0x92, 0xa9, 6954 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
6959 0xc0, 0xd7, 0xee, 0x05, 0x1c, 0x33, 0x4a, 0x61, 6955 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
6960 0x78, 0x8f, 0xa6, 0xbd, 0xd4, 0xeb, 0x02, 0x19, 6956 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
6961 0x30, 0x47, 0x5e, 0x75, 0x8c, 0xa3, 0xba, 0xd1, 6957 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
6962 0xe8, 0xff, 0x16, 0x2d, 0x44, 0x5b, 0x72, 0x89, 6958 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
6963 0xa0, 0xb7, 0xce, 0xe5, 0xfc, 0x13, 0x2a, 0x41, 6959 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
6964 0x58, 0x6f, 0x86, 0x9d, 0xb4, 0xcb, 0xe2, 0xf9, 6960 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
6965 0x10, 0x27, 0x3e, 0x55, 0x6c, 0x83, 0x9a, 0xb1, 6961 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
6966 0xc8, 0xdf, 0xf6, 0x0d, 0x24, 0x3b, 0x52, 0x69, 6962 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
6967 0x80, 0x97, 0xae, 0xc5, 0xdc, 0xf3, 0x0a, 0x21, 6963 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
6968 0x38, 0x4f, 0x66, 0x7d, 0x94, 0xab, 0xc2, 0xd9, 6964 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
6969 0xf0, 0x07, 0x1e, 0x35, 0x4c, 0x63, 0x7a, 0x91, 6965 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
6970 0xa8, 0xbf, 0xd6, 0xed, 0x04, 0x1b, 0x32, 0x49, 6966 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
6971 0x60, 0x77, 0x8e, 0xa5, 0xbc, 0xd3, 0xea, 0x01, 6967 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
6972 0x18, 0x2f, 0x46, 0x5d, 0x74, 0x8b, 0xa2, 0xb9, 6968 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
6973 0xd0, 0xe7, 0xfe, 0x15, 0x2c, 0x43, 0x5a, 0x71, 6969 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
6974 0x88, 0x9f, 0xb6, 0xcd, 0xe4, 0xfb, 0x12, 0x29, 6970 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
6975 0x40, 0x57, 0x6e, 0x85, 0x9c, 0xb3, 0xca, 0xe1, 6971 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
6976 0xf8, 0x0f, 0x26, 0x3d, 0x54, 0x6b, 0x82, 0x99, 6972 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
6977 0xb0, 0xc7, 0xde, 0xf5, 0x0c, 0x23, 0x3a, 0x51, 6973 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
6978 0x68, 0x7f, 0x96, 0xad, 0xc4, 0xdb, 0xf2, 0x09, 6974 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
6979 0x20, 0x37, 0x4e, 0x65, 0x7c, 0x93, 0xaa, 0xc1, 6975 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
6980 0xd8, 0xef, 0x06, 0x1d, 0x34, 0x4b, 0x62, 0x79, 6976 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
6981 0x90, 0xa7, 0xbe, 0xd5, 0xec, 0x03, 0x1a, 0x31, 6977 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
6982 0x48, 0x5f, 0x76, 0x8d, 0xa4, 0xbb, 0xd2, 0xe9, 6978 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
6983 0x00, 0x19, 0x32, 0x4b, 0x64, 0x7d, 0x96, 0xaf, 6979 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
6984 0xc8, 0xe1, 0xfa, 0x13, 0x2c, 0x45, 0x5e, 0x77, 6980 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
6985 0x90, 0xa9, 0xc2, 0xdb, 0xf4, 0x0d, 0x26, 0x3f, 6981 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
6986 0x58, 0x71, 0x8a, 0xa3, 0xbc, 0xd5, 0xee, 0x07, 6982 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
6987 0x20, 0x39, 0x52, 0x6b, 0x84, 0x9d, 0xb6, 0xcf, 6983 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
6988 0xe8, 0x01, 0x1a, 0x33, 0x4c, 0x65, 0x7e, 0x97, 6984 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
6989 0xb0, 0xc9, 0xe2, 0xfb, 0x14, 0x2d, 0x46, 0x5f, 6985 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
6990 0x78, 0x91, 0xaa, 0xc3, 0xdc, 0xf5, 0x0e, 0x27, 6986 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
6991 0x40, 0x59, 0x72, 0x8b, 0xa4, 0xbd, 0xd6, 0xef, 6987 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
6992 0x08, 0x21, 0x3a, 0x53, 0x6c, 0x85, 0x9e, 0xb7, 6988 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
6993 0xd0, 0xe9, 0x02, 0x1b, 0x34, 0x4d, 0x66, 0x7f, 6989 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
6994 0x98, 0xb1, 0xca, 0xe3, 0xfc, 0x15, 0x2e, 0x47, 6990 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
6995 0x60, 0x79, 0x92, 0xab, 0xc4, 0xdd, 0xf6, 0x0f, 6991 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
6996 0x28, 0x41, 0x5a, 0x73, 0x8c, 0xa5, 0xbe, 0xd7, 6992 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
6997 0xf0, 0x09, 0x22, 0x3b, 0x54, 0x6d, 0x86, 0x9f, 6993 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
6998 0xb8, 0xd1, 0xea, 0x03, 0x1c, 0x35, 0x4e, 0x67, 6994 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
6999 0x80, 0x99, 0xb2, 0xcb, 0xe4, 0xfd, 0x16, 0x2f, 6995 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
7000 0x48, 0x61, 0x7a, 0x93, 0xac, 0xc5, 0xde, 0xf7, 6996 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
7001 0x10, 0x29, 0x42, 0x5b, 0x74, 0x8d, 0xa6, 0xbf, 6997 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
7002 0xd8, 0xf1, 0x0a, 0x23, 0x3c, 0x55, 0x6e, 0x87, 6998 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
7003 0xa0, 0xb9, 0xd2, 0xeb, 0x04, 0x1d, 0x36, 0x4f, 6999 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
7004 0x68, 0x81, 0x9a, 0xb3, 0xcc, 0xe5, 0xfe, 0x17, 7000 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
7005 0x30, 0x49, 0x62, 0x7b, 0x94, 0xad, 0xc6, 0xdf, 7001 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
7006 0xf8, 0x11, 0x2a, 0x43, 0x5c, 0x75, 0x8e, 0xa7, 7002 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
7007 0xc0, 0xd9, 0xf2, 0x0b, 0x24, 0x3d, 0x56, 0x6f, 7003 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
7008 0x88, 0xa1, 0xba, 0xd3, 0xec, 0x05, 0x1e, 0x37, 7004 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
7009 0x50, 0x69, 0x82, 0x9b, 0xb4, 0xcd, 0xe6, 0xff, 7005 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
7010 0x18, 0x31, 0x4a, 0x63, 0x7c, 0x95, 0xae, 0xc7, 7006 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
7011 0xe0, 0xf9, 0x12, 0x2b, 0x44, 0x5d, 0x76, 0x8f, 7007 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
7012 0xa8, 0xc1, 0xda, 0xf3, 0x0c, 0x25, 0x3e, 0x57, 7008 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
7013 0x70, 0x89, 0xa2, 0xbb, 0xd4, 0xed, 0x06, 0x1f, 7009 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
7014 0x38, 0x51, 0x6a, 0x83, 0x9c, 0xb5, 0xce, 0xe7, 7010 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
7015 0x00, 0x1b, 0x36, 0x51, 0x6c, 0x87, 0xa2, 0xbd, 7011 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
7016 0xd8, 0xf3, 0x0e, 0x29, 0x44, 0x5f, 0x7a, 0x95, 7012 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
7017 0xb0, 0xcb, 0xe6, 0x01, 0x1c, 0x37, 0x52, 0x6d, 7013 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
7018 0x88, 0xa3, 0xbe, 0xd9, 0xf4, 0x0f, 0x2a, 0x45, 7014 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
7019 0x60, 0x7b, 0x96, 0xb1, 0xcc, 0xe7, 0x02, 0x1d, 7015 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
7020 0x38, 0x53, 0x6e, 0x89, 0xa4, 0xbf, 0xda, 0xf5, 7016 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
7021 0x10, 0x2b, 0x46, 0x61, 0x7c, 0x97, 0xb2, 0xcd, 7017 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
7022 0xe8, 0x03, 0x1e, 0x39, 0x54, 0x6f, 0x8a, 0xa5, 7018 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
7023 0xc0, 0xdb, 0xf6, 0x11, 0x2c, 0x47, 0x62, 0x7d, 7019 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
7024 0x98, 0xb3, 0xce, 0xe9, 0x04, 0x1f, 0x3a, 0x55, 7020 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
7025 0x70, 0x8b, 0xa6, 0xc1, 0xdc, 0xf7, 0x12, 0x2d, 7021 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
7026 0x48, 0x63, 0x7e, 0x99, 0xb4, 0xcf, 0xea, 0x05, 7022 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
7027 0x20, 0x3b, 0x56, 0x71, 0x8c, 0xa7, 0xc2, 0xdd, 7023 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
7028 0xf8, 0x13, 0x2e, 0x49, 0x64, 0x7f, 0x9a, 0xb5, 7024 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
7029 0xd0, 0xeb, 0x06, 0x21, 0x3c, 0x57, 0x72, 0x8d, 7025 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
7030 0xa8, 0xc3, 0xde, 0xf9, 0x14, 0x2f, 0x4a, 0x65, 7026 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
7031 0x80, 0x9b, 0xb6, 0xd1, 0xec, 0x07, 0x22, 0x3d, 7027 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
7032 0x58, 0x73, 0x8e, 0xa9, 0xc4, 0xdf, 0xfa, 0x15, 7028 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
7033 0x30, 0x4b, 0x66, 0x81, 0x9c, 0xb7, 0xd2, 0xed, 7029 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
7034 0x08, 0x23, 0x3e, 0x59, 0x74, 0x8f, 0xaa, 0xc5, 7030 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
7035 0xe0, 0xfb, 0x16, 0x31, 0x4c, 0x67, 0x82, 0x9d, 7031 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
7036 0xb8, 0xd3, 0xee, 0x09, 0x24, 0x3f, 0x5a, 0x75, 7032 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
7037 0x90, 0xab, 0xc6, 0xe1, 0xfc, 0x17, 0x32, 0x4d, 7033 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
7038 0x68, 0x83, 0x9e, 0xb9, 0xd4, 0xef, 0x0a, 0x25, 7034 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
7039 0x40, 0x5b, 0x76, 0x91, 0xac, 0xc7, 0xe2, 0xfd, 7035 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
7040 0x18, 0x33, 0x4e, 0x69, 0x84, 0x9f, 0xba, 0xd5, 7036 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
7041 0xf0, 0x0b, 0x26, 0x41, 0x5c, 0x77, 0x92, 0xad, 7037 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
7042 0xc8, 0xe3, 0xfe, 0x19, 0x34, 0x4f, 0x6a, 0x85, 7038 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
7043 0xa0, 0xbb, 0xd6, 0xf1, 0x0c, 0x27, 0x42, 0x5d, 7039 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
7044 0x78, 0x93, 0xae, 0xc9, 0xe4, 0xff, 0x1a, 0x35, 7040 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
7045 0x50, 0x6b, 0x86, 0xa1, 0xbc, 0xd7, 0xf2, 0x0d, 7041 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
7046 0x28, 0x43, 0x5e, 0x79, 0x94, 0xaf, 0xca, 0xe5, 7042 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
7047 0x00, 0x1d, 0x3a, 0x57, 0x74, 0x91, 0xae, 0xcb, 7043 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
7048 0xe8, 0x05, 0x22, 0x3f, 0x5c, 0x79, 0x96, 0xb3, 7044 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
7049 0xd0, 0xed, 0x0a, 0x27, 0x44, 0x61, 0x7e, 0x9b, 7045 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
7050 0xb8, 0xd5, 0xf2, 0x0f, 0x2c, 0x49, 0x66, 0x83, 7046 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
7051 0xa0, 0xbd, 0xda, 0xf7, 0x14, 0x31, 0x4e, 0x6b, 7047 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
7052 0x88, 0xa5, 0xc2, 0xdf, 0xfc, 0x19, 0x36, 0x53, 7048 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
7053 0x70, 0x8d, 0xaa, 0xc7, 0xe4, 0x01, 0x1e, 0x3b, 7049 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
7054 0x58, 0x75, 0x92, 0xaf, 0xcc, 0xe9, 0x06, 0x23, 7050 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
7055 0x40, 0x5d, 0x7a, 0x97, 0xb4, 0xd1, 0xee, 0x0b, 7051 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
7056 0x28, 0x45, 0x62, 0x7f, 0x9c, 0xb9, 0xd6, 0xf3, 7052 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
7057 0x10, 0x2d, 0x4a, 0x67, 0x84, 0xa1, 0xbe, 0xdb, 7053 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
7058 0xf8, 0x15, 0x32, 0x4f, 0x6c, 0x89, 0xa6, 0xc3, 7054 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
7059 0xe0, 0xfd, 0x1a, 0x37, 0x54, 0x71, 0x8e, 0xab, 7055 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
7060 0xc8, 0xe5, 0x02, 0x1f, 0x3c, 0x59, 0x76, 0x93, 7056 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
7061 0xb0, 0xcd, 0xea, 0x07, 0x24, 0x41, 0x5e, 0x7b, 7057 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
7062 0x98, 0xb5, 0xd2, 0xef, 0x0c, 0x29, 0x46, 0x63, 7058 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
7063 0x80, 0x9d, 0xba, 0xd7, 0xf4, 0x11, 0x2e, 0x4b, 7059 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
7064 0x68, 0x85, 0xa2, 0xbf, 0xdc, 0xf9, 0x16, 0x33, 7060 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
7065 0x50, 0x6d, 0x8a, 0xa7, 0xc4, 0xe1, 0xfe, 0x1b, 7061 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
7066 0x38, 0x55, 0x72, 0x8f, 0xac, 0xc9, 0xe6, 0x03, 7062 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
7067 0x20, 0x3d, 0x5a, 0x77, 0x94, 0xb1, 0xce, 0xeb, 7063 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
7068 0x08, 0x25, 0x42, 0x5f, 0x7c, 0x99, 0xb6, 0xd3, 7064 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
7069 0xf0, 0x0d, 0x2a, 0x47, 0x64, 0x81, 0x9e, 0xbb, 7065 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
7070 0xd8, 0xf5, 0x12, 0x2f, 0x4c, 0x69, 0x86, 0xa3, 7066 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
7071 0xc0, 0xdd, 0xfa, 0x17, 0x34, 0x51, 0x6e, 0x8b, 7067 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
7072 0xa8, 0xc5, 0xe2, 0xff, 0x1c, 0x39, 0x56, 0x73, 7068 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
7073 0x90, 0xad, 0xca, 0xe7, 0x04, 0x21, 0x3e, 0x5b, 7069 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
7074 0x78, 0x95, 0xb2, 0xcf, 0xec, 0x09, 0x26, 0x43, 7070 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
7075 0x60, 0x7d, 0x9a, 0xb7, 0xd4, 0xf1, 0x0e, 0x2b, 7071 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
7076 0x48, 0x65, 0x82, 0x9f, 0xbc, 0xd9, 0xf6, 0x13, 7072 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
7077 0x30, 0x4d, 0x6a, 0x87, 0xa4, 0xc1, 0xde, 0xfb, 7073 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
7078 0x18, 0x35, 0x52, 0x6f, 0x8c, 0xa9, 0xc6, 0xe3, 7074 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
7079 0x00, 0x1f, 0x3e, 0x5d, 0x7c, 0x9b, 0xba, 0xd9, 7075 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
7080 0xf8, 0x17, 0x36, 0x55, 0x74, 0x93, 0xb2, 0xd1, 7076 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
7081 0xf0, 0x0f, 0x2e, 0x4d, 0x6c, 0x8b, 0xaa, 0xc9, 7077 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
7082 0xe8, 0x07, 0x26, 0x45, 0x64, 0x83, 0xa2, 0xc1, 7078 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
7083 0xe0, 0xff, 0x1e, 0x3d, 0x5c, 0x7b, 0x9a, 0xb9, 7079 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
7084 0xd8, 0xf7, 0x16, 0x35, 0x54, 0x73, 0x92, 0xb1, 7080 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
7085 0xd0, 0xef, 0x0e, 0x2d, 0x4c, 0x6b, 0x8a, 0xa9, 7081 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
7086 0xc8, 0xe7, 0x06, 0x25, 0x44, 0x63, 0x82, 0xa1, 7082 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
7087 0xc0, 0xdf, 0xfe, 0x1d, 0x3c, 0x5b, 0x7a, 0x99, 7083 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
7088 0xb8, 0xd7, 0xf6, 0x15, 0x34, 0x53, 0x72, 0x91, 7084 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
7089 0xb0, 0xcf, 0xee, 0x0d, 0x2c, 0x4b, 0x6a, 0x89, 7085 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
7090 0xa8, 0xc7, 0xe6, 0x05, 0x24, 0x43, 0x62, 0x81, 7086 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
7091 0xa0, 0xbf, 0xde, 0xfd, 0x1c, 0x3b, 0x5a, 0x79, 7087 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
7092 0x98, 0xb7, 0xd6, 0xf5, 0x14, 0x33, 0x52, 0x71, 7088 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
7093 0x90, 0xaf, 0xce, 0xed, 0x0c, 0x2b, 0x4a, 0x69, 7089 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
7094 0x88, 0xa7, 0xc6, 0xe5, 0x04, 0x23, 0x42, 0x61, 7090 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
7095 0x80, 0x9f, 0xbe, 0xdd, 0xfc, 0x1b, 0x3a, 0x59, 7091 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
7096 0x78, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51, 7092 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
7097 0x70, 0x8f, 0xae, 0xcd, 0xec, 0x0b, 0x2a, 0x49, 7093 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
7098 0x68, 0x87, 0xa6, 0xc5, 0xe4, 0x03, 0x22, 0x41, 7094 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
7099 0x60, 0x7f, 0x9e, 0xbd, 0xdc, 0xfb, 0x1a, 0x39, 7095 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
7100 0x58, 0x77, 0x96, 0xb5, 0xd4, 0xf3, 0x12, 0x31, 7096 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
7101 0x50, 0x6f, 0x8e, 0xad, 0xcc, 0xeb, 0x0a, 0x29, 7097 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
7102 0x48, 0x67, 0x86, 0xa5, 0xc4, 0xe3, 0x02, 0x21, 7098 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
7103 0x40, 0x5f, 0x7e, 0x9d, 0xbc, 0xdb, 0xfa, 0x19, 7099 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
7104 0x38, 0x57, 0x76, 0x95, 0xb4, 0xd3, 0xf2, 0x11, 7100 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
7105 0x30, 0x4f, 0x6e, 0x8d, 0xac, 0xcb, 0xea, 0x09, 7101 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
7106 0x28, 0x47, 0x66, 0x85, 0xa4, 0xc3, 0xe2, 0x01, 7102 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
7107 0x20, 0x3f, 0x5e, 0x7d, 0x9c, 0xbb, 0xda, 0xf9, 7103 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
7108 0x18, 0x37, 0x56, 0x75, 0x94, 0xb3, 0xd2, 0xf1, 7104 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
7109 0x10, 0x2f, 0x4e, 0x6d, 0x8c, 0xab, 0xca, 0xe9, 7105 "\x00\x21\x42\x63",
7110 0x08, 0x27, 0x46, 0x65, 0x84, 0xa3, 0xc2, 0xe1,
7111 0x00, 0x21, 0x42, 0x63,
7112 },
7113 .ilen = 4100, 7106 .ilen = 4100,
7114 .result = { 7107 .result =
7115 0xb5, 0x81, 0xf5, 0x64, 0x18, 0x73, 0xe3, 0xf0, 7108 "\xb5\x81\xf5\x64\x18\x73\xe3\xf0"
7116 0x4c, 0x13, 0xf2, 0x77, 0x18, 0x60, 0x65, 0x5e, 7109 "\x4c\x13\xf2\x77\x18\x60\x65\x5e"
7117 0x29, 0x01, 0xce, 0x98, 0x55, 0x53, 0xf9, 0x0c, 7110 "\x29\x01\xce\x98\x55\x53\xf9\x0c"
7118 0x2a, 0x08, 0xd5, 0x09, 0xb3, 0x57, 0x55, 0x56, 7111 "\x2a\x08\xd5\x09\xb3\x57\x55\x56"
7119 0xc5, 0xe9, 0x56, 0x90, 0xcb, 0x6a, 0xa3, 0xc0, 7112 "\xc5\xe9\x56\x90\xcb\x6a\xa3\xc0"
7120 0xff, 0xc4, 0x79, 0xb4, 0xd2, 0x97, 0x5d, 0xc4, 7113 "\xff\xc4\x79\xb4\xd2\x97\x5d\xc4"
7121 0x43, 0xd1, 0xfe, 0x94, 0x7b, 0x88, 0x06, 0x5a, 7114 "\x43\xd1\xfe\x94\x7b\x88\x06\x5a"
7122 0xb2, 0x9e, 0x2c, 0xfc, 0x44, 0x03, 0xb7, 0x90, 7115 "\xb2\x9e\x2c\xfc\x44\x03\xb7\x90"
7123 0xa0, 0xc1, 0xba, 0x6a, 0x33, 0xb8, 0xc7, 0xb2, 7116 "\xa0\xc1\xba\x6a\x33\xb8\xc7\xb2"
7124 0x9d, 0xe1, 0x12, 0x4f, 0xc0, 0x64, 0xd4, 0x01, 7117 "\x9d\xe1\x12\x4f\xc0\x64\xd4\x01"
7125 0xfe, 0x8c, 0x7a, 0x66, 0xf7, 0xe6, 0x5a, 0x91, 7118 "\xfe\x8c\x7a\x66\xf7\xe6\x5a\x91"
7126 0xbb, 0xde, 0x56, 0x86, 0xab, 0x65, 0x21, 0x30, 7119 "\xbb\xde\x56\x86\xab\x65\x21\x30"
7127 0x00, 0x84, 0x65, 0x24, 0xa5, 0x7d, 0x85, 0xb4, 7120 "\x00\x84\x65\x24\xa5\x7d\x85\xb4"
7128 0xe3, 0x17, 0xed, 0x3a, 0xb7, 0x6f, 0xb4, 0x0b, 7121 "\xe3\x17\xed\x3a\xb7\x6f\xb4\x0b"
7129 0x0b, 0xaf, 0x15, 0xae, 0x5a, 0x8f, 0xf2, 0x0c, 7122 "\x0b\xaf\x15\xae\x5a\x8f\xf2\x0c"
7130 0x2f, 0x27, 0xf4, 0x09, 0xd8, 0xd2, 0x96, 0xb7, 7123 "\x2f\x27\xf4\x09\xd8\xd2\x96\xb7"
7131 0x71, 0xf2, 0xc5, 0x99, 0x4d, 0x7e, 0x7f, 0x75, 7124 "\x71\xf2\xc5\x99\x4d\x7e\x7f\x75"
7132 0x77, 0x89, 0x30, 0x8b, 0x59, 0xdb, 0xa2, 0xb2, 7125 "\x77\x89\x30\x8b\x59\xdb\xa2\xb2"
7133 0xa0, 0xf3, 0x19, 0x39, 0x2b, 0xc5, 0x7e, 0x3f, 7126 "\xa0\xf3\x19\x39\x2b\xc5\x7e\x3f"
7134 0x4f, 0xd9, 0xd3, 0x56, 0x28, 0x97, 0x44, 0xdc, 7127 "\x4f\xd9\xd3\x56\x28\x97\x44\xdc"
7135 0xc0, 0x8b, 0x77, 0x24, 0xd9, 0x52, 0xe7, 0xc5, 7128 "\xc0\x8b\x77\x24\xd9\x52\xe7\xc5"
7136 0xaf, 0xf6, 0x7d, 0x59, 0xb2, 0x44, 0x05, 0x1d, 7129 "\xaf\xf6\x7d\x59\xb2\x44\x05\x1d"
7137 0xb1, 0xb0, 0x11, 0xa5, 0x0f, 0xec, 0x33, 0xe1, 7130 "\xb1\xb0\x11\xa5\x0f\xec\x33\xe1"
7138 0x6d, 0x1b, 0x4e, 0x1f, 0xff, 0x57, 0x91, 0xb4, 7131 "\x6d\x1b\x4e\x1f\xff\x57\x91\xb4"
7139 0x5b, 0x9a, 0x96, 0xc5, 0x53, 0xbc, 0xae, 0x20, 7132 "\x5b\x9a\x96\xc5\x53\xbc\xae\x20"
7140 0x3c, 0xbb, 0x14, 0xe2, 0xe8, 0x22, 0x33, 0xc1, 7133 "\x3c\xbb\x14\xe2\xe8\x22\x33\xc1"
7141 0x5e, 0x76, 0x9e, 0x46, 0x99, 0xf6, 0x2a, 0x15, 7134 "\x5e\x76\x9e\x46\x99\xf6\x2a\x15"
7142 0xc6, 0x97, 0x02, 0xa0, 0x66, 0x43, 0xd1, 0xa6, 7135 "\xc6\x97\x02\xa0\x66\x43\xd1\xa6"
7143 0x31, 0xa6, 0x9f, 0xfb, 0xf4, 0xd3, 0x69, 0xe5, 7136 "\x31\xa6\x9f\xfb\xf4\xd3\x69\xe5"
7144 0xcd, 0x76, 0x95, 0xb8, 0x7a, 0x82, 0x7f, 0x21, 7137 "\xcd\x76\x95\xb8\x7a\x82\x7f\x21"
7145 0x45, 0xff, 0x3f, 0xce, 0x55, 0xf6, 0x95, 0x10, 7138 "\x45\xff\x3f\xce\x55\xf6\x95\x10"
7146 0x08, 0x77, 0x10, 0x43, 0xc6, 0xf3, 0x09, 0xe5, 7139 "\x08\x77\x10\x43\xc6\xf3\x09\xe5"
7147 0x68, 0xe7, 0x3c, 0xad, 0x00, 0x52, 0x45, 0x0d, 7140 "\x68\xe7\x3c\xad\x00\x52\x45\x0d"
7148 0xfe, 0x2d, 0xc6, 0xc2, 0x94, 0x8c, 0x12, 0x1d, 7141 "\xfe\x2d\xc6\xc2\x94\x8c\x12\x1d"
7149 0xe6, 0x25, 0xae, 0x98, 0x12, 0x8e, 0x19, 0x9c, 7142 "\xe6\x25\xae\x98\x12\x8e\x19\x9c"
7150 0x81, 0x68, 0xb1, 0x11, 0xf6, 0x69, 0xda, 0xe3, 7143 "\x81\x68\xb1\x11\xf6\x69\xda\xe3"
7151 0x62, 0x08, 0x18, 0x7a, 0x25, 0x49, 0x28, 0xac, 7144 "\x62\x08\x18\x7a\x25\x49\x28\xac"
7152 0xba, 0x71, 0x12, 0x0b, 0xe4, 0xa2, 0xe5, 0xc7, 7145 "\xba\x71\x12\x0b\xe4\xa2\xe5\xc7"
7153 0x5d, 0x8e, 0xec, 0x49, 0x40, 0x21, 0xbf, 0x5a, 7146 "\x5d\x8e\xec\x49\x40\x21\xbf\x5a"
7154 0x98, 0xf3, 0x02, 0x68, 0x55, 0x03, 0x7f, 0x8a, 7147 "\x98\xf3\x02\x68\x55\x03\x7f\x8a"
7155 0xe5, 0x94, 0x0c, 0x32, 0x5c, 0x07, 0x82, 0x63, 7148 "\xe5\x94\x0c\x32\x5c\x07\x82\x63"
7156 0xaf, 0x6f, 0x91, 0x40, 0x84, 0x8e, 0x52, 0x25, 7149 "\xaf\x6f\x91\x40\x84\x8e\x52\x25"
7157 0xd0, 0xb0, 0x29, 0x53, 0x05, 0xe2, 0x50, 0x7a, 7150 "\xd0\xb0\x29\x53\x05\xe2\x50\x7a"
7158 0x34, 0xeb, 0xc9, 0x46, 0x20, 0xa8, 0x3d, 0xde, 7151 "\x34\xeb\xc9\x46\x20\xa8\x3d\xde"
7159 0x7f, 0x16, 0x5f, 0x36, 0xc5, 0x2e, 0xdc, 0xd1, 7152 "\x7f\x16\x5f\x36\xc5\x2e\xdc\xd1"
7160 0x15, 0x47, 0xc7, 0x50, 0x40, 0x6d, 0x91, 0xc5, 7153 "\x15\x47\xc7\x50\x40\x6d\x91\xc5"
7161 0xe7, 0x93, 0x95, 0x1a, 0xd3, 0x57, 0xbc, 0x52, 7154 "\xe7\x93\x95\x1a\xd3\x57\xbc\x52"
7162 0x33, 0xee, 0x14, 0x19, 0x22, 0x52, 0x89, 0xa7, 7155 "\x33\xee\x14\x19\x22\x52\x89\xa7"
7163 0x4a, 0x25, 0x56, 0x77, 0x4b, 0xca, 0xcf, 0x0a, 7156 "\x4a\x25\x56\x77\x4b\xca\xcf\x0a"
7164 0xe1, 0xf5, 0x35, 0x85, 0x30, 0x7e, 0x59, 0x4a, 7157 "\xe1\xf5\x35\x85\x30\x7e\x59\x4a"
7165 0xbd, 0x14, 0x5b, 0xdf, 0xe3, 0x46, 0xcb, 0xac, 7158 "\xbd\x14\x5b\xdf\xe3\x46\xcb\xac"
7166 0x1f, 0x6c, 0x96, 0x0e, 0xf4, 0x81, 0xd1, 0x99, 7159 "\x1f\x6c\x96\x0e\xf4\x81\xd1\x99"
7167 0xca, 0x88, 0x63, 0x3d, 0x02, 0x58, 0x6b, 0xa9, 7160 "\xca\x88\x63\x3d\x02\x58\x6b\xa9"
7168 0xe5, 0x9f, 0xb3, 0x00, 0xb2, 0x54, 0xc6, 0x74, 7161 "\xe5\x9f\xb3\x00\xb2\x54\xc6\x74"
7169 0x1c, 0xbf, 0x46, 0xab, 0x97, 0xcc, 0xf8, 0x54, 7162 "\x1c\xbf\x46\xab\x97\xcc\xf8\x54"
7170 0x04, 0x07, 0x08, 0x52, 0xe6, 0xc0, 0xda, 0x93, 7163 "\x04\x07\x08\x52\xe6\xc0\xda\x93"
7171 0x74, 0x7d, 0x93, 0x99, 0x5d, 0x78, 0x68, 0xa6, 7164 "\x74\x7d\x93\x99\x5d\x78\x68\xa6"
7172 0x2e, 0x6b, 0xd3, 0x6a, 0x69, 0xcc, 0x12, 0x6b, 7165 "\x2e\x6b\xd3\x6a\x69\xcc\x12\x6b"
7173 0xd4, 0xc7, 0xa5, 0xc6, 0xe7, 0xf6, 0x03, 0x04, 7166 "\xd4\xc7\xa5\xc6\xe7\xf6\x03\x04"
7174 0x5d, 0xcd, 0x61, 0x5e, 0x17, 0x40, 0xdc, 0xd1, 7167 "\x5d\xcd\x61\x5e\x17\x40\xdc\xd1"
7175 0x5c, 0xf5, 0x08, 0xdf, 0x5c, 0x90, 0x85, 0xa4, 7168 "\x5c\xf5\x08\xdf\x5c\x90\x85\xa4"
7176 0xaf, 0xf6, 0x78, 0xbb, 0x0d, 0xf1, 0xf4, 0xa4, 7169 "\xaf\xf6\x78\xbb\x0d\xf1\xf4\xa4"
7177 0x54, 0x26, 0x72, 0x9e, 0x61, 0xfa, 0x86, 0xcf, 7170 "\x54\x26\x72\x9e\x61\xfa\x86\xcf"
7178 0xe8, 0x9e, 0xa1, 0xe0, 0xc7, 0x48, 0x23, 0xae, 7171 "\xe8\x9e\xa1\xe0\xc7\x48\x23\xae"
7179 0x5a, 0x90, 0xae, 0x75, 0x0a, 0x74, 0x18, 0x89, 7172 "\x5a\x90\xae\x75\x0a\x74\x18\x89"
7180 0x05, 0xb1, 0x92, 0xb2, 0x7f, 0xd0, 0x1b, 0xa6, 7173 "\x05\xb1\x92\xb2\x7f\xd0\x1b\xa6"
7181 0x62, 0x07, 0x25, 0x01, 0xc7, 0xc2, 0x4f, 0xf9, 7174 "\x62\x07\x25\x01\xc7\xc2\x4f\xf9"
7182 0xe8, 0xfe, 0x63, 0x95, 0x80, 0x07, 0xb4, 0x26, 7175 "\xe8\xfe\x63\x95\x80\x07\xb4\x26"
7183 0xcc, 0xd1, 0x26, 0xb6, 0xc4, 0x3f, 0x9e, 0xcb, 7176 "\xcc\xd1\x26\xb6\xc4\x3f\x9e\xcb"
7184 0x8e, 0x3b, 0x2e, 0x44, 0x16, 0xd3, 0x10, 0x9a, 7177 "\x8e\x3b\x2e\x44\x16\xd3\x10\x9a"
7185 0x95, 0x08, 0xeb, 0xc8, 0xcb, 0xeb, 0xbf, 0x6f, 7178 "\x95\x08\xeb\xc8\xcb\xeb\xbf\x6f"
7186 0x0b, 0xcd, 0x1f, 0xc8, 0xca, 0x86, 0xaa, 0xec, 7179 "\x0b\xcd\x1f\xc8\xca\x86\xaa\xec"
7187 0x33, 0xe6, 0x69, 0xf4, 0x45, 0x25, 0x86, 0x3a, 7180 "\x33\xe6\x69\xf4\x45\x25\x86\x3a"
7188 0x22, 0x94, 0x4f, 0x00, 0x23, 0x6a, 0x44, 0xc2, 7181 "\x22\x94\x4f\x00\x23\x6a\x44\xc2"
7189 0x49, 0x97, 0x33, 0xab, 0x36, 0x14, 0x0a, 0x70, 7182 "\x49\x97\x33\xab\x36\x14\x0a\x70"
7190 0x24, 0xc3, 0xbe, 0x04, 0x3b, 0x79, 0xa0, 0xf9, 7183 "\x24\xc3\xbe\x04\x3b\x79\xa0\xf9"
7191 0xb8, 0xe7, 0x76, 0x29, 0x22, 0x83, 0xd7, 0xf2, 7184 "\xb8\xe7\x76\x29\x22\x83\xd7\xf2"
7192 0x94, 0xf4, 0x41, 0x49, 0xba, 0x5f, 0x7b, 0x07, 7185 "\x94\xf4\x41\x49\xba\x5f\x7b\x07"
7193 0xb5, 0xfb, 0xdb, 0x03, 0x1a, 0x9f, 0xb6, 0x4c, 7186 "\xb5\xfb\xdb\x03\x1a\x9f\xb6\x4c"
7194 0xc2, 0x2e, 0x37, 0x40, 0x49, 0xc3, 0x38, 0x16, 7187 "\xc2\x2e\x37\x40\x49\xc3\x38\x16"
7195 0xe2, 0x4f, 0x77, 0x82, 0xb0, 0x68, 0x4c, 0x71, 7188 "\xe2\x4f\x77\x82\xb0\x68\x4c\x71"
7196 0x1d, 0x57, 0x61, 0x9c, 0xd9, 0x4e, 0x54, 0x99, 7189 "\x1d\x57\x61\x9c\xd9\x4e\x54\x99"
7197 0x47, 0x13, 0x28, 0x73, 0x3c, 0xbb, 0x00, 0x90, 7190 "\x47\x13\x28\x73\x3c\xbb\x00\x90"
7198 0xf3, 0x4d, 0xc9, 0x0e, 0xfd, 0xe7, 0xb1, 0x71, 7191 "\xf3\x4d\xc9\x0e\xfd\xe7\xb1\x71"
7199 0xd3, 0x15, 0x79, 0xbf, 0xcc, 0x26, 0x2f, 0xbd, 7192 "\xd3\x15\x79\xbf\xcc\x26\x2f\xbd"
7200 0xad, 0x6c, 0x50, 0x69, 0x6c, 0x3e, 0x6d, 0x80, 7193 "\xad\x6c\x50\x69\x6c\x3e\x6d\x80"
7201 0x9a, 0xea, 0x78, 0xaf, 0x19, 0xb2, 0x0d, 0x4d, 7194 "\x9a\xea\x78\xaf\x19\xb2\x0d\x4d"
7202 0xad, 0x04, 0x07, 0xae, 0x22, 0x90, 0x4a, 0x93, 7195 "\xad\x04\x07\xae\x22\x90\x4a\x93"
7203 0x32, 0x0e, 0x36, 0x9b, 0x1b, 0x46, 0xba, 0x3b, 7196 "\x32\x0e\x36\x9b\x1b\x46\xba\x3b"
7204 0xb4, 0xac, 0xc6, 0xd1, 0xa2, 0x31, 0x53, 0x3b, 7197 "\xb4\xac\xc6\xd1\xa2\x31\x53\x3b"
7205 0x2a, 0x3d, 0x45, 0xfe, 0x03, 0x61, 0x10, 0x85, 7198 "\x2a\x3d\x45\xfe\x03\x61\x10\x85"
7206 0x17, 0x69, 0xa6, 0x78, 0xcc, 0x6c, 0x87, 0x49, 7199 "\x17\x69\xa6\x78\xcc\x6c\x87\x49"
7207 0x53, 0xf9, 0x80, 0x10, 0xde, 0x80, 0xa2, 0x41, 7200 "\x53\xf9\x80\x10\xde\x80\xa2\x41"
7208 0x6a, 0xc3, 0x32, 0x02, 0xad, 0x6d, 0x3c, 0x56, 7201 "\x6a\xc3\x32\x02\xad\x6d\x3c\x56"
7209 0x00, 0x71, 0x51, 0x06, 0xa7, 0xbd, 0xfb, 0xef, 7202 "\x00\x71\x51\x06\xa7\xbd\xfb\xef"
7210 0x3c, 0xb5, 0x9f, 0xfc, 0x48, 0x7d, 0x53, 0x7c, 7203 "\x3c\xb5\x9f\xfc\x48\x7d\x53\x7c"
7211 0x66, 0xb0, 0x49, 0x23, 0xc4, 0x47, 0x10, 0x0e, 7204 "\x66\xb0\x49\x23\xc4\x47\x10\x0e"
7212 0xe5, 0x6c, 0x74, 0x13, 0xe6, 0xc5, 0x3f, 0xaa, 7205 "\xe5\x6c\x74\x13\xe6\xc5\x3f\xaa"
7213 0xde, 0xff, 0x07, 0x44, 0xdd, 0x56, 0x1b, 0xad, 7206 "\xde\xff\x07\x44\xdd\x56\x1b\xad"
7214 0x09, 0x77, 0xfb, 0x5b, 0x12, 0xb8, 0x0d, 0x38, 7207 "\x09\x77\xfb\x5b\x12\xb8\x0d\x38"
7215 0x17, 0x37, 0x35, 0x7b, 0x9b, 0xbc, 0xfe, 0xd4, 7208 "\x17\x37\x35\x7b\x9b\xbc\xfe\xd4"
7216 0x7e, 0x8b, 0xda, 0x7e, 0x5b, 0x04, 0xa7, 0x22, 7209 "\x7e\x8b\xda\x7e\x5b\x04\xa7\x22"
7217 0xa7, 0x31, 0xa1, 0x20, 0x86, 0xc7, 0x1b, 0x99, 7210 "\xa7\x31\xa1\x20\x86\xc7\x1b\x99"
7218 0xdb, 0xd1, 0x89, 0xf4, 0x94, 0xa3, 0x53, 0x69, 7211 "\xdb\xd1\x89\xf4\x94\xa3\x53\x69"
7219 0x8d, 0xe7, 0xe8, 0x74, 0x11, 0x8d, 0x74, 0xd6, 7212 "\x8d\xe7\xe8\x74\x11\x8d\x74\xd6"
7220 0x07, 0x37, 0x91, 0x9f, 0xfd, 0x67, 0x50, 0x3a, 7213 "\x07\x37\x91\x9f\xfd\x67\x50\x3a"
7221 0xc9, 0xe1, 0xf4, 0x36, 0xd5, 0xa0, 0x47, 0xd1, 7214 "\xc9\xe1\xf4\x36\xd5\xa0\x47\xd1"
7222 0xf9, 0xe5, 0x39, 0xa3, 0x31, 0xac, 0x07, 0x36, 7215 "\xf9\xe5\x39\xa3\x31\xac\x07\x36"
7223 0x23, 0xf8, 0x66, 0x18, 0x14, 0x28, 0x34, 0x0f, 7216 "\x23\xf8\x66\x18\x14\x28\x34\x0f"
7224 0xb8, 0xd0, 0xe7, 0x29, 0xb3, 0x04, 0x4b, 0x55, 7217 "\xb8\xd0\xe7\x29\xb3\x04\x4b\x55"
7225 0x01, 0x41, 0xb2, 0x75, 0x8d, 0xcb, 0x96, 0x85, 7218 "\x01\x41\xb2\x75\x8d\xcb\x96\x85"
7226 0x3a, 0xfb, 0xab, 0x2b, 0x9e, 0xfa, 0x58, 0x20, 7219 "\x3a\xfb\xab\x2b\x9e\xfa\x58\x20"
7227 0x44, 0x1f, 0xc0, 0x14, 0x22, 0x75, 0x61, 0xe8, 7220 "\x44\x1f\xc0\x14\x22\x75\x61\xe8"
7228 0xaa, 0x19, 0xcf, 0xf1, 0x82, 0x56, 0xf4, 0xd7, 7221 "\xaa\x19\xcf\xf1\x82\x56\xf4\xd7"
7229 0x78, 0x7b, 0x3d, 0x5f, 0xb3, 0x9e, 0x0b, 0x8a, 7222 "\x78\x7b\x3d\x5f\xb3\x9e\x0b\x8a"
7230 0x57, 0x50, 0xdb, 0x17, 0x41, 0x65, 0x4d, 0xa3, 7223 "\x57\x50\xdb\x17\x41\x65\x4d\xa3"
7231 0x02, 0xc9, 0x9c, 0x9c, 0x53, 0xfb, 0x39, 0x39, 7224 "\x02\xc9\x9c\x9c\x53\xfb\x39\x39"
7232 0x9b, 0x1d, 0x72, 0x24, 0xda, 0xb7, 0x39, 0xbe, 7225 "\x9b\x1d\x72\x24\xda\xb7\x39\xbe"
7233 0x13, 0x3b, 0xfa, 0x29, 0xda, 0x9e, 0x54, 0x64, 7226 "\x13\x3b\xfa\x29\xda\x9e\x54\x64"
7234 0x6e, 0xba, 0xd8, 0xa1, 0xcb, 0xb3, 0x36, 0xfa, 7227 "\x6e\xba\xd8\xa1\xcb\xb3\x36\xfa"
7235 0xcb, 0x47, 0x85, 0xe9, 0x61, 0x38, 0xbc, 0xbe, 7228 "\xcb\x47\x85\xe9\x61\x38\xbc\xbe"
7236 0xc5, 0x00, 0x38, 0x2a, 0x54, 0xf7, 0xc4, 0xb9, 7229 "\xc5\x00\x38\x2a\x54\xf7\xc4\xb9"
7237 0xb3, 0xd3, 0x7b, 0xa0, 0xa0, 0xf8, 0x72, 0x7f, 7230 "\xb3\xd3\x7b\xa0\xa0\xf8\x72\x7f"
7238 0x8c, 0x8e, 0x82, 0x0e, 0xc6, 0x1c, 0x75, 0x9d, 7231 "\x8c\x8e\x82\x0e\xc6\x1c\x75\x9d"
7239 0xca, 0x8e, 0x61, 0x87, 0xde, 0xad, 0x80, 0xd2, 7232 "\xca\x8e\x61\x87\xde\xad\x80\xd2"
7240 0xf5, 0xf9, 0x80, 0xef, 0x15, 0x75, 0xaf, 0xf5, 7233 "\xf5\xf9\x80\xef\x15\x75\xaf\xf5"
7241 0x80, 0xfb, 0xff, 0x6d, 0x1e, 0x25, 0xb7, 0x40, 7234 "\x80\xfb\xff\x6d\x1e\x25\xb7\x40"
7242 0x61, 0x6a, 0x39, 0x5a, 0x6a, 0xb5, 0x31, 0xab, 7235 "\x61\x6a\x39\x5a\x6a\xb5\x31\xab"
7243 0x97, 0x8a, 0x19, 0x89, 0x44, 0x40, 0xc0, 0xa6, 7236 "\x97\x8a\x19\x89\x44\x40\xc0\xa6"
7244 0xb4, 0x4e, 0x30, 0x32, 0x7b, 0x13, 0xe7, 0x67, 7237 "\xb4\x4e\x30\x32\x7b\x13\xe7\x67"
7245 0xa9, 0x8b, 0x57, 0x04, 0xc2, 0x01, 0xa6, 0xf4, 7238 "\xa9\x8b\x57\x04\xc2\x01\xa6\xf4"
7246 0x28, 0x99, 0xad, 0x2c, 0x76, 0xa3, 0x78, 0xc2, 7239 "\x28\x99\xad\x2c\x76\xa3\x78\xc2"
7247 0x4a, 0xe6, 0xca, 0x5c, 0x50, 0x6a, 0xc1, 0xb0, 7240 "\x4a\xe6\xca\x5c\x50\x6a\xc1\xb0"
7248 0x62, 0x4b, 0x10, 0x8e, 0x7c, 0x17, 0x43, 0xb3, 7241 "\x62\x4b\x10\x8e\x7c\x17\x43\xb3"
7249 0x17, 0x66, 0x1c, 0x3e, 0x8d, 0x69, 0xf0, 0x5a, 7242 "\x17\x66\x1c\x3e\x8d\x69\xf0\x5a"
7250 0x71, 0xf5, 0x97, 0xdc, 0xd1, 0x45, 0xdd, 0x28, 7243 "\x71\xf5\x97\xdc\xd1\x45\xdd\x28"
7251 0xf3, 0x5d, 0xdf, 0x53, 0x7b, 0x11, 0xe5, 0xbc, 7244 "\xf3\x5d\xdf\x53\x7b\x11\xe5\xbc"
7252 0x4c, 0xdb, 0x1b, 0x51, 0x6b, 0xe9, 0xfb, 0x3d, 7245 "\x4c\xdb\x1b\x51\x6b\xe9\xfb\x3d"
7253 0xc1, 0xc3, 0x2c, 0xb9, 0x71, 0xf5, 0xb6, 0xb2, 7246 "\xc1\xc3\x2c\xb9\x71\xf5\xb6\xb2"
7254 0x13, 0x36, 0x79, 0x80, 0x53, 0xe8, 0xd3, 0xa6, 7247 "\x13\x36\x79\x80\x53\xe8\xd3\xa6"
7255 0x0a, 0xaf, 0xfd, 0x56, 0x97, 0xf7, 0x40, 0x8e, 7248 "\x0a\xaf\xfd\x56\x97\xf7\x40\x8e"
7256 0x45, 0xce, 0xf8, 0xb0, 0x9e, 0x5c, 0x33, 0x82, 7249 "\x45\xce\xf8\xb0\x9e\x5c\x33\x82"
7257 0xb0, 0x44, 0x56, 0xfc, 0x05, 0x09, 0xe9, 0x2a, 7250 "\xb0\x44\x56\xfc\x05\x09\xe9\x2a"
7258 0xac, 0x26, 0x80, 0x14, 0x1d, 0xc8, 0x3a, 0x35, 7251 "\xac\x26\x80\x14\x1d\xc8\x3a\x35"
7259 0x4c, 0x82, 0x97, 0xfd, 0x76, 0xb7, 0xa9, 0x0a, 7252 "\x4c\x82\x97\xfd\x76\xb7\xa9\x0a"
7260 0x35, 0x58, 0x79, 0x8e, 0x0f, 0x66, 0xea, 0xaf, 7253 "\x35\x58\x79\x8e\x0f\x66\xea\xaf"
7261 0x51, 0x6c, 0x09, 0xa9, 0x6e, 0x9b, 0xcb, 0x9a, 7254 "\x51\x6c\x09\xa9\x6e\x9b\xcb\x9a"
7262 0x31, 0x47, 0xa0, 0x2f, 0x7c, 0x71, 0xb4, 0x4a, 7255 "\x31\x47\xa0\x2f\x7c\x71\xb4\x4a"
7263 0x11, 0xaa, 0x8c, 0x66, 0xc5, 0x64, 0xe6, 0x3a, 7256 "\x11\xaa\x8c\x66\xc5\x64\xe6\x3a"
7264 0x54, 0xda, 0x24, 0x6a, 0xc4, 0x41, 0x65, 0x46, 7257 "\x54\xda\x24\x6a\xc4\x41\x65\x46"
7265 0x82, 0xa0, 0x0a, 0x0f, 0x5f, 0xfb, 0x25, 0xd0, 7258 "\x82\xa0\x0a\x0f\x5f\xfb\x25\xd0"
7266 0x2c, 0x91, 0xa7, 0xee, 0xc4, 0x81, 0x07, 0x86, 7259 "\x2c\x91\xa7\xee\xc4\x81\x07\x86"
7267 0x75, 0x5e, 0x33, 0x69, 0x97, 0xe4, 0x2c, 0xa8, 7260 "\x75\x5e\x33\x69\x97\xe4\x2c\xa8"
7268 0x9d, 0x9f, 0x0b, 0x6a, 0xbe, 0xad, 0x98, 0xda, 7261 "\x9d\x9f\x0b\x6a\xbe\xad\x98\xda"
7269 0x6d, 0x94, 0x41, 0xda, 0x2c, 0x1e, 0x89, 0xc4, 7262 "\x6d\x94\x41\xda\x2c\x1e\x89\xc4"
7270 0xc2, 0xaf, 0x1e, 0x00, 0x05, 0x0b, 0x83, 0x60, 7263 "\xc2\xaf\x1e\x00\x05\x0b\x83\x60"
7271 0xbd, 0x43, 0xea, 0x15, 0x23, 0x7f, 0xb9, 0xac, 7264 "\xbd\x43\xea\x15\x23\x7f\xb9\xac"
7272 0xee, 0x4f, 0x2c, 0xaf, 0x2a, 0xf3, 0xdf, 0xd0, 7265 "\xee\x4f\x2c\xaf\x2a\xf3\xdf\xd0"
7273 0xf3, 0x19, 0x31, 0xbb, 0x4a, 0x74, 0x84, 0x17, 7266 "\xf3\x19\x31\xbb\x4a\x74\x84\x17"
7274 0x52, 0x32, 0x2c, 0x7d, 0x61, 0xe4, 0xcb, 0xeb, 7267 "\x52\x32\x2c\x7d\x61\xe4\xcb\xeb"
7275 0x80, 0x38, 0x15, 0x52, 0xcb, 0x6f, 0xea, 0xe5, 7268 "\x80\x38\x15\x52\xcb\x6f\xea\xe5"
7276 0x73, 0x9c, 0xd9, 0x24, 0x69, 0xc6, 0x95, 0x32, 7269 "\x73\x9c\xd9\x24\x69\xc6\x95\x32"
7277 0x21, 0xc8, 0x11, 0xe4, 0xdc, 0x36, 0xd7, 0x93, 7270 "\x21\xc8\x11\xe4\xdc\x36\xd7\x93"
7278 0x38, 0x66, 0xfb, 0xb2, 0x7f, 0x3a, 0xb9, 0xaf, 7271 "\x38\x66\xfb\xb2\x7f\x3a\xb9\xaf"
7279 0x31, 0xdd, 0x93, 0x75, 0x78, 0x8a, 0x2c, 0x94, 7272 "\x31\xdd\x93\x75\x78\x8a\x2c\x94"
7280 0x87, 0x1a, 0x58, 0xec, 0x9e, 0x7d, 0x4d, 0xba, 7273 "\x87\x1a\x58\xec\x9e\x7d\x4d\xba"
7281 0xe1, 0xe5, 0x4d, 0xfc, 0xbc, 0xa4, 0x2a, 0x14, 7274 "\xe1\xe5\x4d\xfc\xbc\xa4\x2a\x14"
7282 0xef, 0xcc, 0xa7, 0xec, 0xab, 0x43, 0x09, 0x18, 7275 "\xef\xcc\xa7\xec\xab\x43\x09\x18"
7283 0xd3, 0xab, 0x68, 0xd1, 0x07, 0x99, 0x44, 0x47, 7276 "\xd3\xab\x68\xd1\x07\x99\x44\x47"
7284 0xd6, 0x83, 0x85, 0x3b, 0x30, 0xea, 0xa9, 0x6b, 7277 "\xd6\x83\x85\x3b\x30\xea\xa9\x6b"
7285 0x63, 0xea, 0xc4, 0x07, 0xfb, 0x43, 0x2f, 0xa4, 7278 "\x63\xea\xc4\x07\xfb\x43\x2f\xa4"
7286 0xaa, 0xb0, 0xab, 0x03, 0x89, 0xce, 0x3f, 0x8c, 7279 "\xaa\xb0\xab\x03\x89\xce\x3f\x8c"
7287 0x02, 0x7c, 0x86, 0x54, 0xbc, 0x88, 0xaf, 0x75, 7280 "\x02\x7c\x86\x54\xbc\x88\xaf\x75"
7288 0xd2, 0xdc, 0x63, 0x17, 0xd3, 0x26, 0xf6, 0x96, 7281 "\xd2\xdc\x63\x17\xd3\x26\xf6\x96"
7289 0xa9, 0x3c, 0xf1, 0x61, 0x8c, 0x11, 0x18, 0xcc, 7282 "\xa9\x3c\xf1\x61\x8c\x11\x18\xcc"
7290 0xd6, 0xea, 0x5b, 0xe2, 0xcd, 0xf0, 0xf1, 0xb2, 7283 "\xd6\xea\x5b\xe2\xcd\xf0\xf1\xb2"
7291 0xe5, 0x35, 0x90, 0x1f, 0x85, 0x4c, 0x76, 0x5b, 7284 "\xe5\x35\x90\x1f\x85\x4c\x76\x5b"
7292 0x66, 0xce, 0x44, 0xa4, 0x32, 0x9f, 0xe6, 0x7b, 7285 "\x66\xce\x44\xa4\x32\x9f\xe6\x7b"
7293 0x71, 0x6e, 0x9f, 0x58, 0x15, 0x67, 0x72, 0x87, 7286 "\x71\x6e\x9f\x58\x15\x67\x72\x87"
7294 0x64, 0x8e, 0x3a, 0x44, 0x45, 0xd4, 0x76, 0xfa, 7287 "\x64\x8e\x3a\x44\x45\xd4\x76\xfa"
7295 0xc2, 0xf6, 0xef, 0x85, 0x05, 0x18, 0x7a, 0x9b, 7288 "\xc2\xf6\xef\x85\x05\x18\x7a\x9b"
7296 0xba, 0x41, 0x54, 0xac, 0xf0, 0xfc, 0x59, 0x12, 7289 "\xba\x41\x54\xac\xf0\xfc\x59\x12"
7297 0x3f, 0xdf, 0xa0, 0xe5, 0x8a, 0x65, 0xfd, 0x3a, 7290 "\x3f\xdf\xa0\xe5\x8a\x65\xfd\x3a"
7298 0x62, 0x8d, 0x83, 0x2c, 0x03, 0xbe, 0x05, 0x76, 7291 "\x62\x8d\x83\x2c\x03\xbe\x05\x76"
7299 0x2e, 0x53, 0x49, 0x97, 0x94, 0x33, 0xae, 0x40, 7292 "\x2e\x53\x49\x97\x94\x33\xae\x40"
7300 0x81, 0x15, 0xdb, 0x6e, 0xad, 0xaa, 0xf5, 0x4b, 7293 "\x81\x15\xdb\x6e\xad\xaa\xf5\x4b"
7301 0xe3, 0x98, 0x70, 0xdf, 0xe0, 0x7c, 0xcd, 0xdb, 7294 "\xe3\x98\x70\xdf\xe0\x7c\xcd\xdb"
7302 0x02, 0xd4, 0x7d, 0x2f, 0xc1, 0xe6, 0xb4, 0xf3, 7295 "\x02\xd4\x7d\x2f\xc1\xe6\xb4\xf3"
7303 0xd7, 0x0d, 0x7a, 0xd9, 0x23, 0x9e, 0x87, 0x2d, 7296 "\xd7\x0d\x7a\xd9\x23\x9e\x87\x2d"
7304 0xce, 0x87, 0xad, 0xcc, 0x72, 0x05, 0x00, 0x29, 7297 "\xce\x87\xad\xcc\x72\x05\x00\x29"
7305 0xdc, 0x73, 0x7f, 0x64, 0xc1, 0x15, 0x0e, 0xc2, 7298 "\xdc\x73\x7f\x64\xc1\x15\x0e\xc2"
7306 0xdf, 0xa7, 0x5f, 0xeb, 0x41, 0xa1, 0xcd, 0xef, 7299 "\xdf\xa7\x5f\xeb\x41\xa1\xcd\xef"
7307 0x5c, 0x50, 0x79, 0x2a, 0x56, 0x56, 0x71, 0x8c, 7300 "\x5c\x50\x79\x2a\x56\x56\x71\x8c"
7308 0xac, 0xc0, 0x79, 0x50, 0x69, 0xca, 0x59, 0x32, 7301 "\xac\xc0\x79\x50\x69\xca\x59\x32"
7309 0x65, 0xf2, 0x54, 0xe4, 0x52, 0x38, 0x76, 0xd1, 7302 "\x65\xf2\x54\xe4\x52\x38\x76\xd1"
7310 0x5e, 0xde, 0x26, 0x9e, 0xfb, 0x75, 0x2e, 0x11, 7303 "\x5e\xde\x26\x9e\xfb\x75\x2e\x11"
7311 0xb5, 0x10, 0xf4, 0x17, 0x73, 0xf5, 0x89, 0xc7, 7304 "\xb5\x10\xf4\x17\x73\xf5\x89\xc7"
7312 0x4f, 0x43, 0x5c, 0x8e, 0x7c, 0xb9, 0x05, 0x52, 7305 "\x4f\x43\x5c\x8e\x7c\xb9\x05\x52"
7313 0x24, 0x40, 0x99, 0xfe, 0x9b, 0x85, 0x0b, 0x6c, 7306 "\x24\x40\x99\xfe\x9b\x85\x0b\x6c"
7314 0x22, 0x3e, 0x8b, 0xae, 0x86, 0xa1, 0xd2, 0x79, 7307 "\x22\x3e\x8b\xae\x86\xa1\xd2\x79"
7315 0x05, 0x68, 0x6b, 0xab, 0xe3, 0x41, 0x49, 0xed, 7308 "\x05\x68\x6b\xab\xe3\x41\x49\xed"
7316 0x15, 0xa1, 0x8d, 0x40, 0x2d, 0x61, 0xdf, 0x1a, 7309 "\x15\xa1\x8d\x40\x2d\x61\xdf\x1a"
7317 0x59, 0xc9, 0x26, 0x8b, 0xef, 0x30, 0x4c, 0x88, 7310 "\x59\xc9\x26\x8b\xef\x30\x4c\x88"
7318 0x4b, 0x10, 0xf8, 0x8d, 0xa6, 0x92, 0x9f, 0x4b, 7311 "\x4b\x10\xf8\x8d\xa6\x92\x9f\x4b"
7319 0xf3, 0xc4, 0x53, 0x0b, 0x89, 0x5d, 0x28, 0x92, 7312 "\xf3\xc4\x53\x0b\x89\x5d\x28\x92"
7320 0xcf, 0x78, 0xb2, 0xc0, 0x5d, 0xed, 0x7e, 0xfc, 7313 "\xcf\x78\xb2\xc0\x5d\xed\x7e\xfc"
7321 0xc0, 0x12, 0x23, 0x5f, 0x5a, 0x78, 0x86, 0x43, 7314 "\xc0\x12\x23\x5f\x5a\x78\x86\x43"
7322 0x6e, 0x27, 0xf7, 0x5a, 0xa7, 0x6a, 0xed, 0x19, 7315 "\x6e\x27\xf7\x5a\xa7\x6a\xed\x19"
7323 0x04, 0xf0, 0xb3, 0x12, 0xd1, 0xbd, 0x0e, 0x89, 7316 "\x04\xf0\xb3\x12\xd1\xbd\x0e\x89"
7324 0x6e, 0xbc, 0x96, 0xa8, 0xd8, 0x49, 0x39, 0x9f, 7317 "\x6e\xbc\x96\xa8\xd8\x49\x39\x9f"
7325 0x7e, 0x67, 0xf0, 0x2e, 0x3e, 0x01, 0xa9, 0xba, 7318 "\x7e\x67\xf0\x2e\x3e\x01\xa9\xba"
7326 0xec, 0x8b, 0x62, 0x8e, 0xcb, 0x4a, 0x70, 0x43, 7319 "\xec\x8b\x62\x8e\xcb\x4a\x70\x43"
7327 0xc7, 0xc2, 0xc4, 0xca, 0x82, 0x03, 0x73, 0xe9, 7320 "\xc7\xc2\xc4\xca\x82\x03\x73\xe9"
7328 0x11, 0xdf, 0xcf, 0x54, 0xea, 0xc9, 0xb0, 0x95, 7321 "\x11\xdf\xcf\x54\xea\xc9\xb0\x95"
7329 0x51, 0xc0, 0x13, 0x3d, 0x92, 0x05, 0xfa, 0xf4, 7322 "\x51\xc0\x13\x3d\x92\x05\xfa\xf4"
7330 0xa9, 0x34, 0xc8, 0xce, 0x6c, 0x3d, 0x54, 0xcc, 7323 "\xa9\x34\xc8\xce\x6c\x3d\x54\xcc"
7331 0xc4, 0xaf, 0xf1, 0xdc, 0x11, 0x44, 0x26, 0xa2, 7324 "\xc4\xaf\xf1\xdc\x11\x44\x26\xa2"
7332 0xaf, 0xf1, 0x85, 0x75, 0x7d, 0x03, 0x61, 0x68, 7325 "\xaf\xf1\x85\x75\x7d\x03\x61\x68"
7333 0x4e, 0x78, 0xc6, 0x92, 0x7d, 0x86, 0x7d, 0x77, 7326 "\x4e\x78\xc6\x92\x7d\x86\x7d\x77"
7334 0xdc, 0x71, 0x72, 0xdb, 0xc6, 0xae, 0xa1, 0xcb, 7327 "\xdc\x71\x72\xdb\xc6\xae\xa1\xcb"
7335 0x70, 0x9a, 0x0b, 0x19, 0xbe, 0x4a, 0x6c, 0x2a, 7328 "\x70\x9a\x0b\x19\xbe\x4a\x6c\x2a"
7336 0xe2, 0xba, 0x6c, 0x64, 0x9a, 0x13, 0x28, 0xdf, 7329 "\xe2\xba\x6c\x64\x9a\x13\x28\xdf"
7337 0x85, 0x75, 0xe6, 0x43, 0xf6, 0x87, 0x08, 0x68, 7330 "\x85\x75\xe6\x43\xf6\x87\x08\x68"
7338 0x6e, 0xba, 0x6e, 0x79, 0x9f, 0x04, 0xbc, 0x23, 7331 "\x6e\xba\x6e\x79\x9f\x04\xbc\x23"
7339 0x50, 0xf6, 0x33, 0x5c, 0x1f, 0x24, 0x25, 0xbe, 7332 "\x50\xf6\x33\x5c\x1f\x24\x25\xbe"
7340 0x33, 0x47, 0x80, 0x45, 0x56, 0xa3, 0xa7, 0xd7, 7333 "\x33\x47\x80\x45\x56\xa3\xa7\xd7"
7341 0x7a, 0xb1, 0x34, 0x0b, 0x90, 0x3c, 0x9c, 0xad, 7334 "\x7a\xb1\x34\x0b\x90\x3c\x9c\xad"
7342 0x44, 0x5f, 0x9e, 0x0e, 0x9d, 0xd4, 0xbd, 0x93, 7335 "\x44\x5f\x9e\x0e\x9d\xd4\xbd\x93"
7343 0x5e, 0xfa, 0x3c, 0xe0, 0xb0, 0xd9, 0xed, 0xf3, 7336 "\x5e\xfa\x3c\xe0\xb0\xd9\xed\xf3"
7344 0xd6, 0x2e, 0xff, 0x24, 0xd8, 0x71, 0x6c, 0xed, 7337 "\xd6\x2e\xff\x24\xd8\x71\x6c\xed"
7345 0xaf, 0x55, 0xeb, 0x22, 0xac, 0x93, 0x68, 0x32, 7338 "\xaf\x55\xeb\x22\xac\x93\x68\x32"
7346 0x05, 0x5b, 0x47, 0xdd, 0xc6, 0x4a, 0xcb, 0xc7, 7339 "\x05\x5b\x47\xdd\xc6\x4a\xcb\xc7"
7347 0x10, 0xe1, 0x3c, 0x92, 0x1a, 0xf3, 0x23, 0x78, 7340 "\x10\xe1\x3c\x92\x1a\xf3\x23\x78"
7348 0x2b, 0xa1, 0xd2, 0x80, 0xf4, 0x12, 0xb1, 0x20, 7341 "\x2b\xa1\xd2\x80\xf4\x12\xb1\x20"
7349 0x8f, 0xff, 0x26, 0x35, 0xdd, 0xfb, 0xc7, 0x4e, 7342 "\x8f\xff\x26\x35\xdd\xfb\xc7\x4e"
7350 0x78, 0xf1, 0x2d, 0x50, 0x12, 0x77, 0xa8, 0x60, 7343 "\x78\xf1\x2d\x50\x12\x77\xa8\x60"
7351 0x7c, 0x0f, 0xf5, 0x16, 0x2f, 0x63, 0x70, 0x2a, 7344 "\x7c\x0f\xf5\x16\x2f\x63\x70\x2a"
7352 0xc0, 0x96, 0x80, 0x4e, 0x0a, 0xb4, 0x93, 0x35, 7345 "\xc0\x96\x80\x4e\x0a\xb4\x93\x35"
7353 0x5d, 0x1d, 0x3f, 0x56, 0xf7, 0x2f, 0xbb, 0x90, 7346 "\x5d\x1d\x3f\x56\xf7\x2f\xbb\x90"
7354 0x11, 0x16, 0x8f, 0xa2, 0xec, 0x47, 0xbe, 0xac, 7347 "\x11\x16\x8f\xa2\xec\x47\xbe\xac"
7355 0x56, 0x01, 0x26, 0x56, 0xb1, 0x8c, 0xb2, 0x10, 7348 "\x56\x01\x26\x56\xb1\x8c\xb2\x10"
7356 0xf9, 0x1a, 0xca, 0xf5, 0xd1, 0xb7, 0x39, 0x20, 7349 "\xf9\x1a\xca\xf5\xd1\xb7\x39\x20"
7357 0x63, 0xf1, 0x69, 0x20, 0x4f, 0x13, 0x12, 0x1f, 7350 "\x63\xf1\x69\x20\x4f\x13\x12\x1f"
7358 0x5b, 0x65, 0xfc, 0x98, 0xf7, 0xc4, 0x7a, 0xbe, 7351 "\x5b\x65\xfc\x98\xf7\xc4\x7a\xbe"
7359 0xf7, 0x26, 0x4d, 0x2b, 0x84, 0x7b, 0x42, 0xad, 7352 "\xf7\x26\x4d\x2b\x84\x7b\x42\xad"
7360 0xd8, 0x7a, 0x0a, 0xb4, 0xd8, 0x74, 0xbf, 0xc1, 7353 "\xd8\x7a\x0a\xb4\xd8\x74\xbf\xc1"
7361 0xf0, 0x6e, 0xb4, 0x29, 0xa3, 0xbb, 0xca, 0x46, 7354 "\xf0\x6e\xb4\x29\xa3\xbb\xca\x46"
7362 0x67, 0x70, 0x6a, 0x2d, 0xce, 0x0e, 0xa2, 0x8a, 7355 "\x67\x70\x6a\x2d\xce\x0e\xa2\x8a"
7363 0xa9, 0x87, 0xbf, 0x05, 0xc4, 0xc1, 0x04, 0xa3, 7356 "\xa9\x87\xbf\x05\xc4\xc1\x04\xa3"
7364 0xab, 0xd4, 0x45, 0x43, 0x8c, 0xb6, 0x02, 0xb0, 7357 "\xab\xd4\x45\x43\x8c\xb6\x02\xb0"
7365 0x41, 0xc8, 0xfc, 0x44, 0x3d, 0x59, 0xaa, 0x2e, 7358 "\x41\xc8\xfc\x44\x3d\x59\xaa\x2e"
7366 0x44, 0x21, 0x2a, 0x8d, 0x88, 0x9d, 0x57, 0xf4, 7359 "\x44\x21\x2a\x8d\x88\x9d\x57\xf4"
7367 0xa0, 0x02, 0x77, 0xb8, 0xa6, 0xa0, 0xe6, 0x75, 7360 "\xa0\x02\x77\xb8\xa6\xa0\xe6\x75"
7368 0x5c, 0x82, 0x65, 0x3e, 0x03, 0x5c, 0x29, 0x8f, 7361 "\x5c\x82\x65\x3e\x03\x5c\x29\x8f"
7369 0x38, 0x55, 0xab, 0x33, 0x26, 0xef, 0x9f, 0x43, 7362 "\x38\x55\xab\x33\x26\xef\x9f\x43"
7370 0x52, 0xfd, 0x68, 0xaf, 0x36, 0xb4, 0xbb, 0x9a, 7363 "\x52\xfd\x68\xaf\x36\xb4\xbb\x9a"
7371 0x58, 0x09, 0x09, 0x1b, 0xc3, 0x65, 0x46, 0x46, 7364 "\x58\x09\x09\x1b\xc3\x65\x46\x46"
7372 0x1d, 0xa7, 0x94, 0x18, 0x23, 0x50, 0x2c, 0xca, 7365 "\x1d\xa7\x94\x18\x23\x50\x2c\xca"
7373 0x2c, 0x55, 0x19, 0x97, 0x01, 0x9d, 0x93, 0x3b, 7366 "\x2c\x55\x19\x97\x01\x9d\x93\x3b"
7374 0x63, 0x86, 0xf2, 0x03, 0x67, 0x45, 0xd2, 0x72, 7367 "\x63\x86\xf2\x03\x67\x45\xd2\x72"
7375 0x28, 0x52, 0x6c, 0xf4, 0xe3, 0x1c, 0xb5, 0x11, 7368 "\x28\x52\x6c\xf4\xe3\x1c\xb5\x11"
7376 0x13, 0xf1, 0xeb, 0x21, 0xc7, 0xd9, 0x56, 0x82, 7369 "\x13\xf1\xeb\x21\xc7\xd9\x56\x82"
7377 0x2b, 0x82, 0x39, 0xbd, 0x69, 0x54, 0xed, 0x62, 7370 "\x2b\x82\x39\xbd\x69\x54\xed\x62"
7378 0xc3, 0xe2, 0xde, 0x73, 0xd4, 0x6a, 0x12, 0xae, 7371 "\xc3\xe2\xde\x73\xd4\x6a\x12\xae"
7379 0x13, 0x21, 0x7f, 0x4b, 0x5b, 0xfc, 0xbf, 0xe8, 7372 "\x13\x21\x7f\x4b\x5b\xfc\xbf\xe8"
7380 0x2b, 0xbe, 0x56, 0xba, 0x68, 0x8b, 0x9a, 0xb1, 7373 "\x2b\xbe\x56\xba\x68\x8b\x9a\xb1"
7381 0x6e, 0xfa, 0xbf, 0x7e, 0x5a, 0x4b, 0xf1, 0xac, 7374 "\x6e\xfa\xbf\x7e\x5a\x4b\xf1\xac"
7382 0x98, 0x65, 0x85, 0xd1, 0x93, 0x53, 0xd3, 0x7b, 7375 "\x98\x65\x85\xd1\x93\x53\xd3\x7b"
7383 0x09, 0xdd, 0x4b, 0x10, 0x6d, 0x84, 0xb0, 0x13, 7376 "\x09\xdd\x4b\x10\x6d\x84\xb0\x13"
7384 0x65, 0xbd, 0xcf, 0x52, 0x09, 0xc4, 0x85, 0xe2, 7377 "\x65\xbd\xcf\x52\x09\xc4\x85\xe2"
7385 0x84, 0x74, 0x15, 0x65, 0xb7, 0xf7, 0x51, 0xaf, 7378 "\x84\x74\x15\x65\xb7\xf7\x51\xaf"
7386 0x55, 0xad, 0xa4, 0xd1, 0x22, 0x54, 0x70, 0x94, 7379 "\x55\xad\xa4\xd1\x22\x54\x70\x94"
7387 0xa0, 0x1c, 0x90, 0x41, 0xfd, 0x99, 0xd7, 0x5a, 7380 "\xa0\x1c\x90\x41\xfd\x99\xd7\x5a"
7388 0x31, 0xef, 0xaa, 0x25, 0xd0, 0x7f, 0x4f, 0xea, 7381 "\x31\xef\xaa\x25\xd0\x7f\x4f\xea"
7389 0x1d, 0x55, 0x42, 0xe5, 0x49, 0xb0, 0xd0, 0x46, 7382 "\x1d\x55\x42\xe5\x49\xb0\xd0\x46"
7390 0x62, 0x36, 0x43, 0xb2, 0x82, 0x15, 0x75, 0x50, 7383 "\x62\x36\x43\xb2\x82\x15\x75\x50"
7391 0xa4, 0x72, 0xeb, 0x54, 0x27, 0x1f, 0x8a, 0xe4, 7384 "\xa4\x72\xeb\x54\x27\x1f\x8a\xe4"
7392 0x7d, 0xe9, 0x66, 0xc5, 0xf1, 0x53, 0xa4, 0xd1, 7385 "\x7d\xe9\x66\xc5\xf1\x53\xa4\xd1"
7393 0x0c, 0xeb, 0xb8, 0xf8, 0xbc, 0xd4, 0xe2, 0xe7, 7386 "\x0c\xeb\xb8\xf8\xbc\xd4\xe2\xe7"
7394 0xe1, 0xf8, 0x4b, 0xcb, 0xa9, 0xa1, 0xaf, 0x15, 7387 "\xe1\xf8\x4b\xcb\xa9\xa1\xaf\x15"
7395 0x83, 0xcb, 0x72, 0xd0, 0x33, 0x79, 0x00, 0x2d, 7388 "\x83\xcb\x72\xd0\x33\x79\x00\x2d"
7396 0x9f, 0xd7, 0xf1, 0x2e, 0x1e, 0x10, 0xe4, 0x45, 7389 "\x9f\xd7\xf1\x2e\x1e\x10\xe4\x45"
7397 0xc0, 0x75, 0x3a, 0x39, 0xea, 0x68, 0xf7, 0x5d, 7390 "\xc0\x75\x3a\x39\xea\x68\xf7\x5d"
7398 0x1b, 0x73, 0x8f, 0xe9, 0x8e, 0x0f, 0x72, 0x47, 7391 "\x1b\x73\x8f\xe9\x8e\x0f\x72\x47"
7399 0xae, 0x35, 0x0a, 0x31, 0x7a, 0x14, 0x4d, 0x4a, 7392 "\xae\x35\x0a\x31\x7a\x14\x4d\x4a"
7400 0x6f, 0x47, 0xf7, 0x7e, 0x91, 0x6e, 0x74, 0x8b, 7393 "\x6f\x47\xf7\x7e\x91\x6e\x74\x8b"
7401 0x26, 0x47, 0xf9, 0xc3, 0xf9, 0xde, 0x70, 0xf5, 7394 "\x26\x47\xf9\xc3\xf9\xde\x70\xf5"
7402 0x61, 0xab, 0xa9, 0x27, 0x9f, 0x82, 0xe4, 0x9c, 7395 "\x61\xab\xa9\x27\x9f\x82\xe4\x9c"
7403 0x89, 0x91, 0x3f, 0x2e, 0x6a, 0xfd, 0xb5, 0x49, 7396 "\x89\x91\x3f\x2e\x6a\xfd\xb5\x49"
7404 0xe9, 0xfd, 0x59, 0x14, 0x36, 0x49, 0x40, 0x6d, 7397 "\xe9\xfd\x59\x14\x36\x49\x40\x6d"
7405 0x32, 0xd8, 0x85, 0x42, 0xf3, 0xa5, 0xdf, 0x0c, 7398 "\x32\xd8\x85\x42\xf3\xa5\xdf\x0c"
7406 0xa8, 0x27, 0xd7, 0x54, 0xe2, 0x63, 0x2f, 0xf2, 7399 "\xa8\x27\xd7\x54\xe2\x63\x2f\xf2"
7407 0x7e, 0x8b, 0x8b, 0xe7, 0xf1, 0x9a, 0x95, 0x35, 7400 "\x7e\x8b\x8b\xe7\xf1\x9a\x95\x35"
7408 0x43, 0xdc, 0x3a, 0xe4, 0xb6, 0xf4, 0xd0, 0xdf, 7401 "\x43\xdc\x3a\xe4\xb6\xf4\xd0\xdf"
7409 0x9c, 0xcb, 0x94, 0xf3, 0x21, 0xa0, 0x77, 0x50, 7402 "\x9c\xcb\x94\xf3\x21\xa0\x77\x50"
7410 0xe2, 0xc6, 0xc4, 0xc6, 0x5f, 0x09, 0x64, 0x5b, 7403 "\xe2\xc6\xc4\xc6\x5f\x09\x64\x5b"
7411 0x92, 0x90, 0xd8, 0xe1, 0xd1, 0xed, 0x4b, 0x42, 7404 "\x92\x90\xd8\xe1\xd1\xed\x4b\x42"
7412 0xd7, 0x37, 0xaf, 0x65, 0x3d, 0x11, 0x39, 0xb6, 7405 "\xd7\x37\xaf\x65\x3d\x11\x39\xb6"
7413 0x24, 0x8a, 0x60, 0xae, 0xd6, 0x1e, 0xbf, 0x0e, 7406 "\x24\x8a\x60\xae\xd6\x1e\xbf\x0e"
7414 0x0d, 0xd7, 0xdc, 0x96, 0x0e, 0x65, 0x75, 0x4e, 7407 "\x0d\xd7\xdc\x96\x0e\x65\x75\x4e"
7415 0x29, 0x06, 0x9d, 0xa4, 0x51, 0x3a, 0x10, 0x63, 7408 "\x29\x06\x9d\xa4\x51\x3a\x10\x63"
7416 0x8f, 0x17, 0x07, 0xd5, 0x8e, 0x3c, 0xf4, 0x28, 7409 "\x8f\x17\x07\xd5\x8e\x3c\xf4\x28"
7417 0x00, 0x5a, 0x5b, 0x05, 0x19, 0xd8, 0xc0, 0x6c, 7410 "\x00\x5a\x5b\x05\x19\xd8\xc0\x6c"
7418 0xe5, 0x15, 0xe4, 0x9c, 0x9d, 0x71, 0x9d, 0x5e, 7411 "\xe5\x15\xe4\x9c\x9d\x71\x9d\x5e"
7419 0x94, 0x29, 0x1a, 0xa7, 0x80, 0xfa, 0x0e, 0x33, 7412 "\x94\x29\x1a\xa7\x80\xfa\x0e\x33"
7420 0x03, 0xdd, 0xb7, 0x3e, 0x9a, 0xa9, 0x26, 0x18, 7413 "\x03\xdd\xb7\x3e\x9a\xa9\x26\x18"
7421 0x37, 0xa9, 0x64, 0x08, 0x4d, 0x94, 0x5a, 0x88, 7414 "\x37\xa9\x64\x08\x4d\x94\x5a\x88"
7422 0xca, 0x35, 0xce, 0x81, 0x02, 0xe3, 0x1f, 0x1b, 7415 "\xca\x35\xce\x81\x02\xe3\x1f\x1b"
7423 0x89, 0x1a, 0x77, 0x85, 0xe3, 0x41, 0x6d, 0x32, 7416 "\x89\x1a\x77\x85\xe3\x41\x6d\x32"
7424 0x42, 0x19, 0x23, 0x7d, 0xc8, 0x73, 0xee, 0x25, 7417 "\x42\x19\x23\x7d\xc8\x73\xee\x25"
7425 0x85, 0x0d, 0xf8, 0x31, 0x25, 0x79, 0x1b, 0x6f, 7418 "\x85\x0d\xf8\x31\x25\x79\x1b\x6f"
7426 0x79, 0x25, 0xd2, 0xd8, 0xd4, 0x23, 0xfd, 0xf7, 7419 "\x79\x25\xd2\xd8\xd4\x23\xfd\xf7"
7427 0x82, 0x36, 0x6a, 0x0c, 0x46, 0x22, 0x15, 0xe9, 7420 "\x82\x36\x6a\x0c\x46\x22\x15\xe9"
7428 0xff, 0x72, 0x41, 0x91, 0x91, 0x7d, 0x3a, 0xb7, 7421 "\xff\x72\x41\x91\x91\x7d\x3a\xb7"
7429 0xdd, 0x65, 0x99, 0x70, 0xf6, 0x8d, 0x84, 0xf8, 7422 "\xdd\x65\x99\x70\xf6\x8d\x84\xf8"
7430 0x67, 0x15, 0x20, 0x11, 0xd6, 0xb2, 0x55, 0x7b, 7423 "\x67\x15\x20\x11\xd6\xb2\x55\x7b"
7431 0xdb, 0x87, 0xee, 0xef, 0x55, 0x89, 0x2a, 0x59, 7424 "\xdb\x87\xee\xef\x55\x89\x2a\x59"
7432 0x2b, 0x07, 0x8f, 0x43, 0x8a, 0x59, 0x3c, 0x01, 7425 "\x2b\x07\x8f\x43\x8a\x59\x3c\x01"
7433 0x8b, 0x65, 0x54, 0xa1, 0x66, 0xd5, 0x38, 0xbd, 7426 "\x8b\x65\x54\xa1\x66\xd5\x38\xbd"
7434 0xc6, 0x30, 0xa9, 0xcc, 0x49, 0xb6, 0xa8, 0x1b, 7427 "\xc6\x30\xa9\xcc\x49\xb6\xa8\x1b"
7435 0xb8, 0xc0, 0x0e, 0xe3, 0x45, 0x28, 0xe2, 0xff, 7428 "\xb8\xc0\x0e\xe3\x45\x28\xe2\xff"
7436 0x41, 0x9f, 0x7e, 0x7c, 0xd1, 0xae, 0x9e, 0x25, 7429 "\x41\x9f\x7e\x7c\xd1\xae\x9e\x25"
7437 0x3f, 0x4c, 0x7c, 0x7c, 0xf4, 0xa8, 0x26, 0x4d, 7430 "\x3f\x4c\x7c\x7c\xf4\xa8\x26\x4d"
7438 0x5c, 0xfd, 0x4b, 0x27, 0x18, 0xf9, 0x61, 0x76, 7431 "\x5c\xfd\x4b\x27\x18\xf9\x61\x76"
7439 0x48, 0xba, 0x0c, 0x6b, 0xa9, 0x4d, 0xfc, 0xf5, 7432 "\x48\xba\x0c\x6b\xa9\x4d\xfc\xf5"
7440 0x3b, 0x35, 0x7e, 0x2f, 0x4a, 0xa9, 0xc2, 0x9a, 7433 "\x3b\x35\x7e\x2f\x4a\xa9\xc2\x9a"
7441 0xae, 0xab, 0x86, 0x09, 0x89, 0xc9, 0xc2, 0x40, 7434 "\xae\xab\x86\x09\x89\xc9\xc2\x40"
7442 0x39, 0x2c, 0x81, 0xb3, 0xb8, 0x17, 0x67, 0xc2, 7435 "\x39\x2c\x81\xb3\xb8\x17\x67\xc2"
7443 0x0d, 0x32, 0x4a, 0x3a, 0x67, 0x81, 0xd7, 0x1a, 7436 "\x0d\x32\x4a\x3a\x67\x81\xd7\x1a"
7444 0x34, 0x52, 0xc5, 0xdb, 0x0a, 0xf5, 0x63, 0x39, 7437 "\x34\x52\xc5\xdb\x0a\xf5\x63\x39"
7445 0xea, 0x1f, 0xe1, 0x7c, 0xa1, 0x9e, 0xc1, 0x35, 7438 "\xea\x1f\xe1\x7c\xa1\x9e\xc1\x35"
7446 0xe3, 0xb1, 0x18, 0x45, 0x67, 0xf9, 0x22, 0x38, 7439 "\xe3\xb1\x18\x45\x67\xf9\x22\x38"
7447 0x95, 0xd9, 0x34, 0x34, 0x86, 0xc6, 0x41, 0x94, 7440 "\x95\xd9\x34\x34\x86\xc6\x41\x94"
7448 0x15, 0xf9, 0x5b, 0x41, 0xa6, 0x87, 0x8b, 0xf8, 7441 "\x15\xf9\x5b\x41\xa6\x87\x8b\xf8"
7449 0xd5, 0xe1, 0x1b, 0xe2, 0x5b, 0xf3, 0x86, 0x10, 7442 "\xd5\xe1\x1b\xe2\x5b\xf3\x86\x10"
7450 0xff, 0xe6, 0xae, 0x69, 0x76, 0xbc, 0x0d, 0xb4, 7443 "\xff\xe6\xae\x69\x76\xbc\x0d\xb4"
7451 0x09, 0x90, 0x0c, 0xa2, 0x65, 0x0c, 0xad, 0x74, 7444 "\x09\x90\x0c\xa2\x65\x0c\xad\x74"
7452 0xf5, 0xd7, 0xff, 0xda, 0xc1, 0xce, 0x85, 0xbe, 7445 "\xf5\xd7\xff\xda\xc1\xce\x85\xbe"
7453 0x00, 0xa7, 0xff, 0x4d, 0x2f, 0x65, 0xd3, 0x8c, 7446 "\x00\xa7\xff\x4d\x2f\x65\xd3\x8c"
7454 0x86, 0x2d, 0x05, 0xe8, 0xed, 0x3e, 0x6b, 0x8b, 7447 "\x86\x2d\x05\xe8\xed\x3e\x6b\x8b"
7455 0x0f, 0x3d, 0x83, 0x8c, 0xf1, 0x1d, 0x5b, 0x96, 7448 "\x0f\x3d\x83\x8c\xf1\x1d\x5b\x96"
7456 0x2e, 0xb1, 0x9c, 0xc2, 0x98, 0xe1, 0x70, 0xb9, 7449 "\x2e\xb1\x9c\xc2\x98\xe1\x70\xb9"
7457 0xba, 0x5c, 0x8a, 0x43, 0xd6, 0x34, 0xa7, 0x2d, 7450 "\xba\x5c\x8a\x43\xd6\x34\xa7\x2d"
7458 0xc9, 0x92, 0xae, 0xf2, 0xa5, 0x7b, 0x05, 0x49, 7451 "\xc9\x92\xae\xf2\xa5\x7b\x05\x49"
7459 0xa7, 0x33, 0x34, 0x86, 0xca, 0xe4, 0x96, 0x23, 7452 "\xa7\x33\x34\x86\xca\xe4\x96\x23"
7460 0x76, 0x5b, 0xf2, 0xc6, 0xf1, 0x51, 0x28, 0x42, 7453 "\x76\x5b\xf2\xc6\xf1\x51\x28\x42"
7461 0x7b, 0xcc, 0x76, 0x8f, 0xfa, 0xa2, 0xad, 0x31, 7454 "\x7b\xcc\x76\x8f\xfa\xa2\xad\x31"
7462 0xd4, 0xd6, 0x7a, 0x6d, 0x25, 0x25, 0x54, 0xe4, 7455 "\xd4\xd6\x7a\x6d\x25\x25\x54\xe4"
7463 0x3f, 0x50, 0x59, 0xe1, 0x5c, 0x05, 0xb7, 0x27, 7456 "\x3f\x50\x59\xe1\x5c\x05\xb7\x27"
7464 0x48, 0xbf, 0x07, 0xec, 0x1b, 0x13, 0xbe, 0x2b, 7457 "\x48\xbf\x07\xec\x1b\x13\xbe\x2b"
7465 0xa1, 0x57, 0x2b, 0xd5, 0xab, 0xd7, 0xd0, 0x4c, 7458 "\xa1\x57\x2b\xd5\xab\xd7\xd0\x4c"
7466 0x1e, 0xcb, 0x71, 0x9b, 0xc5, 0x90, 0x85, 0xd3, 7459 "\x1e\xcb\x71\x9b\xc5\x90\x85\xd3"
7467 0xde, 0x59, 0xec, 0x71, 0xeb, 0x89, 0xbb, 0xd0, 7460 "\xde\x59\xec\x71\xeb\x89\xbb\xd0"
7468 0x09, 0x50, 0xe1, 0x16, 0x3f, 0xfd, 0x1c, 0x34, 7461 "\x09\x50\xe1\x16\x3f\xfd\x1c\x34"
7469 0xc3, 0x1c, 0xa1, 0x10, 0x77, 0x53, 0x98, 0xef, 7462 "\xc3\x1c\xa1\x10\x77\x53\x98\xef"
7470 0xf2, 0xfd, 0xa5, 0x01, 0x59, 0xc2, 0x9b, 0x26, 7463 "\xf2\xfd\xa5\x01\x59\xc2\x9b\x26"
7471 0xc7, 0x42, 0xd9, 0x49, 0xda, 0x58, 0x2b, 0x6e, 7464 "\xc7\x42\xd9\x49\xda\x58\x2b\x6e"
7472 0x9f, 0x53, 0x19, 0x76, 0x7e, 0xd9, 0xc9, 0x0e, 7465 "\x9f\x53\x19\x76\x7e\xd9\xc9\x0e"
7473 0x68, 0xc8, 0x7f, 0x51, 0x22, 0x42, 0xef, 0x49, 7466 "\x68\xc8\x7f\x51\x22\x42\xef\x49"
7474 0xa4, 0x55, 0xb6, 0x36, 0xac, 0x09, 0xc7, 0x31, 7467 "\xa4\x55\xb6\x36\xac\x09\xc7\x31"
7475 0x88, 0x15, 0x4b, 0x2e, 0x8f, 0x3a, 0x08, 0xf7, 7468 "\x88\x15\x4b\x2e\x8f\x3a\x08\xf7"
7476 0xd8, 0xf7, 0xa8, 0xc5, 0xa9, 0x33, 0xa6, 0x45, 7469 "\xd8\xf7\xa8\xc5\xa9\x33\xa6\x45"
7477 0xe4, 0xc4, 0x94, 0x76, 0xf3, 0x0d, 0x8f, 0x7e, 7470 "\xe4\xc4\x94\x76\xf3\x0d\x8f\x7e"
7478 0xc8, 0xf6, 0xbc, 0x23, 0x0a, 0xb6, 0x4c, 0xd3, 7471 "\xc8\xf6\xbc\x23\x0a\xb6\x4c\xd3"
7479 0x6a, 0xcd, 0x36, 0xc2, 0x90, 0x5c, 0x5c, 0x3c, 7472 "\x6a\xcd\x36\xc2\x90\x5c\x5c\x3c"
7480 0x65, 0x7b, 0xc2, 0xd6, 0xcc, 0xe6, 0x0d, 0x87, 7473 "\x65\x7b\xc2\xd6\xcc\xe6\x0d\x87"
7481 0x73, 0x2e, 0x71, 0x79, 0x16, 0x06, 0x63, 0x28, 7474 "\x73\x2e\x71\x79\x16\x06\x63\x28"
7482 0x09, 0x15, 0xd8, 0x89, 0x38, 0x38, 0x3d, 0xb5, 7475 "\x09\x15\xd8\x89\x38\x38\x3d\xb5"
7483 0x42, 0x1c, 0x08, 0x24, 0xf7, 0x2a, 0xd2, 0x9d, 7476 "\x42\x1c\x08\x24\xf7\x2a\xd2\x9d"
7484 0xc8, 0xca, 0xef, 0xf9, 0x27, 0xd8, 0x07, 0x86, 7477 "\xc8\xca\xef\xf9\x27\xd8\x07\x86"
7485 0xf7, 0x43, 0x0b, 0x55, 0x15, 0x3f, 0x9f, 0x83, 7478 "\xf7\x43\x0b\x55\x15\x3f\x9f\x83"
7486 0xef, 0xdc, 0x49, 0x9d, 0x2a, 0xc1, 0x54, 0x62, 7479 "\xef\xdc\x49\x9d\x2a\xc1\x54\x62"
7487 0xbd, 0x9b, 0x66, 0x55, 0x9f, 0xb7, 0x12, 0xf3, 7480 "\xbd\x9b\x66\x55\x9f\xb7\x12\xf3"
7488 0x1b, 0x4d, 0x9d, 0x2a, 0x5c, 0xed, 0x87, 0x75, 7481 "\x1b\x4d\x9d\x2a\x5c\xed\x87\x75"
7489 0x87, 0x26, 0xec, 0x61, 0x2c, 0xb4, 0x0f, 0x89, 7482 "\x87\x26\xec\x61\x2c\xb4\x0f\x89"
7490 0xb0, 0xfb, 0x2e, 0x68, 0x5d, 0x15, 0xc7, 0x8d, 7483 "\xb0\xfb\x2e\x68\x5d\x15\xc7\x8d"
7491 0x2e, 0xc0, 0xd9, 0xec, 0xaf, 0x4f, 0xd2, 0x25, 7484 "\x2e\xc0\xd9\xec\xaf\x4f\xd2\x25"
7492 0x29, 0xe8, 0xd2, 0x26, 0x2b, 0x67, 0xe9, 0xfc, 7485 "\x29\xe8\xd2\x26\x2b\x67\xe9\xfc"
7493 0x2b, 0xa8, 0x67, 0x96, 0x12, 0x1f, 0x5b, 0x96, 7486 "\x2b\xa8\x67\x96\x12\x1f\x5b\x96"
7494 0xc6, 0x14, 0x53, 0xaf, 0x44, 0xea, 0xd6, 0xe2, 7487 "\xc6\x14\x53\xaf\x44\xea\xd6\xe2"
7495 0x94, 0x98, 0xe4, 0x12, 0x93, 0x4c, 0x92, 0xe0, 7488 "\x94\x98\xe4\x12\x93\x4c\x92\xe0"
7496 0x18, 0xa5, 0x8d, 0x2d, 0xe4, 0x71, 0x3c, 0x47, 7489 "\x18\xa5\x8d\x2d\xe4\x71\x3c\x47"
7497 0x4c, 0xf7, 0xe6, 0x47, 0x9e, 0xc0, 0x68, 0xdf, 7490 "\x4c\xf7\xe6\x47\x9e\xc0\x68\xdf"
7498 0xd4, 0xf5, 0x5a, 0x74, 0xb1, 0x2b, 0x29, 0x03, 7491 "\xd4\xf5\x5a\x74\xb1\x2b\x29\x03"
7499 0x19, 0x07, 0xaf, 0x90, 0x62, 0x5c, 0x68, 0x98, 7492 "\x19\x07\xaf\x90\x62\x5c\x68\x98"
7500 0x48, 0x16, 0x11, 0x02, 0x9d, 0xee, 0xb4, 0x9b, 7493 "\x48\x16\x11\x02\x9d\xee\xb4\x9b"
7501 0xe5, 0x42, 0x7f, 0x08, 0xfd, 0x16, 0x32, 0x0b, 7494 "\xe5\x42\x7f\x08\xfd\x16\x32\x0b"
7502 0xd0, 0xb3, 0xfa, 0x2b, 0xb7, 0x99, 0xf9, 0x29, 7495 "\xd0\xb3\xfa\x2b\xb7\x99\xf9\x29"
7503 0xcd, 0x20, 0x45, 0x9f, 0xb3, 0x1a, 0x5d, 0xa2, 7496 "\xcd\x20\x45\x9f\xb3\x1a\x5d\xa2"
7504 0xaf, 0x4d, 0xe0, 0xbd, 0x42, 0x0d, 0xbc, 0x74, 7497 "\xaf\x4d\xe0\xbd\x42\x0d\xbc\x74"
7505 0x99, 0x9c, 0x8e, 0x53, 0x1a, 0xb4, 0x3e, 0xbd, 7498 "\x99\x9c\x8e\x53\x1a\xb4\x3e\xbd"
7506 0xa2, 0x9a, 0x2d, 0xf7, 0xf8, 0x39, 0x0f, 0x67, 7499 "\xa2\x9a\x2d\xf7\xf8\x39\x0f\x67"
7507 0x63, 0xfc, 0x6b, 0xc0, 0xaf, 0xb3, 0x4b, 0x4f, 7500 "\x63\xfc\x6b\xc0\xaf\xb3\x4b\x4f"
7508 0x55, 0xc4, 0xcf, 0xa7, 0xc8, 0x04, 0x11, 0x3e, 7501 "\x55\xc4\xcf\xa7\xc8\x04\x11\x3e"
7509 0x14, 0x32, 0xbb, 0x1b, 0x38, 0x77, 0xd6, 0x7f, 7502 "\x14\x32\xbb\x1b\x38\x77\xd6\x7f"
7510 0x54, 0x4c, 0xdf, 0x75, 0xf3, 0x07, 0x2d, 0x33, 7503 "\x54\x4c\xdf\x75\xf3\x07\x2d\x33"
7511 0x9b, 0xa8, 0x20, 0xe1, 0x7b, 0x12, 0xb5, 0xf3, 7504 "\x9b\xa8\x20\xe1\x7b\x12\xb5\xf3"
7512 0xef, 0x2f, 0xce, 0x72, 0xe5, 0x24, 0x60, 0xc1, 7505 "\xef\x2f\xce\x72\xe5\x24\x60\xc1"
7513 0x30, 0xe2, 0xab, 0xa1, 0x8e, 0x11, 0x09, 0xa8, 7506 "\x30\xe2\xab\xa1\x8e\x11\x09\xa8"
7514 0x21, 0x33, 0x44, 0xfe, 0x7f, 0x35, 0x32, 0x93, 7507 "\x21\x33\x44\xfe\x7f\x35\x32\x93"
7515 0x39, 0xa7, 0xad, 0x8b, 0x79, 0x06, 0xb2, 0xcb, 7508 "\x39\xa7\xad\x8b\x79\x06\xb2\xcb"
7516 0x4e, 0xa9, 0x5f, 0xc7, 0xba, 0x74, 0x29, 0xec, 7509 "\x4e\xa9\x5f\xc7\xba\x74\x29\xec"
7517 0x93, 0xa0, 0x4e, 0x54, 0x93, 0xc0, 0xbc, 0x55, 7510 "\x93\xa0\x4e\x54\x93\xc0\xbc\x55"
7518 0x64, 0xf0, 0x48, 0xe5, 0x57, 0x99, 0xee, 0x75, 7511 "\x64\xf0\x48\xe5\x57\x99\xee\x75"
7519 0xd6, 0x79, 0x0f, 0x66, 0xb7, 0xc6, 0x57, 0x76, 7512 "\xd6\x79\x0f\x66\xb7\xc6\x57\x76"
7520 0xf7, 0xb7, 0xf3, 0x9c, 0xc5, 0x60, 0xe8, 0x7f, 7513 "\xf7\xb7\xf3\x9c\xc5\x60\xe8\x7f"
7521 0x83, 0x76, 0xd6, 0x0e, 0xaa, 0xe6, 0x90, 0x39, 7514 "\x83\x76\xd6\x0e\xaa\xe6\x90\x39"
7522 0x1d, 0xa6, 0x32, 0x6a, 0x34, 0xe3, 0x55, 0xf8, 7515 "\x1d\xa6\x32\x6a\x34\xe3\x55\xf8"
7523 0x58, 0xa0, 0x58, 0x7d, 0x33, 0xe0, 0x22, 0x39, 7516 "\x58\xa0\x58\x7d\x33\xe0\x22\x39"
7524 0x44, 0x64, 0x87, 0x86, 0x5a, 0x2f, 0xa7, 0x7e, 7517 "\x44\x64\x87\x86\x5a\x2f\xa7\x7e"
7525 0x0f, 0x38, 0xea, 0xb0, 0x30, 0xcc, 0x61, 0xa5, 7518 "\x0f\x38\xea\xb0\x30\xcc\x61\xa5"
7526 0x6a, 0x32, 0xae, 0x1e, 0xf7, 0xe9, 0xd0, 0xa9, 7519 "\x6a\x32\xae\x1e\xf7\xe9\xd0\xa9"
7527 0x0c, 0x32, 0x4b, 0xb5, 0x49, 0x28, 0xab, 0x85, 7520 "\x0c\x32\x4b\xb5\x49\x28\xab\x85"
7528 0x2f, 0x8e, 0x01, 0x36, 0x38, 0x52, 0xd0, 0xba, 7521 "\x2f\x8e\x01\x36\x38\x52\xd0\xba"
7529 0xd6, 0x02, 0x78, 0xf8, 0x0e, 0x3e, 0x9c, 0x8b, 7522 "\xd6\x02\x78\xf8\x0e\x3e\x9c\x8b"
7530 0x6b, 0x45, 0x99, 0x3f, 0x5c, 0xfe, 0x58, 0xf1, 7523 "\x6b\x45\x99\x3f\x5c\xfe\x58\xf1"
7531 0x5c, 0x94, 0x04, 0xe1, 0xf5, 0x18, 0x6d, 0x51, 7524 "\x5c\x94\x04\xe1\xf5\x18\x6d\x51"
7532 0xb2, 0x5d, 0x18, 0x20, 0xb6, 0xc2, 0x9a, 0x42, 7525 "\xb2\x5d\x18\x20\xb6\xc2\x9a\x42"
7533 0x1d, 0xb3, 0xab, 0x3c, 0xb6, 0x3a, 0x13, 0x03, 7526 "\x1d\xb3\xab\x3c\xb6\x3a\x13\x03"
7534 0xb2, 0x46, 0x82, 0x4f, 0xfc, 0x64, 0xbc, 0x4f, 7527 "\xb2\x46\x82\x4f\xfc\x64\xbc\x4f"
7535 0xca, 0xfa, 0x9c, 0xc0, 0xd5, 0xa7, 0xbd, 0x11, 7528 "\xca\xfa\x9c\xc0\xd5\xa7\xbd\x11"
7536 0xb7, 0xe4, 0x5a, 0xf6, 0x6f, 0x4d, 0x4d, 0x54, 7529 "\xb7\xe4\x5a\xf6\x6f\x4d\x4d\x54"
7537 0xea, 0xa4, 0x98, 0x66, 0xd4, 0x22, 0x3b, 0xd3, 7530 "\xea\xa4\x98\x66\xd4\x22\x3b\xd3"
7538 0x8f, 0x34, 0x47, 0xd9, 0x7c, 0xf4, 0x72, 0x3b, 7531 "\x8f\x34\x47\xd9\x7c\xf4\x72\x3b"
7539 0x4d, 0x02, 0x77, 0xf6, 0xd6, 0xdd, 0x08, 0x0a, 7532 "\x4d\x02\x77\xf6\xd6\xdd\x08\x0a"
7540 0x81, 0xe1, 0x86, 0x89, 0x3e, 0x56, 0x10, 0x3c, 7533 "\x81\xe1\x86\x89\x3e\x56\x10\x3c"
7541 0xba, 0xd7, 0x81, 0x8c, 0x08, 0xbc, 0x8b, 0xe2, 7534 "\xba\xd7\x81\x8c\x08\xbc\x8b\xe2"
7542 0x53, 0xec, 0xa7, 0x89, 0xee, 0xc8, 0x56, 0xb5, 7535 "\x53\xec\xa7\x89\xee\xc8\x56\xb5"
7543 0x36, 0x2c, 0xb2, 0x03, 0xba, 0x99, 0xdd, 0x7c, 7536 "\x36\x2c\xb2\x03\xba\x99\xdd\x7c"
7544 0x48, 0xa0, 0xb0, 0xbc, 0x91, 0x33, 0xe9, 0xa8, 7537 "\x48\xa0\xb0\xbc\x91\x33\xe9\xa8"
7545 0xcb, 0xcd, 0xcf, 0x59, 0x5f, 0x1f, 0x15, 0xe2, 7538 "\xcb\xcd\xcf\x59\x5f\x1f\x15\xe2"
7546 0x56, 0xf5, 0x4e, 0x01, 0x35, 0x27, 0x45, 0x77, 7539 "\x56\xf5\x4e\x01\x35\x27\x45\x77"
7547 0x47, 0xc8, 0xbc, 0xcb, 0x7e, 0x39, 0xc1, 0x97, 7540 "\x47\xc8\xbc\xcb\x7e\x39\xc1\x97"
7548 0x28, 0xd3, 0x84, 0xfc, 0x2c, 0x3e, 0xc8, 0xad, 7541 "\x28\xd3\x84\xfc\x2c\x3e\xc8\xad"
7549 0x9c, 0xf8, 0x8a, 0x61, 0x9c, 0x28, 0xaa, 0xc5, 7542 "\x9c\xf8\x8a\x61\x9c\x28\xaa\xc5"
7550 0x99, 0x20, 0x43, 0x85, 0x9d, 0xa5, 0xe2, 0x8b, 7543 "\x99\x20\x43\x85\x9d\xa5\xe2\x8b"
7551 0xb8, 0xae, 0xeb, 0xd0, 0x32, 0x0d, 0x52, 0x78, 7544 "\xb8\xae\xeb\xd0\x32\x0d\x52\x78"
7552 0x09, 0x56, 0x3f, 0xc7, 0xd8, 0x7e, 0x26, 0xfc, 7545 "\x09\x56\x3f\xc7\xd8\x7e\x26\xfc"
7553 0x37, 0xfb, 0x6f, 0x04, 0xfc, 0xfa, 0x92, 0x10, 7546 "\x37\xfb\x6f\x04\xfc\xfa\x92\x10"
7554 0xac, 0xf8, 0x3e, 0x21, 0xdc, 0x8c, 0x21, 0x16, 7547 "\xac\xf8\x3e\x21\xdc\x8c\x21\x16"
7555 0x7d, 0x67, 0x6e, 0xf6, 0xcd, 0xda, 0xb6, 0x98, 7548 "\x7d\x67\x6e\xf6\xcd\xda\xb6\x98"
7556 0x23, 0xab, 0x23, 0x3c, 0xb2, 0x10, 0xa0, 0x53, 7549 "\x23\xab\x23\x3c\xb2\x10\xa0\x53"
7557 0x5a, 0x56, 0x9f, 0xc5, 0xd0, 0xff, 0xbb, 0xe4, 7550 "\x5a\x56\x9f\xc5\xd0\xff\xbb\xe4"
7558 0x98, 0x3c, 0x69, 0x1e, 0xdb, 0x38, 0x8f, 0x7e, 7551 "\x98\x3c\x69\x1e\xdb\x38\x8f\x7e"
7559 0x0f, 0xd2, 0x98, 0x88, 0x81, 0x8b, 0x45, 0x67, 7552 "\x0f\xd2\x98\x88\x81\x8b\x45\x67"
7560 0xea, 0x33, 0xf1, 0xeb, 0xe9, 0x97, 0x55, 0x2e, 7553 "\xea\x33\xf1\xeb\xe9\x97\x55\x2e"
7561 0xd9, 0xaa, 0xeb, 0x5a, 0xec, 0xda, 0xe1, 0x68, 7554 "\xd9\xaa\xeb\x5a\xec\xda\xe1\x68"
7562 0xa8, 0x9d, 0x3c, 0x84, 0x7c, 0x05, 0x3d, 0x62, 7555 "\xa8\x9d\x3c\x84\x7c\x05\x3d\x62"
7563 0x87, 0x8f, 0x03, 0x21, 0x28, 0x95, 0x0c, 0x89, 7556 "\x87\x8f\x03\x21\x28\x95\x0c\x89"
7564 0x25, 0x22, 0x4a, 0xb0, 0x93, 0xa9, 0x50, 0xa2, 7557 "\x25\x22\x4a\xb0\x93\xa9\x50\xa2"
7565 0x2f, 0x57, 0x6e, 0x18, 0x42, 0x19, 0x54, 0x0c, 7558 "\x2f\x57\x6e\x18\x42\x19\x54\x0c"
7566 0x55, 0x67, 0xc6, 0x11, 0x49, 0xf4, 0x5c, 0xd2, 7559 "\x55\x67\xc6\x11\x49\xf4\x5c\xd2"
7567 0xe9, 0x3d, 0xdd, 0x8b, 0x48, 0x71, 0x21, 0x00, 7560 "\xe9\x3d\xdd\x8b\x48\x71\x21\x00"
7568 0xc3, 0x9a, 0x6c, 0x85, 0x74, 0x28, 0x83, 0x4a, 7561 "\xc3\x9a\x6c\x85\x74\x28\x83\x4a"
7569 0x1b, 0x31, 0x05, 0xe1, 0x06, 0x92, 0xe7, 0xda, 7562 "\x1b\x31\x05\xe1\x06\x92\xe7\xda"
7570 0x85, 0x73, 0x78, 0x45, 0x20, 0x7f, 0xae, 0x13, 7563 "\x85\x73\x78\x45\x20\x7f\xae\x13"
7571 0x7c, 0x33, 0x06, 0x22, 0xf4, 0x83, 0xf9, 0x35, 7564 "\x7c\x33\x06\x22\xf4\x83\xf9\x35"
7572 0x3f, 0x6c, 0x71, 0xa8, 0x4e, 0x48, 0xbe, 0x9b, 7565 "\x3f\x6c\x71\xa8\x4e\x48\xbe\x9b"
7573 0xce, 0x8a, 0xba, 0xda, 0xbe, 0x28, 0x08, 0xf7, 7566 "\xce\x8a\xba\xda\xbe\x28\x08\xf7"
7574 0xe2, 0x14, 0x8c, 0x71, 0xea, 0x72, 0xf9, 0x33, 7567 "\xe2\x14\x8c\x71\xea\x72\xf9\x33"
7575 0xf2, 0x88, 0x3f, 0xd7, 0xbb, 0x69, 0x6c, 0x29, 7568 "\xf2\x88\x3f\xd7\xbb\x69\x6c\x29"
7576 0x19, 0xdc, 0x84, 0xce, 0x1f, 0x12, 0x4f, 0xc8, 7569 "\x19\xdc\x84\xce\x1f\x12\x4f\xc8"
7577 0xaf, 0xa5, 0x04, 0xba, 0x5a, 0xab, 0xb0, 0xd9, 7570 "\xaf\xa5\x04\xba\x5a\xab\xb0\xd9"
7578 0x14, 0x1f, 0x6c, 0x68, 0x98, 0x39, 0x89, 0x7a, 7571 "\x14\x1f\x6c\x68\x98\x39\x89\x7a"
7579 0xd9, 0xd8, 0x2f, 0xdf, 0xa8, 0x47, 0x4a, 0x25, 7572 "\xd9\xd8\x2f\xdf\xa8\x47\x4a\x25"
7580 0xe2, 0xfb, 0x33, 0xf4, 0x59, 0x78, 0xe1, 0x68, 7573 "\xe2\xfb\x33\xf4\x59\x78\xe1\x68"
7581 0x85, 0xcf, 0xfe, 0x59, 0x20, 0xd4, 0x05, 0x1d, 7574 "\x85\xcf\xfe\x59\x20\xd4\x05\x1d"
7582 0x80, 0x99, 0xae, 0xbc, 0xca, 0xae, 0x0f, 0x2f, 7575 "\x80\x99\xae\xbc\xca\xae\x0f\x2f"
7583 0x65, 0x43, 0x34, 0x8e, 0x7e, 0xac, 0xd3, 0x93, 7576 "\x65\x43\x34\x8e\x7e\xac\xd3\x93"
7584 0x2f, 0xac, 0x6d, 0x14, 0x3d, 0x02, 0x07, 0x70, 7577 "\x2f\xac\x6d\x14\x3d\x02\x07\x70"
7585 0x9d, 0xa4, 0xf3, 0x1b, 0x5c, 0x36, 0xfc, 0x01, 7578 "\x9d\xa4\xf3\x1b\x5c\x36\xfc\x01"
7586 0x73, 0x34, 0x85, 0x0c, 0x6c, 0xd6, 0xf1, 0xbd, 7579 "\x73\x34\x85\x0c\x6c\xd6\xf1\xbd"
7587 0x3f, 0xdf, 0xee, 0xf5, 0xd9, 0xba, 0x56, 0xef, 7580 "\x3f\xdf\xee\xf5\xd9\xba\x56\xef"
7588 0xf4, 0x9b, 0x6b, 0xee, 0x9f, 0x5a, 0x78, 0x6d, 7581 "\xf4\x9b\x6b\xee\x9f\x5a\x78\x6d"
7589 0x32, 0x19, 0xf4, 0xf7, 0xf8, 0x4c, 0x69, 0x0b, 7582 "\x32\x19\xf4\xf7\xf8\x4c\x69\x0b"
7590 0x4b, 0xbc, 0xbb, 0xb7, 0xf2, 0x85, 0xaf, 0x70, 7583 "\x4b\xbc\xbb\xb7\xf2\x85\xaf\x70"
7591 0x75, 0x24, 0x6c, 0x54, 0xa7, 0x0e, 0x4d, 0x1d, 7584 "\x75\x24\x6c\x54\xa7\x0e\x4d\x1d"
7592 0x01, 0xbf, 0x08, 0xac, 0xcf, 0x7f, 0x2c, 0xe3, 7585 "\x01\xbf\x08\xac\xcf\x7f\x2c\xe3"
7593 0x14, 0x89, 0x5e, 0x70, 0x5a, 0x99, 0x92, 0xcd, 7586 "\x14\x89\x5e\x70\x5a\x99\x92\xcd"
7594 0x01, 0x84, 0xc8, 0xd2, 0xab, 0xe5, 0x4f, 0x58, 7587 "\x01\x84\xc8\xd2\xab\xe5\x4f\x58"
7595 0xe7, 0x0f, 0x2f, 0x0e, 0xff, 0x68, 0xea, 0xfd, 7588 "\xe7\x0f\x2f\x0e\xff\x68\xea\xfd"
7596 0x15, 0xb3, 0x17, 0xe6, 0xb0, 0xe7, 0x85, 0xd8, 7589 "\x15\xb3\x17\xe6\xb0\xe7\x85\xd8"
7597 0x23, 0x2e, 0x05, 0xc7, 0xc9, 0xc4, 0x46, 0x1f, 7590 "\x23\x2e\x05\xc7\xc9\xc4\x46\x1f"
7598 0xe1, 0x9e, 0x49, 0x20, 0x23, 0x24, 0x4d, 0x7e, 7591 "\xe1\x9e\x49\x20\x23\x24\x4d\x7e"
7599 0x29, 0x65, 0xff, 0xf4, 0xb6, 0xfd, 0x1a, 0x85, 7592 "\x29\x65\xff\xf4\xb6\xfd\x1a\x85"
7600 0xc4, 0x16, 0xec, 0xfc, 0xea, 0x7b, 0xd6, 0x2c, 7593 "\xc4\x16\xec\xfc\xea\x7b\xd6\x2c"
7601 0x43, 0xf8, 0xb7, 0xbf, 0x79, 0xc0, 0x85, 0xcd, 7594 "\x43\xf8\xb7\xbf\x79\xc0\x85\xcd"
7602 0xef, 0xe1, 0x98, 0xd3, 0xa5, 0xf7, 0x90, 0x8c, 7595 "\xef\xe1\x98\xd3\xa5\xf7\x90\x8c"
7603 0xe9, 0x7f, 0x80, 0x6b, 0xd2, 0xac, 0x4c, 0x30, 7596 "\xe9\x7f\x80\x6b\xd2\xac\x4c\x30"
7604 0xa7, 0xc6, 0x61, 0x6c, 0xd2, 0xf9, 0x2c, 0xff, 7597 "\xa7\xc6\x61\x6c\xd2\xf9\x2c\xff"
7605 0x30, 0xbc, 0x22, 0x81, 0x7d, 0x93, 0x12, 0xe4, 7598 "\x30\xbc\x22\x81\x7d\x93\x12\xe4"
7606 0x0a, 0xcd, 0xaf, 0xdd, 0xe8, 0xab, 0x0a, 0x1e, 7599 "\x0a\xcd\xaf\xdd\xe8\xab\x0a\x1e"
7607 0x13, 0xa4, 0x27, 0xc3, 0x5f, 0xf7, 0x4b, 0xbb, 7600 "\x13\xa4\x27\xc3\x5f\xf7\x4b\xbb"
7608 0x37, 0x09, 0x4b, 0x91, 0x6f, 0x92, 0x4f, 0xaf, 7601 "\x37\x09\x4b\x91\x6f\x92\x4f\xaf"
7609 0x52, 0xee, 0xdf, 0xef, 0x09, 0x6f, 0xf7, 0x5c, 7602 "\x52\xee\xdf\xef\x09\x6f\xf7\x5c"
7610 0x6e, 0x12, 0x17, 0x72, 0x63, 0x57, 0xc7, 0xba, 7603 "\x6e\x12\x17\x72\x63\x57\xc7\xba"
7611 0x3b, 0x6b, 0x38, 0x32, 0x73, 0x1b, 0x9c, 0x80, 7604 "\x3b\x6b\x38\x32\x73\x1b\x9c\x80"
7612 0xc1, 0x7a, 0xc6, 0xcf, 0xcd, 0x35, 0xc0, 0x6b, 7605 "\xc1\x7a\xc6\xcf\xcd\x35\xc0\x6b"
7613 0x31, 0x1a, 0x6b, 0xe9, 0xd8, 0x2c, 0x29, 0x3f, 7606 "\x31\x1a\x6b\xe9\xd8\x2c\x29\x3f"
7614 0x96, 0xfb, 0xb6, 0xcd, 0x13, 0x91, 0x3b, 0xc2, 7607 "\x96\xfb\xb6\xcd\x13\x91\x3b\xc2"
7615 0xd2, 0xa3, 0x31, 0x8d, 0xa4, 0xcd, 0x57, 0xcd, 7608 "\xd2\xa3\x31\x8d\xa4\xcd\x57\xcd"
7616 0x13, 0x3d, 0x64, 0xfd, 0x06, 0xce, 0xe6, 0xdc, 7609 "\x13\x3d\x64\xfd\x06\xce\xe6\xdc"
7617 0x0c, 0x24, 0x43, 0x31, 0x40, 0x57, 0xf1, 0x72, 7610 "\x0c\x24\x43\x31\x40\x57\xf1\x72"
7618 0x17, 0xe3, 0x3a, 0x63, 0x6d, 0x35, 0xcf, 0x5d, 7611 "\x17\xe3\x3a\x63\x6d\x35\xcf\x5d"
7619 0x97, 0x40, 0x59, 0xdd, 0xf7, 0x3c, 0x02, 0xf7, 7612 "\x97\x40\x59\xdd\xf7\x3c\x02\xf7"
7620 0x1c, 0x7e, 0x05, 0xbb, 0xa9, 0x0d, 0x01, 0xb1, 7613 "\x1c\x7e\x05\xbb\xa9\x0d\x01\xb1"
7621 0x8e, 0xc0, 0x30, 0xa9, 0x53, 0x24, 0xc9, 0x89, 7614 "\x8e\xc0\x30\xa9\x53\x24\xc9\x89"
7622 0x84, 0x6d, 0xaa, 0xd0, 0xcd, 0x91, 0xc2, 0x4d, 7615 "\x84\x6d\xaa\xd0\xcd\x91\xc2\x4d"
7623 0x91, 0xb0, 0x89, 0xe2, 0xbf, 0x83, 0x44, 0xaa, 7616 "\x91\xb0\x89\xe2\xbf\x83\x44\xaa"
7624 0x28, 0x72, 0x23, 0xa0, 0xc2, 0xad, 0xad, 0x1c, 7617 "\x28\x72\x23\xa0\xc2\xad\xad\x1c"
7625 0xfc, 0x3f, 0x09, 0x7a, 0x0b, 0xdc, 0xc5, 0x1b, 7618 "\xfc\x3f\x09\x7a\x0b\xdc\xc5\x1b"
7626 0x87, 0x13, 0xc6, 0x5b, 0x59, 0x8d, 0xf2, 0xc8, 7619 "\x87\x13\xc6\x5b\x59\x8d\xf2\xc8"
7627 0xaf, 0xdf, 0x11, 0x95, 7620 "\xaf\xdf\x11\x95",
7628 },
7629 .rlen = 4100, 7621 .rlen = 4100,
7630 }, 7622 },
7631}; 7623};
7632 7624
7633/* 7625/*
7626 * CTS (Cipher Text Stealing) mode tests
7627 */
7628#define CTS_MODE_ENC_TEST_VECTORS 6
7629#define CTS_MODE_DEC_TEST_VECTORS 6
7630static struct cipher_testvec cts_mode_enc_tv_template[] = {
7631 { /* from rfc3962 */
7632 .klen = 16,
7633 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7634 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7635 .ilen = 17,
7636 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7637 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7638 "\x20",
7639 .rlen = 17,
7640 .result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
7641 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
7642 "\x97",
7643 }, {
7644 .klen = 16,
7645 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7646 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7647 .ilen = 31,
7648 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7649 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7650 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7651 "\x20\x47\x61\x75\x27\x73\x20",
7652 .rlen = 31,
7653 .result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
7654 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
7655 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7656 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
7657 }, {
7658 .klen = 16,
7659 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7660 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7661 .ilen = 32,
7662 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7663 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7664 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7665 "\x20\x47\x61\x75\x27\x73\x20\x43",
7666 .rlen = 32,
7667 .result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7668 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7669 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7670 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
7671 }, {
7672 .klen = 16,
7673 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7674 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7675 .ilen = 47,
7676 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7677 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7678 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7679 "\x20\x47\x61\x75\x27\x73\x20\x43"
7680 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7681 "\x70\x6c\x65\x61\x73\x65\x2c",
7682 .rlen = 47,
7683 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7684 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7685 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
7686 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
7687 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7688 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
7689 }, {
7690 .klen = 16,
7691 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7692 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7693 .ilen = 48,
7694 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7695 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7696 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7697 "\x20\x47\x61\x75\x27\x73\x20\x43"
7698 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7699 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
7700 .rlen = 48,
7701 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7702 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7703 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7704 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
7705 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7706 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
7707 }, {
7708 .klen = 16,
7709 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7710 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7711 .ilen = 64,
7712 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7713 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7714 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7715 "\x20\x47\x61\x75\x27\x73\x20\x43"
7716 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7717 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
7718 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
7719 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
7720 .rlen = 64,
7721 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7722 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7723 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7724 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7725 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
7726 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
7727 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7728 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
7729 }
7730};
7731
7732static struct cipher_testvec cts_mode_dec_tv_template[] = {
7733 { /* from rfc3962 */
7734 .klen = 16,
7735 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7736 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7737 .rlen = 17,
7738 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7739 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7740 "\x20",
7741 .ilen = 17,
7742 .input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
7743 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
7744 "\x97",
7745 }, {
7746 .klen = 16,
7747 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7748 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7749 .rlen = 31,
7750 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7751 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7752 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7753 "\x20\x47\x61\x75\x27\x73\x20",
7754 .ilen = 31,
7755 .input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
7756 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
7757 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7758 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
7759 }, {
7760 .klen = 16,
7761 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7762 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7763 .rlen = 32,
7764 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7765 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7766 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7767 "\x20\x47\x61\x75\x27\x73\x20\x43",
7768 .ilen = 32,
7769 .input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7770 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7771 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7772 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
7773 }, {
7774 .klen = 16,
7775 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7776 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7777 .rlen = 47,
7778 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7779 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7780 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7781 "\x20\x47\x61\x75\x27\x73\x20\x43"
7782 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7783 "\x70\x6c\x65\x61\x73\x65\x2c",
7784 .ilen = 47,
7785 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7786 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7787 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
7788 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
7789 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7790 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
7791 }, {
7792 .klen = 16,
7793 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7794 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7795 .rlen = 48,
7796 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7797 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7798 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7799 "\x20\x47\x61\x75\x27\x73\x20\x43"
7800 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7801 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
7802 .ilen = 48,
7803 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7804 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7805 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7806 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
7807 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7808 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
7809 }, {
7810 .klen = 16,
7811 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7812 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7813 .rlen = 64,
7814 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7815 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7816 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7817 "\x20\x47\x61\x75\x27\x73\x20\x43"
7818 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7819 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
7820 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
7821 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
7822 .ilen = 64,
7823 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7824 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7825 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7826 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7827 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
7828 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
7829 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7830 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
7831 }
7832};
7833
7834/*
7634 * Compression stuff. 7835 * Compression stuff.
7635 */ 7836 */
7636#define COMP_BUF_SIZE 512 7837#define COMP_BUF_SIZE 512
@@ -7652,35 +7853,35 @@ static struct comp_testvec deflate_comp_tv_template[] = {
7652 { 7853 {
7653 .inlen = 70, 7854 .inlen = 70,
7654 .outlen = 38, 7855 .outlen = 38,
7655 .input = "Join us now and share the software " 7856 .input = "Join us now and share the software "
7656 "Join us now and share the software ", 7857 "Join us now and share the software ",
7657 .output = { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56, 7858 .output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
7658 0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51, 7859 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
7659 0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9, 7860 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
7660 0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07, 7861 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
7661 0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00 }, 7862 "\x71\xbc\x08\x2b\x01\x00",
7662 }, { 7863 }, {
7663 .inlen = 191, 7864 .inlen = 191,
7664 .outlen = 122, 7865 .outlen = 122,
7665 .input = "This document describes a compression method based on the DEFLATE" 7866 .input = "This document describes a compression method based on the DEFLATE"
7666 "compression algorithm. This document defines the application of " 7867 "compression algorithm. This document defines the application of "
7667 "the DEFLATE algorithm to the IP Payload Compression Protocol.", 7868 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
7668 .output = { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04, 7869 .output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
7669 0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09, 7870 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
7670 0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8, 7871 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
7671 0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49, 7872 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
7672 0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27, 7873 "\x68\x12\x51\xae\x76\x67\xd6\x27"
7673 0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2, 7874 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
7674 0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad, 7875 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
7675 0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4, 7876 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
7676 0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b, 7877 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
7677 0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f, 7878 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
7678 0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf, 7879 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
7679 0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02, 7880 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
7680 0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98, 7881 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
7681 0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a, 7882 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
7682 0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79, 7883 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
7683 0xfa, 0x02 }, 7884 "\xfa\x02",
7684 }, 7885 },
7685}; 7886};
7686 7887
@@ -7688,35 +7889,35 @@ static struct comp_testvec deflate_decomp_tv_template[] = {
7688 { 7889 {
7689 .inlen = 122, 7890 .inlen = 122,
7690 .outlen = 191, 7891 .outlen = 191,
7691 .input = { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04, 7892 .input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
7692 0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09, 7893 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
7693 0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8, 7894 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
7694 0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49, 7895 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
7695 0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27, 7896 "\x68\x12\x51\xae\x76\x67\xd6\x27"
7696 0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2, 7897 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
7697 0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad, 7898 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
7698 0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4, 7899 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
7699 0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b, 7900 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
7700 0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f, 7901 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
7701 0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf, 7902 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
7702 0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02, 7903 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
7703 0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98, 7904 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
7704 0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a, 7905 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
7705 0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79, 7906 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
7706 0xfa, 0x02 }, 7907 "\xfa\x02",
7707 .output = "This document describes a compression method based on the DEFLATE" 7908 .output = "This document describes a compression method based on the DEFLATE"
7708 "compression algorithm. This document defines the application of " 7909 "compression algorithm. This document defines the application of "
7709 "the DEFLATE algorithm to the IP Payload Compression Protocol.", 7910 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
7710 }, { 7911 }, {
7711 .inlen = 38, 7912 .inlen = 38,
7712 .outlen = 70, 7913 .outlen = 70,
7713 .input = { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56, 7914 .input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
7714 0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51, 7915 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
7715 0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9, 7916 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
7716 0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07, 7917 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
7717 0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00 }, 7918 "\x71\xbc\x08\x2b\x01\x00",
7718 .output = "Join us now and share the software " 7919 .output = "Join us now and share the software "
7719 "Join us now and share the software ", 7920 "Join us now and share the software ",
7720 }, 7921 },
7721}; 7922};
7722 7923
@@ -7731,36 +7932,36 @@ static struct comp_testvec lzo_comp_tv_template[] = {
7731 .inlen = 70, 7932 .inlen = 70,
7732 .outlen = 46, 7933 .outlen = 46,
7733 .input = "Join us now and share the software " 7934 .input = "Join us now and share the software "
7734 "Join us now and share the software ", 7935 "Join us now and share the software ",
7735 .output = { 0x00, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x20, 0x75, 7936 .output = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
7736 0x73, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x61, 0x6e, 7937 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
7737 0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 7938 "\x64\x20\x73\x68\x61\x72\x65\x20"
7738 0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x66, 0x74, 7939 "\x74\x68\x65\x20\x73\x6f\x66\x74"
7739 0x77, 0x70, 0x01, 0x01, 0x4a, 0x6f, 0x69, 0x6e, 7940 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
7740 0x3d, 0x88, 0x00, 0x11, 0x00, 0x00 }, 7941 "\x3d\x88\x00\x11\x00\x00",
7741 }, { 7942 }, {
7742 .inlen = 159, 7943 .inlen = 159,
7743 .outlen = 133, 7944 .outlen = 133,
7744 .input = "This document describes a compression method based on the LZO " 7945 .input = "This document describes a compression method based on the LZO "
7745 "compression algorithm. This document defines the application of " 7946 "compression algorithm. This document defines the application of "
7746 "the LZO algorithm used in UBIFS.", 7947 "the LZO algorithm used in UBIFS.",
7747 .output = { 0x00, 0x2b, 0x54, 0x68, 0x69, 0x73, 0x20, 0x64, 7948 .output = "\x00\x2b\x54\x68\x69\x73\x20\x64"
7748 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 7949 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
7749 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 7950 "\x64\x65\x73\x63\x72\x69\x62\x65"
7750 0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x70, 7951 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
7751 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 7952 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
7752 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x62, 7953 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
7753 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 7954 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
7754 0x74, 0x68, 0x65, 0x20, 0x4c, 0x5a, 0x4f, 0x2b, 7955 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
7755 0x8c, 0x00, 0x0d, 0x61, 0x6c, 0x67, 0x6f, 0x72, 7956 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
7756 0x69, 0x74, 0x68, 0x6d, 0x2e, 0x20, 0x20, 0x54, 7957 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
7757 0x68, 0x69, 0x73, 0x2a, 0x54, 0x01, 0x02, 0x66, 7958 "\x68\x69\x73\x2a\x54\x01\x02\x66"
7758 0x69, 0x6e, 0x65, 0x73, 0x94, 0x06, 0x05, 0x61, 7959 "\x69\x6e\x65\x73\x94\x06\x05\x61"
7759 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x76, 7960 "\x70\x70\x6c\x69\x63\x61\x74\x76"
7760 0x0a, 0x6f, 0x66, 0x88, 0x02, 0x60, 0x09, 0x27, 7961 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
7761 0xf0, 0x00, 0x0c, 0x20, 0x75, 0x73, 0x65, 0x64, 7962 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
7762 0x20, 0x69, 0x6e, 0x20, 0x55, 0x42, 0x49, 0x46, 7963 "\x20\x69\x6e\x20\x55\x42\x49\x46"
7763 0x53, 0x2e, 0x11, 0x00, 0x00 }, 7964 "\x53\x2e\x11\x00\x00",
7764 }, 7965 },
7765}; 7966};
7766 7967
@@ -7768,37 +7969,37 @@ static struct comp_testvec lzo_decomp_tv_template[] = {
7768 { 7969 {
7769 .inlen = 133, 7970 .inlen = 133,
7770 .outlen = 159, 7971 .outlen = 159,
7771 .input = { 0x00, 0x2b, 0x54, 0x68, 0x69, 0x73, 0x20, 0x64, 7972 .input = "\x00\x2b\x54\x68\x69\x73\x20\x64"
7772 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 7973 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
7773 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 7974 "\x64\x65\x73\x63\x72\x69\x62\x65"
7774 0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x70, 7975 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
7775 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 7976 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
7776 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x62, 7977 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
7777 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 7978 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
7778 0x74, 0x68, 0x65, 0x20, 0x4c, 0x5a, 0x4f, 0x2b, 7979 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
7779 0x8c, 0x00, 0x0d, 0x61, 0x6c, 0x67, 0x6f, 0x72, 7980 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
7780 0x69, 0x74, 0x68, 0x6d, 0x2e, 0x20, 0x20, 0x54, 7981 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
7781 0x68, 0x69, 0x73, 0x2a, 0x54, 0x01, 0x02, 0x66, 7982 "\x68\x69\x73\x2a\x54\x01\x02\x66"
7782 0x69, 0x6e, 0x65, 0x73, 0x94, 0x06, 0x05, 0x61, 7983 "\x69\x6e\x65\x73\x94\x06\x05\x61"
7783 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x76, 7984 "\x70\x70\x6c\x69\x63\x61\x74\x76"
7784 0x0a, 0x6f, 0x66, 0x88, 0x02, 0x60, 0x09, 0x27, 7985 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
7785 0xf0, 0x00, 0x0c, 0x20, 0x75, 0x73, 0x65, 0x64, 7986 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
7786 0x20, 0x69, 0x6e, 0x20, 0x55, 0x42, 0x49, 0x46, 7987 "\x20\x69\x6e\x20\x55\x42\x49\x46"
7787 0x53, 0x2e, 0x11, 0x00, 0x00 }, 7988 "\x53\x2e\x11\x00\x00",
7788 .output = "This document describes a compression method based on the LZO " 7989 .output = "This document describes a compression method based on the LZO "
7789 "compression algorithm. This document defines the application of " 7990 "compression algorithm. This document defines the application of "
7790 "the LZO algorithm used in UBIFS.", 7991 "the LZO algorithm used in UBIFS.",
7791 }, { 7992 }, {
7792 .inlen = 46, 7993 .inlen = 46,
7793 .outlen = 70, 7994 .outlen = 70,
7794 .input = { 0x00, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x20, 0x75, 7995 .input = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
7795 0x73, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x61, 0x6e, 7996 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
7796 0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 7997 "\x64\x20\x73\x68\x61\x72\x65\x20"
7797 0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x66, 0x74, 7998 "\x74\x68\x65\x20\x73\x6f\x66\x74"
7798 0x77, 0x70, 0x01, 0x01, 0x4a, 0x6f, 0x69, 0x6e, 7999 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
7799 0x3d, 0x88, 0x00, 0x11, 0x00, 0x00 }, 8000 "\x3d\x88\x00\x11\x00\x00",
7800 .output = "Join us now and share the software " 8001 .output = "Join us now and share the software "
7801 "Join us now and share the software ", 8002 "Join us now and share the software ",
7802 }, 8003 },
7803}; 8004};
7804 8005
@@ -7809,46 +8010,46 @@ static struct comp_testvec lzo_decomp_tv_template[] = {
7809 8010
7810static struct hash_testvec michael_mic_tv_template[] = { 8011static struct hash_testvec michael_mic_tv_template[] = {
7811 { 8012 {
7812 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 8013 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
7813 .ksize = 8, 8014 .ksize = 8,
7814 .plaintext = { }, 8015 .plaintext = zeroed_string,
7815 .psize = 0, 8016 .psize = 0,
7816 .digest = { 0x82, 0x92, 0x5c, 0x1c, 0xa1, 0xd1, 0x30, 0xb8 } 8017 .digest = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
7817 }, 8018 },
7818 { 8019 {
7819 .key = { 0x82, 0x92, 0x5c, 0x1c, 0xa1, 0xd1, 0x30, 0xb8 }, 8020 .key = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
7820 .ksize = 8, 8021 .ksize = 8,
7821 .plaintext = { 'M' }, 8022 .plaintext = "M",
7822 .psize = 1, 8023 .psize = 1,
7823 .digest = { 0x43, 0x47, 0x21, 0xca, 0x40, 0x63, 0x9b, 0x3f } 8024 .digest = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
7824 }, 8025 },
7825 { 8026 {
7826 .key = { 0x43, 0x47, 0x21, 0xca, 0x40, 0x63, 0x9b, 0x3f }, 8027 .key = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
7827 .ksize = 8, 8028 .ksize = 8,
7828 .plaintext = { 'M', 'i' }, 8029 .plaintext = "Mi",
7829 .psize = 2, 8030 .psize = 2,
7830 .digest = { 0xe8, 0xf9, 0xbe, 0xca, 0xe9, 0x7e, 0x5d, 0x29 } 8031 .digest = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
7831 }, 8032 },
7832 { 8033 {
7833 .key = { 0xe8, 0xf9, 0xbe, 0xca, 0xe9, 0x7e, 0x5d, 0x29 }, 8034 .key = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
7834 .ksize = 8, 8035 .ksize = 8,
7835 .plaintext = { 'M', 'i', 'c' }, 8036 .plaintext = "Mic",
7836 .psize = 3, 8037 .psize = 3,
7837 .digest = { 0x90, 0x03, 0x8f, 0xc6, 0xcf, 0x13, 0xc1, 0xdb } 8038 .digest = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
7838 }, 8039 },
7839 { 8040 {
7840 .key = { 0x90, 0x03, 0x8f, 0xc6, 0xcf, 0x13, 0xc1, 0xdb }, 8041 .key = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
7841 .ksize = 8, 8042 .ksize = 8,
7842 .plaintext = { 'M', 'i', 'c', 'h' }, 8043 .plaintext = "Mich",
7843 .psize = 4, 8044 .psize = 4,
7844 .digest = { 0xd5, 0x5e, 0x10, 0x05, 0x10, 0x12, 0x89, 0x86 } 8045 .digest = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
7845 }, 8046 },
7846 { 8047 {
7847 .key = { 0xd5, 0x5e, 0x10, 0x05, 0x10, 0x12, 0x89, 0x86 }, 8048 .key = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
7848 .ksize = 8, 8049 .ksize = 8,
7849 .plaintext = { 'M', 'i', 'c', 'h', 'a', 'e', 'l' }, 8050 .plaintext = "Michael",
7850 .psize = 7, 8051 .psize = 7,
7851 .digest = { 0x0a, 0x94, 0x2b, 0x12, 0x4e, 0xca, 0xa5, 0x46 }, 8052 .digest = "\x0a\x94\x2b\x12\x4e\xca\xa5\x46",
7852 } 8053 }
7853}; 8054};
7854 8055
@@ -7860,170 +8061,170 @@ static struct hash_testvec michael_mic_tv_template[] = {
7860static struct hash_testvec crc32c_tv_template[] = { 8061static struct hash_testvec crc32c_tv_template[] = {
7861 { 8062 {
7862 .psize = 0, 8063 .psize = 0,
7863 .digest = { 0x00, 0x00, 0x00, 0x00 } 8064 .digest = "\x00\x00\x00\x00",
7864 }, 8065 },
7865 { 8066 {
7866 .key = { 0x87, 0xa9, 0xcb, 0xed }, 8067 .key = "\x87\xa9\xcb\xed",
7867 .ksize = 4, 8068 .ksize = 4,
7868 .psize = 0, 8069 .psize = 0,
7869 .digest = { 0x78, 0x56, 0x34, 0x12 }, 8070 .digest = "\x78\x56\x34\x12",
7870 }, 8071 },
7871 { 8072 {
7872 .key = { 0xff, 0xff, 0xff, 0xff }, 8073 .key = "\xff\xff\xff\xff",
7873 .ksize = 4, 8074 .ksize = 4,
7874 .plaintext = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 8075 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
7875 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 8076 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
7876 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 8077 "\x11\x12\x13\x14\x15\x16\x17\x18"
7877 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 8078 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
7878 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28 }, 8079 "\x21\x22\x23\x24\x25\x26\x27\x28",
7879 .psize = 40, 8080 .psize = 40,
7880 .digest = { 0x7f, 0x15, 0x2c, 0x0e } 8081 .digest = "\x7f\x15\x2c\x0e",
7881 }, 8082 },
7882 { 8083 {
7883 .key = { 0xff, 0xff, 0xff, 0xff }, 8084 .key = "\xff\xff\xff\xff",
7884 .ksize = 4, 8085 .ksize = 4,
7885 .plaintext = { 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 8086 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
7886 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 8087 "\x31\x32\x33\x34\x35\x36\x37\x38"
7887 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 8088 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
7888 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 8089 "\x41\x42\x43\x44\x45\x46\x47\x48"
7889 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50 }, 8090 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
7890 .psize = 40, 8091 .psize = 40,
7891 .digest = { 0xf6, 0xeb, 0x80, 0xe9 } 8092 .digest = "\xf6\xeb\x80\xe9",
7892 }, 8093 },
7893 { 8094 {
7894 .key = { 0xff, 0xff, 0xff, 0xff }, 8095 .key = "\xff\xff\xff\xff",
7895 .ksize = 4, 8096 .ksize = 4,
7896 .plaintext = { 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 8097 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
7897 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 8098 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
7898 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 8099 "\x61\x62\x63\x64\x65\x66\x67\x68"
7899 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 8100 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
7900 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78 }, 8101 "\x71\x72\x73\x74\x75\x76\x77\x78",
7901 .psize = 40, 8102 .psize = 40,
7902 .digest = { 0xed, 0xbd, 0x74, 0xde } 8103 .digest = "\xed\xbd\x74\xde",
7903 }, 8104 },
7904 { 8105 {
7905 .key = { 0xff, 0xff, 0xff, 0xff }, 8106 .key = "\xff\xff\xff\xff",
7906 .ksize = 4, 8107 .ksize = 4,
7907 .plaintext = { 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 8108 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
7908 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 8109 "\x81\x82\x83\x84\x85\x86\x87\x88"
7909 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 8110 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
7910 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 8111 "\x91\x92\x93\x94\x95\x96\x97\x98"
7911 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0 }, 8112 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
7912 .psize = 40, 8113 .psize = 40,
7913 .digest = { 0x62, 0xc8, 0x79, 0xd5 } 8114 .digest = "\x62\xc8\x79\xd5",
7914 }, 8115 },
7915 { 8116 {
7916 .key = { 0xff, 0xff, 0xff, 0xff }, 8117 .key = "\xff\xff\xff\xff",
7917 .ksize = 4, 8118 .ksize = 4,
7918 .plaintext = { 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 8119 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
7919 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 8120 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
7920 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 8121 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
7921 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 8122 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
7922 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8 }, 8123 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
7923 .psize = 40, 8124 .psize = 40,
7924 .digest = { 0xd0, 0x9a, 0x97, 0xba } 8125 .digest = "\xd0\x9a\x97\xba",
7925 }, 8126 },
7926 { 8127 {
7927 .key = { 0xff, 0xff, 0xff, 0xff }, 8128 .key = "\xff\xff\xff\xff",
7928 .ksize = 4, 8129 .ksize = 4,
7929 .plaintext = { 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 8130 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
7930 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 8131 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
7931 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 8132 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
7932 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 8133 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
7933 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0 }, 8134 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
7934 .psize = 40, 8135 .psize = 40,
7935 .digest = { 0x13, 0xd9, 0x29, 0x2b } 8136 .digest = "\x13\xd9\x29\x2b",
7936 }, 8137 },
7937 { 8138 {
7938 .key = { 0x80, 0xea, 0xd3, 0xf1 }, 8139 .key = "\x80\xea\xd3\xf1",
7939 .ksize = 4, 8140 .ksize = 4,
7940 .plaintext = { 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 8141 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
7941 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 8142 "\x31\x32\x33\x34\x35\x36\x37\x38"
7942 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 8143 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
7943 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 8144 "\x41\x42\x43\x44\x45\x46\x47\x48"
7944 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50 }, 8145 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
7945 .psize = 40, 8146 .psize = 40,
7946 .digest = { 0x0c, 0xb5, 0xe2, 0xa2 } 8147 .digest = "\x0c\xb5\xe2\xa2",
7947 }, 8148 },
7948 { 8149 {
7949 .key = { 0xf3, 0x4a, 0x1d, 0x5d }, 8150 .key = "\xf3\x4a\x1d\x5d",
7950 .ksize = 4, 8151 .ksize = 4,
7951 .plaintext = { 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 8152 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
7952 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 8153 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
7953 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 8154 "\x61\x62\x63\x64\x65\x66\x67\x68"
7954 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 8155 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
7955 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78 }, 8156 "\x71\x72\x73\x74\x75\x76\x77\x78",
7956 .psize = 40, 8157 .psize = 40,
7957 .digest = { 0xd1, 0x7f, 0xfb, 0xa6 } 8158 .digest = "\xd1\x7f\xfb\xa6",
7958 }, 8159 },
7959 { 8160 {
7960 .key = { 0x2e, 0x80, 0x04, 0x59 }, 8161 .key = "\x2e\x80\x04\x59",
7961 .ksize = 4, 8162 .ksize = 4,
7962 .plaintext = { 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 8163 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
7963 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 8164 "\x81\x82\x83\x84\x85\x86\x87\x88"
7964 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 8165 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
7965 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 8166 "\x91\x92\x93\x94\x95\x96\x97\x98"
7966 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0 }, 8167 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
7967 .psize = 40, 8168 .psize = 40,
7968 .digest = { 0x59, 0x33, 0xe6, 0x7a } 8169 .digest = "\x59\x33\xe6\x7a",
7969 }, 8170 },
7970 { 8171 {
7971 .key = { 0xa6, 0xcc, 0x19, 0x85 }, 8172 .key = "\xa6\xcc\x19\x85",
7972 .ksize = 4, 8173 .ksize = 4,
7973 .plaintext = { 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 8174 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
7974 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 8175 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
7975 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 8176 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
7976 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 8177 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
7977 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8 }, 8178 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
7978 .psize = 40, 8179 .psize = 40,
7979 .digest = { 0xbe, 0x03, 0x01, 0xd2 } 8180 .digest = "\xbe\x03\x01\xd2",
7980 }, 8181 },
7981 { 8182 {
7982 .key = { 0x41, 0xfc, 0xfe, 0x2d }, 8183 .key = "\x41\xfc\xfe\x2d",
7983 .ksize = 4, 8184 .ksize = 4,
7984 .plaintext = { 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 8185 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
7985 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 8186 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
7986 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 8187 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
7987 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 8188 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
7988 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0 }, 8189 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
7989 .psize = 40, 8190 .psize = 40,
7990 .digest = { 0x75, 0xd3, 0xc5, 0x24 } 8191 .digest = "\x75\xd3\xc5\x24",
7991 }, 8192 },
7992 { 8193 {
7993 .key = { 0xff, 0xff, 0xff, 0xff }, 8194 .key = "\xff\xff\xff\xff",
7994 .ksize = 4, 8195 .ksize = 4,
7995 .plaintext = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 8196 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
7996 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 8197 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
7997 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 8198 "\x11\x12\x13\x14\x15\x16\x17\x18"
7998 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 8199 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
7999 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 8200 "\x21\x22\x23\x24\x25\x26\x27\x28"
8000 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 8201 "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8001 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 8202 "\x31\x32\x33\x34\x35\x36\x37\x38"
8002 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 8203 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8003 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 8204 "\x41\x42\x43\x44\x45\x46\x47\x48"
8004 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 8205 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
8005 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 8206 "\x51\x52\x53\x54\x55\x56\x57\x58"
8006 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 8207 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8007 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 8208 "\x61\x62\x63\x64\x65\x66\x67\x68"
8008 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 8209 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8009 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 8210 "\x71\x72\x73\x74\x75\x76\x77\x78"
8010 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 8211 "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8011 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 8212 "\x81\x82\x83\x84\x85\x86\x87\x88"
8012 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 8213 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8013 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 8214 "\x91\x92\x93\x94\x95\x96\x97\x98"
8014 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 8215 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
8015 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 8216 "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8016 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 8217 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8017 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 8218 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8018 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 8219 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8019 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 8220 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8"
8020 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 8221 "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8021 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 8222 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8022 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 8223 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8023 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 8224 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8024 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0 }, 8225 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
8025 .psize = 240, 8226 .psize = 240,
8026 .digest = { 0x75, 0xd3, 0xc5, 0x24 }, 8227 .digest = "\x75\xd3\xc5\x24",
8027 .np = 2, 8228 .np = 2,
8028 .tap = { 31, 209 } 8229 .tap = { 31, 209 }
8029 }, 8230 },
@@ -8032,134 +8233,19 @@ static struct hash_testvec crc32c_tv_template[] = {
8032/* 8233/*
8033 * Cipher speed tests 8234 * Cipher speed tests
8034 */ 8235 */
8035static struct cipher_speed aes_speed_template[] = { 8236static u8 speed_template_8[] = {8, 0};
8036 { .klen = 16, .blen = 16, }, 8237static u8 speed_template_24[] = {24, 0};
8037 { .klen = 16, .blen = 64, }, 8238static u8 speed_template_8_32[] = {8, 32, 0};
8038 { .klen = 16, .blen = 256, }, 8239static u8 speed_template_16_32[] = {16, 32, 0};
8039 { .klen = 16, .blen = 1024, }, 8240static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
8040 { .klen = 16, .blen = 8192, }, 8241static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
8041 { .klen = 24, .blen = 16, }, 8242static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
8042 { .klen = 24, .blen = 64, },
8043 { .klen = 24, .blen = 256, },
8044 { .klen = 24, .blen = 1024, },
8045 { .klen = 24, .blen = 8192, },
8046 { .klen = 32, .blen = 16, },
8047 { .klen = 32, .blen = 64, },
8048 { .klen = 32, .blen = 256, },
8049 { .klen = 32, .blen = 1024, },
8050 { .klen = 32, .blen = 8192, },
8051
8052 /* End marker */
8053 { .klen = 0, .blen = 0, }
8054};
8055
8056static struct cipher_speed aes_lrw_speed_template[] = {
8057 { .klen = 32, .blen = 16, },
8058 { .klen = 32, .blen = 64, },
8059 { .klen = 32, .blen = 256, },
8060 { .klen = 32, .blen = 1024, },
8061 { .klen = 32, .blen = 8192, },
8062 { .klen = 40, .blen = 16, },
8063 { .klen = 40, .blen = 64, },
8064 { .klen = 40, .blen = 256, },
8065 { .klen = 40, .blen = 1024, },
8066 { .klen = 40, .blen = 8192, },
8067 { .klen = 48, .blen = 16, },
8068 { .klen = 48, .blen = 64, },
8069 { .klen = 48, .blen = 256, },
8070 { .klen = 48, .blen = 1024, },
8071 { .klen = 48, .blen = 8192, },
8072
8073 /* End marker */
8074 { .klen = 0, .blen = 0, }
8075};
8076
8077static struct cipher_speed aes_xts_speed_template[] = {
8078 { .klen = 32, .blen = 16, },
8079 { .klen = 32, .blen = 64, },
8080 { .klen = 32, .blen = 256, },
8081 { .klen = 32, .blen = 1024, },
8082 { .klen = 32, .blen = 8192, },
8083 { .klen = 48, .blen = 16, },
8084 { .klen = 48, .blen = 64, },
8085 { .klen = 48, .blen = 256, },
8086 { .klen = 48, .blen = 1024, },
8087 { .klen = 48, .blen = 8192, },
8088 { .klen = 64, .blen = 16, },
8089 { .klen = 64, .blen = 64, },
8090 { .klen = 64, .blen = 256, },
8091 { .klen = 64, .blen = 1024, },
8092 { .klen = 64, .blen = 8192, },
8093
8094 /* End marker */
8095 { .klen = 0, .blen = 0, }
8096};
8097
8098static struct cipher_speed des3_ede_speed_template[] = {
8099 { .klen = 24, .blen = 16, },
8100 { .klen = 24, .blen = 64, },
8101 { .klen = 24, .blen = 256, },
8102 { .klen = 24, .blen = 1024, },
8103 { .klen = 24, .blen = 8192, },
8104
8105 /* End marker */
8106 { .klen = 0, .blen = 0, }
8107};
8108
8109static struct cipher_speed twofish_speed_template[] = {
8110 { .klen = 16, .blen = 16, },
8111 { .klen = 16, .blen = 64, },
8112 { .klen = 16, .blen = 256, },
8113 { .klen = 16, .blen = 1024, },
8114 { .klen = 16, .blen = 8192, },
8115 { .klen = 24, .blen = 16, },
8116 { .klen = 24, .blen = 64, },
8117 { .klen = 24, .blen = 256, },
8118 { .klen = 24, .blen = 1024, },
8119 { .klen = 24, .blen = 8192, },
8120 { .klen = 32, .blen = 16, },
8121 { .klen = 32, .blen = 64, },
8122 { .klen = 32, .blen = 256, },
8123 { .klen = 32, .blen = 1024, },
8124 { .klen = 32, .blen = 8192, },
8125
8126 /* End marker */
8127 { .klen = 0, .blen = 0, }
8128};
8129
8130static struct cipher_speed blowfish_speed_template[] = {
8131 /* Don't support blowfish keys > 256 bit in this test */
8132 { .klen = 8, .blen = 16, },
8133 { .klen = 8, .blen = 64, },
8134 { .klen = 8, .blen = 256, },
8135 { .klen = 8, .blen = 1024, },
8136 { .klen = 8, .blen = 8192, },
8137 { .klen = 32, .blen = 16, },
8138 { .klen = 32, .blen = 64, },
8139 { .klen = 32, .blen = 256, },
8140 { .klen = 32, .blen = 1024, },
8141 { .klen = 32, .blen = 8192, },
8142
8143 /* End marker */
8144 { .klen = 0, .blen = 0, }
8145};
8146
8147static struct cipher_speed des_speed_template[] = {
8148 { .klen = 8, .blen = 16, },
8149 { .klen = 8, .blen = 64, },
8150 { .klen = 8, .blen = 256, },
8151 { .klen = 8, .blen = 1024, },
8152 { .klen = 8, .blen = 8192, },
8153
8154 /* End marker */
8155 { .klen = 0, .blen = 0, }
8156};
8157 8243
8158/* 8244/*
8159 * Digest speed tests 8245 * Digest speed tests
8160 */ 8246 */
8161static struct hash_speed generic_hash_speed_template[] = { 8247static struct hash_speed generic_hash_speed_template[] = {
8162 { .blen = 16, .plen = 16, }, 8248 { .blen = 16, .plen = 16, },
8163 { .blen = 64, .plen = 16, }, 8249 { .blen = 64, .plen = 16, },
8164 { .blen = 64, .plen = 64, }, 8250 { .blen = 64, .plen = 64, },
8165 { .blen = 256, .plen = 16, }, 8251 { .blen = 256, .plen = 16, },
@@ -8186,41 +8272,4 @@ static struct hash_speed generic_hash_speed_template[] = {
8186 { .blen = 0, .plen = 0, } 8272 { .blen = 0, .plen = 0, }
8187}; 8273};
8188 8274
8189static struct cipher_speed camellia_speed_template[] = {
8190 { .klen = 16, .blen = 16, },
8191 { .klen = 16, .blen = 64, },
8192 { .klen = 16, .blen = 256, },
8193 { .klen = 16, .blen = 1024, },
8194 { .klen = 16, .blen = 8192, },
8195 { .klen = 24, .blen = 16, },
8196 { .klen = 24, .blen = 64, },
8197 { .klen = 24, .blen = 256, },
8198 { .klen = 24, .blen = 1024, },
8199 { .klen = 24, .blen = 8192, },
8200 { .klen = 32, .blen = 16, },
8201 { .klen = 32, .blen = 64, },
8202 { .klen = 32, .blen = 256, },
8203 { .klen = 32, .blen = 1024, },
8204 { .klen = 32, .blen = 8192, },
8205
8206 /* End marker */
8207 { .klen = 0, .blen = 0, }
8208};
8209
8210static struct cipher_speed salsa20_speed_template[] = {
8211 { .klen = 16, .blen = 16, },
8212 { .klen = 16, .blen = 64, },
8213 { .klen = 16, .blen = 256, },
8214 { .klen = 16, .blen = 1024, },
8215 { .klen = 16, .blen = 8192, },
8216 { .klen = 32, .blen = 16, },
8217 { .klen = 32, .blen = 64, },
8218 { .klen = 32, .blen = 256, },
8219 { .klen = 32, .blen = 1024, },
8220 { .klen = 32, .blen = 8192, },
8221
8222 /* End marker */
8223 { .klen = 0, .blen = 0, }
8224};
8225
8226#endif /* _CRYPTO_TCRYPT_H */ 8275#endif /* _CRYPTO_TCRYPT_H */
diff --git a/crypto/tea.c b/crypto/tea.c
index 6893b3fdf9d6..412bc74f8179 100644
--- a/crypto/tea.c
+++ b/crypto/tea.c
@@ -267,7 +267,7 @@ static struct crypto_alg xeta_alg = {
267 .cia_decrypt = xeta_decrypt } } 267 .cia_decrypt = xeta_decrypt } }
268}; 268};
269 269
270static int __init init(void) 270static int __init tea_mod_init(void)
271{ 271{
272 int ret = 0; 272 int ret = 0;
273 273
@@ -292,7 +292,7 @@ out:
292 return ret; 292 return ret;
293} 293}
294 294
295static void __exit fini(void) 295static void __exit tea_mod_fini(void)
296{ 296{
297 crypto_unregister_alg(&tea_alg); 297 crypto_unregister_alg(&tea_alg);
298 crypto_unregister_alg(&xtea_alg); 298 crypto_unregister_alg(&xtea_alg);
@@ -302,8 +302,8 @@ static void __exit fini(void)
302MODULE_ALIAS("xtea"); 302MODULE_ALIAS("xtea");
303MODULE_ALIAS("xeta"); 303MODULE_ALIAS("xeta");
304 304
305module_init(init); 305module_init(tea_mod_init);
306module_exit(fini); 306module_exit(tea_mod_fini);
307 307
308MODULE_LICENSE("GPL"); 308MODULE_LICENSE("GPL");
309MODULE_DESCRIPTION("TEA, XTEA & XETA Cryptographic Algorithms"); 309MODULE_DESCRIPTION("TEA, XTEA & XETA Cryptographic Algorithms");
diff --git a/crypto/tgr192.c b/crypto/tgr192.c
index 2e7ea1680c7f..a92414f24beb 100644
--- a/crypto/tgr192.c
+++ b/crypto/tgr192.c
@@ -663,7 +663,7 @@ static struct crypto_alg tgr128 = {
663 .dia_final = tgr128_final}} 663 .dia_final = tgr128_final}}
664}; 664};
665 665
666static int __init init(void) 666static int __init tgr192_mod_init(void)
667{ 667{
668 int ret = 0; 668 int ret = 0;
669 669
@@ -688,7 +688,7 @@ static int __init init(void)
688 return ret; 688 return ret;
689} 689}
690 690
691static void __exit fini(void) 691static void __exit tgr192_mod_fini(void)
692{ 692{
693 crypto_unregister_alg(&tgr192); 693 crypto_unregister_alg(&tgr192);
694 crypto_unregister_alg(&tgr160); 694 crypto_unregister_alg(&tgr160);
@@ -698,8 +698,8 @@ static void __exit fini(void)
698MODULE_ALIAS("tgr160"); 698MODULE_ALIAS("tgr160");
699MODULE_ALIAS("tgr128"); 699MODULE_ALIAS("tgr128");
700 700
701module_init(init); 701module_init(tgr192_mod_init);
702module_exit(fini); 702module_exit(tgr192_mod_fini);
703 703
704MODULE_LICENSE("GPL"); 704MODULE_LICENSE("GPL");
705MODULE_DESCRIPTION("Tiger Message Digest Algorithm"); 705MODULE_DESCRIPTION("Tiger Message Digest Algorithm");
diff --git a/crypto/twofish.c b/crypto/twofish.c
index 4979a2be48a9..dfcda231f87a 100644
--- a/crypto/twofish.c
+++ b/crypto/twofish.c
@@ -197,18 +197,18 @@ static struct crypto_alg alg = {
197 .cia_decrypt = twofish_decrypt } } 197 .cia_decrypt = twofish_decrypt } }
198}; 198};
199 199
200static int __init init(void) 200static int __init twofish_mod_init(void)
201{ 201{
202 return crypto_register_alg(&alg); 202 return crypto_register_alg(&alg);
203} 203}
204 204
205static void __exit fini(void) 205static void __exit twofish_mod_fini(void)
206{ 206{
207 crypto_unregister_alg(&alg); 207 crypto_unregister_alg(&alg);
208} 208}
209 209
210module_init(init); 210module_init(twofish_mod_init);
211module_exit(fini); 211module_exit(twofish_mod_fini);
212 212
213MODULE_LICENSE("GPL"); 213MODULE_LICENSE("GPL");
214MODULE_DESCRIPTION ("Twofish Cipher Algorithm"); 214MODULE_DESCRIPTION ("Twofish Cipher Algorithm");
diff --git a/crypto/wp512.c b/crypto/wp512.c
index f746952b93fc..bff28560d66d 100644
--- a/crypto/wp512.c
+++ b/crypto/wp512.c
@@ -1146,7 +1146,7 @@ static struct crypto_alg wp256 = {
1146 .dia_final = wp256_final } } 1146 .dia_final = wp256_final } }
1147}; 1147};
1148 1148
1149static int __init init(void) 1149static int __init wp512_mod_init(void)
1150{ 1150{
1151 int ret = 0; 1151 int ret = 0;
1152 1152
@@ -1172,7 +1172,7 @@ out:
1172 return ret; 1172 return ret;
1173} 1173}
1174 1174
1175static void __exit fini(void) 1175static void __exit wp512_mod_fini(void)
1176{ 1176{
1177 crypto_unregister_alg(&wp512); 1177 crypto_unregister_alg(&wp512);
1178 crypto_unregister_alg(&wp384); 1178 crypto_unregister_alg(&wp384);
@@ -1182,8 +1182,8 @@ static void __exit fini(void)
1182MODULE_ALIAS("wp384"); 1182MODULE_ALIAS("wp384");
1183MODULE_ALIAS("wp256"); 1183MODULE_ALIAS("wp256");
1184 1184
1185module_init(init); 1185module_init(wp512_mod_init);
1186module_exit(fini); 1186module_exit(wp512_mod_fini);
1187 1187
1188MODULE_LICENSE("GPL"); 1188MODULE_LICENSE("GPL");
1189MODULE_DESCRIPTION("Whirlpool Message Digest Algorithm"); 1189MODULE_DESCRIPTION("Whirlpool Message Digest Algorithm");
diff --git a/drivers/char/hw_random/omap-rng.c b/drivers/char/hw_random/omap-rng.c
index 7e319951fa41..51738bdd834e 100644
--- a/drivers/char/hw_random/omap-rng.c
+++ b/drivers/char/hw_random/omap-rng.c
@@ -1,7 +1,5 @@
1/* 1/*
2 * drivers/char/hw_random/omap-rng.c 2 * omap-rng.c - RNG driver for TI OMAP CPU family
3 *
4 * RNG driver for TI OMAP CPU family
5 * 3 *
6 * Author: Deepak Saxena <dsaxena@plexity.net> 4 * Author: Deepak Saxena <dsaxena@plexity.net>
7 * 5 *
@@ -15,11 +13,6 @@
15 * This file is licensed under the terms of the GNU General Public 13 * This file is licensed under the terms of the GNU General Public
16 * License version 2. This program is licensed "as is" without any 14 * License version 2. This program is licensed "as is" without any
17 * warranty of any kind, whether express or implied. 15 * warranty of any kind, whether express or implied.
18 *
19 * TODO:
20 *
21 * - Make status updated be interrupt driven so we don't poll
22 *
23 */ 16 */
24 17
25#include <linux/module.h> 18#include <linux/module.h>
@@ -55,17 +48,16 @@ static void __iomem *rng_base;
55static struct clk *rng_ick; 48static struct clk *rng_ick;
56static struct platform_device *rng_dev; 49static struct platform_device *rng_dev;
57 50
58static u32 omap_rng_read_reg(int reg) 51static inline u32 omap_rng_read_reg(int reg)
59{ 52{
60 return __raw_readl(rng_base + reg); 53 return __raw_readl(rng_base + reg);
61} 54}
62 55
63static void omap_rng_write_reg(int reg, u32 val) 56static inline void omap_rng_write_reg(int reg, u32 val)
64{ 57{
65 __raw_writel(val, rng_base + reg); 58 __raw_writel(val, rng_base + reg);
66} 59}
67 60
68/* REVISIT: Does the status bit really work on 16xx? */
69static int omap_rng_data_present(struct hwrng *rng, int wait) 61static int omap_rng_data_present(struct hwrng *rng, int wait)
70{ 62{
71 int data, i; 63 int data, i;
@@ -74,6 +66,11 @@ static int omap_rng_data_present(struct hwrng *rng, int wait)
74 data = omap_rng_read_reg(RNG_STAT_REG) ? 0 : 1; 66 data = omap_rng_read_reg(RNG_STAT_REG) ? 0 : 1;
75 if (data || !wait) 67 if (data || !wait)
76 break; 68 break;
69 /* RNG produces data fast enough (2+ MBit/sec, even
70 * during "rngtest" loads, that these delays don't
71 * seem to trigger. We *could* use the RNG IRQ, but
72 * that'd be higher overhead ... so why bother?
73 */
77 udelay(10); 74 udelay(10);
78 } 75 }
79 return data; 76 return data;
@@ -101,7 +98,8 @@ static int __init omap_rng_probe(struct platform_device *pdev)
101 * A bit ugly, and it will never actually happen but there can 98 * A bit ugly, and it will never actually happen but there can
102 * be only one RNG and this catches any bork 99 * be only one RNG and this catches any bork
103 */ 100 */
104 BUG_ON(rng_dev); 101 if (rng_dev)
102 return -EBUSY;
105 103
106 if (cpu_is_omap24xx()) { 104 if (cpu_is_omap24xx()) {
107 rng_ick = clk_get(NULL, "rng_ick"); 105 rng_ick = clk_get(NULL, "rng_ick");
@@ -124,7 +122,7 @@ static int __init omap_rng_probe(struct platform_device *pdev)
124 return -EBUSY; 122 return -EBUSY;
125 123
126 dev_set_drvdata(&pdev->dev, mem); 124 dev_set_drvdata(&pdev->dev, mem);
127 rng_base = (u32 __iomem *)io_p2v(res->start); 125 rng_base = (u32 __force __iomem *)io_p2v(res->start);
128 126
129 ret = hwrng_register(&omap_rng_ops); 127 ret = hwrng_register(&omap_rng_ops);
130 if (ret) { 128 if (ret) {
@@ -182,6 +180,8 @@ static int omap_rng_resume(struct platform_device *pdev)
182 180
183#endif 181#endif
184 182
183/* work with hotplug and coldplug */
184MODULE_ALIAS("platform:omap_rng");
185 185
186static struct platform_driver omap_rng_driver = { 186static struct platform_driver omap_rng_driver = {
187 .driver = { 187 .driver = {
diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
index 6d2f0c8d419a..43b71b69daa5 100644
--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -27,6 +27,7 @@ config CRYPTO_DEV_PADLOCK_AES
27 tristate "PadLock driver for AES algorithm" 27 tristate "PadLock driver for AES algorithm"
28 depends on CRYPTO_DEV_PADLOCK 28 depends on CRYPTO_DEV_PADLOCK
29 select CRYPTO_BLKCIPHER 29 select CRYPTO_BLKCIPHER
30 select CRYPTO_AES
30 help 31 help
31 Use VIA PadLock for AES algorithm. 32 Use VIA PadLock for AES algorithm.
32 33
@@ -101,6 +102,19 @@ config CRYPTO_SHA256_S390
101 This version of SHA implements a 256 bit hash with 128 bits of 102 This version of SHA implements a 256 bit hash with 128 bits of
102 security against collision attacks. 103 security against collision attacks.
103 104
105config CRYPTO_SHA512_S390
106 tristate "SHA384 and SHA512 digest algorithm"
107 depends on S390
108 select CRYPTO_ALGAPI
109 help
110 This is the s390 hardware accelerated implementation of the
111 SHA512 secure hash standard.
112
113 This version of SHA implements a 512 bit hash with 256 bits of
114 security against collision attacks. The code also includes SHA-384,
115 a 384 bit hash with 192 bits of security against collision attacks.
116
117
104config CRYPTO_DES_S390 118config CRYPTO_DES_S390
105 tristate "DES and Triple DES cipher algorithms" 119 tristate "DES and Triple DES cipher algorithms"
106 depends on S390 120 depends on S390
diff --git a/drivers/crypto/padlock-aes.c b/drivers/crypto/padlock-aes.c
index 2f3ad3f7dfea..bb30eb9b93ef 100644
--- a/drivers/crypto/padlock-aes.c
+++ b/drivers/crypto/padlock-aes.c
@@ -5,42 +5,6 @@
5 * 5 *
6 * Copyright (c) 2004 Michal Ludvig <michal@logix.cz> 6 * Copyright (c) 2004 Michal Ludvig <michal@logix.cz>
7 * 7 *
8 * Key expansion routine taken from crypto/aes_generic.c
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * ---------------------------------------------------------------------------
16 * Copyright (c) 2002, Dr Brian Gladman <brg@gladman.me.uk>, Worcester, UK.
17 * All rights reserved.
18 *
19 * LICENSE TERMS
20 *
21 * The free distribution and use of this software in both source and binary
22 * form is allowed (with or without changes) provided that:
23 *
24 * 1. distributions of this source code include the above copyright
25 * notice, this list of conditions and the following disclaimer;
26 *
27 * 2. distributions in binary form include the above copyright
28 * notice, this list of conditions and the following disclaimer
29 * in the documentation and/or other associated materials;
30 *
31 * 3. the copyright holder's name is not used to endorse products
32 * built using this software without specific written permission.
33 *
34 * ALTERNATIVELY, provided that this notice is retained in full, this product
35 * may be distributed under the terms of the GNU General Public License (GPL),
36 * in which case the provisions of the GPL apply INSTEAD OF those given above.
37 *
38 * DISCLAIMER
39 *
40 * This software is provided 'as is' with no explicit or implied warranties
41 * in respect of its properties, including, but not limited to, correctness
42 * and/or fitness for purpose.
43 * ---------------------------------------------------------------------------
44 */ 8 */
45 9
46#include <crypto/algapi.h> 10#include <crypto/algapi.h>
@@ -54,9 +18,6 @@
54#include <asm/byteorder.h> 18#include <asm/byteorder.h>
55#include "padlock.h" 19#include "padlock.h"
56 20
57#define AES_EXTENDED_KEY_SIZE 64 /* in uint32_t units */
58#define AES_EXTENDED_KEY_SIZE_B (AES_EXTENDED_KEY_SIZE * sizeof(uint32_t))
59
60/* Control word. */ 21/* Control word. */
61struct cword { 22struct cword {
62 unsigned int __attribute__ ((__packed__)) 23 unsigned int __attribute__ ((__packed__))
@@ -70,218 +31,23 @@ struct cword {
70 31
71/* Whenever making any changes to the following 32/* Whenever making any changes to the following
72 * structure *make sure* you keep E, d_data 33 * structure *make sure* you keep E, d_data
73 * and cword aligned on 16 Bytes boundaries!!! */ 34 * and cword aligned on 16 Bytes boundaries and
35 * the Hardware can access 16 * 16 bytes of E and d_data
36 * (only the first 15 * 16 bytes matter but the HW reads
37 * more).
38 */
74struct aes_ctx { 39struct aes_ctx {
40 u32 E[AES_MAX_KEYLENGTH_U32]
41 __attribute__ ((__aligned__(PADLOCK_ALIGNMENT)));
42 u32 d_data[AES_MAX_KEYLENGTH_U32]
43 __attribute__ ((__aligned__(PADLOCK_ALIGNMENT)));
75 struct { 44 struct {
76 struct cword encrypt; 45 struct cword encrypt;
77 struct cword decrypt; 46 struct cword decrypt;
78 } cword; 47 } cword;
79 u32 *D; 48 u32 *D;
80 int key_length;
81 u32 E[AES_EXTENDED_KEY_SIZE]
82 __attribute__ ((__aligned__(PADLOCK_ALIGNMENT)));
83 u32 d_data[AES_EXTENDED_KEY_SIZE]
84 __attribute__ ((__aligned__(PADLOCK_ALIGNMENT)));
85}; 49};
86 50
87/* ====== Key management routines ====== */
88
89static inline uint32_t
90generic_rotr32 (const uint32_t x, const unsigned bits)
91{
92 const unsigned n = bits % 32;
93 return (x >> n) | (x << (32 - n));
94}
95
96static inline uint32_t
97generic_rotl32 (const uint32_t x, const unsigned bits)
98{
99 const unsigned n = bits % 32;
100 return (x << n) | (x >> (32 - n));
101}
102
103#define rotl generic_rotl32
104#define rotr generic_rotr32
105
106/*
107 * #define byte(x, nr) ((unsigned char)((x) >> (nr*8)))
108 */
109static inline uint8_t
110byte(const uint32_t x, const unsigned n)
111{
112 return x >> (n << 3);
113}
114
115#define E_KEY ctx->E
116#define D_KEY ctx->D
117
118static uint8_t pow_tab[256];
119static uint8_t log_tab[256];
120static uint8_t sbx_tab[256];
121static uint8_t isb_tab[256];
122static uint32_t rco_tab[10];
123static uint32_t ft_tab[4][256];
124static uint32_t it_tab[4][256];
125
126static uint32_t fl_tab[4][256];
127static uint32_t il_tab[4][256];
128
129static inline uint8_t
130f_mult (uint8_t a, uint8_t b)
131{
132 uint8_t aa = log_tab[a], cc = aa + log_tab[b];
133
134 return pow_tab[cc + (cc < aa ? 1 : 0)];
135}
136
137#define ff_mult(a,b) (a && b ? f_mult(a, b) : 0)
138
139#define f_rn(bo, bi, n, k) \
140 bo[n] = ft_tab[0][byte(bi[n],0)] ^ \
141 ft_tab[1][byte(bi[(n + 1) & 3],1)] ^ \
142 ft_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
143 ft_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n)
144
145#define i_rn(bo, bi, n, k) \
146 bo[n] = it_tab[0][byte(bi[n],0)] ^ \
147 it_tab[1][byte(bi[(n + 3) & 3],1)] ^ \
148 it_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
149 it_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n)
150
151#define ls_box(x) \
152 ( fl_tab[0][byte(x, 0)] ^ \
153 fl_tab[1][byte(x, 1)] ^ \
154 fl_tab[2][byte(x, 2)] ^ \
155 fl_tab[3][byte(x, 3)] )
156
157#define f_rl(bo, bi, n, k) \
158 bo[n] = fl_tab[0][byte(bi[n],0)] ^ \
159 fl_tab[1][byte(bi[(n + 1) & 3],1)] ^ \
160 fl_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
161 fl_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n)
162
163#define i_rl(bo, bi, n, k) \
164 bo[n] = il_tab[0][byte(bi[n],0)] ^ \
165 il_tab[1][byte(bi[(n + 3) & 3],1)] ^ \
166 il_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
167 il_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n)
168
169static void
170gen_tabs (void)
171{
172 uint32_t i, t;
173 uint8_t p, q;
174
175 /* log and power tables for GF(2**8) finite field with
176 0x011b as modular polynomial - the simplest prmitive
177 root is 0x03, used here to generate the tables */
178
179 for (i = 0, p = 1; i < 256; ++i) {
180 pow_tab[i] = (uint8_t) p;
181 log_tab[p] = (uint8_t) i;
182
183 p ^= (p << 1) ^ (p & 0x80 ? 0x01b : 0);
184 }
185
186 log_tab[1] = 0;
187
188 for (i = 0, p = 1; i < 10; ++i) {
189 rco_tab[i] = p;
190
191 p = (p << 1) ^ (p & 0x80 ? 0x01b : 0);
192 }
193
194 for (i = 0; i < 256; ++i) {
195 p = (i ? pow_tab[255 - log_tab[i]] : 0);
196 q = ((p >> 7) | (p << 1)) ^ ((p >> 6) | (p << 2));
197 p ^= 0x63 ^ q ^ ((q >> 6) | (q << 2));
198 sbx_tab[i] = p;
199 isb_tab[p] = (uint8_t) i;
200 }
201
202 for (i = 0; i < 256; ++i) {
203 p = sbx_tab[i];
204
205 t = p;
206 fl_tab[0][i] = t;
207 fl_tab[1][i] = rotl (t, 8);
208 fl_tab[2][i] = rotl (t, 16);
209 fl_tab[3][i] = rotl (t, 24);
210
211 t = ((uint32_t) ff_mult (2, p)) |
212 ((uint32_t) p << 8) |
213 ((uint32_t) p << 16) | ((uint32_t) ff_mult (3, p) << 24);
214
215 ft_tab[0][i] = t;
216 ft_tab[1][i] = rotl (t, 8);
217 ft_tab[2][i] = rotl (t, 16);
218 ft_tab[3][i] = rotl (t, 24);
219
220 p = isb_tab[i];
221
222 t = p;
223 il_tab[0][i] = t;
224 il_tab[1][i] = rotl (t, 8);
225 il_tab[2][i] = rotl (t, 16);
226 il_tab[3][i] = rotl (t, 24);
227
228 t = ((uint32_t) ff_mult (14, p)) |
229 ((uint32_t) ff_mult (9, p) << 8) |
230 ((uint32_t) ff_mult (13, p) << 16) |
231 ((uint32_t) ff_mult (11, p) << 24);
232
233 it_tab[0][i] = t;
234 it_tab[1][i] = rotl (t, 8);
235 it_tab[2][i] = rotl (t, 16);
236 it_tab[3][i] = rotl (t, 24);
237 }
238}
239
240#define star_x(x) (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b)
241
242#define imix_col(y,x) \
243 u = star_x(x); \
244 v = star_x(u); \
245 w = star_x(v); \
246 t = w ^ (x); \
247 (y) = u ^ v ^ w; \
248 (y) ^= rotr(u ^ t, 8) ^ \
249 rotr(v ^ t, 16) ^ \
250 rotr(t,24)
251
252/* initialise the key schedule from the user supplied key */
253
254#define loop4(i) \
255{ t = rotr(t, 8); t = ls_box(t) ^ rco_tab[i]; \
256 t ^= E_KEY[4 * i]; E_KEY[4 * i + 4] = t; \
257 t ^= E_KEY[4 * i + 1]; E_KEY[4 * i + 5] = t; \
258 t ^= E_KEY[4 * i + 2]; E_KEY[4 * i + 6] = t; \
259 t ^= E_KEY[4 * i + 3]; E_KEY[4 * i + 7] = t; \
260}
261
262#define loop6(i) \
263{ t = rotr(t, 8); t = ls_box(t) ^ rco_tab[i]; \
264 t ^= E_KEY[6 * i]; E_KEY[6 * i + 6] = t; \
265 t ^= E_KEY[6 * i + 1]; E_KEY[6 * i + 7] = t; \
266 t ^= E_KEY[6 * i + 2]; E_KEY[6 * i + 8] = t; \
267 t ^= E_KEY[6 * i + 3]; E_KEY[6 * i + 9] = t; \
268 t ^= E_KEY[6 * i + 4]; E_KEY[6 * i + 10] = t; \
269 t ^= E_KEY[6 * i + 5]; E_KEY[6 * i + 11] = t; \
270}
271
272#define loop8(i) \
273{ t = rotr(t, 8); ; t = ls_box(t) ^ rco_tab[i]; \
274 t ^= E_KEY[8 * i]; E_KEY[8 * i + 8] = t; \
275 t ^= E_KEY[8 * i + 1]; E_KEY[8 * i + 9] = t; \
276 t ^= E_KEY[8 * i + 2]; E_KEY[8 * i + 10] = t; \
277 t ^= E_KEY[8 * i + 3]; E_KEY[8 * i + 11] = t; \
278 t = E_KEY[8 * i + 4] ^ ls_box(t); \
279 E_KEY[8 * i + 12] = t; \
280 t ^= E_KEY[8 * i + 5]; E_KEY[8 * i + 13] = t; \
281 t ^= E_KEY[8 * i + 6]; E_KEY[8 * i + 14] = t; \
282 t ^= E_KEY[8 * i + 7]; E_KEY[8 * i + 15] = t; \
283}
284
285/* Tells whether the ACE is capable to generate 51/* Tells whether the ACE is capable to generate
286 the extended key for a given key_len. */ 52 the extended key for a given key_len. */
287static inline int 53static inline int
@@ -321,17 +87,13 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
321 struct aes_ctx *ctx = aes_ctx(tfm); 87 struct aes_ctx *ctx = aes_ctx(tfm);
322 const __le32 *key = (const __le32 *)in_key; 88 const __le32 *key = (const __le32 *)in_key;
323 u32 *flags = &tfm->crt_flags; 89 u32 *flags = &tfm->crt_flags;
324 uint32_t i, t, u, v, w; 90 struct crypto_aes_ctx gen_aes;
325 uint32_t P[AES_EXTENDED_KEY_SIZE];
326 uint32_t rounds;
327 91
328 if (key_len % 8) { 92 if (key_len % 8) {
329 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN; 93 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
330 return -EINVAL; 94 return -EINVAL;
331 } 95 }
332 96
333 ctx->key_length = key_len;
334
335 /* 97 /*
336 * If the hardware is capable of generating the extended key 98 * If the hardware is capable of generating the extended key
337 * itself we must supply the plain key for both encryption 99 * itself we must supply the plain key for both encryption
@@ -339,10 +101,10 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
339 */ 101 */
340 ctx->D = ctx->E; 102 ctx->D = ctx->E;
341 103
342 E_KEY[0] = le32_to_cpu(key[0]); 104 ctx->E[0] = le32_to_cpu(key[0]);
343 E_KEY[1] = le32_to_cpu(key[1]); 105 ctx->E[1] = le32_to_cpu(key[1]);
344 E_KEY[2] = le32_to_cpu(key[2]); 106 ctx->E[2] = le32_to_cpu(key[2]);
345 E_KEY[3] = le32_to_cpu(key[3]); 107 ctx->E[3] = le32_to_cpu(key[3]);
346 108
347 /* Prepare control words. */ 109 /* Prepare control words. */
348 memset(&ctx->cword, 0, sizeof(ctx->cword)); 110 memset(&ctx->cword, 0, sizeof(ctx->cword));
@@ -361,56 +123,13 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
361 ctx->cword.encrypt.keygen = 1; 123 ctx->cword.encrypt.keygen = 1;
362 ctx->cword.decrypt.keygen = 1; 124 ctx->cword.decrypt.keygen = 1;
363 125
364 switch (key_len) { 126 if (crypto_aes_expand_key(&gen_aes, in_key, key_len)) {
365 case 16: 127 *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
366 t = E_KEY[3]; 128 return -EINVAL;
367 for (i = 0; i < 10; ++i)
368 loop4 (i);
369 break;
370
371 case 24:
372 E_KEY[4] = le32_to_cpu(key[4]);
373 t = E_KEY[5] = le32_to_cpu(key[5]);
374 for (i = 0; i < 8; ++i)
375 loop6 (i);
376 break;
377
378 case 32:
379 E_KEY[4] = le32_to_cpu(key[4]);
380 E_KEY[5] = le32_to_cpu(key[5]);
381 E_KEY[6] = le32_to_cpu(key[6]);
382 t = E_KEY[7] = le32_to_cpu(key[7]);
383 for (i = 0; i < 7; ++i)
384 loop8 (i);
385 break;
386 }
387
388 D_KEY[0] = E_KEY[0];
389 D_KEY[1] = E_KEY[1];
390 D_KEY[2] = E_KEY[2];
391 D_KEY[3] = E_KEY[3];
392
393 for (i = 4; i < key_len + 24; ++i) {
394 imix_col (D_KEY[i], E_KEY[i]);
395 }
396
397 /* PadLock needs a different format of the decryption key. */
398 rounds = 10 + (key_len - 16) / 4;
399
400 for (i = 0; i < rounds; i++) {
401 P[((i + 1) * 4) + 0] = D_KEY[((rounds - i - 1) * 4) + 0];
402 P[((i + 1) * 4) + 1] = D_KEY[((rounds - i - 1) * 4) + 1];
403 P[((i + 1) * 4) + 2] = D_KEY[((rounds - i - 1) * 4) + 2];
404 P[((i + 1) * 4) + 3] = D_KEY[((rounds - i - 1) * 4) + 3];
405 } 129 }
406 130
407 P[0] = E_KEY[(rounds * 4) + 0]; 131 memcpy(ctx->E, gen_aes.key_enc, AES_MAX_KEYLENGTH);
408 P[1] = E_KEY[(rounds * 4) + 1]; 132 memcpy(ctx->D, gen_aes.key_dec, AES_MAX_KEYLENGTH);
409 P[2] = E_KEY[(rounds * 4) + 2];
410 P[3] = E_KEY[(rounds * 4) + 3];
411
412 memcpy(D_KEY, P, AES_EXTENDED_KEY_SIZE_B);
413
414 return 0; 133 return 0;
415} 134}
416 135
@@ -675,7 +394,6 @@ static int __init padlock_init(void)
675 return -ENODEV; 394 return -ENODEV;
676 } 395 }
677 396
678 gen_tabs();
679 if ((ret = crypto_register_alg(&aes_alg))) 397 if ((ret = crypto_register_alg(&aes_alg)))
680 goto aes_err; 398 goto aes_err;
681 399
diff --git a/include/crypto/aes.h b/include/crypto/aes.h
index d480b76715a8..40008d67ee3d 100644
--- a/include/crypto/aes.h
+++ b/include/crypto/aes.h
@@ -14,11 +14,13 @@
14#define AES_KEYSIZE_192 24 14#define AES_KEYSIZE_192 24
15#define AES_KEYSIZE_256 32 15#define AES_KEYSIZE_256 32
16#define AES_BLOCK_SIZE 16 16#define AES_BLOCK_SIZE 16
17#define AES_MAX_KEYLENGTH (15 * 16)
18#define AES_MAX_KEYLENGTH_U32 (AES_MAX_KEYLENGTH / sizeof(u32))
17 19
18struct crypto_aes_ctx { 20struct crypto_aes_ctx {
19 u32 key_length; 21 u32 key_length;
20 u32 key_enc[60]; 22 u32 key_enc[AES_MAX_KEYLENGTH_U32];
21 u32 key_dec[60]; 23 u32 key_dec[AES_MAX_KEYLENGTH_U32];
22}; 24};
23 25
24extern u32 crypto_ft_tab[4][256]; 26extern u32 crypto_ft_tab[4][256];
@@ -28,4 +30,6 @@ extern u32 crypto_il_tab[4][256];
28 30
29int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key, 31int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
30 unsigned int key_len); 32 unsigned int key_len);
33int crypto_aes_expand_key(struct crypto_aes_ctx *ctx, const u8 *in_key,
34 unsigned int key_len);
31#endif 35#endif
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
index 5e02d1b46370..425824bd49f3 100644
--- a/include/linux/crypto.h
+++ b/include/linux/crypto.h
@@ -317,14 +317,7 @@ int crypto_unregister_alg(struct crypto_alg *alg);
317/* 317/*
318 * Algorithm query interface. 318 * Algorithm query interface.
319 */ 319 */
320#ifdef CONFIG_CRYPTO
321int crypto_has_alg(const char *name, u32 type, u32 mask); 320int crypto_has_alg(const char *name, u32 type, u32 mask);
322#else
323static inline int crypto_has_alg(const char *name, u32 type, u32 mask)
324{
325 return 0;
326}
327#endif
328 321
329/* 322/*
330 * Transforms: user-instantiated objects which encapsulate algorithms 323 * Transforms: user-instantiated objects which encapsulate algorithms