aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-02 17:53:12 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-02 17:53:12 -0400
commit797994f81a8b2bdca2eecffa415c1e7a89a4f961 (patch)
tree1383dc469c26ad37fdf960f682d9a48c782935c5 /crypto
parentc8d8566952fda026966784a62f324c8352f77430 (diff)
parent3862de1f6c442d53bd828d39f86d07d933a70605 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto update from Herbert Xu: - XTS mode optimisation for twofish/cast6/camellia/aes on x86 - AVX2/x86_64 implementation for blowfish/twofish/serpent/camellia - SSSE3/AVX/AVX2 optimisations for sha256/sha512 - Added driver for SAHARA2 crypto accelerator - Fix for GMAC when used in non-IPsec secnarios - Added generic CMAC implementation (including IPsec glue) - IP update for crypto/atmel - Support for more than one device in hwrng/timeriomem - Added Broadcom BCM2835 RNG driver - Misc fixes * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (59 commits) crypto: caam - fix job ring cleanup code crypto: camellia - add AVX2/AES-NI/x86_64 assembler implementation of camellia cipher crypto: serpent - add AVX2/x86_64 assembler implementation of serpent cipher crypto: twofish - add AVX2/x86_64 assembler implementation of twofish cipher crypto: blowfish - add AVX2/x86_64 implementation of blowfish cipher crypto: tcrypt - add async cipher speed tests for blowfish crypto: testmgr - extend camellia test-vectors for camellia-aesni/avx2 crypto: aesni_intel - fix Kconfig problem with CRYPTO_GLUE_HELPER_X86 crypto: aesni_intel - add more optimized XTS mode for x86-64 crypto: x86/camellia-aesni-avx - add more optimized XTS code crypto: cast6-avx: use new optimized XTS code crypto: x86/twofish-avx - use optimized XTS code crypto: x86 - add more optimized XTS-mode for serpent-avx xfrm: add rfc4494 AES-CMAC-96 support crypto: add CMAC support to CryptoAPI crypto: testmgr - add empty test vectors for null ciphers crypto: testmgr - add AES GMAC test vectors crypto: gcm - fix rfc4543 to handle async crypto correctly crypto: gcm - make GMAC work when dst and src are different hwrng: timeriomem - added devicetree hooks ...
Diffstat (limited to 'crypto')
-rw-r--r--crypto/Kconfig133
-rw-r--r--crypto/Makefile1
-rw-r--r--crypto/cmac.c315
-rw-r--r--crypto/crypto_user.c4
-rw-r--r--crypto/gcm.c116
-rw-r--r--crypto/sha256_generic.c11
-rw-r--r--crypto/sha512_generic.c13
-rw-r--r--crypto/tcrypt.c30
-rw-r--r--crypto/testmgr.c95
-rw-r--r--crypto/testmgr.h1314
10 files changed, 1949 insertions, 83 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig
index 05c0ce52f96d..622d8a48cbe9 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -198,6 +198,7 @@ config CRYPTO_GCM
198 select CRYPTO_CTR 198 select CRYPTO_CTR
199 select CRYPTO_AEAD 199 select CRYPTO_AEAD
200 select CRYPTO_GHASH 200 select CRYPTO_GHASH
201 select CRYPTO_NULL
201 help 202 help
202 Support for Galois/Counter Mode (GCM) and Galois Message 203 Support for Galois/Counter Mode (GCM) and Galois Message
203 Authentication Code (GMAC). Required for IPSec. 204 Authentication Code (GMAC). Required for IPSec.
@@ -282,6 +283,17 @@ config CRYPTO_XTS
282 283
283comment "Hash modes" 284comment "Hash modes"
284 285
286config CRYPTO_CMAC
287 tristate "CMAC support"
288 select CRYPTO_HASH
289 select CRYPTO_MANAGER
290 help
291 Cipher-based Message Authentication Code (CMAC) specified by
292 The National Institute of Standards and Technology (NIST).
293
294 https://tools.ietf.org/html/rfc4493
295 http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
296
285config CRYPTO_HMAC 297config CRYPTO_HMAC
286 tristate "HMAC support" 298 tristate "HMAC support"
287 select CRYPTO_HASH 299 select CRYPTO_HASH
@@ -322,19 +334,9 @@ config CRYPTO_CRC32C
322 by iSCSI for header and data digests and by others. 334 by iSCSI for header and data digests and by others.
323 See Castagnoli93. Module will be crc32c. 335 See Castagnoli93. Module will be crc32c.
324 336
325config CRYPTO_CRC32C_X86_64
326 bool
327 depends on X86 && 64BIT
328 select CRYPTO_HASH
329 help
330 In Intel processor with SSE4.2 supported, the processor will
331 support CRC32C calculation using hardware accelerated CRC32
332 instruction optimized with PCLMULQDQ instruction when available.
333
334config CRYPTO_CRC32C_INTEL 337config CRYPTO_CRC32C_INTEL
335 tristate "CRC32c INTEL hardware acceleration" 338 tristate "CRC32c INTEL hardware acceleration"
336 depends on X86 339 depends on X86
337 select CRYPTO_CRC32C_X86_64 if 64BIT
338 select CRYPTO_HASH 340 select CRYPTO_HASH
339 help 341 help
340 In Intel processor with SSE4.2 supported, the processor will 342 In Intel processor with SSE4.2 supported, the processor will
@@ -480,6 +482,28 @@ config CRYPTO_SHA1_SSSE3
480 using Supplemental SSE3 (SSSE3) instructions or Advanced Vector 482 using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
481 Extensions (AVX), when available. 483 Extensions (AVX), when available.
482 484
485config CRYPTO_SHA256_SSSE3
486 tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2)"
487 depends on X86 && 64BIT
488 select CRYPTO_SHA256
489 select CRYPTO_HASH
490 help
491 SHA-256 secure hash standard (DFIPS 180-2) implemented
492 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
493 Extensions version 1 (AVX1), or Advanced Vector Extensions
494 version 2 (AVX2) instructions, when available.
495
496config CRYPTO_SHA512_SSSE3
497 tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
498 depends on X86 && 64BIT
499 select CRYPTO_SHA512
500 select CRYPTO_HASH
501 help
502 SHA-512 secure hash standard (DFIPS 180-2) implemented
503 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
504 Extensions version 1 (AVX1), or Advanced Vector Extensions
505 version 2 (AVX2) instructions, when available.
506
483config CRYPTO_SHA1_SPARC64 507config CRYPTO_SHA1_SPARC64
484 tristate "SHA1 digest algorithm (SPARC64)" 508 tristate "SHA1 digest algorithm (SPARC64)"
485 depends on SPARC64 509 depends on SPARC64
@@ -654,6 +678,7 @@ config CRYPTO_AES_NI_INTEL
654 select CRYPTO_CRYPTD 678 select CRYPTO_CRYPTD
655 select CRYPTO_ABLK_HELPER_X86 679 select CRYPTO_ABLK_HELPER_X86
656 select CRYPTO_ALGAPI 680 select CRYPTO_ALGAPI
681 select CRYPTO_GLUE_HELPER_X86 if 64BIT
657 select CRYPTO_LRW 682 select CRYPTO_LRW
658 select CRYPTO_XTS 683 select CRYPTO_XTS
659 help 684 help
@@ -795,6 +820,24 @@ config CRYPTO_BLOWFISH_X86_64
795 See also: 820 See also:
796 <http://www.schneier.com/blowfish.html> 821 <http://www.schneier.com/blowfish.html>
797 822
823config CRYPTO_BLOWFISH_AVX2_X86_64
824 tristate "Blowfish cipher algorithm (x86_64/AVX2)"
825 depends on X86 && 64BIT
826 select CRYPTO_ALGAPI
827 select CRYPTO_CRYPTD
828 select CRYPTO_ABLK_HELPER_X86
829 select CRYPTO_BLOWFISH_COMMON
830 select CRYPTO_BLOWFISH_X86_64
831 help
832 Blowfish cipher algorithm (x86_64/AVX2), by Bruce Schneier.
833
834 This is a variable key length cipher which can use keys from 32
835 bits to 448 bits in length. It's fast, simple and specifically
836 designed for use on "large microprocessors".
837
838 See also:
839 <http://www.schneier.com/blowfish.html>
840
798config CRYPTO_CAMELLIA 841config CRYPTO_CAMELLIA
799 tristate "Camellia cipher algorithms" 842 tristate "Camellia cipher algorithms"
800 depends on CRYPTO 843 depends on CRYPTO
@@ -851,6 +894,29 @@ config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
851 See also: 894 See also:
852 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 895 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
853 896
897config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
898 tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
899 depends on X86 && 64BIT
900 depends on CRYPTO
901 select CRYPTO_ALGAPI
902 select CRYPTO_CRYPTD
903 select CRYPTO_ABLK_HELPER_X86
904 select CRYPTO_GLUE_HELPER_X86
905 select CRYPTO_CAMELLIA_X86_64
906 select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
907 select CRYPTO_LRW
908 select CRYPTO_XTS
909 help
910 Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
911
912 Camellia is a symmetric key block cipher developed jointly
913 at NTT and Mitsubishi Electric Corporation.
914
915 The Camellia specifies three key sizes: 128, 192 and 256 bits.
916
917 See also:
918 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
919
854config CRYPTO_CAMELLIA_SPARC64 920config CRYPTO_CAMELLIA_SPARC64
855 tristate "Camellia cipher algorithm (SPARC64)" 921 tristate "Camellia cipher algorithm (SPARC64)"
856 depends on SPARC64 922 depends on SPARC64
@@ -1088,6 +1154,29 @@ config CRYPTO_SERPENT_AVX_X86_64
1088 See also: 1154 See also:
1089 <http://www.cl.cam.ac.uk/~rja14/serpent.html> 1155 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1090 1156
1157config CRYPTO_SERPENT_AVX2_X86_64
1158 tristate "Serpent cipher algorithm (x86_64/AVX2)"
1159 depends on X86 && 64BIT
1160 select CRYPTO_ALGAPI
1161 select CRYPTO_CRYPTD
1162 select CRYPTO_ABLK_HELPER_X86
1163 select CRYPTO_GLUE_HELPER_X86
1164 select CRYPTO_SERPENT
1165 select CRYPTO_SERPENT_AVX_X86_64
1166 select CRYPTO_LRW
1167 select CRYPTO_XTS
1168 help
1169 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1170
1171 Keys are allowed to be from 0 to 256 bits in length, in steps
1172 of 8 bits.
1173
1174 This module provides Serpent cipher algorithm that processes 16
1175 blocks parallel using AVX2 instruction set.
1176
1177 See also:
1178 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1179
1091config CRYPTO_TEA 1180config CRYPTO_TEA
1092 tristate "TEA, XTEA and XETA cipher algorithms" 1181 tristate "TEA, XTEA and XETA cipher algorithms"
1093 select CRYPTO_ALGAPI 1182 select CRYPTO_ALGAPI
@@ -1207,6 +1296,30 @@ config CRYPTO_TWOFISH_AVX_X86_64
1207 See also: 1296 See also:
1208 <http://www.schneier.com/twofish.html> 1297 <http://www.schneier.com/twofish.html>
1209 1298
1299config CRYPTO_TWOFISH_AVX2_X86_64
1300 tristate "Twofish cipher algorithm (x86_64/AVX2)"
1301 depends on X86 && 64BIT
1302 select CRYPTO_ALGAPI
1303 select CRYPTO_CRYPTD
1304 select CRYPTO_ABLK_HELPER_X86
1305 select CRYPTO_GLUE_HELPER_X86
1306 select CRYPTO_TWOFISH_COMMON
1307 select CRYPTO_TWOFISH_X86_64
1308 select CRYPTO_TWOFISH_X86_64_3WAY
1309 select CRYPTO_TWOFISH_AVX_X86_64
1310 select CRYPTO_LRW
1311 select CRYPTO_XTS
1312 help
1313 Twofish cipher algorithm (x86_64/AVX2).
1314
1315 Twofish was submitted as an AES (Advanced Encryption Standard)
1316 candidate cipher by researchers at CounterPane Systems. It is a
1317 16 round block cipher supporting key sizes of 128, 192, and 256
1318 bits.
1319
1320 See also:
1321 <http://www.schneier.com/twofish.html>
1322
1210comment "Compression" 1323comment "Compression"
1211 1324
1212config CRYPTO_DEFLATE 1325config CRYPTO_DEFLATE
diff --git a/crypto/Makefile b/crypto/Makefile
index be1a1bebbb86..a8e9b0fefbe9 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -32,6 +32,7 @@ cryptomgr-y := algboss.o testmgr.o
32 32
33obj-$(CONFIG_CRYPTO_MANAGER2) += cryptomgr.o 33obj-$(CONFIG_CRYPTO_MANAGER2) += cryptomgr.o
34obj-$(CONFIG_CRYPTO_USER) += crypto_user.o 34obj-$(CONFIG_CRYPTO_USER) += crypto_user.o
35obj-$(CONFIG_CRYPTO_CMAC) += cmac.o
35obj-$(CONFIG_CRYPTO_HMAC) += hmac.o 36obj-$(CONFIG_CRYPTO_HMAC) += hmac.o
36obj-$(CONFIG_CRYPTO_VMAC) += vmac.o 37obj-$(CONFIG_CRYPTO_VMAC) += vmac.o
37obj-$(CONFIG_CRYPTO_XCBC) += xcbc.o 38obj-$(CONFIG_CRYPTO_XCBC) += xcbc.o
diff --git a/crypto/cmac.c b/crypto/cmac.c
new file mode 100644
index 000000000000..50880cf17fad
--- /dev/null
+++ b/crypto/cmac.c
@@ -0,0 +1,315 @@
1/*
2 * CMAC: Cipher Block Mode for Authentication
3 *
4 * Copyright © 2013 Jussi Kivilinna <jussi.kivilinna@iki.fi>
5 *
6 * Based on work by:
7 * Copyright © 2013 Tom St Denis <tstdenis@elliptictech.com>
8 * Based on crypto/xcbc.c:
9 * Copyright © 2006 USAGI/WIDE Project,
10 * Author: Kazunori Miyazawa <miyazawa@linux-ipv6.org>
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2 of the License, or
15 * (at your option) any later version.
16 *
17 */
18
19#include <crypto/internal/hash.h>
20#include <linux/err.h>
21#include <linux/kernel.h>
22#include <linux/module.h>
23
24/*
25 * +------------------------
26 * | <parent tfm>
27 * +------------------------
28 * | cmac_tfm_ctx
29 * +------------------------
30 * | consts (block size * 2)
31 * +------------------------
32 */
33struct cmac_tfm_ctx {
34 struct crypto_cipher *child;
35 u8 ctx[];
36};
37
38/*
39 * +------------------------
40 * | <shash desc>
41 * +------------------------
42 * | cmac_desc_ctx
43 * +------------------------
44 * | odds (block size)
45 * +------------------------
46 * | prev (block size)
47 * +------------------------
48 */
49struct cmac_desc_ctx {
50 unsigned int len;
51 u8 ctx[];
52};
53
54static int crypto_cmac_digest_setkey(struct crypto_shash *parent,
55 const u8 *inkey, unsigned int keylen)
56{
57 unsigned long alignmask = crypto_shash_alignmask(parent);
58 struct cmac_tfm_ctx *ctx = crypto_shash_ctx(parent);
59 unsigned int bs = crypto_shash_blocksize(parent);
60 __be64 *consts = PTR_ALIGN((void *)ctx->ctx, alignmask + 1);
61 u64 _const[2];
62 int i, err = 0;
63 u8 msb_mask, gfmask;
64
65 err = crypto_cipher_setkey(ctx->child, inkey, keylen);
66 if (err)
67 return err;
68
69 /* encrypt the zero block */
70 memset(consts, 0, bs);
71 crypto_cipher_encrypt_one(ctx->child, (u8 *)consts, (u8 *)consts);
72
73 switch (bs) {
74 case 16:
75 gfmask = 0x87;
76 _const[0] = be64_to_cpu(consts[1]);
77 _const[1] = be64_to_cpu(consts[0]);
78
79 /* gf(2^128) multiply zero-ciphertext with u and u^2 */
80 for (i = 0; i < 4; i += 2) {
81 msb_mask = ((s64)_const[1] >> 63) & gfmask;
82 _const[1] = (_const[1] << 1) | (_const[0] >> 63);
83 _const[0] = (_const[0] << 1) ^ msb_mask;
84
85 consts[i + 0] = cpu_to_be64(_const[1]);
86 consts[i + 1] = cpu_to_be64(_const[0]);
87 }
88
89 break;
90 case 8:
91 gfmask = 0x1B;
92 _const[0] = be64_to_cpu(consts[0]);
93
94 /* gf(2^64) multiply zero-ciphertext with u and u^2 */
95 for (i = 0; i < 2; i++) {
96 msb_mask = ((s64)_const[0] >> 63) & gfmask;
97 _const[0] = (_const[0] << 1) ^ msb_mask;
98
99 consts[i] = cpu_to_be64(_const[0]);
100 }
101
102 break;
103 }
104
105 return 0;
106}
107
108static int crypto_cmac_digest_init(struct shash_desc *pdesc)
109{
110 unsigned long alignmask = crypto_shash_alignmask(pdesc->tfm);
111 struct cmac_desc_ctx *ctx = shash_desc_ctx(pdesc);
112 int bs = crypto_shash_blocksize(pdesc->tfm);
113 u8 *prev = PTR_ALIGN((void *)ctx->ctx, alignmask + 1) + bs;
114
115 ctx->len = 0;
116 memset(prev, 0, bs);
117
118 return 0;
119}
120
121static int crypto_cmac_digest_update(struct shash_desc *pdesc, const u8 *p,
122 unsigned int len)
123{
124 struct crypto_shash *parent = pdesc->tfm;
125 unsigned long alignmask = crypto_shash_alignmask(parent);
126 struct cmac_tfm_ctx *tctx = crypto_shash_ctx(parent);
127 struct cmac_desc_ctx *ctx = shash_desc_ctx(pdesc);
128 struct crypto_cipher *tfm = tctx->child;
129 int bs = crypto_shash_blocksize(parent);
130 u8 *odds = PTR_ALIGN((void *)ctx->ctx, alignmask + 1);
131 u8 *prev = odds + bs;
132
133 /* checking the data can fill the block */
134 if ((ctx->len + len) <= bs) {
135 memcpy(odds + ctx->len, p, len);
136 ctx->len += len;
137 return 0;
138 }
139
140 /* filling odds with new data and encrypting it */
141 memcpy(odds + ctx->len, p, bs - ctx->len);
142 len -= bs - ctx->len;
143 p += bs - ctx->len;
144
145 crypto_xor(prev, odds, bs);
146 crypto_cipher_encrypt_one(tfm, prev, prev);
147
148 /* clearing the length */
149 ctx->len = 0;
150
151 /* encrypting the rest of data */
152 while (len > bs) {
153 crypto_xor(prev, p, bs);
154 crypto_cipher_encrypt_one(tfm, prev, prev);
155 p += bs;
156 len -= bs;
157 }
158
159 /* keeping the surplus of blocksize */
160 if (len) {
161 memcpy(odds, p, len);
162 ctx->len = len;
163 }
164
165 return 0;
166}
167
168static int crypto_cmac_digest_final(struct shash_desc *pdesc, u8 *out)
169{
170 struct crypto_shash *parent = pdesc->tfm;
171 unsigned long alignmask = crypto_shash_alignmask(parent);
172 struct cmac_tfm_ctx *tctx = crypto_shash_ctx(parent);
173 struct cmac_desc_ctx *ctx = shash_desc_ctx(pdesc);
174 struct crypto_cipher *tfm = tctx->child;
175 int bs = crypto_shash_blocksize(parent);
176 u8 *consts = PTR_ALIGN((void *)tctx->ctx, alignmask + 1);
177 u8 *odds = PTR_ALIGN((void *)ctx->ctx, alignmask + 1);
178 u8 *prev = odds + bs;
179 unsigned int offset = 0;
180
181 if (ctx->len != bs) {
182 unsigned int rlen;
183 u8 *p = odds + ctx->len;
184
185 *p = 0x80;
186 p++;
187
188 rlen = bs - ctx->len - 1;
189 if (rlen)
190 memset(p, 0, rlen);
191
192 offset += bs;
193 }
194
195 crypto_xor(prev, odds, bs);
196 crypto_xor(prev, consts + offset, bs);
197
198 crypto_cipher_encrypt_one(tfm, out, prev);
199
200 return 0;
201}
202
203static int cmac_init_tfm(struct crypto_tfm *tfm)
204{
205 struct crypto_cipher *cipher;
206 struct crypto_instance *inst = (void *)tfm->__crt_alg;
207 struct crypto_spawn *spawn = crypto_instance_ctx(inst);
208 struct cmac_tfm_ctx *ctx = crypto_tfm_ctx(tfm);
209
210 cipher = crypto_spawn_cipher(spawn);
211 if (IS_ERR(cipher))
212 return PTR_ERR(cipher);
213
214 ctx->child = cipher;
215
216 return 0;
217};
218
219static void cmac_exit_tfm(struct crypto_tfm *tfm)
220{
221 struct cmac_tfm_ctx *ctx = crypto_tfm_ctx(tfm);
222 crypto_free_cipher(ctx->child);
223}
224
225static int cmac_create(struct crypto_template *tmpl, struct rtattr **tb)
226{
227 struct shash_instance *inst;
228 struct crypto_alg *alg;
229 unsigned long alignmask;
230 int err;
231
232 err = crypto_check_attr_type(tb, CRYPTO_ALG_TYPE_SHASH);
233 if (err)
234 return err;
235
236 alg = crypto_get_attr_alg(tb, CRYPTO_ALG_TYPE_CIPHER,
237 CRYPTO_ALG_TYPE_MASK);
238 if (IS_ERR(alg))
239 return PTR_ERR(alg);
240
241 switch (alg->cra_blocksize) {
242 case 16:
243 case 8:
244 break;
245 default:
246 goto out_put_alg;
247 }
248
249 inst = shash_alloc_instance("cmac", alg);
250 err = PTR_ERR(inst);
251 if (IS_ERR(inst))
252 goto out_put_alg;
253
254 err = crypto_init_spawn(shash_instance_ctx(inst), alg,
255 shash_crypto_instance(inst),
256 CRYPTO_ALG_TYPE_MASK);
257 if (err)
258 goto out_free_inst;
259
260 alignmask = alg->cra_alignmask | (sizeof(long) - 1);
261 inst->alg.base.cra_alignmask = alignmask;
262 inst->alg.base.cra_priority = alg->cra_priority;
263 inst->alg.base.cra_blocksize = alg->cra_blocksize;
264
265 inst->alg.digestsize = alg->cra_blocksize;
266 inst->alg.descsize =
267 ALIGN(sizeof(struct cmac_desc_ctx), crypto_tfm_ctx_alignment())
268 + (alignmask & ~(crypto_tfm_ctx_alignment() - 1))
269 + alg->cra_blocksize * 2;
270
271 inst->alg.base.cra_ctxsize =
272 ALIGN(sizeof(struct cmac_tfm_ctx), alignmask + 1)
273 + alg->cra_blocksize * 2;
274
275 inst->alg.base.cra_init = cmac_init_tfm;
276 inst->alg.base.cra_exit = cmac_exit_tfm;
277
278 inst->alg.init = crypto_cmac_digest_init;
279 inst->alg.update = crypto_cmac_digest_update;
280 inst->alg.final = crypto_cmac_digest_final;
281 inst->alg.setkey = crypto_cmac_digest_setkey;
282
283 err = shash_register_instance(tmpl, inst);
284 if (err) {
285out_free_inst:
286 shash_free_instance(shash_crypto_instance(inst));
287 }
288
289out_put_alg:
290 crypto_mod_put(alg);
291 return err;
292}
293
294static struct crypto_template crypto_cmac_tmpl = {
295 .name = "cmac",
296 .create = cmac_create,
297 .free = shash_free_instance,
298 .module = THIS_MODULE,
299};
300
301static int __init crypto_cmac_module_init(void)
302{
303 return crypto_register_template(&crypto_cmac_tmpl);
304}
305
306static void __exit crypto_cmac_module_exit(void)
307{
308 crypto_unregister_template(&crypto_cmac_tmpl);
309}
310
311module_init(crypto_cmac_module_init);
312module_exit(crypto_cmac_module_exit);
313
314MODULE_LICENSE("GPL");
315MODULE_DESCRIPTION("CMAC keyed hash algorithm");
diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
index dfd511fb39ee..1512e41cd93d 100644
--- a/crypto/crypto_user.c
+++ b/crypto/crypto_user.c
@@ -440,7 +440,7 @@ static const struct nla_policy crypto_policy[CRYPTOCFGA_MAX+1] = {
440 440
441#undef MSGSIZE 441#undef MSGSIZE
442 442
443static struct crypto_link { 443static const struct crypto_link {
444 int (*doit)(struct sk_buff *, struct nlmsghdr *, struct nlattr **); 444 int (*doit)(struct sk_buff *, struct nlmsghdr *, struct nlattr **);
445 int (*dump)(struct sk_buff *, struct netlink_callback *); 445 int (*dump)(struct sk_buff *, struct netlink_callback *);
446 int (*done)(struct netlink_callback *); 446 int (*done)(struct netlink_callback *);
@@ -456,7 +456,7 @@ static struct crypto_link {
456static int crypto_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) 456static int crypto_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
457{ 457{
458 struct nlattr *attrs[CRYPTOCFGA_MAX+1]; 458 struct nlattr *attrs[CRYPTOCFGA_MAX+1];
459 struct crypto_link *link; 459 const struct crypto_link *link;
460 int type, err; 460 int type, err;
461 461
462 type = nlh->nlmsg_type; 462 type = nlh->nlmsg_type;
diff --git a/crypto/gcm.c b/crypto/gcm.c
index 13ccbda34ff9..43e1fb05ea54 100644
--- a/crypto/gcm.c
+++ b/crypto/gcm.c
@@ -37,8 +37,14 @@ struct crypto_rfc4106_ctx {
37 u8 nonce[4]; 37 u8 nonce[4];
38}; 38};
39 39
40struct crypto_rfc4543_instance_ctx {
41 struct crypto_aead_spawn aead;
42 struct crypto_skcipher_spawn null;
43};
44
40struct crypto_rfc4543_ctx { 45struct crypto_rfc4543_ctx {
41 struct crypto_aead *child; 46 struct crypto_aead *child;
47 struct crypto_blkcipher *null;
42 u8 nonce[4]; 48 u8 nonce[4];
43}; 49};
44 50
@@ -1094,21 +1100,36 @@ static int crypto_rfc4543_setauthsize(struct crypto_aead *parent,
1094 return crypto_aead_setauthsize(ctx->child, authsize); 1100 return crypto_aead_setauthsize(ctx->child, authsize);
1095} 1101}
1096 1102
1103static void crypto_rfc4543_done(struct crypto_async_request *areq, int err)
1104{
1105 struct aead_request *req = areq->data;
1106 struct crypto_aead *aead = crypto_aead_reqtfm(req);
1107 struct crypto_rfc4543_req_ctx *rctx = crypto_rfc4543_reqctx(req);
1108
1109 if (!err) {
1110 scatterwalk_map_and_copy(rctx->auth_tag, req->dst,
1111 req->cryptlen,
1112 crypto_aead_authsize(aead), 1);
1113 }
1114
1115 aead_request_complete(req, err);
1116}
1117
1097static struct aead_request *crypto_rfc4543_crypt(struct aead_request *req, 1118static struct aead_request *crypto_rfc4543_crypt(struct aead_request *req,
1098 int enc) 1119 bool enc)
1099{ 1120{
1100 struct crypto_aead *aead = crypto_aead_reqtfm(req); 1121 struct crypto_aead *aead = crypto_aead_reqtfm(req);
1101 struct crypto_rfc4543_ctx *ctx = crypto_aead_ctx(aead); 1122 struct crypto_rfc4543_ctx *ctx = crypto_aead_ctx(aead);
1102 struct crypto_rfc4543_req_ctx *rctx = crypto_rfc4543_reqctx(req); 1123 struct crypto_rfc4543_req_ctx *rctx = crypto_rfc4543_reqctx(req);
1103 struct aead_request *subreq = &rctx->subreq; 1124 struct aead_request *subreq = &rctx->subreq;
1104 struct scatterlist *dst = req->dst; 1125 struct scatterlist *src = req->src;
1105 struct scatterlist *cipher = rctx->cipher; 1126 struct scatterlist *cipher = rctx->cipher;
1106 struct scatterlist *payload = rctx->payload; 1127 struct scatterlist *payload = rctx->payload;
1107 struct scatterlist *assoc = rctx->assoc; 1128 struct scatterlist *assoc = rctx->assoc;
1108 unsigned int authsize = crypto_aead_authsize(aead); 1129 unsigned int authsize = crypto_aead_authsize(aead);
1109 unsigned int assoclen = req->assoclen; 1130 unsigned int assoclen = req->assoclen;
1110 struct page *dstp; 1131 struct page *srcp;
1111 u8 *vdst; 1132 u8 *vsrc;
1112 u8 *iv = PTR_ALIGN((u8 *)(rctx + 1) + crypto_aead_reqsize(ctx->child), 1133 u8 *iv = PTR_ALIGN((u8 *)(rctx + 1) + crypto_aead_reqsize(ctx->child),
1113 crypto_aead_alignmask(ctx->child) + 1); 1134 crypto_aead_alignmask(ctx->child) + 1);
1114 1135
@@ -1119,19 +1140,19 @@ static struct aead_request *crypto_rfc4543_crypt(struct aead_request *req,
1119 if (enc) 1140 if (enc)
1120 memset(rctx->auth_tag, 0, authsize); 1141 memset(rctx->auth_tag, 0, authsize);
1121 else 1142 else
1122 scatterwalk_map_and_copy(rctx->auth_tag, dst, 1143 scatterwalk_map_and_copy(rctx->auth_tag, src,
1123 req->cryptlen - authsize, 1144 req->cryptlen - authsize,
1124 authsize, 0); 1145 authsize, 0);
1125 1146
1126 sg_init_one(cipher, rctx->auth_tag, authsize); 1147 sg_init_one(cipher, rctx->auth_tag, authsize);
1127 1148
1128 /* construct the aad */ 1149 /* construct the aad */
1129 dstp = sg_page(dst); 1150 srcp = sg_page(src);
1130 vdst = PageHighMem(dstp) ? NULL : page_address(dstp) + dst->offset; 1151 vsrc = PageHighMem(srcp) ? NULL : page_address(srcp) + src->offset;
1131 1152
1132 sg_init_table(payload, 2); 1153 sg_init_table(payload, 2);
1133 sg_set_buf(payload, req->iv, 8); 1154 sg_set_buf(payload, req->iv, 8);
1134 scatterwalk_crypto_chain(payload, dst, vdst == req->iv + 8, 2); 1155 scatterwalk_crypto_chain(payload, src, vsrc == req->iv + 8, 2);
1135 assoclen += 8 + req->cryptlen - (enc ? 0 : authsize); 1156 assoclen += 8 + req->cryptlen - (enc ? 0 : authsize);
1136 1157
1137 if (req->assoc->length == req->assoclen) { 1158 if (req->assoc->length == req->assoclen) {
@@ -1150,14 +1171,27 @@ static struct aead_request *crypto_rfc4543_crypt(struct aead_request *req,
1150 scatterwalk_crypto_chain(assoc, payload, 0, 2); 1171 scatterwalk_crypto_chain(assoc, payload, 0, 2);
1151 1172
1152 aead_request_set_tfm(subreq, ctx->child); 1173 aead_request_set_tfm(subreq, ctx->child);
1153 aead_request_set_callback(subreq, req->base.flags, req->base.complete, 1174 aead_request_set_callback(subreq, req->base.flags, crypto_rfc4543_done,
1154 req->base.data); 1175 req);
1155 aead_request_set_crypt(subreq, cipher, cipher, enc ? 0 : authsize, iv); 1176 aead_request_set_crypt(subreq, cipher, cipher, enc ? 0 : authsize, iv);
1156 aead_request_set_assoc(subreq, assoc, assoclen); 1177 aead_request_set_assoc(subreq, assoc, assoclen);
1157 1178
1158 return subreq; 1179 return subreq;
1159} 1180}
1160 1181
1182static int crypto_rfc4543_copy_src_to_dst(struct aead_request *req, bool enc)
1183{
1184 struct crypto_aead *aead = crypto_aead_reqtfm(req);
1185 struct crypto_rfc4543_ctx *ctx = crypto_aead_ctx(aead);
1186 unsigned int authsize = crypto_aead_authsize(aead);
1187 unsigned int nbytes = req->cryptlen - (enc ? 0 : authsize);
1188 struct blkcipher_desc desc = {
1189 .tfm = ctx->null,
1190 };
1191
1192 return crypto_blkcipher_encrypt(&desc, req->dst, req->src, nbytes);
1193}
1194
1161static int crypto_rfc4543_encrypt(struct aead_request *req) 1195static int crypto_rfc4543_encrypt(struct aead_request *req)
1162{ 1196{
1163 struct crypto_aead *aead = crypto_aead_reqtfm(req); 1197 struct crypto_aead *aead = crypto_aead_reqtfm(req);
@@ -1165,7 +1199,13 @@ static int crypto_rfc4543_encrypt(struct aead_request *req)
1165 struct aead_request *subreq; 1199 struct aead_request *subreq;
1166 int err; 1200 int err;
1167 1201
1168 subreq = crypto_rfc4543_crypt(req, 1); 1202 if (req->src != req->dst) {
1203 err = crypto_rfc4543_copy_src_to_dst(req, true);
1204 if (err)
1205 return err;
1206 }
1207
1208 subreq = crypto_rfc4543_crypt(req, true);
1169 err = crypto_aead_encrypt(subreq); 1209 err = crypto_aead_encrypt(subreq);
1170 if (err) 1210 if (err)
1171 return err; 1211 return err;
@@ -1178,7 +1218,15 @@ static int crypto_rfc4543_encrypt(struct aead_request *req)
1178 1218
1179static int crypto_rfc4543_decrypt(struct aead_request *req) 1219static int crypto_rfc4543_decrypt(struct aead_request *req)
1180{ 1220{
1181 req = crypto_rfc4543_crypt(req, 0); 1221 int err;
1222
1223 if (req->src != req->dst) {
1224 err = crypto_rfc4543_copy_src_to_dst(req, false);
1225 if (err)
1226 return err;
1227 }
1228
1229 req = crypto_rfc4543_crypt(req, false);
1182 1230
1183 return crypto_aead_decrypt(req); 1231 return crypto_aead_decrypt(req);
1184} 1232}
@@ -1186,16 +1234,25 @@ static int crypto_rfc4543_decrypt(struct aead_request *req)
1186static int crypto_rfc4543_init_tfm(struct crypto_tfm *tfm) 1234static int crypto_rfc4543_init_tfm(struct crypto_tfm *tfm)
1187{ 1235{
1188 struct crypto_instance *inst = (void *)tfm->__crt_alg; 1236 struct crypto_instance *inst = (void *)tfm->__crt_alg;
1189 struct crypto_aead_spawn *spawn = crypto_instance_ctx(inst); 1237 struct crypto_rfc4543_instance_ctx *ictx = crypto_instance_ctx(inst);
1238 struct crypto_aead_spawn *spawn = &ictx->aead;
1190 struct crypto_rfc4543_ctx *ctx = crypto_tfm_ctx(tfm); 1239 struct crypto_rfc4543_ctx *ctx = crypto_tfm_ctx(tfm);
1191 struct crypto_aead *aead; 1240 struct crypto_aead *aead;
1241 struct crypto_blkcipher *null;
1192 unsigned long align; 1242 unsigned long align;
1243 int err = 0;
1193 1244
1194 aead = crypto_spawn_aead(spawn); 1245 aead = crypto_spawn_aead(spawn);
1195 if (IS_ERR(aead)) 1246 if (IS_ERR(aead))
1196 return PTR_ERR(aead); 1247 return PTR_ERR(aead);
1197 1248
1249 null = crypto_spawn_blkcipher(&ictx->null.base);
1250 err = PTR_ERR(null);
1251 if (IS_ERR(null))
1252 goto err_free_aead;
1253
1198 ctx->child = aead; 1254 ctx->child = aead;
1255 ctx->null = null;
1199 1256
1200 align = crypto_aead_alignmask(aead); 1257 align = crypto_aead_alignmask(aead);
1201 align &= ~(crypto_tfm_ctx_alignment() - 1); 1258 align &= ~(crypto_tfm_ctx_alignment() - 1);
@@ -1205,6 +1262,10 @@ static int crypto_rfc4543_init_tfm(struct crypto_tfm *tfm)
1205 align + 16; 1262 align + 16;
1206 1263
1207 return 0; 1264 return 0;
1265
1266err_free_aead:
1267 crypto_free_aead(aead);
1268 return err;
1208} 1269}
1209 1270
1210static void crypto_rfc4543_exit_tfm(struct crypto_tfm *tfm) 1271static void crypto_rfc4543_exit_tfm(struct crypto_tfm *tfm)
@@ -1212,6 +1273,7 @@ static void crypto_rfc4543_exit_tfm(struct crypto_tfm *tfm)
1212 struct crypto_rfc4543_ctx *ctx = crypto_tfm_ctx(tfm); 1273 struct crypto_rfc4543_ctx *ctx = crypto_tfm_ctx(tfm);
1213 1274
1214 crypto_free_aead(ctx->child); 1275 crypto_free_aead(ctx->child);
1276 crypto_free_blkcipher(ctx->null);
1215} 1277}
1216 1278
1217static struct crypto_instance *crypto_rfc4543_alloc(struct rtattr **tb) 1279static struct crypto_instance *crypto_rfc4543_alloc(struct rtattr **tb)
@@ -1220,6 +1282,7 @@ static struct crypto_instance *crypto_rfc4543_alloc(struct rtattr **tb)
1220 struct crypto_instance *inst; 1282 struct crypto_instance *inst;
1221 struct crypto_aead_spawn *spawn; 1283 struct crypto_aead_spawn *spawn;
1222 struct crypto_alg *alg; 1284 struct crypto_alg *alg;
1285 struct crypto_rfc4543_instance_ctx *ctx;
1223 const char *ccm_name; 1286 const char *ccm_name;
1224 int err; 1287 int err;
1225 1288
@@ -1234,11 +1297,12 @@ static struct crypto_instance *crypto_rfc4543_alloc(struct rtattr **tb)
1234 if (IS_ERR(ccm_name)) 1297 if (IS_ERR(ccm_name))
1235 return ERR_CAST(ccm_name); 1298 return ERR_CAST(ccm_name);
1236 1299
1237 inst = kzalloc(sizeof(*inst) + sizeof(*spawn), GFP_KERNEL); 1300 inst = kzalloc(sizeof(*inst) + sizeof(*ctx), GFP_KERNEL);
1238 if (!inst) 1301 if (!inst)
1239 return ERR_PTR(-ENOMEM); 1302 return ERR_PTR(-ENOMEM);
1240 1303
1241 spawn = crypto_instance_ctx(inst); 1304 ctx = crypto_instance_ctx(inst);
1305 spawn = &ctx->aead;
1242 crypto_set_aead_spawn(spawn, inst); 1306 crypto_set_aead_spawn(spawn, inst);
1243 err = crypto_grab_aead(spawn, ccm_name, 0, 1307 err = crypto_grab_aead(spawn, ccm_name, 0,
1244 crypto_requires_sync(algt->type, algt->mask)); 1308 crypto_requires_sync(algt->type, algt->mask));
@@ -1247,15 +1311,23 @@ static struct crypto_instance *crypto_rfc4543_alloc(struct rtattr **tb)
1247 1311
1248 alg = crypto_aead_spawn_alg(spawn); 1312 alg = crypto_aead_spawn_alg(spawn);
1249 1313
1314 crypto_set_skcipher_spawn(&ctx->null, inst);
1315 err = crypto_grab_skcipher(&ctx->null, "ecb(cipher_null)", 0,
1316 CRYPTO_ALG_ASYNC);
1317 if (err)
1318 goto out_drop_alg;
1319
1320 crypto_skcipher_spawn_alg(&ctx->null);
1321
1250 err = -EINVAL; 1322 err = -EINVAL;
1251 1323
1252 /* We only support 16-byte blocks. */ 1324 /* We only support 16-byte blocks. */
1253 if (alg->cra_aead.ivsize != 16) 1325 if (alg->cra_aead.ivsize != 16)
1254 goto out_drop_alg; 1326 goto out_drop_ecbnull;
1255 1327
1256 /* Not a stream cipher? */ 1328 /* Not a stream cipher? */
1257 if (alg->cra_blocksize != 1) 1329 if (alg->cra_blocksize != 1)
1258 goto out_drop_alg; 1330 goto out_drop_ecbnull;
1259 1331
1260 err = -ENAMETOOLONG; 1332 err = -ENAMETOOLONG;
1261 if (snprintf(inst->alg.cra_name, CRYPTO_MAX_ALG_NAME, 1333 if (snprintf(inst->alg.cra_name, CRYPTO_MAX_ALG_NAME,
@@ -1263,7 +1335,7 @@ static struct crypto_instance *crypto_rfc4543_alloc(struct rtattr **tb)
1263 snprintf(inst->alg.cra_driver_name, CRYPTO_MAX_ALG_NAME, 1335 snprintf(inst->alg.cra_driver_name, CRYPTO_MAX_ALG_NAME,
1264 "rfc4543(%s)", alg->cra_driver_name) >= 1336 "rfc4543(%s)", alg->cra_driver_name) >=
1265 CRYPTO_MAX_ALG_NAME) 1337 CRYPTO_MAX_ALG_NAME)
1266 goto out_drop_alg; 1338 goto out_drop_ecbnull;
1267 1339
1268 inst->alg.cra_flags = CRYPTO_ALG_TYPE_AEAD; 1340 inst->alg.cra_flags = CRYPTO_ALG_TYPE_AEAD;
1269 inst->alg.cra_flags |= alg->cra_flags & CRYPTO_ALG_ASYNC; 1341 inst->alg.cra_flags |= alg->cra_flags & CRYPTO_ALG_ASYNC;
@@ -1290,6 +1362,8 @@ static struct crypto_instance *crypto_rfc4543_alloc(struct rtattr **tb)
1290out: 1362out:
1291 return inst; 1363 return inst;
1292 1364
1365out_drop_ecbnull:
1366 crypto_drop_skcipher(&ctx->null);
1293out_drop_alg: 1367out_drop_alg:
1294 crypto_drop_aead(spawn); 1368 crypto_drop_aead(spawn);
1295out_free_inst: 1369out_free_inst:
@@ -1300,7 +1374,11 @@ out_free_inst:
1300 1374
1301static void crypto_rfc4543_free(struct crypto_instance *inst) 1375static void crypto_rfc4543_free(struct crypto_instance *inst)
1302{ 1376{
1303 crypto_drop_spawn(crypto_instance_ctx(inst)); 1377 struct crypto_rfc4543_instance_ctx *ctx = crypto_instance_ctx(inst);
1378
1379 crypto_drop_aead(&ctx->aead);
1380 crypto_drop_skcipher(&ctx->null);
1381
1304 kfree(inst); 1382 kfree(inst);
1305} 1383}
1306 1384
diff --git a/crypto/sha256_generic.c b/crypto/sha256_generic.c
index c3ed4ec924e1..543366779524 100644
--- a/crypto/sha256_generic.c
+++ b/crypto/sha256_generic.c
@@ -246,7 +246,7 @@ static int sha256_init(struct shash_desc *desc)
246 return 0; 246 return 0;
247} 247}
248 248
249static int sha256_update(struct shash_desc *desc, const u8 *data, 249int crypto_sha256_update(struct shash_desc *desc, const u8 *data,
250 unsigned int len) 250 unsigned int len)
251{ 251{
252 struct sha256_state *sctx = shash_desc_ctx(desc); 252 struct sha256_state *sctx = shash_desc_ctx(desc);
@@ -277,6 +277,7 @@ static int sha256_update(struct shash_desc *desc, const u8 *data,
277 277
278 return 0; 278 return 0;
279} 279}
280EXPORT_SYMBOL(crypto_sha256_update);
280 281
281static int sha256_final(struct shash_desc *desc, u8 *out) 282static int sha256_final(struct shash_desc *desc, u8 *out)
282{ 283{
@@ -293,10 +294,10 @@ static int sha256_final(struct shash_desc *desc, u8 *out)
293 /* Pad out to 56 mod 64. */ 294 /* Pad out to 56 mod 64. */
294 index = sctx->count & 0x3f; 295 index = sctx->count & 0x3f;
295 pad_len = (index < 56) ? (56 - index) : ((64+56) - index); 296 pad_len = (index < 56) ? (56 - index) : ((64+56) - index);
296 sha256_update(desc, padding, pad_len); 297 crypto_sha256_update(desc, padding, pad_len);
297 298
298 /* Append length (before padding) */ 299 /* Append length (before padding) */
299 sha256_update(desc, (const u8 *)&bits, sizeof(bits)); 300 crypto_sha256_update(desc, (const u8 *)&bits, sizeof(bits));
300 301
301 /* Store state in digest */ 302 /* Store state in digest */
302 for (i = 0; i < 8; i++) 303 for (i = 0; i < 8; i++)
@@ -339,7 +340,7 @@ static int sha256_import(struct shash_desc *desc, const void *in)
339static struct shash_alg sha256_algs[2] = { { 340static struct shash_alg sha256_algs[2] = { {
340 .digestsize = SHA256_DIGEST_SIZE, 341 .digestsize = SHA256_DIGEST_SIZE,
341 .init = sha256_init, 342 .init = sha256_init,
342 .update = sha256_update, 343 .update = crypto_sha256_update,
343 .final = sha256_final, 344 .final = sha256_final,
344 .export = sha256_export, 345 .export = sha256_export,
345 .import = sha256_import, 346 .import = sha256_import,
@@ -355,7 +356,7 @@ static struct shash_alg sha256_algs[2] = { {
355}, { 356}, {
356 .digestsize = SHA224_DIGEST_SIZE, 357 .digestsize = SHA224_DIGEST_SIZE,
357 .init = sha224_init, 358 .init = sha224_init,
358 .update = sha256_update, 359 .update = crypto_sha256_update,
359 .final = sha224_final, 360 .final = sha224_final,
360 .descsize = sizeof(struct sha256_state), 361 .descsize = sizeof(struct sha256_state),
361 .base = { 362 .base = {
diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
index 71fcf361102d..4c5862095679 100644
--- a/crypto/sha512_generic.c
+++ b/crypto/sha512_generic.c
@@ -163,8 +163,8 @@ sha384_init(struct shash_desc *desc)
163 return 0; 163 return 0;
164} 164}
165 165
166static int 166int crypto_sha512_update(struct shash_desc *desc, const u8 *data,
167sha512_update(struct shash_desc *desc, const u8 *data, unsigned int len) 167 unsigned int len)
168{ 168{
169 struct sha512_state *sctx = shash_desc_ctx(desc); 169 struct sha512_state *sctx = shash_desc_ctx(desc);
170 170
@@ -197,6 +197,7 @@ sha512_update(struct shash_desc *desc, const u8 *data, unsigned int len)
197 197
198 return 0; 198 return 0;
199} 199}
200EXPORT_SYMBOL(crypto_sha512_update);
200 201
201static int 202static int
202sha512_final(struct shash_desc *desc, u8 *hash) 203sha512_final(struct shash_desc *desc, u8 *hash)
@@ -215,10 +216,10 @@ sha512_final(struct shash_desc *desc, u8 *hash)
215 /* Pad out to 112 mod 128. */ 216 /* Pad out to 112 mod 128. */
216 index = sctx->count[0] & 0x7f; 217 index = sctx->count[0] & 0x7f;
217 pad_len = (index < 112) ? (112 - index) : ((128+112) - index); 218 pad_len = (index < 112) ? (112 - index) : ((128+112) - index);
218 sha512_update(desc, padding, pad_len); 219 crypto_sha512_update(desc, padding, pad_len);
219 220
220 /* Append length (before padding) */ 221 /* Append length (before padding) */
221 sha512_update(desc, (const u8 *)bits, sizeof(bits)); 222 crypto_sha512_update(desc, (const u8 *)bits, sizeof(bits));
222 223
223 /* Store state in digest */ 224 /* Store state in digest */
224 for (i = 0; i < 8; i++) 225 for (i = 0; i < 8; i++)
@@ -245,7 +246,7 @@ static int sha384_final(struct shash_desc *desc, u8 *hash)
245static struct shash_alg sha512_algs[2] = { { 246static struct shash_alg sha512_algs[2] = { {
246 .digestsize = SHA512_DIGEST_SIZE, 247 .digestsize = SHA512_DIGEST_SIZE,
247 .init = sha512_init, 248 .init = sha512_init,
248 .update = sha512_update, 249 .update = crypto_sha512_update,
249 .final = sha512_final, 250 .final = sha512_final,
250 .descsize = sizeof(struct sha512_state), 251 .descsize = sizeof(struct sha512_state),
251 .base = { 252 .base = {
@@ -257,7 +258,7 @@ static struct shash_alg sha512_algs[2] = { {
257}, { 258}, {
258 .digestsize = SHA384_DIGEST_SIZE, 259 .digestsize = SHA384_DIGEST_SIZE,
259 .init = sha384_init, 260 .init = sha384_init,
260 .update = sha512_update, 261 .update = crypto_sha512_update,
261 .final = sha384_final, 262 .final = sha384_final,
262 .descsize = sizeof(struct sha512_state), 263 .descsize = sizeof(struct sha512_state),
263 .base = { 264 .base = {
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index 87ef7d66bc20..66d254ce0d11 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -1095,7 +1095,6 @@ static int do_test(int m)
1095 break; 1095 break;
1096 1096
1097 case 28: 1097 case 28:
1098
1099 ret += tcrypt_test("tgr160"); 1098 ret += tcrypt_test("tgr160");
1100 break; 1099 break;
1101 1100
@@ -1118,6 +1117,7 @@ static int do_test(int m)
1118 ret += tcrypt_test("lrw(camellia)"); 1117 ret += tcrypt_test("lrw(camellia)");
1119 ret += tcrypt_test("xts(camellia)"); 1118 ret += tcrypt_test("xts(camellia)");
1120 break; 1119 break;
1120
1121 case 33: 1121 case 33:
1122 ret += tcrypt_test("sha224"); 1122 ret += tcrypt_test("sha224");
1123 break; 1123 break;
@@ -1213,6 +1213,7 @@ static int do_test(int m)
1213 case 109: 1213 case 109:
1214 ret += tcrypt_test("vmac(aes)"); 1214 ret += tcrypt_test("vmac(aes)");
1215 break; 1215 break;
1216
1216 case 110: 1217 case 110:
1217 ret += tcrypt_test("hmac(crc32)"); 1218 ret += tcrypt_test("hmac(crc32)");
1218 break; 1219 break;
@@ -1225,6 +1226,18 @@ static int do_test(int m)
1225 ret += tcrypt_test("rfc4106(gcm(aes))"); 1226 ret += tcrypt_test("rfc4106(gcm(aes))");
1226 break; 1227 break;
1227 1228
1229 case 152:
1230 ret += tcrypt_test("rfc4543(gcm(aes))");
1231 break;
1232
1233 case 153:
1234 ret += tcrypt_test("cmac(aes)");
1235 break;
1236
1237 case 154:
1238 ret += tcrypt_test("cmac(des3_ede)");
1239 break;
1240
1228 case 200: 1241 case 200:
1229 test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0, 1242 test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0,
1230 speed_template_16_24_32); 1243 speed_template_16_24_32);
@@ -1755,6 +1768,21 @@ static int do_test(int m)
1755 speed_template_32_64); 1768 speed_template_32_64);
1756 break; 1769 break;
1757 1770
1771 case 509:
1772 test_acipher_speed("ecb(blowfish)", ENCRYPT, sec, NULL, 0,
1773 speed_template_8_32);
1774 test_acipher_speed("ecb(blowfish)", DECRYPT, sec, NULL, 0,
1775 speed_template_8_32);
1776 test_acipher_speed("cbc(blowfish)", ENCRYPT, sec, NULL, 0,
1777 speed_template_8_32);
1778 test_acipher_speed("cbc(blowfish)", DECRYPT, sec, NULL, 0,
1779 speed_template_8_32);
1780 test_acipher_speed("ctr(blowfish)", ENCRYPT, sec, NULL, 0,
1781 speed_template_8_32);
1782 test_acipher_speed("ctr(blowfish)", DECRYPT, sec, NULL, 0,
1783 speed_template_8_32);
1784 break;
1785
1758 case 1000: 1786 case 1000:
1759 test_available(); 1787 test_available();
1760 break; 1788 break;
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index efd8b20e13dc..5823735cf381 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -1645,19 +1645,31 @@ static const struct alg_test_desc alg_test_descs[] = {
1645 .alg = "__cbc-serpent-avx", 1645 .alg = "__cbc-serpent-avx",
1646 .test = alg_test_null, 1646 .test = alg_test_null,
1647 }, { 1647 }, {
1648 .alg = "__cbc-serpent-avx2",
1649 .test = alg_test_null,
1650 }, {
1648 .alg = "__cbc-serpent-sse2", 1651 .alg = "__cbc-serpent-sse2",
1649 .test = alg_test_null, 1652 .test = alg_test_null,
1650 }, { 1653 }, {
1651 .alg = "__cbc-twofish-avx", 1654 .alg = "__cbc-twofish-avx",
1652 .test = alg_test_null, 1655 .test = alg_test_null,
1653 }, { 1656 }, {
1657 .alg = "__cbc-twofish-avx2",
1658 .test = alg_test_null,
1659 }, {
1654 .alg = "__driver-cbc-aes-aesni", 1660 .alg = "__driver-cbc-aes-aesni",
1655 .test = alg_test_null, 1661 .test = alg_test_null,
1656 .fips_allowed = 1, 1662 .fips_allowed = 1,
1657 }, { 1663 }, {
1664 .alg = "__driver-cbc-blowfish-avx2",
1665 .test = alg_test_null,
1666 }, {
1658 .alg = "__driver-cbc-camellia-aesni", 1667 .alg = "__driver-cbc-camellia-aesni",
1659 .test = alg_test_null, 1668 .test = alg_test_null,
1660 }, { 1669 }, {
1670 .alg = "__driver-cbc-camellia-aesni-avx2",
1671 .test = alg_test_null,
1672 }, {
1661 .alg = "__driver-cbc-cast5-avx", 1673 .alg = "__driver-cbc-cast5-avx",
1662 .test = alg_test_null, 1674 .test = alg_test_null,
1663 }, { 1675 }, {
@@ -1667,19 +1679,31 @@ static const struct alg_test_desc alg_test_descs[] = {
1667 .alg = "__driver-cbc-serpent-avx", 1679 .alg = "__driver-cbc-serpent-avx",
1668 .test = alg_test_null, 1680 .test = alg_test_null,
1669 }, { 1681 }, {
1682 .alg = "__driver-cbc-serpent-avx2",
1683 .test = alg_test_null,
1684 }, {
1670 .alg = "__driver-cbc-serpent-sse2", 1685 .alg = "__driver-cbc-serpent-sse2",
1671 .test = alg_test_null, 1686 .test = alg_test_null,
1672 }, { 1687 }, {
1673 .alg = "__driver-cbc-twofish-avx", 1688 .alg = "__driver-cbc-twofish-avx",
1674 .test = alg_test_null, 1689 .test = alg_test_null,
1675 }, { 1690 }, {
1691 .alg = "__driver-cbc-twofish-avx2",
1692 .test = alg_test_null,
1693 }, {
1676 .alg = "__driver-ecb-aes-aesni", 1694 .alg = "__driver-ecb-aes-aesni",
1677 .test = alg_test_null, 1695 .test = alg_test_null,
1678 .fips_allowed = 1, 1696 .fips_allowed = 1,
1679 }, { 1697 }, {
1698 .alg = "__driver-ecb-blowfish-avx2",
1699 .test = alg_test_null,
1700 }, {
1680 .alg = "__driver-ecb-camellia-aesni", 1701 .alg = "__driver-ecb-camellia-aesni",
1681 .test = alg_test_null, 1702 .test = alg_test_null,
1682 }, { 1703 }, {
1704 .alg = "__driver-ecb-camellia-aesni-avx2",
1705 .test = alg_test_null,
1706 }, {
1683 .alg = "__driver-ecb-cast5-avx", 1707 .alg = "__driver-ecb-cast5-avx",
1684 .test = alg_test_null, 1708 .test = alg_test_null,
1685 }, { 1709 }, {
@@ -1689,12 +1713,18 @@ static const struct alg_test_desc alg_test_descs[] = {
1689 .alg = "__driver-ecb-serpent-avx", 1713 .alg = "__driver-ecb-serpent-avx",
1690 .test = alg_test_null, 1714 .test = alg_test_null,
1691 }, { 1715 }, {
1716 .alg = "__driver-ecb-serpent-avx2",
1717 .test = alg_test_null,
1718 }, {
1692 .alg = "__driver-ecb-serpent-sse2", 1719 .alg = "__driver-ecb-serpent-sse2",
1693 .test = alg_test_null, 1720 .test = alg_test_null,
1694 }, { 1721 }, {
1695 .alg = "__driver-ecb-twofish-avx", 1722 .alg = "__driver-ecb-twofish-avx",
1696 .test = alg_test_null, 1723 .test = alg_test_null,
1697 }, { 1724 }, {
1725 .alg = "__driver-ecb-twofish-avx2",
1726 .test = alg_test_null,
1727 }, {
1698 .alg = "__ghash-pclmulqdqni", 1728 .alg = "__ghash-pclmulqdqni",
1699 .test = alg_test_null, 1729 .test = alg_test_null,
1700 .fips_allowed = 1, 1730 .fips_allowed = 1,
@@ -1913,6 +1943,27 @@ static const struct alg_test_desc alg_test_descs[] = {
1913 } 1943 }
1914 } 1944 }
1915 }, { 1945 }, {
1946 .alg = "cmac(aes)",
1947 .test = alg_test_hash,
1948 .suite = {
1949 .hash = {
1950 .vecs = aes_cmac128_tv_template,
1951 .count = CMAC_AES_TEST_VECTORS
1952 }
1953 }
1954 }, {
1955 .alg = "cmac(des3_ede)",
1956 .test = alg_test_hash,
1957 .suite = {
1958 .hash = {
1959 .vecs = des3_ede_cmac64_tv_template,
1960 .count = CMAC_DES3_EDE_TEST_VECTORS
1961 }
1962 }
1963 }, {
1964 .alg = "compress_null",
1965 .test = alg_test_null,
1966 }, {
1916 .alg = "crc32c", 1967 .alg = "crc32c",
1917 .test = alg_test_crc32c, 1968 .test = alg_test_crc32c,
1918 .fips_allowed = 1, 1969 .fips_allowed = 1,
@@ -1927,16 +1978,31 @@ static const struct alg_test_desc alg_test_descs[] = {
1927 .test = alg_test_null, 1978 .test = alg_test_null,
1928 .fips_allowed = 1, 1979 .fips_allowed = 1,
1929 }, { 1980 }, {
1981 .alg = "cryptd(__driver-cbc-blowfish-avx2)",
1982 .test = alg_test_null,
1983 }, {
1930 .alg = "cryptd(__driver-cbc-camellia-aesni)", 1984 .alg = "cryptd(__driver-cbc-camellia-aesni)",
1931 .test = alg_test_null, 1985 .test = alg_test_null,
1932 }, { 1986 }, {
1987 .alg = "cryptd(__driver-cbc-camellia-aesni-avx2)",
1988 .test = alg_test_null,
1989 }, {
1990 .alg = "cryptd(__driver-cbc-serpent-avx2)",
1991 .test = alg_test_null,
1992 }, {
1933 .alg = "cryptd(__driver-ecb-aes-aesni)", 1993 .alg = "cryptd(__driver-ecb-aes-aesni)",
1934 .test = alg_test_null, 1994 .test = alg_test_null,
1935 .fips_allowed = 1, 1995 .fips_allowed = 1,
1936 }, { 1996 }, {
1997 .alg = "cryptd(__driver-ecb-blowfish-avx2)",
1998 .test = alg_test_null,
1999 }, {
1937 .alg = "cryptd(__driver-ecb-camellia-aesni)", 2000 .alg = "cryptd(__driver-ecb-camellia-aesni)",
1938 .test = alg_test_null, 2001 .test = alg_test_null,
1939 }, { 2002 }, {
2003 .alg = "cryptd(__driver-ecb-camellia-aesni-avx2)",
2004 .test = alg_test_null,
2005 }, {
1940 .alg = "cryptd(__driver-ecb-cast5-avx)", 2006 .alg = "cryptd(__driver-ecb-cast5-avx)",
1941 .test = alg_test_null, 2007 .test = alg_test_null,
1942 }, { 2008 }, {
@@ -1946,12 +2012,18 @@ static const struct alg_test_desc alg_test_descs[] = {
1946 .alg = "cryptd(__driver-ecb-serpent-avx)", 2012 .alg = "cryptd(__driver-ecb-serpent-avx)",
1947 .test = alg_test_null, 2013 .test = alg_test_null,
1948 }, { 2014 }, {
2015 .alg = "cryptd(__driver-ecb-serpent-avx2)",
2016 .test = alg_test_null,
2017 }, {
1949 .alg = "cryptd(__driver-ecb-serpent-sse2)", 2018 .alg = "cryptd(__driver-ecb-serpent-sse2)",
1950 .test = alg_test_null, 2019 .test = alg_test_null,
1951 }, { 2020 }, {
1952 .alg = "cryptd(__driver-ecb-twofish-avx)", 2021 .alg = "cryptd(__driver-ecb-twofish-avx)",
1953 .test = alg_test_null, 2022 .test = alg_test_null,
1954 }, { 2023 }, {
2024 .alg = "cryptd(__driver-ecb-twofish-avx2)",
2025 .test = alg_test_null,
2026 }, {
1955 .alg = "cryptd(__driver-gcm-aes-aesni)", 2027 .alg = "cryptd(__driver-gcm-aes-aesni)",
1956 .test = alg_test_null, 2028 .test = alg_test_null,
1957 .fips_allowed = 1, 2029 .fips_allowed = 1,
@@ -2127,6 +2199,9 @@ static const struct alg_test_desc alg_test_descs[] = {
2127 } 2199 }
2128 } 2200 }
2129 }, { 2201 }, {
2202 .alg = "digest_null",
2203 .test = alg_test_null,
2204 }, {
2130 .alg = "ecb(__aes-aesni)", 2205 .alg = "ecb(__aes-aesni)",
2131 .test = alg_test_null, 2206 .test = alg_test_null,
2132 .fips_allowed = 1, 2207 .fips_allowed = 1,
@@ -2237,6 +2312,9 @@ static const struct alg_test_desc alg_test_descs[] = {
2237 } 2312 }
2238 } 2313 }
2239 }, { 2314 }, {
2315 .alg = "ecb(cipher_null)",
2316 .test = alg_test_null,
2317 }, {
2240 .alg = "ecb(des)", 2318 .alg = "ecb(des)",
2241 .test = alg_test_skcipher, 2319 .test = alg_test_skcipher,
2242 .fips_allowed = 1, 2320 .fips_allowed = 1,
@@ -2696,8 +2774,6 @@ static const struct alg_test_desc alg_test_descs[] = {
2696 } 2774 }
2697 } 2775 }
2698 }, { 2776 }, {
2699
2700
2701 .alg = "rfc4309(ccm(aes))", 2777 .alg = "rfc4309(ccm(aes))",
2702 .test = alg_test_aead, 2778 .test = alg_test_aead,
2703 .fips_allowed = 1, 2779 .fips_allowed = 1,
@@ -2714,6 +2790,21 @@ static const struct alg_test_desc alg_test_descs[] = {
2714 } 2790 }
2715 } 2791 }
2716 }, { 2792 }, {
2793 .alg = "rfc4543(gcm(aes))",
2794 .test = alg_test_aead,
2795 .suite = {
2796 .aead = {
2797 .enc = {
2798 .vecs = aes_gcm_rfc4543_enc_tv_template,
2799 .count = AES_GCM_4543_ENC_TEST_VECTORS
2800 },
2801 .dec = {
2802 .vecs = aes_gcm_rfc4543_dec_tv_template,
2803 .count = AES_GCM_4543_DEC_TEST_VECTORS
2804 },
2805 }
2806 }
2807 }, {
2717 .alg = "rmd128", 2808 .alg = "rmd128",
2718 .test = alg_test_hash, 2809 .test = alg_test_hash,
2719 .suite = { 2810 .suite = {
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index 3db1b7591559..1e701bc075b9 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -1639,6 +1639,131 @@ static struct hash_testvec hmac_sha256_tv_template[] = {
1639 }, 1639 },
1640}; 1640};
1641 1641
1642#define CMAC_AES_TEST_VECTORS 6
1643
1644static struct hash_testvec aes_cmac128_tv_template[] = {
1645 { /* From NIST Special Publication 800-38B, AES-128 */
1646 .key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
1647 "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
1648 .plaintext = zeroed_string,
1649 .digest = "\xbb\x1d\x69\x29\xe9\x59\x37\x28"
1650 "\x7f\xa3\x7d\x12\x9b\x75\x67\x46",
1651 .psize = 0,
1652 .ksize = 16,
1653 }, {
1654 .key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
1655 "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
1656 .plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
1657 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a",
1658 .digest = "\x07\x0a\x16\xb4\x6b\x4d\x41\x44"
1659 "\xf7\x9b\xdd\x9d\xd0\x4a\x28\x7c",
1660 .psize = 16,
1661 .ksize = 16,
1662 }, {
1663 .key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
1664 "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
1665 .plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
1666 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
1667 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
1668 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
1669 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11",
1670 .digest = "\xdf\xa6\x67\x47\xde\x9a\xe6\x30"
1671 "\x30\xca\x32\x61\x14\x97\xc8\x27",
1672 .psize = 40,
1673 .ksize = 16,
1674 }, {
1675 .key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
1676 "\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
1677 .plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
1678 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
1679 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
1680 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
1681 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
1682 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
1683 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
1684 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
1685 .digest = "\x51\xf0\xbe\xbf\x7e\x3b\x9d\x92"
1686 "\xfc\x49\x74\x17\x79\x36\x3c\xfe",
1687 .psize = 64,
1688 .ksize = 16,
1689 }, { /* From NIST Special Publication 800-38B, AES-256 */
1690 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
1691 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
1692 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
1693 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
1694 .plaintext = zeroed_string,
1695 .digest = "\x02\x89\x62\xf6\x1b\x7b\xf8\x9e"
1696 "\xfc\x6b\x55\x1f\x46\x67\xd9\x83",
1697 .psize = 0,
1698 .ksize = 32,
1699 }, {
1700 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
1701 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
1702 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
1703 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
1704 .plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
1705 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
1706 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
1707 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
1708 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
1709 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
1710 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
1711 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
1712 .digest = "\xe1\x99\x21\x90\x54\x9f\x6e\xd5"
1713 "\x69\x6a\x2c\x05\x6c\x31\x54\x10",
1714 .psize = 64,
1715 .ksize = 32,
1716 }
1717};
1718
1719#define CMAC_DES3_EDE_TEST_VECTORS 4
1720
1721static struct hash_testvec des3_ede_cmac64_tv_template[] = {
1722/*
1723 * From NIST Special Publication 800-38B, Three Key TDEA
1724 * Corrected test vectors from:
1725 * http://csrc.nist.gov/publications/nistpubs/800-38B/Updated_CMAC_Examples.pdf
1726 */
1727 {
1728 .key = "\x8a\xa8\x3b\xf8\xcb\xda\x10\x62"
1729 "\x0b\xc1\xbf\x19\xfb\xb6\xcd\x58"
1730 "\xbc\x31\x3d\x4a\x37\x1c\xa8\xb5",
1731 .plaintext = zeroed_string,
1732 .digest = "\xb7\xa6\x88\xe1\x22\xff\xaf\x95",
1733 .psize = 0,
1734 .ksize = 24,
1735 }, {
1736 .key = "\x8a\xa8\x3b\xf8\xcb\xda\x10\x62"
1737 "\x0b\xc1\xbf\x19\xfb\xb6\xcd\x58"
1738 "\xbc\x31\x3d\x4a\x37\x1c\xa8\xb5",
1739 .plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96",
1740 .digest = "\x8e\x8f\x29\x31\x36\x28\x37\x97",
1741 .psize = 8,
1742 .ksize = 24,
1743 }, {
1744 .key = "\x8a\xa8\x3b\xf8\xcb\xda\x10\x62"
1745 "\x0b\xc1\xbf\x19\xfb\xb6\xcd\x58"
1746 "\xbc\x31\x3d\x4a\x37\x1c\xa8\xb5",
1747 .plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
1748 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
1749 "\xae\x2d\x8a\x57",
1750 .digest = "\x74\x3d\xdb\xe0\xce\x2d\xc2\xed",
1751 .psize = 20,
1752 .ksize = 24,
1753 }, {
1754 .key = "\x8a\xa8\x3b\xf8\xcb\xda\x10\x62"
1755 "\x0b\xc1\xbf\x19\xfb\xb6\xcd\x58"
1756 "\xbc\x31\x3d\x4a\x37\x1c\xa8\xb5",
1757 .plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
1758 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
1759 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
1760 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51",
1761 .digest = "\x33\xe6\xb1\x09\x24\x00\xea\xe5",
1762 .psize = 32,
1763 .ksize = 24,
1764 }
1765};
1766
1642#define XCBC_AES_TEST_VECTORS 6 1767#define XCBC_AES_TEST_VECTORS 6
1643 1768
1644static struct hash_testvec aes_xcbc128_tv_template[] = { 1769static struct hash_testvec aes_xcbc128_tv_template[] = {
@@ -12680,6 +12805,8 @@ static struct cipher_testvec cast6_xts_dec_tv_template[] = {
12680#define AES_GCM_DEC_TEST_VECTORS 8 12805#define AES_GCM_DEC_TEST_VECTORS 8
12681#define AES_GCM_4106_ENC_TEST_VECTORS 7 12806#define AES_GCM_4106_ENC_TEST_VECTORS 7
12682#define AES_GCM_4106_DEC_TEST_VECTORS 7 12807#define AES_GCM_4106_DEC_TEST_VECTORS 7
12808#define AES_GCM_4543_ENC_TEST_VECTORS 1
12809#define AES_GCM_4543_DEC_TEST_VECTORS 2
12683#define AES_CCM_ENC_TEST_VECTORS 7 12810#define AES_CCM_ENC_TEST_VECTORS 7
12684#define AES_CCM_DEC_TEST_VECTORS 7 12811#define AES_CCM_DEC_TEST_VECTORS 7
12685#define AES_CCM_4309_ENC_TEST_VECTORS 7 12812#define AES_CCM_4309_ENC_TEST_VECTORS 7
@@ -18193,6 +18320,93 @@ static struct aead_testvec aes_gcm_rfc4106_dec_tv_template[] = {
18193 } 18320 }
18194}; 18321};
18195 18322
18323static struct aead_testvec aes_gcm_rfc4543_enc_tv_template[] = {
18324 { /* From draft-mcgrew-gcm-test-01 */
18325 .key = "\x4c\x80\xcd\xef\xbb\x5d\x10\xda"
18326 "\x90\x6a\xc7\x3c\x36\x13\xa6\x34"
18327 "\x22\x43\x3c\x64",
18328 .klen = 20,
18329 .iv = zeroed_string,
18330 .assoc = "\x00\x00\x43\x21\x00\x00\x00\x07",
18331 .alen = 8,
18332 .input = "\x45\x00\x00\x30\xda\x3a\x00\x00"
18333 "\x80\x01\xdf\x3b\xc0\xa8\x00\x05"
18334 "\xc0\xa8\x00\x01\x08\x00\xc6\xcd"
18335 "\x02\x00\x07\x00\x61\x62\x63\x64"
18336 "\x65\x66\x67\x68\x69\x6a\x6b\x6c"
18337 "\x6d\x6e\x6f\x70\x71\x72\x73\x74"
18338 "\x01\x02\x02\x01",
18339 .ilen = 52,
18340 .result = "\x45\x00\x00\x30\xda\x3a\x00\x00"
18341 "\x80\x01\xdf\x3b\xc0\xa8\x00\x05"
18342 "\xc0\xa8\x00\x01\x08\x00\xc6\xcd"
18343 "\x02\x00\x07\x00\x61\x62\x63\x64"
18344 "\x65\x66\x67\x68\x69\x6a\x6b\x6c"
18345 "\x6d\x6e\x6f\x70\x71\x72\x73\x74"
18346 "\x01\x02\x02\x01\xf2\xa9\xa8\x36"
18347 "\xe1\x55\x10\x6a\xa8\xdc\xd6\x18"
18348 "\xe4\x09\x9a\xaa",
18349 .rlen = 68,
18350 }
18351};
18352
18353static struct aead_testvec aes_gcm_rfc4543_dec_tv_template[] = {
18354 { /* From draft-mcgrew-gcm-test-01 */
18355 .key = "\x4c\x80\xcd\xef\xbb\x5d\x10\xda"
18356 "\x90\x6a\xc7\x3c\x36\x13\xa6\x34"
18357 "\x22\x43\x3c\x64",
18358 .klen = 20,
18359 .iv = zeroed_string,
18360 .assoc = "\x00\x00\x43\x21\x00\x00\x00\x07",
18361 .alen = 8,
18362 .input = "\x45\x00\x00\x30\xda\x3a\x00\x00"
18363 "\x80\x01\xdf\x3b\xc0\xa8\x00\x05"
18364 "\xc0\xa8\x00\x01\x08\x00\xc6\xcd"
18365 "\x02\x00\x07\x00\x61\x62\x63\x64"
18366 "\x65\x66\x67\x68\x69\x6a\x6b\x6c"
18367 "\x6d\x6e\x6f\x70\x71\x72\x73\x74"
18368 "\x01\x02\x02\x01\xf2\xa9\xa8\x36"
18369 "\xe1\x55\x10\x6a\xa8\xdc\xd6\x18"
18370 "\xe4\x09\x9a\xaa",
18371 .ilen = 68,
18372 .result = "\x45\x00\x00\x30\xda\x3a\x00\x00"
18373 "\x80\x01\xdf\x3b\xc0\xa8\x00\x05"
18374 "\xc0\xa8\x00\x01\x08\x00\xc6\xcd"
18375 "\x02\x00\x07\x00\x61\x62\x63\x64"
18376 "\x65\x66\x67\x68\x69\x6a\x6b\x6c"
18377 "\x6d\x6e\x6f\x70\x71\x72\x73\x74"
18378 "\x01\x02\x02\x01",
18379 .rlen = 52,
18380 }, { /* nearly same as previous, but should fail */
18381 .key = "\x4c\x80\xcd\xef\xbb\x5d\x10\xda"
18382 "\x90\x6a\xc7\x3c\x36\x13\xa6\x34"
18383 "\x22\x43\x3c\x64",
18384 .klen = 20,
18385 .iv = zeroed_string,
18386 .assoc = "\x00\x00\x43\x21\x00\x00\x00\x07",
18387 .alen = 8,
18388 .input = "\x45\x00\x00\x30\xda\x3a\x00\x00"
18389 "\x80\x01\xdf\x3b\xc0\xa8\x00\x05"
18390 "\xc0\xa8\x00\x01\x08\x00\xc6\xcd"
18391 "\x02\x00\x07\x00\x61\x62\x63\x64"
18392 "\x65\x66\x67\x68\x69\x6a\x6b\x6c"
18393 "\x6d\x6e\x6f\x70\x71\x72\x73\x74"
18394 "\x01\x02\x02\x01\xf2\xa9\xa8\x36"
18395 "\xe1\x55\x10\x6a\xa8\xdc\xd6\x18"
18396 "\x00\x00\x00\x00",
18397 .ilen = 68,
18398 .novrfy = 1,
18399 .result = "\x45\x00\x00\x30\xda\x3a\x00\x00"
18400 "\x80\x01\xdf\x3b\xc0\xa8\x00\x05"
18401 "\xc0\xa8\x00\x01\x08\x00\xc6\xcd"
18402 "\x02\x00\x07\x00\x61\x62\x63\x64"
18403 "\x65\x66\x67\x68\x69\x6a\x6b\x6c"
18404 "\x6d\x6e\x6f\x70\x71\x72\x73\x74"
18405 "\x01\x02\x02\x01",
18406 .rlen = 52,
18407 },
18408};
18409
18196static struct aead_testvec aes_ccm_enc_tv_template[] = { 18410static struct aead_testvec aes_ccm_enc_tv_template[] = {
18197 { /* From RFC 3610 */ 18411 { /* From RFC 3610 */
18198 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7" 18412 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
@@ -20783,8 +20997,72 @@ static struct cipher_testvec camellia_enc_tv_template[] = {
20783 "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 20997 "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
20784 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 20998 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
20785 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 20999 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
20786 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 21000 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
20787 .ilen = 496, 21001 "\x2B\xC2\x59\xF0\x64\xFB\x92\x06"
21002 "\x9D\x34\xCB\x3F\xD6\x6D\x04\x78"
21003 "\x0F\xA6\x1A\xB1\x48\xDF\x53\xEA"
21004 "\x81\x18\x8C\x23\xBA\x2E\xC5\x5C"
21005 "\xF3\x67\xFE\x95\x09\xA0\x37\xCE"
21006 "\x42\xD9\x70\x07\x7B\x12\xA9\x1D"
21007 "\xB4\x4B\xE2\x56\xED\x84\x1B\x8F"
21008 "\x26\xBD\x31\xC8\x5F\xF6\x6A\x01"
21009 "\x98\x0C\xA3\x3A\xD1\x45\xDC\x73"
21010 "\x0A\x7E\x15\xAC\x20\xB7\x4E\xE5"
21011 "\x59\xF0\x87\x1E\x92\x29\xC0\x34"
21012 "\xCB\x62\xF9\x6D\x04\x9B\x0F\xA6"
21013 "\x3D\xD4\x48\xDF\x76\x0D\x81\x18"
21014 "\xAF\x23\xBA\x51\xE8\x5C\xF3\x8A"
21015 "\x21\x95\x2C\xC3\x37\xCE\x65\xFC"
21016 "\x70\x07\x9E\x12\xA9\x40\xD7\x4B"
21017 "\xE2\x79\x10\x84\x1B\xB2\x26\xBD"
21018 "\x54\xEB\x5F\xF6\x8D\x01\x98\x2F"
21019 "\xC6\x3A\xD1\x68\xFF\x73\x0A\xA1"
21020 "\x15\xAC\x43\xDA\x4E\xE5\x7C\x13"
21021 "\x87\x1E\xB5\x29\xC0\x57\xEE\x62"
21022 "\xF9\x90\x04\x9B\x32\xC9\x3D\xD4"
21023 "\x6B\x02\x76\x0D\xA4\x18\xAF\x46"
21024 "\xDD\x51\xE8\x7F\x16\x8A\x21\xB8"
21025 "\x2C\xC3\x5A\xF1\x65\xFC\x93\x07"
21026 "\x9E\x35\xCC\x40\xD7\x6E\x05\x79"
21027 "\x10\xA7\x1B\xB2\x49\xE0\x54\xEB"
21028 "\x82\x19\x8D\x24\xBB\x2F\xC6\x5D"
21029 "\xF4\x68\xFF\x96\x0A\xA1\x38\xCF"
21030 "\x43\xDA\x71\x08\x7C\x13\xAA\x1E"
21031 "\xB5\x4C\xE3\x57\xEE\x85\x1C\x90"
21032 "\x27\xBE\x32\xC9\x60\xF7\x6B\x02"
21033 "\x99\x0D\xA4\x3B\xD2\x46\xDD\x74"
21034 "\x0B\x7F\x16\xAD\x21\xB8\x4F\xE6"
21035 "\x5A\xF1\x88\x1F\x93\x2A\xC1\x35"
21036 "\xCC\x63\xFA\x6E\x05\x9C\x10\xA7"
21037 "\x3E\xD5\x49\xE0\x77\x0E\x82\x19"
21038 "\xB0\x24\xBB\x52\xE9\x5D\xF4\x8B"
21039 "\x22\x96\x2D\xC4\x38\xCF\x66\xFD"
21040 "\x71\x08\x9F\x13\xAA\x41\xD8\x4C"
21041 "\xE3\x7A\x11\x85\x1C\xB3\x27\xBE"
21042 "\x55\xEC\x60\xF7\x8E\x02\x99\x30"
21043 "\xC7\x3B\xD2\x69\x00\x74\x0B\xA2"
21044 "\x16\xAD\x44\xDB\x4F\xE6\x7D\x14"
21045 "\x88\x1F\xB6\x2A\xC1\x58\xEF\x63"
21046 "\xFA\x91\x05\x9C\x33\xCA\x3E\xD5"
21047 "\x6C\x03\x77\x0E\xA5\x19\xB0\x47"
21048 "\xDE\x52\xE9\x80\x17\x8B\x22\xB9"
21049 "\x2D\xC4\x5B\xF2\x66\xFD\x94\x08"
21050 "\x9F\x36\xCD\x41\xD8\x6F\x06\x7A"
21051 "\x11\xA8\x1C\xB3\x4A\xE1\x55\xEC"
21052 "\x83\x1A\x8E\x25\xBC\x30\xC7\x5E"
21053 "\xF5\x69\x00\x97\x0B\xA2\x39\xD0"
21054 "\x44\xDB\x72\x09\x7D\x14\xAB\x1F"
21055 "\xB6\x4D\xE4\x58\xEF\x86\x1D\x91"
21056 "\x28\xBF\x33\xCA\x61\xF8\x6C\x03"
21057 "\x9A\x0E\xA5\x3C\xD3\x47\xDE\x75"
21058 "\x0C\x80\x17\xAE\x22\xB9\x50\xE7"
21059 "\x5B\xF2\x89\x20\x94\x2B\xC2\x36"
21060 "\xCD\x64\xFB\x6F\x06\x9D\x11\xA8"
21061 "\x3F\xD6\x4A\xE1\x78\x0F\x83\x1A"
21062 "\xB1\x25\xBC\x53\xEA\x5E\xF5\x8C"
21063 "\x00\x97\x2E\xC5\x39\xD0\x67\xFE"
21064 "\x72\x09\xA0\x14\xAB\x42\xD9\x4D",
21065 .ilen = 1008,
20788 .result = "\xED\xCD\xDB\xB8\x68\xCE\xBD\xEA" 21066 .result = "\xED\xCD\xDB\xB8\x68\xCE\xBD\xEA"
20789 "\x9D\x9D\xCD\x9F\x4F\xFC\x4D\xB7" 21067 "\x9D\x9D\xCD\x9F\x4F\xFC\x4D\xB7"
20790 "\xA5\xFF\x6F\x43\x0F\xBA\x32\x04" 21068 "\xA5\xFF\x6F\x43\x0F\xBA\x32\x04"
@@ -20846,11 +21124,75 @@ static struct cipher_testvec camellia_enc_tv_template[] = {
20846 "\x2C\x35\x1B\x38\x85\x7D\xE8\xF3" 21124 "\x2C\x35\x1B\x38\x85\x7D\xE8\xF3"
20847 "\x87\x4F\xDA\xD8\x5F\xFC\xB6\x44" 21125 "\x87\x4F\xDA\xD8\x5F\xFC\xB6\x44"
20848 "\xD0\xE3\x9B\x8B\xBF\xD6\xB8\xC4" 21126 "\xD0\xE3\x9B\x8B\xBF\xD6\xB8\xC4"
20849 "\x73\xAE\x1D\x8B\x5B\x74\x8B\xCB", 21127 "\x73\xAE\x1D\x8B\x5B\x74\x8B\xCB"
20850 .rlen = 496, 21128 "\xA4\xAD\xCF\x5D\xD4\x58\xC9\xCD"
21129 "\xF7\x90\x68\xCF\xC9\x11\x52\x3E"
21130 "\xE8\xA1\xA3\x78\x8B\xD0\xAC\x0A"
21131 "\xD4\xC9\xA3\xA5\x55\x30\xC8\x3E"
21132 "\xED\x28\x39\xE9\x63\xED\x41\x70"
21133 "\x51\xE3\xC4\xA0\xFC\xD5\x43\xCB"
21134 "\x4D\x65\xC8\xFD\x3A\x91\x8F\x60"
21135 "\x8A\xA6\x6D\x9D\x3E\x01\x23\x4B"
21136 "\x50\x47\xC9\xDC\x9B\xDE\x37\xC5"
21137 "\xBF\x67\xB1\x6B\x78\x38\xD5\x7E"
21138 "\xB6\xFF\x67\x83\x3B\x6E\xBE\x23"
21139 "\x45\xFA\x1D\x69\x44\xFD\xC6\xB9"
21140 "\xD0\x4A\x92\xD1\xBE\xF6\x4A\xB7"
21141 "\xCA\xA8\xA2\x9E\x13\x87\x57\x92"
21142 "\x64\x7C\x85\x0B\xB3\x29\x37\xD8"
21143 "\xE6\xAA\xAF\xC4\x03\x67\xA3\xBF"
21144 "\x2E\x45\x83\xB6\xD8\x54\x00\x89"
21145 "\xF6\xBC\x3A\x7A\x88\x58\x51\xED"
21146 "\xF4\x4E\x01\xA5\xC3\x2E\xD9\x42"
21147 "\xBD\x6E\x0D\x0B\x21\xB0\x1A\xCC"
21148 "\xA4\xD3\x3F\xDC\x9B\x81\xD8\xF1"
21149 "\xEA\x7A\x6A\xB7\x07\xC9\x6D\x91"
21150 "\x6D\x3A\xF5\x5F\xA6\xFF\x87\x1E"
21151 "\x3F\xDD\xC0\x72\xEA\xAC\x08\x15"
21152 "\x21\xE6\xC6\xB6\x0D\xD8\x51\x86"
21153 "\x2A\x03\x73\xF7\x29\xD4\xC4\xE4"
21154 "\x7F\x95\x10\xF7\xAB\x3F\x92\x23"
21155 "\xD3\xCE\x9C\x2E\x46\x3B\x63\x43"
21156 "\xBB\xC2\x82\x7A\x83\xD5\x55\xE2"
21157 "\xE7\x9B\x2F\x92\xAF\xFD\x81\x56"
21158 "\x79\xFD\x3E\xF9\x46\xE0\x25\xD4"
21159 "\x38\xDE\xBC\x2C\xC4\x7A\x2A\x8F"
21160 "\x94\x4F\xD0\xAD\x9B\x37\x18\xD4"
21161 "\x0E\x4D\x0F\x02\x3A\xDC\x5A\xA2"
21162 "\x39\x25\x55\x20\x5A\xA6\x02\x9F"
21163 "\xE6\x77\x21\x77\xE5\x4B\x7B\x0B"
21164 "\x30\xF8\x5F\x33\x0F\x49\xCD\xFF"
21165 "\xF2\xE4\x35\xF9\xF0\x63\xC3\x7E"
21166 "\xF1\xA6\x73\xB4\xDF\xE7\xBB\x78"
21167 "\xFF\x21\xA9\xF3\xF3\xCF\x5D\xBA"
21168 "\xED\x87\x98\xAC\xFE\x48\x97\x6D"
21169 "\xA6\x7F\x69\x31\xB1\xC4\xFF\x14"
21170 "\xC6\x76\xD4\x10\xDD\xF6\x49\x2C"
21171 "\x9C\xC8\x6D\x76\xC0\x8F\x5F\x55"
21172 "\x2F\x3C\x8A\x30\xAA\xC3\x16\x55"
21173 "\xC6\xFC\x8D\x8B\xB9\xE5\x80\x6C"
21174 "\xC8\x7E\xBD\x65\x58\x36\xD5\xBC"
21175 "\xF0\x33\x52\x29\x70\xF9\x5C\xE9"
21176 "\xAC\x1F\xB5\x73\x56\x66\x54\xAF"
21177 "\x1B\x8F\x7D\xED\xAB\x03\xCE\xE3"
21178 "\xAE\x47\xB6\x69\x86\xE9\x01\x31"
21179 "\x83\x18\x3D\xF4\x74\x7B\xF9\x42"
21180 "\x4C\xFD\x75\x4A\x6D\xF0\x03\xA6"
21181 "\x2B\x20\x63\xDA\x49\x65\x5E\x8B"
21182 "\xC0\x19\xE3\x8D\xD9\xF3\xB0\x34"
21183 "\xD3\x52\xFC\x68\x00\x43\x1B\x37"
21184 "\x31\x93\x51\x1C\x63\x97\x70\xB0"
21185 "\x99\x78\x83\x13\xFD\xCF\x53\x81"
21186 "\x36\x46\xB5\x42\x52\x2F\x32\xEB"
21187 "\x4A\x3D\xF1\x8F\x1C\x54\x2E\xFC"
21188 "\x41\x75\x5A\x8C\x8E\x6F\xE7\x1A"
21189 "\xAE\xEF\x3E\x82\x12\x0B\x74\x72"
21190 "\xF8\xB2\xAA\x7A\xD6\xFF\xFA\x55"
21191 "\x33\x1A\xBB\xD3\xA2\x7E\x97\x66",
21192 .rlen = 1008,
20851 .also_non_np = 1, 21193 .also_non_np = 1,
20852 .np = 2, 21194 .np = 2,
20853 .tap = { 496 - 16, 16 }, 21195 .tap = { 1008 - 16, 16 },
20854 }, 21196 },
20855}; 21197};
20856 21198
@@ -20955,8 +21297,72 @@ static struct cipher_testvec camellia_dec_tv_template[] = {
20955 "\x2C\x35\x1B\x38\x85\x7D\xE8\xF3" 21297 "\x2C\x35\x1B\x38\x85\x7D\xE8\xF3"
20956 "\x87\x4F\xDA\xD8\x5F\xFC\xB6\x44" 21298 "\x87\x4F\xDA\xD8\x5F\xFC\xB6\x44"
20957 "\xD0\xE3\x9B\x8B\xBF\xD6\xB8\xC4" 21299 "\xD0\xE3\x9B\x8B\xBF\xD6\xB8\xC4"
20958 "\x73\xAE\x1D\x8B\x5B\x74\x8B\xCB", 21300 "\x73\xAE\x1D\x8B\x5B\x74\x8B\xCB"
20959 .ilen = 496, 21301 "\xA4\xAD\xCF\x5D\xD4\x58\xC9\xCD"
21302 "\xF7\x90\x68\xCF\xC9\x11\x52\x3E"
21303 "\xE8\xA1\xA3\x78\x8B\xD0\xAC\x0A"
21304 "\xD4\xC9\xA3\xA5\x55\x30\xC8\x3E"
21305 "\xED\x28\x39\xE9\x63\xED\x41\x70"
21306 "\x51\xE3\xC4\xA0\xFC\xD5\x43\xCB"
21307 "\x4D\x65\xC8\xFD\x3A\x91\x8F\x60"
21308 "\x8A\xA6\x6D\x9D\x3E\x01\x23\x4B"
21309 "\x50\x47\xC9\xDC\x9B\xDE\x37\xC5"
21310 "\xBF\x67\xB1\x6B\x78\x38\xD5\x7E"
21311 "\xB6\xFF\x67\x83\x3B\x6E\xBE\x23"
21312 "\x45\xFA\x1D\x69\x44\xFD\xC6\xB9"
21313 "\xD0\x4A\x92\xD1\xBE\xF6\x4A\xB7"
21314 "\xCA\xA8\xA2\x9E\x13\x87\x57\x92"
21315 "\x64\x7C\x85\x0B\xB3\x29\x37\xD8"
21316 "\xE6\xAA\xAF\xC4\x03\x67\xA3\xBF"
21317 "\x2E\x45\x83\xB6\xD8\x54\x00\x89"
21318 "\xF6\xBC\x3A\x7A\x88\x58\x51\xED"
21319 "\xF4\x4E\x01\xA5\xC3\x2E\xD9\x42"
21320 "\xBD\x6E\x0D\x0B\x21\xB0\x1A\xCC"
21321 "\xA4\xD3\x3F\xDC\x9B\x81\xD8\xF1"
21322 "\xEA\x7A\x6A\xB7\x07\xC9\x6D\x91"
21323 "\x6D\x3A\xF5\x5F\xA6\xFF\x87\x1E"
21324 "\x3F\xDD\xC0\x72\xEA\xAC\x08\x15"
21325 "\x21\xE6\xC6\xB6\x0D\xD8\x51\x86"
21326 "\x2A\x03\x73\xF7\x29\xD4\xC4\xE4"
21327 "\x7F\x95\x10\xF7\xAB\x3F\x92\x23"
21328 "\xD3\xCE\x9C\x2E\x46\x3B\x63\x43"
21329 "\xBB\xC2\x82\x7A\x83\xD5\x55\xE2"
21330 "\xE7\x9B\x2F\x92\xAF\xFD\x81\x56"
21331 "\x79\xFD\x3E\xF9\x46\xE0\x25\xD4"
21332 "\x38\xDE\xBC\x2C\xC4\x7A\x2A\x8F"
21333 "\x94\x4F\xD0\xAD\x9B\x37\x18\xD4"
21334 "\x0E\x4D\x0F\x02\x3A\xDC\x5A\xA2"
21335 "\x39\x25\x55\x20\x5A\xA6\x02\x9F"
21336 "\xE6\x77\x21\x77\xE5\x4B\x7B\x0B"
21337 "\x30\xF8\x5F\x33\x0F\x49\xCD\xFF"
21338 "\xF2\xE4\x35\xF9\xF0\x63\xC3\x7E"
21339 "\xF1\xA6\x73\xB4\xDF\xE7\xBB\x78"
21340 "\xFF\x21\xA9\xF3\xF3\xCF\x5D\xBA"
21341 "\xED\x87\x98\xAC\xFE\x48\x97\x6D"
21342 "\xA6\x7F\x69\x31\xB1\xC4\xFF\x14"
21343 "\xC6\x76\xD4\x10\xDD\xF6\x49\x2C"
21344 "\x9C\xC8\x6D\x76\xC0\x8F\x5F\x55"
21345 "\x2F\x3C\x8A\x30\xAA\xC3\x16\x55"
21346 "\xC6\xFC\x8D\x8B\xB9\xE5\x80\x6C"
21347 "\xC8\x7E\xBD\x65\x58\x36\xD5\xBC"
21348 "\xF0\x33\x52\x29\x70\xF9\x5C\xE9"
21349 "\xAC\x1F\xB5\x73\x56\x66\x54\xAF"
21350 "\x1B\x8F\x7D\xED\xAB\x03\xCE\xE3"
21351 "\xAE\x47\xB6\x69\x86\xE9\x01\x31"
21352 "\x83\x18\x3D\xF4\x74\x7B\xF9\x42"
21353 "\x4C\xFD\x75\x4A\x6D\xF0\x03\xA6"
21354 "\x2B\x20\x63\xDA\x49\x65\x5E\x8B"
21355 "\xC0\x19\xE3\x8D\xD9\xF3\xB0\x34"
21356 "\xD3\x52\xFC\x68\x00\x43\x1B\x37"
21357 "\x31\x93\x51\x1C\x63\x97\x70\xB0"
21358 "\x99\x78\x83\x13\xFD\xCF\x53\x81"
21359 "\x36\x46\xB5\x42\x52\x2F\x32\xEB"
21360 "\x4A\x3D\xF1\x8F\x1C\x54\x2E\xFC"
21361 "\x41\x75\x5A\x8C\x8E\x6F\xE7\x1A"
21362 "\xAE\xEF\x3E\x82\x12\x0B\x74\x72"
21363 "\xF8\xB2\xAA\x7A\xD6\xFF\xFA\x55"
21364 "\x33\x1A\xBB\xD3\xA2\x7E\x97\x66",
21365 .ilen = 1008,
20960 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 21366 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
20961 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 21367 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
20962 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 21368 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
@@ -21018,11 +21424,75 @@ static struct cipher_testvec camellia_dec_tv_template[] = {
21018 "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 21424 "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
21019 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 21425 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
21020 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 21426 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
21021 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 21427 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
21022 .rlen = 496, 21428 "\x2B\xC2\x59\xF0\x64\xFB\x92\x06"
21429 "\x9D\x34\xCB\x3F\xD6\x6D\x04\x78"
21430 "\x0F\xA6\x1A\xB1\x48\xDF\x53\xEA"
21431 "\x81\x18\x8C\x23\xBA\x2E\xC5\x5C"
21432 "\xF3\x67\xFE\x95\x09\xA0\x37\xCE"
21433 "\x42\xD9\x70\x07\x7B\x12\xA9\x1D"
21434 "\xB4\x4B\xE2\x56\xED\x84\x1B\x8F"
21435 "\x26\xBD\x31\xC8\x5F\xF6\x6A\x01"
21436 "\x98\x0C\xA3\x3A\xD1\x45\xDC\x73"
21437 "\x0A\x7E\x15\xAC\x20\xB7\x4E\xE5"
21438 "\x59\xF0\x87\x1E\x92\x29\xC0\x34"
21439 "\xCB\x62\xF9\x6D\x04\x9B\x0F\xA6"
21440 "\x3D\xD4\x48\xDF\x76\x0D\x81\x18"
21441 "\xAF\x23\xBA\x51\xE8\x5C\xF3\x8A"
21442 "\x21\x95\x2C\xC3\x37\xCE\x65\xFC"
21443 "\x70\x07\x9E\x12\xA9\x40\xD7\x4B"
21444 "\xE2\x79\x10\x84\x1B\xB2\x26\xBD"
21445 "\x54\xEB\x5F\xF6\x8D\x01\x98\x2F"
21446 "\xC6\x3A\xD1\x68\xFF\x73\x0A\xA1"
21447 "\x15\xAC\x43\xDA\x4E\xE5\x7C\x13"
21448 "\x87\x1E\xB5\x29\xC0\x57\xEE\x62"
21449 "\xF9\x90\x04\x9B\x32\xC9\x3D\xD4"
21450 "\x6B\x02\x76\x0D\xA4\x18\xAF\x46"
21451 "\xDD\x51\xE8\x7F\x16\x8A\x21\xB8"
21452 "\x2C\xC3\x5A\xF1\x65\xFC\x93\x07"
21453 "\x9E\x35\xCC\x40\xD7\x6E\x05\x79"
21454 "\x10\xA7\x1B\xB2\x49\xE0\x54\xEB"
21455 "\x82\x19\x8D\x24\xBB\x2F\xC6\x5D"
21456 "\xF4\x68\xFF\x96\x0A\xA1\x38\xCF"
21457 "\x43\xDA\x71\x08\x7C\x13\xAA\x1E"
21458 "\xB5\x4C\xE3\x57\xEE\x85\x1C\x90"
21459 "\x27\xBE\x32\xC9\x60\xF7\x6B\x02"
21460 "\x99\x0D\xA4\x3B\xD2\x46\xDD\x74"
21461 "\x0B\x7F\x16\xAD\x21\xB8\x4F\xE6"
21462 "\x5A\xF1\x88\x1F\x93\x2A\xC1\x35"
21463 "\xCC\x63\xFA\x6E\x05\x9C\x10\xA7"
21464 "\x3E\xD5\x49\xE0\x77\x0E\x82\x19"
21465 "\xB0\x24\xBB\x52\xE9\x5D\xF4\x8B"
21466 "\x22\x96\x2D\xC4\x38\xCF\x66\xFD"
21467 "\x71\x08\x9F\x13\xAA\x41\xD8\x4C"
21468 "\xE3\x7A\x11\x85\x1C\xB3\x27\xBE"
21469 "\x55\xEC\x60\xF7\x8E\x02\x99\x30"
21470 "\xC7\x3B\xD2\x69\x00\x74\x0B\xA2"
21471 "\x16\xAD\x44\xDB\x4F\xE6\x7D\x14"
21472 "\x88\x1F\xB6\x2A\xC1\x58\xEF\x63"
21473 "\xFA\x91\x05\x9C\x33\xCA\x3E\xD5"
21474 "\x6C\x03\x77\x0E\xA5\x19\xB0\x47"
21475 "\xDE\x52\xE9\x80\x17\x8B\x22\xB9"
21476 "\x2D\xC4\x5B\xF2\x66\xFD\x94\x08"
21477 "\x9F\x36\xCD\x41\xD8\x6F\x06\x7A"
21478 "\x11\xA8\x1C\xB3\x4A\xE1\x55\xEC"
21479 "\x83\x1A\x8E\x25\xBC\x30\xC7\x5E"
21480 "\xF5\x69\x00\x97\x0B\xA2\x39\xD0"
21481 "\x44\xDB\x72\x09\x7D\x14\xAB\x1F"
21482 "\xB6\x4D\xE4\x58\xEF\x86\x1D\x91"
21483 "\x28\xBF\x33\xCA\x61\xF8\x6C\x03"
21484 "\x9A\x0E\xA5\x3C\xD3\x47\xDE\x75"
21485 "\x0C\x80\x17\xAE\x22\xB9\x50\xE7"
21486 "\x5B\xF2\x89\x20\x94\x2B\xC2\x36"
21487 "\xCD\x64\xFB\x6F\x06\x9D\x11\xA8"
21488 "\x3F\xD6\x4A\xE1\x78\x0F\x83\x1A"
21489 "\xB1\x25\xBC\x53\xEA\x5E\xF5\x8C"
21490 "\x00\x97\x2E\xC5\x39\xD0\x67\xFE"
21491 "\x72\x09\xA0\x14\xAB\x42\xD9\x4D",
21492 .rlen = 1008,
21023 .also_non_np = 1, 21493 .also_non_np = 1,
21024 .np = 2, 21494 .np = 2,
21025 .tap = { 496 - 16, 16 }, 21495 .tap = { 1008 - 16, 16 },
21026 }, 21496 },
21027}; 21497};
21028 21498
@@ -21123,8 +21593,72 @@ static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
21123 "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 21593 "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
21124 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 21594 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
21125 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 21595 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
21126 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 21596 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
21127 .ilen = 496, 21597 "\x2B\xC2\x59\xF0\x64\xFB\x92\x06"
21598 "\x9D\x34\xCB\x3F\xD6\x6D\x04\x78"
21599 "\x0F\xA6\x1A\xB1\x48\xDF\x53\xEA"
21600 "\x81\x18\x8C\x23\xBA\x2E\xC5\x5C"
21601 "\xF3\x67\xFE\x95\x09\xA0\x37\xCE"
21602 "\x42\xD9\x70\x07\x7B\x12\xA9\x1D"
21603 "\xB4\x4B\xE2\x56\xED\x84\x1B\x8F"
21604 "\x26\xBD\x31\xC8\x5F\xF6\x6A\x01"
21605 "\x98\x0C\xA3\x3A\xD1\x45\xDC\x73"
21606 "\x0A\x7E\x15\xAC\x20\xB7\x4E\xE5"
21607 "\x59\xF0\x87\x1E\x92\x29\xC0\x34"
21608 "\xCB\x62\xF9\x6D\x04\x9B\x0F\xA6"
21609 "\x3D\xD4\x48\xDF\x76\x0D\x81\x18"
21610 "\xAF\x23\xBA\x51\xE8\x5C\xF3\x8A"
21611 "\x21\x95\x2C\xC3\x37\xCE\x65\xFC"
21612 "\x70\x07\x9E\x12\xA9\x40\xD7\x4B"
21613 "\xE2\x79\x10\x84\x1B\xB2\x26\xBD"
21614 "\x54\xEB\x5F\xF6\x8D\x01\x98\x2F"
21615 "\xC6\x3A\xD1\x68\xFF\x73\x0A\xA1"
21616 "\x15\xAC\x43\xDA\x4E\xE5\x7C\x13"
21617 "\x87\x1E\xB5\x29\xC0\x57\xEE\x62"
21618 "\xF9\x90\x04\x9B\x32\xC9\x3D\xD4"
21619 "\x6B\x02\x76\x0D\xA4\x18\xAF\x46"
21620 "\xDD\x51\xE8\x7F\x16\x8A\x21\xB8"
21621 "\x2C\xC3\x5A\xF1\x65\xFC\x93\x07"
21622 "\x9E\x35\xCC\x40\xD7\x6E\x05\x79"
21623 "\x10\xA7\x1B\xB2\x49\xE0\x54\xEB"
21624 "\x82\x19\x8D\x24\xBB\x2F\xC6\x5D"
21625 "\xF4\x68\xFF\x96\x0A\xA1\x38\xCF"
21626 "\x43\xDA\x71\x08\x7C\x13\xAA\x1E"
21627 "\xB5\x4C\xE3\x57\xEE\x85\x1C\x90"
21628 "\x27\xBE\x32\xC9\x60\xF7\x6B\x02"
21629 "\x99\x0D\xA4\x3B\xD2\x46\xDD\x74"
21630 "\x0B\x7F\x16\xAD\x21\xB8\x4F\xE6"
21631 "\x5A\xF1\x88\x1F\x93\x2A\xC1\x35"
21632 "\xCC\x63\xFA\x6E\x05\x9C\x10\xA7"
21633 "\x3E\xD5\x49\xE0\x77\x0E\x82\x19"
21634 "\xB0\x24\xBB\x52\xE9\x5D\xF4\x8B"
21635 "\x22\x96\x2D\xC4\x38\xCF\x66\xFD"
21636 "\x71\x08\x9F\x13\xAA\x41\xD8\x4C"
21637 "\xE3\x7A\x11\x85\x1C\xB3\x27\xBE"
21638 "\x55\xEC\x60\xF7\x8E\x02\x99\x30"
21639 "\xC7\x3B\xD2\x69\x00\x74\x0B\xA2"
21640 "\x16\xAD\x44\xDB\x4F\xE6\x7D\x14"
21641 "\x88\x1F\xB6\x2A\xC1\x58\xEF\x63"
21642 "\xFA\x91\x05\x9C\x33\xCA\x3E\xD5"
21643 "\x6C\x03\x77\x0E\xA5\x19\xB0\x47"
21644 "\xDE\x52\xE9\x80\x17\x8B\x22\xB9"
21645 "\x2D\xC4\x5B\xF2\x66\xFD\x94\x08"
21646 "\x9F\x36\xCD\x41\xD8\x6F\x06\x7A"
21647 "\x11\xA8\x1C\xB3\x4A\xE1\x55\xEC"
21648 "\x83\x1A\x8E\x25\xBC\x30\xC7\x5E"
21649 "\xF5\x69\x00\x97\x0B\xA2\x39\xD0"
21650 "\x44\xDB\x72\x09\x7D\x14\xAB\x1F"
21651 "\xB6\x4D\xE4\x58\xEF\x86\x1D\x91"
21652 "\x28\xBF\x33\xCA\x61\xF8\x6C\x03"
21653 "\x9A\x0E\xA5\x3C\xD3\x47\xDE\x75"
21654 "\x0C\x80\x17\xAE\x22\xB9\x50\xE7"
21655 "\x5B\xF2\x89\x20\x94\x2B\xC2\x36"
21656 "\xCD\x64\xFB\x6F\x06\x9D\x11\xA8"
21657 "\x3F\xD6\x4A\xE1\x78\x0F\x83\x1A"
21658 "\xB1\x25\xBC\x53\xEA\x5E\xF5\x8C"
21659 "\x00\x97\x2E\xC5\x39\xD0\x67\xFE"
21660 "\x72\x09\xA0\x14\xAB\x42\xD9\x4D",
21661 .ilen = 1008,
21128 .result = "\xCD\x3E\x2A\x3B\x3E\x94\xC5\x77" 21662 .result = "\xCD\x3E\x2A\x3B\x3E\x94\xC5\x77"
21129 "\xBA\xBB\x5B\xB1\xDE\x7B\xA4\x40" 21663 "\xBA\xBB\x5B\xB1\xDE\x7B\xA4\x40"
21130 "\x88\x39\xE3\xFD\x94\x4B\x25\x58" 21664 "\x88\x39\xE3\xFD\x94\x4B\x25\x58"
@@ -21186,11 +21720,75 @@ static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
21186 "\x2D\x1A\x68\xFE\xEC\x92\x94\xDA" 21720 "\x2D\x1A\x68\xFE\xEC\x92\x94\xDA"
21187 "\x94\x2A\x6F\xD6\xFE\xE5\x76\x97" 21721 "\x94\x2A\x6F\xD6\xFE\xE5\x76\x97"
21188 "\xF4\x6E\xEE\xCB\x2B\x95\x4E\x36" 21722 "\xF4\x6E\xEE\xCB\x2B\x95\x4E\x36"
21189 "\x5F\x74\x8C\x86\x5B\x71\xD0\x20", 21723 "\x5F\x74\x8C\x86\x5B\x71\xD0\x20"
21190 .rlen = 496, 21724 "\x78\x1A\x7F\x18\x8C\xD9\xCD\xF5"
21725 "\x21\x41\x56\x72\x13\xE1\x86\x07"
21726 "\x07\x26\xF3\x4F\x7B\xEA\xB5\x18"
21727 "\xFE\x94\x2D\x9F\xE0\x72\x18\x65"
21728 "\xB2\xA5\x63\x48\xB4\x13\x22\xF7"
21729 "\x25\xF1\x80\xA8\x7F\x54\x86\x7B"
21730 "\x39\xAE\x95\x0C\x09\x32\x22\x2D"
21731 "\x4D\x73\x39\x0C\x09\x2C\x7C\x10"
21732 "\xD0\x4B\x53\xF6\x90\xC5\x99\x2F"
21733 "\x15\xE1\x7F\xC6\xC5\x7A\x52\x14"
21734 "\x65\xEE\x93\x54\xD0\x66\x15\x3C"
21735 "\x4C\x68\xFD\x64\x0F\xF9\x10\x39"
21736 "\x46\x7A\xDD\x97\x20\xEE\xC7\xD2"
21737 "\x98\x4A\xB6\xE6\xF5\xA8\x1F\x4F"
21738 "\xDB\xAB\x6D\xD5\x9B\x34\x16\x97"
21739 "\x2F\x64\xE5\x37\xEF\x0E\xA1\xE9"
21740 "\xBE\x31\x31\x96\x8B\x40\x18\x75"
21741 "\x11\x75\x14\x32\xA5\x2D\x1B\x6B"
21742 "\xDB\x59\xEB\xFA\x3D\x8E\x7C\xC4"
21743 "\xDE\x68\xC8\x9F\xC9\x99\xE3\xC6"
21744 "\x71\xB0\x12\x57\x89\x0D\xC0\x2B"
21745 "\x9F\x12\x6A\x04\x67\xF1\x95\x31"
21746 "\x59\xFD\x84\x95\x2C\x9C\x5B\xEC"
21747 "\x09\xB0\x43\x96\x4A\x64\x80\x40"
21748 "\xB9\x72\x19\xDD\x70\x42\xFA\xB1"
21749 "\x4A\x2C\x0C\x0A\x60\x6E\xE3\x7C"
21750 "\x37\x5A\xBE\xA4\x62\xCF\x29\xAB"
21751 "\x7F\x4D\xA6\xB3\xE2\xB6\x64\xC6"
21752 "\x33\x0B\xF3\xD5\x01\x38\x74\xA4"
21753 "\x67\x1E\x75\x68\xC3\xAD\x76\xE9"
21754 "\xE9\xBC\xF0\xEB\xD8\xFD\x31\x8A"
21755 "\x5F\xC9\x18\x94\x4B\x86\x66\xFC"
21756 "\xBD\x0B\x3D\xB3\x9F\xFA\x1F\xD9"
21757 "\x78\xC4\xE3\x24\x1C\x67\xA2\xF8"
21758 "\x43\xBC\x76\x75\xBF\x6C\x05\xB3"
21759 "\x32\xE8\x7C\x80\xDB\xC7\xB6\x61"
21760 "\x1A\x3E\x2B\xA7\x25\xED\x8F\xA0"
21761 "\x00\x4B\xF8\x90\xCA\xD8\xFB\x12"
21762 "\xAC\x1F\x18\xE9\xD2\x5E\xA2\x8E"
21763 "\xE4\x84\x6B\x9D\xEB\x1E\x6B\xA3"
21764 "\x7B\xDC\xCE\x15\x97\x27\xB2\x65"
21765 "\xBC\x0E\x47\xAB\x55\x13\x53\xAB"
21766 "\x0E\x34\x55\x02\x5F\x27\xC5\x89"
21767 "\xDF\xC5\x70\xC4\xDD\x76\x82\xEE"
21768 "\x68\xA6\x09\xB0\xE5\x5E\xF1\x0C"
21769 "\xE3\xF3\x09\x9B\xFE\x65\x4B\xB8"
21770 "\x30\xEC\xD5\x7C\x6A\xEC\x1D\xD2"
21771 "\x93\xB7\xA1\x1A\x02\xD4\xC0\xD6"
21772 "\x8D\x4D\x83\x9A\xED\x29\x4E\x14"
21773 "\x86\xD5\x3C\x1A\xD5\xB9\x0A\x6A"
21774 "\x72\x22\xD5\x92\x38\xF1\xA1\x86"
21775 "\xB2\x41\x51\xCA\x4E\xAB\x8F\xD3"
21776 "\x80\x56\xC3\xD7\x65\xE1\xB3\x86"
21777 "\xCB\xCE\x98\xA1\xD4\x59\x1C\x06"
21778 "\x01\xED\xF8\x29\x91\x19\x5C\x9A"
21779 "\xEE\x28\x1B\x48\xD7\x32\xEF\x9F"
21780 "\x6C\x2B\x66\x4E\x78\xD5\x8B\x72"
21781 "\x80\xE7\x29\xDC\x23\x55\x98\x54"
21782 "\xB1\xFF\x3E\x95\x56\xA8\x78\x78"
21783 "\xEF\xC4\xA5\x11\x2D\x2B\xD8\x93"
21784 "\x30\x6E\x7E\x51\xBB\x42\x5F\x03"
21785 "\x43\x94\x23\x7E\xEE\xF0\xA5\x79"
21786 "\x55\x01\xD4\x58\xB2\xF2\x85\x49"
21787 "\x70\xC5\xB9\x0B\x3B\x7A\x6E\x6C",
21788 .rlen = 1008,
21191 .also_non_np = 1, 21789 .also_non_np = 1,
21192 .np = 2, 21790 .np = 2,
21193 .tap = { 496 - 16, 16 }, 21791 .tap = { 1008 - 16, 16 },
21194 }, 21792 },
21195}; 21793};
21196 21794
@@ -21291,8 +21889,72 @@ static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
21291 "\x2D\x1A\x68\xFE\xEC\x92\x94\xDA" 21889 "\x2D\x1A\x68\xFE\xEC\x92\x94\xDA"
21292 "\x94\x2A\x6F\xD6\xFE\xE5\x76\x97" 21890 "\x94\x2A\x6F\xD6\xFE\xE5\x76\x97"
21293 "\xF4\x6E\xEE\xCB\x2B\x95\x4E\x36" 21891 "\xF4\x6E\xEE\xCB\x2B\x95\x4E\x36"
21294 "\x5F\x74\x8C\x86\x5B\x71\xD0\x20", 21892 "\x5F\x74\x8C\x86\x5B\x71\xD0\x20"
21295 .ilen = 496, 21893 "\x78\x1A\x7F\x18\x8C\xD9\xCD\xF5"
21894 "\x21\x41\x56\x72\x13\xE1\x86\x07"
21895 "\x07\x26\xF3\x4F\x7B\xEA\xB5\x18"
21896 "\xFE\x94\x2D\x9F\xE0\x72\x18\x65"
21897 "\xB2\xA5\x63\x48\xB4\x13\x22\xF7"
21898 "\x25\xF1\x80\xA8\x7F\x54\x86\x7B"
21899 "\x39\xAE\x95\x0C\x09\x32\x22\x2D"
21900 "\x4D\x73\x39\x0C\x09\x2C\x7C\x10"
21901 "\xD0\x4B\x53\xF6\x90\xC5\x99\x2F"
21902 "\x15\xE1\x7F\xC6\xC5\x7A\x52\x14"
21903 "\x65\xEE\x93\x54\xD0\x66\x15\x3C"
21904 "\x4C\x68\xFD\x64\x0F\xF9\x10\x39"
21905 "\x46\x7A\xDD\x97\x20\xEE\xC7\xD2"
21906 "\x98\x4A\xB6\xE6\xF5\xA8\x1F\x4F"
21907 "\xDB\xAB\x6D\xD5\x9B\x34\x16\x97"
21908 "\x2F\x64\xE5\x37\xEF\x0E\xA1\xE9"
21909 "\xBE\x31\x31\x96\x8B\x40\x18\x75"
21910 "\x11\x75\x14\x32\xA5\x2D\x1B\x6B"
21911 "\xDB\x59\xEB\xFA\x3D\x8E\x7C\xC4"
21912 "\xDE\x68\xC8\x9F\xC9\x99\xE3\xC6"
21913 "\x71\xB0\x12\x57\x89\x0D\xC0\x2B"
21914 "\x9F\x12\x6A\x04\x67\xF1\x95\x31"
21915 "\x59\xFD\x84\x95\x2C\x9C\x5B\xEC"
21916 "\x09\xB0\x43\x96\x4A\x64\x80\x40"
21917 "\xB9\x72\x19\xDD\x70\x42\xFA\xB1"
21918 "\x4A\x2C\x0C\x0A\x60\x6E\xE3\x7C"
21919 "\x37\x5A\xBE\xA4\x62\xCF\x29\xAB"
21920 "\x7F\x4D\xA6\xB3\xE2\xB6\x64\xC6"
21921 "\x33\x0B\xF3\xD5\x01\x38\x74\xA4"
21922 "\x67\x1E\x75\x68\xC3\xAD\x76\xE9"
21923 "\xE9\xBC\xF0\xEB\xD8\xFD\x31\x8A"
21924 "\x5F\xC9\x18\x94\x4B\x86\x66\xFC"
21925 "\xBD\x0B\x3D\xB3\x9F\xFA\x1F\xD9"
21926 "\x78\xC4\xE3\x24\x1C\x67\xA2\xF8"
21927 "\x43\xBC\x76\x75\xBF\x6C\x05\xB3"
21928 "\x32\xE8\x7C\x80\xDB\xC7\xB6\x61"
21929 "\x1A\x3E\x2B\xA7\x25\xED\x8F\xA0"
21930 "\x00\x4B\xF8\x90\xCA\xD8\xFB\x12"
21931 "\xAC\x1F\x18\xE9\xD2\x5E\xA2\x8E"
21932 "\xE4\x84\x6B\x9D\xEB\x1E\x6B\xA3"
21933 "\x7B\xDC\xCE\x15\x97\x27\xB2\x65"
21934 "\xBC\x0E\x47\xAB\x55\x13\x53\xAB"
21935 "\x0E\x34\x55\x02\x5F\x27\xC5\x89"
21936 "\xDF\xC5\x70\xC4\xDD\x76\x82\xEE"
21937 "\x68\xA6\x09\xB0\xE5\x5E\xF1\x0C"
21938 "\xE3\xF3\x09\x9B\xFE\x65\x4B\xB8"
21939 "\x30\xEC\xD5\x7C\x6A\xEC\x1D\xD2"
21940 "\x93\xB7\xA1\x1A\x02\xD4\xC0\xD6"
21941 "\x8D\x4D\x83\x9A\xED\x29\x4E\x14"
21942 "\x86\xD5\x3C\x1A\xD5\xB9\x0A\x6A"
21943 "\x72\x22\xD5\x92\x38\xF1\xA1\x86"
21944 "\xB2\x41\x51\xCA\x4E\xAB\x8F\xD3"
21945 "\x80\x56\xC3\xD7\x65\xE1\xB3\x86"
21946 "\xCB\xCE\x98\xA1\xD4\x59\x1C\x06"
21947 "\x01\xED\xF8\x29\x91\x19\x5C\x9A"
21948 "\xEE\x28\x1B\x48\xD7\x32\xEF\x9F"
21949 "\x6C\x2B\x66\x4E\x78\xD5\x8B\x72"
21950 "\x80\xE7\x29\xDC\x23\x55\x98\x54"
21951 "\xB1\xFF\x3E\x95\x56\xA8\x78\x78"
21952 "\xEF\xC4\xA5\x11\x2D\x2B\xD8\x93"
21953 "\x30\x6E\x7E\x51\xBB\x42\x5F\x03"
21954 "\x43\x94\x23\x7E\xEE\xF0\xA5\x79"
21955 "\x55\x01\xD4\x58\xB2\xF2\x85\x49"
21956 "\x70\xC5\xB9\x0B\x3B\x7A\x6E\x6C",
21957 .ilen = 1008,
21296 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 21958 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
21297 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 21959 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
21298 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 21960 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
@@ -21354,11 +22016,75 @@ static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
21354 "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 22016 "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
21355 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 22017 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
21356 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 22018 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
21357 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 22019 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
21358 .rlen = 496, 22020 "\x2B\xC2\x59\xF0\x64\xFB\x92\x06"
22021 "\x9D\x34\xCB\x3F\xD6\x6D\x04\x78"
22022 "\x0F\xA6\x1A\xB1\x48\xDF\x53\xEA"
22023 "\x81\x18\x8C\x23\xBA\x2E\xC5\x5C"
22024 "\xF3\x67\xFE\x95\x09\xA0\x37\xCE"
22025 "\x42\xD9\x70\x07\x7B\x12\xA9\x1D"
22026 "\xB4\x4B\xE2\x56\xED\x84\x1B\x8F"
22027 "\x26\xBD\x31\xC8\x5F\xF6\x6A\x01"
22028 "\x98\x0C\xA3\x3A\xD1\x45\xDC\x73"
22029 "\x0A\x7E\x15\xAC\x20\xB7\x4E\xE5"
22030 "\x59\xF0\x87\x1E\x92\x29\xC0\x34"
22031 "\xCB\x62\xF9\x6D\x04\x9B\x0F\xA6"
22032 "\x3D\xD4\x48\xDF\x76\x0D\x81\x18"
22033 "\xAF\x23\xBA\x51\xE8\x5C\xF3\x8A"
22034 "\x21\x95\x2C\xC3\x37\xCE\x65\xFC"
22035 "\x70\x07\x9E\x12\xA9\x40\xD7\x4B"
22036 "\xE2\x79\x10\x84\x1B\xB2\x26\xBD"
22037 "\x54\xEB\x5F\xF6\x8D\x01\x98\x2F"
22038 "\xC6\x3A\xD1\x68\xFF\x73\x0A\xA1"
22039 "\x15\xAC\x43\xDA\x4E\xE5\x7C\x13"
22040 "\x87\x1E\xB5\x29\xC0\x57\xEE\x62"
22041 "\xF9\x90\x04\x9B\x32\xC9\x3D\xD4"
22042 "\x6B\x02\x76\x0D\xA4\x18\xAF\x46"
22043 "\xDD\x51\xE8\x7F\x16\x8A\x21\xB8"
22044 "\x2C\xC3\x5A\xF1\x65\xFC\x93\x07"
22045 "\x9E\x35\xCC\x40\xD7\x6E\x05\x79"
22046 "\x10\xA7\x1B\xB2\x49\xE0\x54\xEB"
22047 "\x82\x19\x8D\x24\xBB\x2F\xC6\x5D"
22048 "\xF4\x68\xFF\x96\x0A\xA1\x38\xCF"
22049 "\x43\xDA\x71\x08\x7C\x13\xAA\x1E"
22050 "\xB5\x4C\xE3\x57\xEE\x85\x1C\x90"
22051 "\x27\xBE\x32\xC9\x60\xF7\x6B\x02"
22052 "\x99\x0D\xA4\x3B\xD2\x46\xDD\x74"
22053 "\x0B\x7F\x16\xAD\x21\xB8\x4F\xE6"
22054 "\x5A\xF1\x88\x1F\x93\x2A\xC1\x35"
22055 "\xCC\x63\xFA\x6E\x05\x9C\x10\xA7"
22056 "\x3E\xD5\x49\xE0\x77\x0E\x82\x19"
22057 "\xB0\x24\xBB\x52\xE9\x5D\xF4\x8B"
22058 "\x22\x96\x2D\xC4\x38\xCF\x66\xFD"
22059 "\x71\x08\x9F\x13\xAA\x41\xD8\x4C"
22060 "\xE3\x7A\x11\x85\x1C\xB3\x27\xBE"
22061 "\x55\xEC\x60\xF7\x8E\x02\x99\x30"
22062 "\xC7\x3B\xD2\x69\x00\x74\x0B\xA2"
22063 "\x16\xAD\x44\xDB\x4F\xE6\x7D\x14"
22064 "\x88\x1F\xB6\x2A\xC1\x58\xEF\x63"
22065 "\xFA\x91\x05\x9C\x33\xCA\x3E\xD5"
22066 "\x6C\x03\x77\x0E\xA5\x19\xB0\x47"
22067 "\xDE\x52\xE9\x80\x17\x8B\x22\xB9"
22068 "\x2D\xC4\x5B\xF2\x66\xFD\x94\x08"
22069 "\x9F\x36\xCD\x41\xD8\x6F\x06\x7A"
22070 "\x11\xA8\x1C\xB3\x4A\xE1\x55\xEC"
22071 "\x83\x1A\x8E\x25\xBC\x30\xC7\x5E"
22072 "\xF5\x69\x00\x97\x0B\xA2\x39\xD0"
22073 "\x44\xDB\x72\x09\x7D\x14\xAB\x1F"
22074 "\xB6\x4D\xE4\x58\xEF\x86\x1D\x91"
22075 "\x28\xBF\x33\xCA\x61\xF8\x6C\x03"
22076 "\x9A\x0E\xA5\x3C\xD3\x47\xDE\x75"
22077 "\x0C\x80\x17\xAE\x22\xB9\x50\xE7"
22078 "\x5B\xF2\x89\x20\x94\x2B\xC2\x36"
22079 "\xCD\x64\xFB\x6F\x06\x9D\x11\xA8"
22080 "\x3F\xD6\x4A\xE1\x78\x0F\x83\x1A"
22081 "\xB1\x25\xBC\x53\xEA\x5E\xF5\x8C"
22082 "\x00\x97\x2E\xC5\x39\xD0\x67\xFE"
22083 "\x72\x09\xA0\x14\xAB\x42\xD9\x4D",
22084 .rlen = 1008,
21359 .also_non_np = 1, 22085 .also_non_np = 1,
21360 .np = 2, 22086 .np = 2,
21361 .tap = { 496 - 16, 16 }, 22087 .tap = { 1008 - 16, 16 },
21362 }, 22088 },
21363}; 22089};
21364 22090
@@ -21567,8 +22293,72 @@ static struct cipher_testvec camellia_ctr_enc_tv_template[] = {
21567 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 22293 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
21568 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 22294 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
21569 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 22295 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
21570 "\x2B\xC2\x59", 22296 "\x2B\xC2\x59\xF0\x64\xFB\x92\x06"
21571 .ilen = 499, 22297 "\x9D\x34\xCB\x3F\xD6\x6D\x04\x78"
22298 "\x0F\xA6\x1A\xB1\x48\xDF\x53\xEA"
22299 "\x81\x18\x8C\x23\xBA\x2E\xC5\x5C"
22300 "\xF3\x67\xFE\x95\x09\xA0\x37\xCE"
22301 "\x42\xD9\x70\x07\x7B\x12\xA9\x1D"
22302 "\xB4\x4B\xE2\x56\xED\x84\x1B\x8F"
22303 "\x26\xBD\x31\xC8\x5F\xF6\x6A\x01"
22304 "\x98\x0C\xA3\x3A\xD1\x45\xDC\x73"
22305 "\x0A\x7E\x15\xAC\x20\xB7\x4E\xE5"
22306 "\x59\xF0\x87\x1E\x92\x29\xC0\x34"
22307 "\xCB\x62\xF9\x6D\x04\x9B\x0F\xA6"
22308 "\x3D\xD4\x48\xDF\x76\x0D\x81\x18"
22309 "\xAF\x23\xBA\x51\xE8\x5C\xF3\x8A"
22310 "\x21\x95\x2C\xC3\x37\xCE\x65\xFC"
22311 "\x70\x07\x9E\x12\xA9\x40\xD7\x4B"
22312 "\xE2\x79\x10\x84\x1B\xB2\x26\xBD"
22313 "\x54\xEB\x5F\xF6\x8D\x01\x98\x2F"
22314 "\xC6\x3A\xD1\x68\xFF\x73\x0A\xA1"
22315 "\x15\xAC\x43\xDA\x4E\xE5\x7C\x13"
22316 "\x87\x1E\xB5\x29\xC0\x57\xEE\x62"
22317 "\xF9\x90\x04\x9B\x32\xC9\x3D\xD4"
22318 "\x6B\x02\x76\x0D\xA4\x18\xAF\x46"
22319 "\xDD\x51\xE8\x7F\x16\x8A\x21\xB8"
22320 "\x2C\xC3\x5A\xF1\x65\xFC\x93\x07"
22321 "\x9E\x35\xCC\x40\xD7\x6E\x05\x79"
22322 "\x10\xA7\x1B\xB2\x49\xE0\x54\xEB"
22323 "\x82\x19\x8D\x24\xBB\x2F\xC6\x5D"
22324 "\xF4\x68\xFF\x96\x0A\xA1\x38\xCF"
22325 "\x43\xDA\x71\x08\x7C\x13\xAA\x1E"
22326 "\xB5\x4C\xE3\x57\xEE\x85\x1C\x90"
22327 "\x27\xBE\x32\xC9\x60\xF7\x6B\x02"
22328 "\x99\x0D\xA4\x3B\xD2\x46\xDD\x74"
22329 "\x0B\x7F\x16\xAD\x21\xB8\x4F\xE6"
22330 "\x5A\xF1\x88\x1F\x93\x2A\xC1\x35"
22331 "\xCC\x63\xFA\x6E\x05\x9C\x10\xA7"
22332 "\x3E\xD5\x49\xE0\x77\x0E\x82\x19"
22333 "\xB0\x24\xBB\x52\xE9\x5D\xF4\x8B"
22334 "\x22\x96\x2D\xC4\x38\xCF\x66\xFD"
22335 "\x71\x08\x9F\x13\xAA\x41\xD8\x4C"
22336 "\xE3\x7A\x11\x85\x1C\xB3\x27\xBE"
22337 "\x55\xEC\x60\xF7\x8E\x02\x99\x30"
22338 "\xC7\x3B\xD2\x69\x00\x74\x0B\xA2"
22339 "\x16\xAD\x44\xDB\x4F\xE6\x7D\x14"
22340 "\x88\x1F\xB6\x2A\xC1\x58\xEF\x63"
22341 "\xFA\x91\x05\x9C\x33\xCA\x3E\xD5"
22342 "\x6C\x03\x77\x0E\xA5\x19\xB0\x47"
22343 "\xDE\x52\xE9\x80\x17\x8B\x22\xB9"
22344 "\x2D\xC4\x5B\xF2\x66\xFD\x94\x08"
22345 "\x9F\x36\xCD\x41\xD8\x6F\x06\x7A"
22346 "\x11\xA8\x1C\xB3\x4A\xE1\x55\xEC"
22347 "\x83\x1A\x8E\x25\xBC\x30\xC7\x5E"
22348 "\xF5\x69\x00\x97\x0B\xA2\x39\xD0"
22349 "\x44\xDB\x72\x09\x7D\x14\xAB\x1F"
22350 "\xB6\x4D\xE4\x58\xEF\x86\x1D\x91"
22351 "\x28\xBF\x33\xCA\x61\xF8\x6C\x03"
22352 "\x9A\x0E\xA5\x3C\xD3\x47\xDE\x75"
22353 "\x0C\x80\x17\xAE\x22\xB9\x50\xE7"
22354 "\x5B\xF2\x89\x20\x94\x2B\xC2\x36"
22355 "\xCD\x64\xFB\x6F\x06\x9D\x11\xA8"
22356 "\x3F\xD6\x4A\xE1\x78\x0F\x83\x1A"
22357 "\xB1\x25\xBC\x53\xEA\x5E\xF5\x8C"
22358 "\x00\x97\x2E\xC5\x39\xD0\x67\xFE"
22359 "\x72\x09\xA0\x14\xAB\x42\xD9\x4D"
22360 "\xE4\x7B\x12",
22361 .ilen = 1011,
21572 .result = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11" 22362 .result = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11"
21573 "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE" 22363 "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE"
21574 "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4" 22364 "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4"
@@ -21631,11 +22421,75 @@ static struct cipher_testvec camellia_ctr_enc_tv_template[] = {
21631 "\x7E\x42\xEC\xB6\x6F\x4D\x6B\x48" 22421 "\x7E\x42\xEC\xB6\x6F\x4D\x6B\x48"
21632 "\xE6\xA6\x50\x80\x78\x9E\xF1\xB0" 22422 "\xE6\xA6\x50\x80\x78\x9E\xF1\xB0"
21633 "\x4D\xB2\x0D\x3D\xFC\x40\x25\x4D" 22423 "\x4D\xB2\x0D\x3D\xFC\x40\x25\x4D"
21634 "\x93\x11\x1C", 22424 "\x93\x11\x1C\xE9\xD2\x9F\x6E\x90"
21635 .rlen = 499, 22425 "\xE5\x41\x4A\xE2\x3C\x45\x29\x35"
22426 "\xEC\xD6\x47\x50\xCB\x7B\xA2\x32"
22427 "\xF7\x8B\x62\xF1\xE3\x9A\xFE\xC7"
22428 "\x1D\x8C\x02\x72\x68\x09\xE9\xB6"
22429 "\x4A\x80\xE6\xB1\x56\xDF\x90\xD4"
22430 "\x93\x74\xA4\xCE\x20\x23\xBF\x48"
22431 "\xA5\xDE\x1B\xFA\x40\x69\x31\x98"
22432 "\x62\x6E\xA5\xC7\xBF\x0C\x62\xE5"
22433 "\x6D\xE1\x93\xF1\x83\x10\x1C\xCA"
22434 "\xF6\x5C\x19\xF8\x90\x78\xCB\xE4"
22435 "\x0B\x3A\xB5\xF8\x43\x86\xD3\x3F"
22436 "\xBA\x83\x34\x3C\x42\xCC\x7D\x28"
22437 "\x29\x63\x4F\xD8\x02\x17\xC5\x07"
22438 "\x2C\xA4\xAC\x79\xCB\xC3\xA9\x09"
22439 "\x81\x45\x18\xED\xE4\xCB\x42\x3B"
22440 "\x87\x2D\x23\xDC\xC5\xBA\x45\xBD"
22441 "\x92\xE5\x02\x97\x96\xCE\xAD\xEC"
22442 "\xBA\xD8\x76\xF8\xCA\xC1\x31\xEC"
22443 "\x1E\x4F\x3F\x83\xF8\x33\xE8\x6E"
22444 "\xCC\xF8\x5F\xDD\x65\x50\x99\x69"
22445 "\xAF\x48\xCE\xA5\xBA\xB6\x14\x9F"
22446 "\x05\x93\xB2\xE6\x59\xC8\x28\xFE"
22447 "\x8F\x37\xF9\x64\xB9\xA5\x56\x8F"
22448 "\xF1\x1B\x90\xEF\xAE\xEB\xFC\x09"
22449 "\x11\x7A\xF2\x19\x0A\x0A\x9A\x3C"
22450 "\xE2\x5E\x29\xFA\x31\x9B\xC1\x74"
22451 "\x1E\x10\x3E\x07\xA9\x31\x6D\xF8"
22452 "\x81\xF5\xD5\x8A\x04\x23\x51\xAC"
22453 "\xA2\xE2\x63\xFD\x27\x1F\x79\x5B"
22454 "\x1F\xE8\xDA\x11\x49\x4D\x1C\xBA"
22455 "\x54\xCC\x0F\xBA\x92\x69\xE5\xCB"
22456 "\x41\x1A\x67\xA6\x40\x82\x70\x8C"
22457 "\x19\x79\x08\xA4\x51\x20\x7D\xC9"
22458 "\x12\x27\xAE\x20\x0D\x2C\xA1\x6D"
22459 "\xF4\x55\xD4\xE7\xE6\xD4\x28\x08"
22460 "\x00\x70\x12\x56\x56\x50\xAD\x14"
22461 "\x5C\x3E\xA2\xD1\x36\x3F\x36\x48"
22462 "\xED\xB1\x57\x3E\x5D\x15\xF6\x1E"
22463 "\x53\xE9\xA4\x3E\xED\x7D\xCF\x7D"
22464 "\x29\xAF\xF3\x1E\x51\xA8\x9F\x85"
22465 "\x8B\xF0\xBB\xCE\xCC\x39\xC3\x64"
22466 "\x4B\xF2\xAD\x70\x19\xD4\x44\x8F"
22467 "\x91\x76\xE8\x15\x66\x34\x9F\xF6"
22468 "\x0F\x15\xA4\xA8\x24\xF8\x58\xB1"
22469 "\x38\x46\x47\xC7\x9B\xCA\xE9\x42"
22470 "\x44\xAA\xE6\xB5\x9C\x91\xA4\xD3"
22471 "\x16\xA0\xED\x42\xBE\xB5\x06\x19"
22472 "\xBE\x67\xE8\xBC\x22\x32\xA4\x1E"
22473 "\x93\xEB\xBE\xE9\xE1\x93\xE5\x31"
22474 "\x3A\xA2\x75\xDF\xE3\x6B\xE7\xCC"
22475 "\xB4\x70\x20\xE0\x6D\x82\x7C\xC8"
22476 "\x94\x5C\x5E\x37\x18\xAD\xED\x8B"
22477 "\x44\x86\xCA\x5E\x07\xB7\x70\x8D"
22478 "\x40\x48\x19\x73\x7C\x78\x64\x0B"
22479 "\xDB\x01\xCA\xAE\x63\x19\xE9\xD1"
22480 "\x6B\x2C\x84\x10\x45\x42\x2E\xC3"
22481 "\xDF\x7F\xAA\xE8\x87\x1B\x63\x46"
22482 "\x74\x28\x9D\x05\x30\x20\x62\x41"
22483 "\xC0\x9F\x2C\x36\x2B\x78\xD7\x26"
22484 "\xDF\x58\x51\xED\xFA\xDC\x87\x79"
22485 "\xBF\x8C\xBF\xC4\x0F\xE5\x05\xDA"
22486 "\x45\xE3\x35\x0D\x69\x91\x54\x1C"
22487 "\xE7\x2C\x49\x08\x8B\x72\xFA\x5C"
22488 "\xF1\x6B\xD9",
22489 .rlen = 1011,
21636 .also_non_np = 1, 22490 .also_non_np = 1,
21637 .np = 2, 22491 .np = 2,
21638 .tap = { 499 - 16, 16 }, 22492 .tap = { 1011 - 16, 16 },
21639 }, { /* Generated with Crypto++ */ 22493 }, { /* Generated with Crypto++ */
21640 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 22494 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
21641 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" 22495 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -21705,8 +22559,72 @@ static struct cipher_testvec camellia_ctr_enc_tv_template[] = {
21705 "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 22559 "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
21706 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 22560 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
21707 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 22561 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
21708 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 22562 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
21709 .ilen = 496, 22563 "\x2B\xC2\x59\xF0\x64\xFB\x92\x06"
22564 "\x9D\x34\xCB\x3F\xD6\x6D\x04\x78"
22565 "\x0F\xA6\x1A\xB1\x48\xDF\x53\xEA"
22566 "\x81\x18\x8C\x23\xBA\x2E\xC5\x5C"
22567 "\xF3\x67\xFE\x95\x09\xA0\x37\xCE"
22568 "\x42\xD9\x70\x07\x7B\x12\xA9\x1D"
22569 "\xB4\x4B\xE2\x56\xED\x84\x1B\x8F"
22570 "\x26\xBD\x31\xC8\x5F\xF6\x6A\x01"
22571 "\x98\x0C\xA3\x3A\xD1\x45\xDC\x73"
22572 "\x0A\x7E\x15\xAC\x20\xB7\x4E\xE5"
22573 "\x59\xF0\x87\x1E\x92\x29\xC0\x34"
22574 "\xCB\x62\xF9\x6D\x04\x9B\x0F\xA6"
22575 "\x3D\xD4\x48\xDF\x76\x0D\x81\x18"
22576 "\xAF\x23\xBA\x51\xE8\x5C\xF3\x8A"
22577 "\x21\x95\x2C\xC3\x37\xCE\x65\xFC"
22578 "\x70\x07\x9E\x12\xA9\x40\xD7\x4B"
22579 "\xE2\x79\x10\x84\x1B\xB2\x26\xBD"
22580 "\x54\xEB\x5F\xF6\x8D\x01\x98\x2F"
22581 "\xC6\x3A\xD1\x68\xFF\x73\x0A\xA1"
22582 "\x15\xAC\x43\xDA\x4E\xE5\x7C\x13"
22583 "\x87\x1E\xB5\x29\xC0\x57\xEE\x62"
22584 "\xF9\x90\x04\x9B\x32\xC9\x3D\xD4"
22585 "\x6B\x02\x76\x0D\xA4\x18\xAF\x46"
22586 "\xDD\x51\xE8\x7F\x16\x8A\x21\xB8"
22587 "\x2C\xC3\x5A\xF1\x65\xFC\x93\x07"
22588 "\x9E\x35\xCC\x40\xD7\x6E\x05\x79"
22589 "\x10\xA7\x1B\xB2\x49\xE0\x54\xEB"
22590 "\x82\x19\x8D\x24\xBB\x2F\xC6\x5D"
22591 "\xF4\x68\xFF\x96\x0A\xA1\x38\xCF"
22592 "\x43\xDA\x71\x08\x7C\x13\xAA\x1E"
22593 "\xB5\x4C\xE3\x57\xEE\x85\x1C\x90"
22594 "\x27\xBE\x32\xC9\x60\xF7\x6B\x02"
22595 "\x99\x0D\xA4\x3B\xD2\x46\xDD\x74"
22596 "\x0B\x7F\x16\xAD\x21\xB8\x4F\xE6"
22597 "\x5A\xF1\x88\x1F\x93\x2A\xC1\x35"
22598 "\xCC\x63\xFA\x6E\x05\x9C\x10\xA7"
22599 "\x3E\xD5\x49\xE0\x77\x0E\x82\x19"
22600 "\xB0\x24\xBB\x52\xE9\x5D\xF4\x8B"
22601 "\x22\x96\x2D\xC4\x38\xCF\x66\xFD"
22602 "\x71\x08\x9F\x13\xAA\x41\xD8\x4C"
22603 "\xE3\x7A\x11\x85\x1C\xB3\x27\xBE"
22604 "\x55\xEC\x60\xF7\x8E\x02\x99\x30"
22605 "\xC7\x3B\xD2\x69\x00\x74\x0B\xA2"
22606 "\x16\xAD\x44\xDB\x4F\xE6\x7D\x14"
22607 "\x88\x1F\xB6\x2A\xC1\x58\xEF\x63"
22608 "\xFA\x91\x05\x9C\x33\xCA\x3E\xD5"
22609 "\x6C\x03\x77\x0E\xA5\x19\xB0\x47"
22610 "\xDE\x52\xE9\x80\x17\x8B\x22\xB9"
22611 "\x2D\xC4\x5B\xF2\x66\xFD\x94\x08"
22612 "\x9F\x36\xCD\x41\xD8\x6F\x06\x7A"
22613 "\x11\xA8\x1C\xB3\x4A\xE1\x55\xEC"
22614 "\x83\x1A\x8E\x25\xBC\x30\xC7\x5E"
22615 "\xF5\x69\x00\x97\x0B\xA2\x39\xD0"
22616 "\x44\xDB\x72\x09\x7D\x14\xAB\x1F"
22617 "\xB6\x4D\xE4\x58\xEF\x86\x1D\x91"
22618 "\x28\xBF\x33\xCA\x61\xF8\x6C\x03"
22619 "\x9A\x0E\xA5\x3C\xD3\x47\xDE\x75"
22620 "\x0C\x80\x17\xAE\x22\xB9\x50\xE7"
22621 "\x5B\xF2\x89\x20\x94\x2B\xC2\x36"
22622 "\xCD\x64\xFB\x6F\x06\x9D\x11\xA8"
22623 "\x3F\xD6\x4A\xE1\x78\x0F\x83\x1A"
22624 "\xB1\x25\xBC\x53\xEA\x5E\xF5\x8C"
22625 "\x00\x97\x2E\xC5\x39\xD0\x67\xFE"
22626 "\x72\x09\xA0\x14\xAB\x42\xD9\x4D",
22627 .ilen = 1008,
21710 .result = "\x85\x79\x6C\x8B\x2B\x6D\x14\xF9" 22628 .result = "\x85\x79\x6C\x8B\x2B\x6D\x14\xF9"
21711 "\xA6\x83\xB6\x80\x5B\x3A\xF3\x7E" 22629 "\xA6\x83\xB6\x80\x5B\x3A\xF3\x7E"
21712 "\x30\x29\xEB\x1F\xDC\x19\x5F\xEB" 22630 "\x30\x29\xEB\x1F\xDC\x19\x5F\xEB"
@@ -21768,8 +22686,72 @@ static struct cipher_testvec camellia_ctr_enc_tv_template[] = {
21768 "\xB4\x3A\x5F\x19\xCF\x42\x1B\x22" 22686 "\xB4\x3A\x5F\x19\xCF\x42\x1B\x22"
21769 "\x0B\x2D\x7B\xF1\xC5\x43\xF7\x5E" 22687 "\x0B\x2D\x7B\xF1\xC5\x43\xF7\x5E"
21770 "\x12\xA8\x01\x64\x16\x0B\x26\x5A" 22688 "\x12\xA8\x01\x64\x16\x0B\x26\x5A"
21771 "\x0C\x95\x0F\x40\xC5\x5A\x06\x7C", 22689 "\x0C\x95\x0F\x40\xC5\x5A\x06\x7C"
21772 .rlen = 496, 22690 "\xCF\xF5\xD5\xB7\x7A\x34\x23\xB6"
22691 "\xAA\x9E\xA8\x98\xA2\xF8\x3D\xD3"
22692 "\x3F\x23\x69\x63\x56\x96\x45\xD6"
22693 "\x74\x23\x1D\x5C\x63\xCC\xD8\x78"
22694 "\x16\xE2\x9C\xD2\x80\x02\xF2\x28"
22695 "\x69\x2F\xC4\xA8\x15\x15\x24\x3B"
22696 "\xCB\xF0\x14\xE4\x62\xC8\xF3\xD1"
22697 "\x03\x58\x1B\x33\x77\x74\x1F\xB4"
22698 "\x07\x86\xF2\x21\xB7\x41\xAE\xBF"
22699 "\x25\xC2\xFF\x51\xEF\xEA\xCE\xC4"
22700 "\x5F\xD9\xB8\x18\x6A\xF0\x0F\x0D"
22701 "\xF8\x04\xBB\x6D\x62\x33\x87\x26"
22702 "\x4F\x2F\x14\x6E\xDC\xDB\x66\x09"
22703 "\x2A\xEF\x7D\x84\x10\xAC\x82\x5E"
22704 "\xD2\xE4\xAD\x74\x7A\x6D\xCC\x3A"
22705 "\x7B\x62\xD8\xD6\x07\x2D\xF7\xDF"
22706 "\x9B\xB3\x82\xCF\x9C\x1D\x76\x5C"
22707 "\xAC\x7B\xD4\x9B\x45\xA1\x64\x11"
22708 "\x66\xF1\xA7\x0B\xF9\xDD\x00\xDD"
22709 "\xA4\x45\x3D\x3E\x03\xC9\x2E\xCB"
22710 "\xC3\x14\x84\x72\xFD\x41\xDC\xBD"
22711 "\x75\xBE\xA8\xE5\x16\x48\x64\x39"
22712 "\xCA\xF3\xE6\xDC\x25\x24\xF1\x6D"
22713 "\xB2\x8D\xC5\x38\x54\xD3\x5D\x6D"
22714 "\x0B\x29\x10\x15\x0E\x13\x3B\xAC"
22715 "\x7E\xCC\x9E\x3E\x18\x48\xA6\x02"
22716 "\xEF\x03\xB2\x2E\xE3\xD2\x70\x21"
22717 "\xB4\x19\x26\xBE\x3A\x3D\x05\xE0"
22718 "\xF8\x09\xAF\xE4\x31\x26\x92\x2F"
22719 "\x8F\x55\xAC\xED\x0B\xB2\xA5\x34"
22720 "\xBE\x50\xB1\x02\x22\x96\xE3\x40"
22721 "\x7B\x70\x50\x6E\x3B\xD5\xE5\xA0"
22722 "\x8E\xA2\xAD\x14\x60\x5C\x7A\x2B"
22723 "\x3D\x1B\x7F\xC1\xC0\x2C\x56\x36"
22724 "\xD2\x0A\x32\x06\x97\x34\xB9\xF4"
22725 "\x6F\x9F\x7E\x80\xD0\x9D\xF7\x6A"
22726 "\x21\xC1\xA2\x6A\xB1\x96\x5B\x4D"
22727 "\x7A\x15\x6C\xC4\x4E\xB8\xE0\x9E"
22728 "\x6C\x50\xF3\x9C\xC9\xB5\x23\xB7"
22729 "\xF1\xD4\x29\x4A\x23\xC4\xAD\x1E"
22730 "\x2C\x07\xD2\x43\x5F\x57\x93\xCA"
22731 "\x85\xF9\x9F\xAD\x4C\xF1\xE4\xB1"
22732 "\x1A\x8E\x28\xA4\xB6\x52\x77\x7E"
22733 "\x68\xC6\x47\xB9\x76\xCC\x65\x5F"
22734 "\x0B\xF9\x67\x93\xD8\x0E\x9A\x37"
22735 "\x5F\x41\xED\x64\x6C\xAD\x5F\xED"
22736 "\x3F\x8D\xFB\x8E\x1E\xA0\xE4\x1F"
22737 "\xC2\xC7\xED\x18\x43\xE1\x20\x86"
22738 "\x5D\xBC\x30\x70\x22\xA1\xDC\x53"
22739 "\x10\x3A\x8D\x47\x82\xCD\x7F\x59"
22740 "\x03\x2D\x6D\xF5\xE7\x79\xD4\x07"
22741 "\x68\x2A\xA5\x42\x19\x4D\xAF\xF5"
22742 "\xED\x47\x83\xBC\x5F\x62\x84\xDA"
22743 "\xDA\x41\xFF\xB0\x1D\x64\xA3\xC8"
22744 "\xBD\x4E\xE0\xB8\x7F\xEE\x55\x0A"
22745 "\x4E\x61\xB2\x51\xF6\x9C\x95\xF6"
22746 "\x92\xBB\xF6\xC5\xF0\x09\x86\xDE"
22747 "\x37\x9E\x29\xF9\x2A\x18\x73\x0D"
22748 "\xDC\x7E\x6B\x7B\x1B\x43\x8C\xEA"
22749 "\x13\xC8\x1A\x47\x0A\x2D\x6D\x56"
22750 "\xCD\xD2\xE7\x53\x1A\xAB\x1C\x3C"
22751 "\xC5\x9B\x03\x70\x29\x2A\x49\x09"
22752 "\x67\xA1\xEA\xD6\x3A\x5B\xBF\x71"
22753 "\x1D\x48\x64\x6C\xFB\xC0\x9E\x36",
22754 .rlen = 1008,
21773 }, 22755 },
21774}; 22756};
21775 22757
@@ -21978,8 +22960,72 @@ static struct cipher_testvec camellia_ctr_dec_tv_template[] = {
21978 "\x7E\x42\xEC\xB6\x6F\x4D\x6B\x48" 22960 "\x7E\x42\xEC\xB6\x6F\x4D\x6B\x48"
21979 "\xE6\xA6\x50\x80\x78\x9E\xF1\xB0" 22961 "\xE6\xA6\x50\x80\x78\x9E\xF1\xB0"
21980 "\x4D\xB2\x0D\x3D\xFC\x40\x25\x4D" 22962 "\x4D\xB2\x0D\x3D\xFC\x40\x25\x4D"
21981 "\x93\x11\x1C", 22963 "\x93\x11\x1C\xE9\xD2\x9F\x6E\x90"
21982 .ilen = 499, 22964 "\xE5\x41\x4A\xE2\x3C\x45\x29\x35"
22965 "\xEC\xD6\x47\x50\xCB\x7B\xA2\x32"
22966 "\xF7\x8B\x62\xF1\xE3\x9A\xFE\xC7"
22967 "\x1D\x8C\x02\x72\x68\x09\xE9\xB6"
22968 "\x4A\x80\xE6\xB1\x56\xDF\x90\xD4"
22969 "\x93\x74\xA4\xCE\x20\x23\xBF\x48"
22970 "\xA5\xDE\x1B\xFA\x40\x69\x31\x98"
22971 "\x62\x6E\xA5\xC7\xBF\x0C\x62\xE5"
22972 "\x6D\xE1\x93\xF1\x83\x10\x1C\xCA"
22973 "\xF6\x5C\x19\xF8\x90\x78\xCB\xE4"
22974 "\x0B\x3A\xB5\xF8\x43\x86\xD3\x3F"
22975 "\xBA\x83\x34\x3C\x42\xCC\x7D\x28"
22976 "\x29\x63\x4F\xD8\x02\x17\xC5\x07"
22977 "\x2C\xA4\xAC\x79\xCB\xC3\xA9\x09"
22978 "\x81\x45\x18\xED\xE4\xCB\x42\x3B"
22979 "\x87\x2D\x23\xDC\xC5\xBA\x45\xBD"
22980 "\x92\xE5\x02\x97\x96\xCE\xAD\xEC"
22981 "\xBA\xD8\x76\xF8\xCA\xC1\x31\xEC"
22982 "\x1E\x4F\x3F\x83\xF8\x33\xE8\x6E"
22983 "\xCC\xF8\x5F\xDD\x65\x50\x99\x69"
22984 "\xAF\x48\xCE\xA5\xBA\xB6\x14\x9F"
22985 "\x05\x93\xB2\xE6\x59\xC8\x28\xFE"
22986 "\x8F\x37\xF9\x64\xB9\xA5\x56\x8F"
22987 "\xF1\x1B\x90\xEF\xAE\xEB\xFC\x09"
22988 "\x11\x7A\xF2\x19\x0A\x0A\x9A\x3C"
22989 "\xE2\x5E\x29\xFA\x31\x9B\xC1\x74"
22990 "\x1E\x10\x3E\x07\xA9\x31\x6D\xF8"
22991 "\x81\xF5\xD5\x8A\x04\x23\x51\xAC"
22992 "\xA2\xE2\x63\xFD\x27\x1F\x79\x5B"
22993 "\x1F\xE8\xDA\x11\x49\x4D\x1C\xBA"
22994 "\x54\xCC\x0F\xBA\x92\x69\xE5\xCB"
22995 "\x41\x1A\x67\xA6\x40\x82\x70\x8C"
22996 "\x19\x79\x08\xA4\x51\x20\x7D\xC9"
22997 "\x12\x27\xAE\x20\x0D\x2C\xA1\x6D"
22998 "\xF4\x55\xD4\xE7\xE6\xD4\x28\x08"
22999 "\x00\x70\x12\x56\x56\x50\xAD\x14"
23000 "\x5C\x3E\xA2\xD1\x36\x3F\x36\x48"
23001 "\xED\xB1\x57\x3E\x5D\x15\xF6\x1E"
23002 "\x53\xE9\xA4\x3E\xED\x7D\xCF\x7D"
23003 "\x29\xAF\xF3\x1E\x51\xA8\x9F\x85"
23004 "\x8B\xF0\xBB\xCE\xCC\x39\xC3\x64"
23005 "\x4B\xF2\xAD\x70\x19\xD4\x44\x8F"
23006 "\x91\x76\xE8\x15\x66\x34\x9F\xF6"
23007 "\x0F\x15\xA4\xA8\x24\xF8\x58\xB1"
23008 "\x38\x46\x47\xC7\x9B\xCA\xE9\x42"
23009 "\x44\xAA\xE6\xB5\x9C\x91\xA4\xD3"
23010 "\x16\xA0\xED\x42\xBE\xB5\x06\x19"
23011 "\xBE\x67\xE8\xBC\x22\x32\xA4\x1E"
23012 "\x93\xEB\xBE\xE9\xE1\x93\xE5\x31"
23013 "\x3A\xA2\x75\xDF\xE3\x6B\xE7\xCC"
23014 "\xB4\x70\x20\xE0\x6D\x82\x7C\xC8"
23015 "\x94\x5C\x5E\x37\x18\xAD\xED\x8B"
23016 "\x44\x86\xCA\x5E\x07\xB7\x70\x8D"
23017 "\x40\x48\x19\x73\x7C\x78\x64\x0B"
23018 "\xDB\x01\xCA\xAE\x63\x19\xE9\xD1"
23019 "\x6B\x2C\x84\x10\x45\x42\x2E\xC3"
23020 "\xDF\x7F\xAA\xE8\x87\x1B\x63\x46"
23021 "\x74\x28\x9D\x05\x30\x20\x62\x41"
23022 "\xC0\x9F\x2C\x36\x2B\x78\xD7\x26"
23023 "\xDF\x58\x51\xED\xFA\xDC\x87\x79"
23024 "\xBF\x8C\xBF\xC4\x0F\xE5\x05\xDA"
23025 "\x45\xE3\x35\x0D\x69\x91\x54\x1C"
23026 "\xE7\x2C\x49\x08\x8B\x72\xFA\x5C"
23027 "\xF1\x6B\xD9",
23028 .ilen = 1011,
21983 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 23029 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
21984 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 23030 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
21985 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 23031 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
@@ -22042,11 +23088,75 @@ static struct cipher_testvec camellia_ctr_dec_tv_template[] = {
22042 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 23088 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
22043 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 23089 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
22044 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7" 23090 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
22045 "\x2B\xC2\x59", 23091 "\x2B\xC2\x59\xF0\x64\xFB\x92\x06"
22046 .rlen = 499, 23092 "\x9D\x34\xCB\x3F\xD6\x6D\x04\x78"
23093 "\x0F\xA6\x1A\xB1\x48\xDF\x53\xEA"
23094 "\x81\x18\x8C\x23\xBA\x2E\xC5\x5C"
23095 "\xF3\x67\xFE\x95\x09\xA0\x37\xCE"
23096 "\x42\xD9\x70\x07\x7B\x12\xA9\x1D"
23097 "\xB4\x4B\xE2\x56\xED\x84\x1B\x8F"
23098 "\x26\xBD\x31\xC8\x5F\xF6\x6A\x01"
23099 "\x98\x0C\xA3\x3A\xD1\x45\xDC\x73"
23100 "\x0A\x7E\x15\xAC\x20\xB7\x4E\xE5"
23101 "\x59\xF0\x87\x1E\x92\x29\xC0\x34"
23102 "\xCB\x62\xF9\x6D\x04\x9B\x0F\xA6"
23103 "\x3D\xD4\x48\xDF\x76\x0D\x81\x18"
23104 "\xAF\x23\xBA\x51\xE8\x5C\xF3\x8A"
23105 "\x21\x95\x2C\xC3\x37\xCE\x65\xFC"
23106 "\x70\x07\x9E\x12\xA9\x40\xD7\x4B"
23107 "\xE2\x79\x10\x84\x1B\xB2\x26\xBD"
23108 "\x54\xEB\x5F\xF6\x8D\x01\x98\x2F"
23109 "\xC6\x3A\xD1\x68\xFF\x73\x0A\xA1"
23110 "\x15\xAC\x43\xDA\x4E\xE5\x7C\x13"
23111 "\x87\x1E\xB5\x29\xC0\x57\xEE\x62"
23112 "\xF9\x90\x04\x9B\x32\xC9\x3D\xD4"
23113 "\x6B\x02\x76\x0D\xA4\x18\xAF\x46"
23114 "\xDD\x51\xE8\x7F\x16\x8A\x21\xB8"
23115 "\x2C\xC3\x5A\xF1\x65\xFC\x93\x07"
23116 "\x9E\x35\xCC\x40\xD7\x6E\x05\x79"
23117 "\x10\xA7\x1B\xB2\x49\xE0\x54\xEB"
23118 "\x82\x19\x8D\x24\xBB\x2F\xC6\x5D"
23119 "\xF4\x68\xFF\x96\x0A\xA1\x38\xCF"
23120 "\x43\xDA\x71\x08\x7C\x13\xAA\x1E"
23121 "\xB5\x4C\xE3\x57\xEE\x85\x1C\x90"
23122 "\x27\xBE\x32\xC9\x60\xF7\x6B\x02"
23123 "\x99\x0D\xA4\x3B\xD2\x46\xDD\x74"
23124 "\x0B\x7F\x16\xAD\x21\xB8\x4F\xE6"
23125 "\x5A\xF1\x88\x1F\x93\x2A\xC1\x35"
23126 "\xCC\x63\xFA\x6E\x05\x9C\x10\xA7"
23127 "\x3E\xD5\x49\xE0\x77\x0E\x82\x19"
23128 "\xB0\x24\xBB\x52\xE9\x5D\xF4\x8B"
23129 "\x22\x96\x2D\xC4\x38\xCF\x66\xFD"
23130 "\x71\x08\x9F\x13\xAA\x41\xD8\x4C"
23131 "\xE3\x7A\x11\x85\x1C\xB3\x27\xBE"
23132 "\x55\xEC\x60\xF7\x8E\x02\x99\x30"
23133 "\xC7\x3B\xD2\x69\x00\x74\x0B\xA2"
23134 "\x16\xAD\x44\xDB\x4F\xE6\x7D\x14"
23135 "\x88\x1F\xB6\x2A\xC1\x58\xEF\x63"
23136 "\xFA\x91\x05\x9C\x33\xCA\x3E\xD5"
23137 "\x6C\x03\x77\x0E\xA5\x19\xB0\x47"
23138 "\xDE\x52\xE9\x80\x17\x8B\x22\xB9"
23139 "\x2D\xC4\x5B\xF2\x66\xFD\x94\x08"
23140 "\x9F\x36\xCD\x41\xD8\x6F\x06\x7A"
23141 "\x11\xA8\x1C\xB3\x4A\xE1\x55\xEC"
23142 "\x83\x1A\x8E\x25\xBC\x30\xC7\x5E"
23143 "\xF5\x69\x00\x97\x0B\xA2\x39\xD0"
23144 "\x44\xDB\x72\x09\x7D\x14\xAB\x1F"
23145 "\xB6\x4D\xE4\x58\xEF\x86\x1D\x91"
23146 "\x28\xBF\x33\xCA\x61\xF8\x6C\x03"
23147 "\x9A\x0E\xA5\x3C\xD3\x47\xDE\x75"
23148 "\x0C\x80\x17\xAE\x22\xB9\x50\xE7"
23149 "\x5B\xF2\x89\x20\x94\x2B\xC2\x36"
23150 "\xCD\x64\xFB\x6F\x06\x9D\x11\xA8"
23151 "\x3F\xD6\x4A\xE1\x78\x0F\x83\x1A"
23152 "\xB1\x25\xBC\x53\xEA\x5E\xF5\x8C"
23153 "\x00\x97\x2E\xC5\x39\xD0\x67\xFE"
23154 "\x72\x09\xA0\x14\xAB\x42\xD9\x4D"
23155 "\xE4\x7B\x12",
23156 .rlen = 1011,
22047 .also_non_np = 1, 23157 .also_non_np = 1,
22048 .np = 2, 23158 .np = 2,
22049 .tap = { 499 - 16, 16 }, 23159 .tap = { 1011 - 16, 16 },
22050 }, { /* Generated with Crypto++ */ 23160 }, { /* Generated with Crypto++ */
22051 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9" 23161 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
22052 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A" 23162 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
@@ -22116,8 +23226,72 @@ static struct cipher_testvec camellia_ctr_dec_tv_template[] = {
22116 "\xB4\x3A\x5F\x19\xCF\x42\x1B\x22" 23226 "\xB4\x3A\x5F\x19\xCF\x42\x1B\x22"
22117 "\x0B\x2D\x7B\xF1\xC5\x43\xF7\x5E" 23227 "\x0B\x2D\x7B\xF1\xC5\x43\xF7\x5E"
22118 "\x12\xA8\x01\x64\x16\x0B\x26\x5A" 23228 "\x12\xA8\x01\x64\x16\x0B\x26\x5A"
22119 "\x0C\x95\x0F\x40\xC5\x5A\x06\x7C", 23229 "\x0C\x95\x0F\x40\xC5\x5A\x06\x7C"
22120 .ilen = 496, 23230 "\xCF\xF5\xD5\xB7\x7A\x34\x23\xB6"
23231 "\xAA\x9E\xA8\x98\xA2\xF8\x3D\xD3"
23232 "\x3F\x23\x69\x63\x56\x96\x45\xD6"
23233 "\x74\x23\x1D\x5C\x63\xCC\xD8\x78"
23234 "\x16\xE2\x9C\xD2\x80\x02\xF2\x28"
23235 "\x69\x2F\xC4\xA8\x15\x15\x24\x3B"
23236 "\xCB\xF0\x14\xE4\x62\xC8\xF3\xD1"
23237 "\x03\x58\x1B\x33\x77\x74\x1F\xB4"
23238 "\x07\x86\xF2\x21\xB7\x41\xAE\xBF"
23239 "\x25\xC2\xFF\x51\xEF\xEA\xCE\xC4"
23240 "\x5F\xD9\xB8\x18\x6A\xF0\x0F\x0D"
23241 "\xF8\x04\xBB\x6D\x62\x33\x87\x26"
23242 "\x4F\x2F\x14\x6E\xDC\xDB\x66\x09"
23243 "\x2A\xEF\x7D\x84\x10\xAC\x82\x5E"
23244 "\xD2\xE4\xAD\x74\x7A\x6D\xCC\x3A"
23245 "\x7B\x62\xD8\xD6\x07\x2D\xF7\xDF"
23246 "\x9B\xB3\x82\xCF\x9C\x1D\x76\x5C"
23247 "\xAC\x7B\xD4\x9B\x45\xA1\x64\x11"
23248 "\x66\xF1\xA7\x0B\xF9\xDD\x00\xDD"
23249 "\xA4\x45\x3D\x3E\x03\xC9\x2E\xCB"
23250 "\xC3\x14\x84\x72\xFD\x41\xDC\xBD"
23251 "\x75\xBE\xA8\xE5\x16\x48\x64\x39"
23252 "\xCA\xF3\xE6\xDC\x25\x24\xF1\x6D"
23253 "\xB2\x8D\xC5\x38\x54\xD3\x5D\x6D"
23254 "\x0B\x29\x10\x15\x0E\x13\x3B\xAC"
23255 "\x7E\xCC\x9E\x3E\x18\x48\xA6\x02"
23256 "\xEF\x03\xB2\x2E\xE3\xD2\x70\x21"
23257 "\xB4\x19\x26\xBE\x3A\x3D\x05\xE0"
23258 "\xF8\x09\xAF\xE4\x31\x26\x92\x2F"
23259 "\x8F\x55\xAC\xED\x0B\xB2\xA5\x34"
23260 "\xBE\x50\xB1\x02\x22\x96\xE3\x40"
23261 "\x7B\x70\x50\x6E\x3B\xD5\xE5\xA0"
23262 "\x8E\xA2\xAD\x14\x60\x5C\x7A\x2B"
23263 "\x3D\x1B\x7F\xC1\xC0\x2C\x56\x36"
23264 "\xD2\x0A\x32\x06\x97\x34\xB9\xF4"
23265 "\x6F\x9F\x7E\x80\xD0\x9D\xF7\x6A"
23266 "\x21\xC1\xA2\x6A\xB1\x96\x5B\x4D"
23267 "\x7A\x15\x6C\xC4\x4E\xB8\xE0\x9E"
23268 "\x6C\x50\xF3\x9C\xC9\xB5\x23\xB7"
23269 "\xF1\xD4\x29\x4A\x23\xC4\xAD\x1E"
23270 "\x2C\x07\xD2\x43\x5F\x57\x93\xCA"
23271 "\x85\xF9\x9F\xAD\x4C\xF1\xE4\xB1"
23272 "\x1A\x8E\x28\xA4\xB6\x52\x77\x7E"
23273 "\x68\xC6\x47\xB9\x76\xCC\x65\x5F"
23274 "\x0B\xF9\x67\x93\xD8\x0E\x9A\x37"
23275 "\x5F\x41\xED\x64\x6C\xAD\x5F\xED"
23276 "\x3F\x8D\xFB\x8E\x1E\xA0\xE4\x1F"
23277 "\xC2\xC7\xED\x18\x43\xE1\x20\x86"
23278 "\x5D\xBC\x30\x70\x22\xA1\xDC\x53"
23279 "\x10\x3A\x8D\x47\x82\xCD\x7F\x59"
23280 "\x03\x2D\x6D\xF5\xE7\x79\xD4\x07"
23281 "\x68\x2A\xA5\x42\x19\x4D\xAF\xF5"
23282 "\xED\x47\x83\xBC\x5F\x62\x84\xDA"
23283 "\xDA\x41\xFF\xB0\x1D\x64\xA3\xC8"
23284 "\xBD\x4E\xE0\xB8\x7F\xEE\x55\x0A"
23285 "\x4E\x61\xB2\x51\xF6\x9C\x95\xF6"
23286 "\x92\xBB\xF6\xC5\xF0\x09\x86\xDE"
23287 "\x37\x9E\x29\xF9\x2A\x18\x73\x0D"
23288 "\xDC\x7E\x6B\x7B\x1B\x43\x8C\xEA"
23289 "\x13\xC8\x1A\x47\x0A\x2D\x6D\x56"
23290 "\xCD\xD2\xE7\x53\x1A\xAB\x1C\x3C"
23291 "\xC5\x9B\x03\x70\x29\x2A\x49\x09"
23292 "\x67\xA1\xEA\xD6\x3A\x5B\xBF\x71"
23293 "\x1D\x48\x64\x6C\xFB\xC0\x9E\x36",
23294 .ilen = 1008,
22121 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31" 23295 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
22122 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3" 23296 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
22123 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15" 23297 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
@@ -22179,8 +23353,72 @@ static struct cipher_testvec camellia_ctr_dec_tv_template[] = {
22179 "\x86\x1D\xB4\x28\xBF\x56\xED\x61" 23353 "\x86\x1D\xB4\x28\xBF\x56\xED\x61"
22180 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3" 23354 "\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
22181 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45" 23355 "\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
22182 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7", 23356 "\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
22183 .rlen = 496, 23357 "\x2B\xC2\x59\xF0\x64\xFB\x92\x06"
23358 "\x9D\x34\xCB\x3F\xD6\x6D\x04\x78"
23359 "\x0F\xA6\x1A\xB1\x48\xDF\x53\xEA"
23360 "\x81\x18\x8C\x23\xBA\x2E\xC5\x5C"
23361 "\xF3\x67\xFE\x95\x09\xA0\x37\xCE"
23362 "\x42\xD9\x70\x07\x7B\x12\xA9\x1D"
23363 "\xB4\x4B\xE2\x56\xED\x84\x1B\x8F"
23364 "\x26\xBD\x31\xC8\x5F\xF6\x6A\x01"
23365 "\x98\x0C\xA3\x3A\xD1\x45\xDC\x73"
23366 "\x0A\x7E\x15\xAC\x20\xB7\x4E\xE5"
23367 "\x59\xF0\x87\x1E\x92\x29\xC0\x34"
23368 "\xCB\x62\xF9\x6D\x04\x9B\x0F\xA6"
23369 "\x3D\xD4\x48\xDF\x76\x0D\x81\x18"
23370 "\xAF\x23\xBA\x51\xE8\x5C\xF3\x8A"
23371 "\x21\x95\x2C\xC3\x37\xCE\x65\xFC"
23372 "\x70\x07\x9E\x12\xA9\x40\xD7\x4B"
23373 "\xE2\x79\x10\x84\x1B\xB2\x26\xBD"
23374 "\x54\xEB\x5F\xF6\x8D\x01\x98\x2F"
23375 "\xC6\x3A\xD1\x68\xFF\x73\x0A\xA1"
23376 "\x15\xAC\x43\xDA\x4E\xE5\x7C\x13"
23377 "\x87\x1E\xB5\x29\xC0\x57\xEE\x62"
23378 "\xF9\x90\x04\x9B\x32\xC9\x3D\xD4"
23379 "\x6B\x02\x76\x0D\xA4\x18\xAF\x46"
23380 "\xDD\x51\xE8\x7F\x16\x8A\x21\xB8"
23381 "\x2C\xC3\x5A\xF1\x65\xFC\x93\x07"
23382 "\x9E\x35\xCC\x40\xD7\x6E\x05\x79"
23383 "\x10\xA7\x1B\xB2\x49\xE0\x54\xEB"
23384 "\x82\x19\x8D\x24\xBB\x2F\xC6\x5D"
23385 "\xF4\x68\xFF\x96\x0A\xA1\x38\xCF"
23386 "\x43\xDA\x71\x08\x7C\x13\xAA\x1E"
23387 "\xB5\x4C\xE3\x57\xEE\x85\x1C\x90"
23388 "\x27\xBE\x32\xC9\x60\xF7\x6B\x02"
23389 "\x99\x0D\xA4\x3B\xD2\x46\xDD\x74"
23390 "\x0B\x7F\x16\xAD\x21\xB8\x4F\xE6"
23391 "\x5A\xF1\x88\x1F\x93\x2A\xC1\x35"
23392 "\xCC\x63\xFA\x6E\x05\x9C\x10\xA7"
23393 "\x3E\xD5\x49\xE0\x77\x0E\x82\x19"
23394 "\xB0\x24\xBB\x52\xE9\x5D\xF4\x8B"
23395 "\x22\x96\x2D\xC4\x38\xCF\x66\xFD"
23396 "\x71\x08\x9F\x13\xAA\x41\xD8\x4C"
23397 "\xE3\x7A\x11\x85\x1C\xB3\x27\xBE"
23398 "\x55\xEC\x60\xF7\x8E\x02\x99\x30"
23399 "\xC7\x3B\xD2\x69\x00\x74\x0B\xA2"
23400 "\x16\xAD\x44\xDB\x4F\xE6\x7D\x14"
23401 "\x88\x1F\xB6\x2A\xC1\x58\xEF\x63"
23402 "\xFA\x91\x05\x9C\x33\xCA\x3E\xD5"
23403 "\x6C\x03\x77\x0E\xA5\x19\xB0\x47"
23404 "\xDE\x52\xE9\x80\x17\x8B\x22\xB9"
23405 "\x2D\xC4\x5B\xF2\x66\xFD\x94\x08"
23406 "\x9F\x36\xCD\x41\xD8\x6F\x06\x7A"
23407 "\x11\xA8\x1C\xB3\x4A\xE1\x55\xEC"
23408 "\x83\x1A\x8E\x25\xBC\x30\xC7\x5E"
23409 "\xF5\x69\x00\x97\x0B\xA2\x39\xD0"
23410 "\x44\xDB\x72\x09\x7D\x14\xAB\x1F"
23411 "\xB6\x4D\xE4\x58\xEF\x86\x1D\x91"
23412 "\x28\xBF\x33\xCA\x61\xF8\x6C\x03"
23413 "\x9A\x0E\xA5\x3C\xD3\x47\xDE\x75"
23414 "\x0C\x80\x17\xAE\x22\xB9\x50\xE7"
23415 "\x5B\xF2\x89\x20\x94\x2B\xC2\x36"
23416 "\xCD\x64\xFB\x6F\x06\x9D\x11\xA8"
23417 "\x3F\xD6\x4A\xE1\x78\x0F\x83\x1A"
23418 "\xB1\x25\xBC\x53\xEA\x5E\xF5\x8C"
23419 "\x00\x97\x2E\xC5\x39\xD0\x67\xFE"
23420 "\x72\x09\xA0\x14\xAB\x42\xD9\x4D",
23421 .rlen = 1008,
22184 }, 23422 },
22185}; 23423};
22186 23424