aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-03-21 16:20:43 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-21 16:20:43 -0400
commitb8716614a7cc2fc15ea2a518edd04755fb08d922 (patch)
tree2a8a5d04066b2bd589ba2ebbeb228e2a6a178ec9 /crypto
parent31f6765266417c0d99f0e922fe82848a7c9c2ae9 (diff)
parent2dc9b5dbdef09840de852a4f0cc6a9c9eece7220 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto update from Herbert Xu: "* sha512 bug fixes (already in your tree). * SHA224/SHA384 AEAD support in caam. * X86-64 optimised version of Camellia. * Tegra AES support. * Bulk algorithm registration interface to make driver registration easier. * padata race fixes. * Misc fixes." * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (31 commits) padata: Fix race on sequence number wrap padata: Fix race in the serialization path crypto: camellia - add assembler implementation for x86_64 crypto: camellia - rename camellia.c to camellia_generic.c crypto: camellia - fix checkpatch warnings crypto: camellia - rename camellia module to camellia_generic crypto: tcrypt - add more camellia tests crypto: testmgr - add more camellia test vectors crypto: camellia - simplify key setup and CAMELLIA_ROUNDSM macro crypto: twofish-x86_64/i586 - set alignmask to zero crypto: blowfish-x86_64 - set alignmask to zero crypto: serpent-sse2 - combine ablk_*_init functions crypto: blowfish-x86_64 - use crypto_[un]register_algs crypto: twofish-x86_64-3way - use crypto_[un]register_algs crypto: serpent-sse2 - use crypto_[un]register_algs crypto: serpent-sse2 - remove dead code from serpent_sse2_glue.c::serpent_sse2_init() crypto: twofish-x86 - Remove dead code from twofish_glue_3way.c::init() crypto: In crypto_add_alg(), 'exact' wants to be initialized to 0 crypto: caam - fix gcc 4.6 warning crypto: Add bulk algorithm registration interface ...
Diffstat (limited to 'crypto')
-rw-r--r--crypto/Kconfig18
-rw-r--r--crypto/Makefile2
-rw-r--r--crypto/algapi.c35
-rw-r--r--crypto/camellia_generic.c (renamed from crypto/camellia.c)104
-rw-r--r--crypto/crypto_user.c2
-rw-r--r--crypto/tcrypt.c12
-rw-r--r--crypto/testmgr.c45
-rw-r--r--crypto/testmgr.h1383
8 files changed, 1536 insertions, 65 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig
index e6cfe1a25137..6318edd6a457 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -654,6 +654,24 @@ config CRYPTO_CAMELLIA
654 See also: 654 See also:
655 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 655 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
656 656
657config CRYPTO_CAMELLIA_X86_64
658 tristate "Camellia cipher algorithm (x86_64)"
659 depends on (X86 || UML_X86) && 64BIT
660 depends on CRYPTO
661 select CRYPTO_ALGAPI
662 select CRYPTO_LRW
663 select CRYPTO_XTS
664 help
665 Camellia cipher algorithm module (x86_64).
666
667 Camellia is a symmetric key block cipher developed jointly
668 at NTT and Mitsubishi Electric Corporation.
669
670 The Camellia specifies three key sizes: 128, 192 and 256 bits.
671
672 See also:
673 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
674
657config CRYPTO_CAST5 675config CRYPTO_CAST5
658 tristate "CAST5 (CAST-128) cipher algorithm" 676 tristate "CAST5 (CAST-128) cipher algorithm"
659 select CRYPTO_ALGAPI 677 select CRYPTO_ALGAPI
diff --git a/crypto/Makefile b/crypto/Makefile
index f638063f4ea9..30f33d675330 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -67,7 +67,7 @@ obj-$(CONFIG_CRYPTO_TWOFISH) += twofish_generic.o
67obj-$(CONFIG_CRYPTO_TWOFISH_COMMON) += twofish_common.o 67obj-$(CONFIG_CRYPTO_TWOFISH_COMMON) += twofish_common.o
68obj-$(CONFIG_CRYPTO_SERPENT) += serpent_generic.o 68obj-$(CONFIG_CRYPTO_SERPENT) += serpent_generic.o
69obj-$(CONFIG_CRYPTO_AES) += aes_generic.o 69obj-$(CONFIG_CRYPTO_AES) += aes_generic.o
70obj-$(CONFIG_CRYPTO_CAMELLIA) += camellia.o 70obj-$(CONFIG_CRYPTO_CAMELLIA) += camellia_generic.o
71obj-$(CONFIG_CRYPTO_CAST5) += cast5.o 71obj-$(CONFIG_CRYPTO_CAST5) += cast5.o
72obj-$(CONFIG_CRYPTO_CAST6) += cast6.o 72obj-$(CONFIG_CRYPTO_CAST6) += cast6.o
73obj-$(CONFIG_CRYPTO_ARC4) += arc4.o 73obj-$(CONFIG_CRYPTO_ARC4) += arc4.o
diff --git a/crypto/algapi.c b/crypto/algapi.c
index 9d4a9fe913f8..056571b85445 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -405,6 +405,41 @@ int crypto_unregister_alg(struct crypto_alg *alg)
405} 405}
406EXPORT_SYMBOL_GPL(crypto_unregister_alg); 406EXPORT_SYMBOL_GPL(crypto_unregister_alg);
407 407
408int crypto_register_algs(struct crypto_alg *algs, int count)
409{
410 int i, ret;
411
412 for (i = 0; i < count; i++) {
413 ret = crypto_register_alg(&algs[i]);
414 if (ret)
415 goto err;
416 }
417
418 return 0;
419
420err:
421 for (--i; i >= 0; --i)
422 crypto_unregister_alg(&algs[i]);
423
424 return ret;
425}
426EXPORT_SYMBOL_GPL(crypto_register_algs);
427
428int crypto_unregister_algs(struct crypto_alg *algs, int count)
429{
430 int i, ret;
431
432 for (i = 0; i < count; i++) {
433 ret = crypto_unregister_alg(&algs[i]);
434 if (ret)
435 pr_err("Failed to unregister %s %s: %d\n",
436 algs[i].cra_driver_name, algs[i].cra_name, ret);
437 }
438
439 return 0;
440}
441EXPORT_SYMBOL_GPL(crypto_unregister_algs);
442
408int crypto_register_template(struct crypto_template *tmpl) 443int crypto_register_template(struct crypto_template *tmpl)
409{ 444{
410 struct crypto_template *q; 445 struct crypto_template *q;
diff --git a/crypto/camellia.c b/crypto/camellia_generic.c
index 64cff46ea5e4..f7aaaaf86982 100644
--- a/crypto/camellia.c
+++ b/crypto/camellia_generic.c
@@ -337,43 +337,40 @@ static const u32 camellia_sp4404[256] = {
337/* 337/*
338 * macros 338 * macros
339 */ 339 */
340#define ROLDQ(ll, lr, rl, rr, w0, w1, bits) \ 340#define ROLDQ(ll, lr, rl, rr, w0, w1, bits) ({ \
341 do { \
342 w0 = ll; \ 341 w0 = ll; \
343 ll = (ll << bits) + (lr >> (32 - bits)); \ 342 ll = (ll << bits) + (lr >> (32 - bits)); \
344 lr = (lr << bits) + (rl >> (32 - bits)); \ 343 lr = (lr << bits) + (rl >> (32 - bits)); \
345 rl = (rl << bits) + (rr >> (32 - bits)); \ 344 rl = (rl << bits) + (rr >> (32 - bits)); \
346 rr = (rr << bits) + (w0 >> (32 - bits)); \ 345 rr = (rr << bits) + (w0 >> (32 - bits)); \
347 } while (0) 346})
348 347
349#define ROLDQo32(ll, lr, rl, rr, w0, w1, bits) \ 348#define ROLDQo32(ll, lr, rl, rr, w0, w1, bits) ({ \
350 do { \
351 w0 = ll; \ 349 w0 = ll; \
352 w1 = lr; \ 350 w1 = lr; \
353 ll = (lr << (bits - 32)) + (rl >> (64 - bits)); \ 351 ll = (lr << (bits - 32)) + (rl >> (64 - bits)); \
354 lr = (rl << (bits - 32)) + (rr >> (64 - bits)); \ 352 lr = (rl << (bits - 32)) + (rr >> (64 - bits)); \
355 rl = (rr << (bits - 32)) + (w0 >> (64 - bits)); \ 353 rl = (rr << (bits - 32)) + (w0 >> (64 - bits)); \
356 rr = (w0 << (bits - 32)) + (w1 >> (64 - bits)); \ 354 rr = (w0 << (bits - 32)) + (w1 >> (64 - bits)); \
357 } while (0) 355})
358 356
359#define CAMELLIA_F(xl, xr, kl, kr, yl, yr, il, ir, t0, t1) \ 357#define CAMELLIA_F(xl, xr, kl, kr, yl, yr, il, ir, t0, t1) ({ \
360 do { \
361 il = xl ^ kl; \ 358 il = xl ^ kl; \
362 ir = xr ^ kr; \ 359 ir = xr ^ kr; \
363 t0 = il >> 16; \ 360 t0 = il >> 16; \
364 t1 = ir >> 16; \ 361 t1 = ir >> 16; \
365 yl = camellia_sp1110[(u8)(ir )] \ 362 yl = camellia_sp1110[(u8)(ir)] \
366 ^ camellia_sp0222[ (t1 >> 8)] \ 363 ^ camellia_sp0222[(u8)(t1 >> 8)] \
367 ^ camellia_sp3033[(u8)(t1 )] \ 364 ^ camellia_sp3033[(u8)(t1)] \
368 ^ camellia_sp4404[(u8)(ir >> 8)]; \ 365 ^ camellia_sp4404[(u8)(ir >> 8)]; \
369 yr = camellia_sp1110[ (t0 >> 8)] \ 366 yr = camellia_sp1110[(u8)(t0 >> 8)] \
370 ^ camellia_sp0222[(u8)(t0 )] \ 367 ^ camellia_sp0222[(u8)(t0)] \
371 ^ camellia_sp3033[(u8)(il >> 8)] \ 368 ^ camellia_sp3033[(u8)(il >> 8)] \
372 ^ camellia_sp4404[(u8)(il )]; \ 369 ^ camellia_sp4404[(u8)(il)]; \
373 yl ^= yr; \ 370 yl ^= yr; \
374 yr = ror32(yr, 8); \ 371 yr = ror32(yr, 8); \
375 yr ^= yl; \ 372 yr ^= yl; \
376 } while (0) 373})
377 374
378#define SUBKEY_L(INDEX) (subkey[(INDEX)*2]) 375#define SUBKEY_L(INDEX) (subkey[(INDEX)*2])
379#define SUBKEY_R(INDEX) (subkey[(INDEX)*2 + 1]) 376#define SUBKEY_R(INDEX) (subkey[(INDEX)*2 + 1])
@@ -382,7 +379,6 @@ static void camellia_setup_tail(u32 *subkey, u32 *subL, u32 *subR, int max)
382{ 379{
383 u32 dw, tl, tr; 380 u32 dw, tl, tr;
384 u32 kw4l, kw4r; 381 u32 kw4l, kw4r;
385 int i;
386 382
387 /* absorb kw2 to other subkeys */ 383 /* absorb kw2 to other subkeys */
388 /* round 2 */ 384 /* round 2 */
@@ -557,24 +553,6 @@ static void camellia_setup_tail(u32 *subkey, u32 *subL, u32 *subR, int max)
557 SUBKEY_L(32) = subL[32] ^ subL[31]; /* kw3 */ 553 SUBKEY_L(32) = subL[32] ^ subL[31]; /* kw3 */
558 SUBKEY_R(32) = subR[32] ^ subR[31]; 554 SUBKEY_R(32) = subR[32] ^ subR[31];
559 } 555 }
560
561 /* apply the inverse of the last half of P-function */
562 i = 2;
563 do {
564 dw = SUBKEY_L(i + 0) ^ SUBKEY_R(i + 0); dw = rol32(dw, 8);/* round 1 */
565 SUBKEY_R(i + 0) = SUBKEY_L(i + 0) ^ dw; SUBKEY_L(i + 0) = dw;
566 dw = SUBKEY_L(i + 1) ^ SUBKEY_R(i + 1); dw = rol32(dw, 8);/* round 2 */
567 SUBKEY_R(i + 1) = SUBKEY_L(i + 1) ^ dw; SUBKEY_L(i + 1) = dw;
568 dw = SUBKEY_L(i + 2) ^ SUBKEY_R(i + 2); dw = rol32(dw, 8);/* round 3 */
569 SUBKEY_R(i + 2) = SUBKEY_L(i + 2) ^ dw; SUBKEY_L(i + 2) = dw;
570 dw = SUBKEY_L(i + 3) ^ SUBKEY_R(i + 3); dw = rol32(dw, 8);/* round 4 */
571 SUBKEY_R(i + 3) = SUBKEY_L(i + 3) ^ dw; SUBKEY_L(i + 3) = dw;
572 dw = SUBKEY_L(i + 4) ^ SUBKEY_R(i + 4); dw = rol32(dw, 8);/* round 5 */
573 SUBKEY_R(i + 4) = SUBKEY_L(i + 4) ^ dw; SUBKEY_L(i + 4) = dw;
574 dw = SUBKEY_L(i + 5) ^ SUBKEY_R(i + 5); dw = rol32(dw, 8);/* round 6 */
575 SUBKEY_R(i + 5) = SUBKEY_L(i + 5) ^ dw; SUBKEY_L(i + 5) = dw;
576 i += 8;
577 } while (i < max);
578} 556}
579 557
580static void camellia_setup128(const unsigned char *key, u32 *subkey) 558static void camellia_setup128(const unsigned char *key, u32 *subkey)
@@ -851,8 +829,7 @@ static void camellia_setup192(const unsigned char *key, u32 *subkey)
851/* 829/*
852 * Encrypt/decrypt 830 * Encrypt/decrypt
853 */ 831 */
854#define CAMELLIA_FLS(ll, lr, rl, rr, kll, klr, krl, krr, t0, t1, t2, t3) \ 832#define CAMELLIA_FLS(ll, lr, rl, rr, kll, klr, krl, krr, t0, t1, t2, t3) ({ \
855 do { \
856 t0 = kll; \ 833 t0 = kll; \
857 t2 = krr; \ 834 t2 = krr; \
858 t0 &= ll; \ 835 t0 &= ll; \
@@ -865,23 +842,23 @@ static void camellia_setup192(const unsigned char *key, u32 *subkey)
865 t1 |= lr; \ 842 t1 |= lr; \
866 ll ^= t1; \ 843 ll ^= t1; \
867 rr ^= rol32(t3, 1); \ 844 rr ^= rol32(t3, 1); \
868 } while (0) 845})
869 846
870#define CAMELLIA_ROUNDSM(xl, xr, kl, kr, yl, yr, il, ir) \ 847#define CAMELLIA_ROUNDSM(xl, xr, kl, kr, yl, yr, il, ir) ({ \
871 do { \ 848 yl ^= kl; \
849 yr ^= kr; \
872 ir = camellia_sp1110[(u8)xr]; \ 850 ir = camellia_sp1110[(u8)xr]; \
873 il = camellia_sp1110[ (xl >> 24)]; \ 851 il = camellia_sp1110[(u8)(xl >> 24)]; \
874 ir ^= camellia_sp0222[ (xr >> 24)]; \ 852 ir ^= camellia_sp0222[(u8)(xr >> 24)]; \
875 il ^= camellia_sp0222[(u8)(xl >> 16)]; \ 853 il ^= camellia_sp0222[(u8)(xl >> 16)]; \
876 ir ^= camellia_sp3033[(u8)(xr >> 16)]; \ 854 ir ^= camellia_sp3033[(u8)(xr >> 16)]; \
877 il ^= camellia_sp3033[(u8)(xl >> 8)]; \ 855 il ^= camellia_sp3033[(u8)(xl >> 8)]; \
878 ir ^= camellia_sp4404[(u8)(xr >> 8)]; \ 856 ir ^= camellia_sp4404[(u8)(xr >> 8)]; \
879 il ^= camellia_sp4404[(u8)xl]; \ 857 il ^= camellia_sp4404[(u8)xl]; \
880 il ^= kl; \ 858 ir ^= il; \
881 ir ^= il ^ kr; \
882 yl ^= ir; \ 859 yl ^= ir; \
883 yr ^= ror32(il, 8) ^ ir; \ 860 yr ^= ror32(il, 8) ^ ir; \
884 } while (0) 861})
885 862
886/* max = 24: 128bit encrypt, max = 32: 256bit encrypt */ 863/* max = 24: 128bit encrypt, max = 32: 256bit encrypt */
887static void camellia_do_encrypt(const u32 *subkey, u32 *io, unsigned max) 864static void camellia_do_encrypt(const u32 *subkey, u32 *io, unsigned max)
@@ -893,7 +870,7 @@ static void camellia_do_encrypt(const u32 *subkey, u32 *io, unsigned max)
893 io[1] ^= SUBKEY_R(0); 870 io[1] ^= SUBKEY_R(0);
894 871
895 /* main iteration */ 872 /* main iteration */
896#define ROUNDS(i) do { \ 873#define ROUNDS(i) ({ \
897 CAMELLIA_ROUNDSM(io[0], io[1], \ 874 CAMELLIA_ROUNDSM(io[0], io[1], \
898 SUBKEY_L(i + 2), SUBKEY_R(i + 2), \ 875 SUBKEY_L(i + 2), SUBKEY_R(i + 2), \
899 io[2], io[3], il, ir); \ 876 io[2], io[3], il, ir); \
@@ -912,13 +889,13 @@ static void camellia_do_encrypt(const u32 *subkey, u32 *io, unsigned max)
912 CAMELLIA_ROUNDSM(io[2], io[3], \ 889 CAMELLIA_ROUNDSM(io[2], io[3], \
913 SUBKEY_L(i + 7), SUBKEY_R(i + 7), \ 890 SUBKEY_L(i + 7), SUBKEY_R(i + 7), \
914 io[0], io[1], il, ir); \ 891 io[0], io[1], il, ir); \
915} while (0) 892})
916#define FLS(i) do { \ 893#define FLS(i) ({ \
917 CAMELLIA_FLS(io[0], io[1], io[2], io[3], \ 894 CAMELLIA_FLS(io[0], io[1], io[2], io[3], \
918 SUBKEY_L(i + 0), SUBKEY_R(i + 0), \ 895 SUBKEY_L(i + 0), SUBKEY_R(i + 0), \
919 SUBKEY_L(i + 1), SUBKEY_R(i + 1), \ 896 SUBKEY_L(i + 1), SUBKEY_R(i + 1), \
920 t0, t1, il, ir); \ 897 t0, t1, il, ir); \
921} while (0) 898})
922 899
923 ROUNDS(0); 900 ROUNDS(0);
924 FLS(8); 901 FLS(8);
@@ -948,7 +925,7 @@ static void camellia_do_decrypt(const u32 *subkey, u32 *io, unsigned i)
948 io[1] ^= SUBKEY_R(i); 925 io[1] ^= SUBKEY_R(i);
949 926
950 /* main iteration */ 927 /* main iteration */
951#define ROUNDS(i) do { \ 928#define ROUNDS(i) ({ \
952 CAMELLIA_ROUNDSM(io[0], io[1], \ 929 CAMELLIA_ROUNDSM(io[0], io[1], \
953 SUBKEY_L(i + 7), SUBKEY_R(i + 7), \ 930 SUBKEY_L(i + 7), SUBKEY_R(i + 7), \
954 io[2], io[3], il, ir); \ 931 io[2], io[3], il, ir); \
@@ -967,13 +944,13 @@ static void camellia_do_decrypt(const u32 *subkey, u32 *io, unsigned i)
967 CAMELLIA_ROUNDSM(io[2], io[3], \ 944 CAMELLIA_ROUNDSM(io[2], io[3], \
968 SUBKEY_L(i + 2), SUBKEY_R(i + 2), \ 945 SUBKEY_L(i + 2), SUBKEY_R(i + 2), \
969 io[0], io[1], il, ir); \ 946 io[0], io[1], il, ir); \
970} while (0) 947})
971#define FLS(i) do { \ 948#define FLS(i) ({ \
972 CAMELLIA_FLS(io[0], io[1], io[2], io[3], \ 949 CAMELLIA_FLS(io[0], io[1], io[2], io[3], \
973 SUBKEY_L(i + 1), SUBKEY_R(i + 1), \ 950 SUBKEY_L(i + 1), SUBKEY_R(i + 1), \
974 SUBKEY_L(i + 0), SUBKEY_R(i + 0), \ 951 SUBKEY_L(i + 0), SUBKEY_R(i + 0), \
975 t0, t1, il, ir); \ 952 t0, t1, il, ir); \
976} while (0) 953})
977 954
978 if (i == 32) { 955 if (i == 32) {
979 ROUNDS(24); 956 ROUNDS(24);
@@ -1035,6 +1012,7 @@ static void camellia_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
1035 const struct camellia_ctx *cctx = crypto_tfm_ctx(tfm); 1012 const struct camellia_ctx *cctx = crypto_tfm_ctx(tfm);
1036 const __be32 *src = (const __be32 *)in; 1013 const __be32 *src = (const __be32 *)in;
1037 __be32 *dst = (__be32 *)out; 1014 __be32 *dst = (__be32 *)out;
1015 unsigned int max;
1038 1016
1039 u32 tmp[4]; 1017 u32 tmp[4];
1040 1018
@@ -1043,9 +1021,12 @@ static void camellia_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
1043 tmp[2] = be32_to_cpu(src[2]); 1021 tmp[2] = be32_to_cpu(src[2]);
1044 tmp[3] = be32_to_cpu(src[3]); 1022 tmp[3] = be32_to_cpu(src[3]);
1045 1023
1046 camellia_do_encrypt(cctx->key_table, tmp, 1024 if (cctx->key_length == 16)
1047 cctx->key_length == 16 ? 24 : 32 /* for key lengths of 24 and 32 */ 1025 max = 24;
1048 ); 1026 else
1027 max = 32; /* for key lengths of 24 and 32 */
1028
1029 camellia_do_encrypt(cctx->key_table, tmp, max);
1049 1030
1050 /* do_encrypt returns 0,1 swapped with 2,3 */ 1031 /* do_encrypt returns 0,1 swapped with 2,3 */
1051 dst[0] = cpu_to_be32(tmp[2]); 1032 dst[0] = cpu_to_be32(tmp[2]);
@@ -1059,6 +1040,7 @@ static void camellia_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
1059 const struct camellia_ctx *cctx = crypto_tfm_ctx(tfm); 1040 const struct camellia_ctx *cctx = crypto_tfm_ctx(tfm);
1060 const __be32 *src = (const __be32 *)in; 1041 const __be32 *src = (const __be32 *)in;
1061 __be32 *dst = (__be32 *)out; 1042 __be32 *dst = (__be32 *)out;
1043 unsigned int max;
1062 1044
1063 u32 tmp[4]; 1045 u32 tmp[4];
1064 1046
@@ -1067,9 +1049,12 @@ static void camellia_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
1067 tmp[2] = be32_to_cpu(src[2]); 1049 tmp[2] = be32_to_cpu(src[2]);
1068 tmp[3] = be32_to_cpu(src[3]); 1050 tmp[3] = be32_to_cpu(src[3]);
1069 1051
1070 camellia_do_decrypt(cctx->key_table, tmp, 1052 if (cctx->key_length == 16)
1071 cctx->key_length == 16 ? 24 : 32 /* for key lengths of 24 and 32 */ 1053 max = 24;
1072 ); 1054 else
1055 max = 32; /* for key lengths of 24 and 32 */
1056
1057 camellia_do_decrypt(cctx->key_table, tmp, max);
1073 1058
1074 /* do_decrypt returns 0,1 swapped with 2,3 */ 1059 /* do_decrypt returns 0,1 swapped with 2,3 */
1075 dst[0] = cpu_to_be32(tmp[2]); 1060 dst[0] = cpu_to_be32(tmp[2]);
@@ -1114,3 +1099,4 @@ module_exit(camellia_fini);
1114 1099
1115MODULE_DESCRIPTION("Camellia Cipher Algorithm"); 1100MODULE_DESCRIPTION("Camellia Cipher Algorithm");
1116MODULE_LICENSE("GPL"); 1101MODULE_LICENSE("GPL");
1102MODULE_ALIAS("camellia");
diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
index b6ac1387770c..f76e42bcc6e7 100644
--- a/crypto/crypto_user.c
+++ b/crypto/crypto_user.c
@@ -304,7 +304,7 @@ static int crypto_del_alg(struct sk_buff *skb, struct nlmsghdr *nlh,
304static int crypto_add_alg(struct sk_buff *skb, struct nlmsghdr *nlh, 304static int crypto_add_alg(struct sk_buff *skb, struct nlmsghdr *nlh,
305 struct nlattr **attrs) 305 struct nlattr **attrs)
306{ 306{
307 int exact; 307 int exact = 0;
308 const char *name; 308 const char *name;
309 struct crypto_alg *alg; 309 struct crypto_alg *alg;
310 struct crypto_user_alg *p = nlmsg_data(nlh); 310 struct crypto_user_alg *p = nlmsg_data(nlh);
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index 7736a9f05aba..8f147bff0980 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -1297,6 +1297,18 @@ static int do_test(int m)
1297 speed_template_16_24_32); 1297 speed_template_16_24_32);
1298 test_cipher_speed("cbc(camellia)", DECRYPT, sec, NULL, 0, 1298 test_cipher_speed("cbc(camellia)", DECRYPT, sec, NULL, 0,
1299 speed_template_16_24_32); 1299 speed_template_16_24_32);
1300 test_cipher_speed("ctr(camellia)", ENCRYPT, sec, NULL, 0,
1301 speed_template_16_24_32);
1302 test_cipher_speed("ctr(camellia)", DECRYPT, sec, NULL, 0,
1303 speed_template_16_24_32);
1304 test_cipher_speed("lrw(camellia)", ENCRYPT, sec, NULL, 0,
1305 speed_template_32_40_48);
1306 test_cipher_speed("lrw(camellia)", DECRYPT, sec, NULL, 0,
1307 speed_template_32_40_48);
1308 test_cipher_speed("xts(camellia)", ENCRYPT, sec, NULL, 0,
1309 speed_template_32_48_64);
1310 test_cipher_speed("xts(camellia)", DECRYPT, sec, NULL, 0,
1311 speed_template_32_48_64);
1300 break; 1312 break;
1301 1313
1302 case 206: 1314 case 206:
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index bb54b882d738..5674878ff6c1 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -1846,6 +1846,21 @@ static const struct alg_test_desc alg_test_descs[] = {
1846 } 1846 }
1847 } 1847 }
1848 }, { 1848 }, {
1849 .alg = "ctr(camellia)",
1850 .test = alg_test_skcipher,
1851 .suite = {
1852 .cipher = {
1853 .enc = {
1854 .vecs = camellia_ctr_enc_tv_template,
1855 .count = CAMELLIA_CTR_ENC_TEST_VECTORS
1856 },
1857 .dec = {
1858 .vecs = camellia_ctr_dec_tv_template,
1859 .count = CAMELLIA_CTR_DEC_TEST_VECTORS
1860 }
1861 }
1862 }
1863 }, {
1849 .alg = "ctr(serpent)", 1864 .alg = "ctr(serpent)",
1850 .test = alg_test_skcipher, 1865 .test = alg_test_skcipher,
1851 .suite = { 1866 .suite = {
@@ -2297,6 +2312,21 @@ static const struct alg_test_desc alg_test_descs[] = {
2297 } 2312 }
2298 } 2313 }
2299 }, { 2314 }, {
2315 .alg = "lrw(camellia)",
2316 .test = alg_test_skcipher,
2317 .suite = {
2318 .cipher = {
2319 .enc = {
2320 .vecs = camellia_lrw_enc_tv_template,
2321 .count = CAMELLIA_LRW_ENC_TEST_VECTORS
2322 },
2323 .dec = {
2324 .vecs = camellia_lrw_dec_tv_template,
2325 .count = CAMELLIA_LRW_DEC_TEST_VECTORS
2326 }
2327 }
2328 }
2329 }, {
2300 .alg = "lrw(serpent)", 2330 .alg = "lrw(serpent)",
2301 .test = alg_test_skcipher, 2331 .test = alg_test_skcipher,
2302 .suite = { 2332 .suite = {
@@ -2634,6 +2664,21 @@ static const struct alg_test_desc alg_test_descs[] = {
2634 } 2664 }
2635 } 2665 }
2636 }, { 2666 }, {
2667 .alg = "xts(camellia)",
2668 .test = alg_test_skcipher,
2669 .suite = {
2670 .cipher = {
2671 .enc = {
2672 .vecs = camellia_xts_enc_tv_template,
2673 .count = CAMELLIA_XTS_ENC_TEST_VECTORS
2674 },
2675 .dec = {
2676 .vecs = camellia_xts_dec_tv_template,
2677 .count = CAMELLIA_XTS_DEC_TEST_VECTORS
2678 }
2679 }
2680 }
2681 }, {
2637 .alg = "xts(serpent)", 2682 .alg = "xts(serpent)",
2638 .test = alg_test_skcipher, 2683 .test = alg_test_skcipher,
2639 .suite = { 2684 .suite = {
diff --git a/crypto/testmgr.h b/crypto/testmgr.h
index 43e84d32b341..36e5a8ee0e1e 100644
--- a/crypto/testmgr.h
+++ b/crypto/testmgr.h
@@ -11332,10 +11332,16 @@ static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
11332/* 11332/*
11333 * CAMELLIA test vectors. 11333 * CAMELLIA test vectors.
11334 */ 11334 */
11335#define CAMELLIA_ENC_TEST_VECTORS 3 11335#define CAMELLIA_ENC_TEST_VECTORS 4
11336#define CAMELLIA_DEC_TEST_VECTORS 3 11336#define CAMELLIA_DEC_TEST_VECTORS 4
11337#define CAMELLIA_CBC_ENC_TEST_VECTORS 2 11337#define CAMELLIA_CBC_ENC_TEST_VECTORS 3
11338#define CAMELLIA_CBC_DEC_TEST_VECTORS 2 11338#define CAMELLIA_CBC_DEC_TEST_VECTORS 3
11339#define CAMELLIA_CTR_ENC_TEST_VECTORS 2
11340#define CAMELLIA_CTR_DEC_TEST_VECTORS 2
11341#define CAMELLIA_LRW_ENC_TEST_VECTORS 8
11342#define CAMELLIA_LRW_DEC_TEST_VECTORS 8
11343#define CAMELLIA_XTS_ENC_TEST_VECTORS 5
11344#define CAMELLIA_XTS_DEC_TEST_VECTORS 5
11339 11345
11340static struct cipher_testvec camellia_enc_tv_template[] = { 11346static struct cipher_testvec camellia_enc_tv_template[] = {
11341 { 11347 {
@@ -11372,6 +11378,27 @@ static struct cipher_testvec camellia_enc_tv_template[] = {
11372 "\x20\xef\x7c\x91\x9e\x3a\x75\x09", 11378 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
11373 .rlen = 16, 11379 .rlen = 16,
11374 }, 11380 },
11381 { /* Generated with Crypto++ */
11382 .key = "\x3F\x85\x62\x3F\x1C\xF9\xD6\x1C"
11383 "\xF9\xD6\xB3\x90\x6D\x4A\x90\x6D"
11384 "\x4A\x27\x04\xE1\x27\x04\xE1\xBE"
11385 "\x9B\x78\xBE\x9B\x78\x55\x32\x0F",
11386 .klen = 32,
11387 .input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
11388 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
11389 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
11390 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
11391 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
11392 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
11393 .ilen = 48,
11394 .result = "\xED\xCD\xDB\xB8\x68\xCE\xBD\xEA"
11395 "\x9D\x9D\xCD\x9F\x4F\xFC\x4D\xB7"
11396 "\xA5\xFF\x6F\x43\x0F\xBA\x32\x04"
11397 "\xB3\xC2\xB9\x03\xAA\x91\x56\x29"
11398 "\x0D\xD0\xFD\xC4\x65\xA5\x69\xB9"
11399 "\xF1\xF6\xB1\xA5\xB2\x75\x4F\x8A",
11400 .rlen = 48,
11401 },
11375}; 11402};
11376 11403
11377static struct cipher_testvec camellia_dec_tv_template[] = { 11404static struct cipher_testvec camellia_dec_tv_template[] = {
@@ -11409,6 +11436,27 @@ static struct cipher_testvec camellia_dec_tv_template[] = {
11409 "\xfe\xdc\xba\x98\x76\x54\x32\x10", 11436 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
11410 .rlen = 16, 11437 .rlen = 16,
11411 }, 11438 },
11439 { /* Generated with Crypto++ */
11440 .key = "\x3F\x85\x62\x3F\x1C\xF9\xD6\x1C"
11441 "\xF9\xD6\xB3\x90\x6D\x4A\x90\x6D"
11442 "\x4A\x27\x04\xE1\x27\x04\xE1\xBE"
11443 "\x9B\x78\xBE\x9B\x78\x55\x32\x0F",
11444 .klen = 32,
11445 .input = "\xED\xCD\xDB\xB8\x68\xCE\xBD\xEA"
11446 "\x9D\x9D\xCD\x9F\x4F\xFC\x4D\xB7"
11447 "\xA5\xFF\x6F\x43\x0F\xBA\x32\x04"
11448 "\xB3\xC2\xB9\x03\xAA\x91\x56\x29"
11449 "\x0D\xD0\xFD\xC4\x65\xA5\x69\xB9"
11450 "\xF1\xF6\xB1\xA5\xB2\x75\x4F\x8A",
11451 .ilen = 48,
11452 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
11453 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
11454 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
11455 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
11456 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
11457 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
11458 .rlen = 48,
11459 },
11412}; 11460};
11413 11461
11414static struct cipher_testvec camellia_cbc_enc_tv_template[] = { 11462static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
@@ -11440,6 +11488,29 @@ static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
11440 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16", 11488 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
11441 .rlen = 32, 11489 .rlen = 32,
11442 }, 11490 },
11491 { /* Generated with Crypto++ */
11492 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
11493 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
11494 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
11495 "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
11496 .klen = 32,
11497 .iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
11498 "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
11499 .input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
11500 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
11501 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
11502 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
11503 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
11504 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
11505 .ilen = 48,
11506 .result = "\xCD\x3E\x2A\x3B\x3E\x94\xC5\x77"
11507 "\xBA\xBB\x5B\xB1\xDE\x7B\xA4\x40"
11508 "\x88\x39\xE3\xFD\x94\x4B\x25\x58"
11509 "\xE1\x4B\xC4\x18\x7A\xFD\x17\x2B"
11510 "\xB9\xF9\xC2\x27\x6A\xB6\x31\x27"
11511 "\xA6\xAD\xEF\xE5\x5D\xE4\x02\x01",
11512 .rlen = 48,
11513 },
11443}; 11514};
11444 11515
11445static struct cipher_testvec camellia_cbc_dec_tv_template[] = { 11516static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
@@ -11471,6 +11542,1310 @@ static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
11471 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", 11542 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
11472 .rlen = 32, 11543 .rlen = 32,
11473 }, 11544 },
11545 { /* Generated with Crypto++ */
11546 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
11547 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
11548 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
11549 "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
11550 .klen = 32,
11551 .iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
11552 "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
11553 .input = "\xCD\x3E\x2A\x3B\x3E\x94\xC5\x77"
11554 "\xBA\xBB\x5B\xB1\xDE\x7B\xA4\x40"
11555 "\x88\x39\xE3\xFD\x94\x4B\x25\x58"
11556 "\xE1\x4B\xC4\x18\x7A\xFD\x17\x2B"
11557 "\xB9\xF9\xC2\x27\x6A\xB6\x31\x27"
11558 "\xA6\xAD\xEF\xE5\x5D\xE4\x02\x01",
11559 .ilen = 48,
11560 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
11561 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
11562 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
11563 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
11564 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
11565 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
11566 .rlen = 48,
11567 },
11568};
11569
11570static struct cipher_testvec camellia_ctr_enc_tv_template[] = {
11571 { /* Generated with Crypto++ */
11572 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
11573 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
11574 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
11575 "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
11576 .klen = 32,
11577 .iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
11578 "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
11579 .input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
11580 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
11581 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
11582 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
11583 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
11584 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
11585 .ilen = 48,
11586 .result = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11"
11587 "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE"
11588 "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4"
11589 "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6"
11590 "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85"
11591 "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C",
11592 .rlen = 48,
11593 },
11594 { /* Generated with Crypto++ */
11595 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
11596 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
11597 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
11598 "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
11599 .klen = 32,
11600 .iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
11601 "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
11602 .input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
11603 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
11604 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
11605 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
11606 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
11607 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
11608 "\xDF\x76\x0D",
11609 .ilen = 51,
11610 .result = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11"
11611 "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE"
11612 "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4"
11613 "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6"
11614 "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85"
11615 "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C"
11616 "\x1E\x43\xEF",
11617 .rlen = 51,
11618 },
11619};
11620
11621static struct cipher_testvec camellia_ctr_dec_tv_template[] = {
11622 { /* Generated with Crypto++ */
11623 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
11624 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
11625 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
11626 "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
11627 .klen = 32,
11628 .iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
11629 "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
11630 .input = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11"
11631 "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE"
11632 "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4"
11633 "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6"
11634 "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85"
11635 "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C",
11636 .ilen = 48,
11637 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
11638 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
11639 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
11640 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
11641 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
11642 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48",
11643 .rlen = 48,
11644 },
11645 { /* Generated with Crypto++ */
11646 .key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
11647 "\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
11648 "\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
11649 "\x78\xBE\x9B\x78\x55\x32\x0F\x55",
11650 .klen = 32,
11651 .iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
11652 "\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
11653 .input = "\xF3\x06\x3A\x84\xCD\xBA\x8E\x11"
11654 "\xB7\x74\x6F\x5C\x97\xFB\x36\xFE"
11655 "\xDE\x71\x58\xD4\x15\xD1\xC1\xA4"
11656 "\xC9\x28\x74\xA6\x6B\xC7\x95\xA6"
11657 "\x6C\x77\xF7\x2F\xDF\xC7\xBB\x85"
11658 "\x60\xFC\xE8\x94\xE8\xB5\x09\x2C"
11659 "\x1E\x43\xEF",
11660 .ilen = 51,
11661 .result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
11662 "\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
11663 "\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
11664 "\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
11665 "\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
11666 "\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
11667 "\xDF\x76\x0D",
11668 .rlen = 51,
11669 },
11670
11671};
11672
11673static struct cipher_testvec camellia_lrw_enc_tv_template[] = {
11674 /* Generated from AES-LRW test vectors */
11675 {
11676 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
11677 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
11678 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
11679 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
11680 .klen = 32,
11681 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11682 "\x00\x00\x00\x00\x00\x00\x00\x01",
11683 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
11684 "\x38\x39\x41\x42\x43\x44\x45\x46",
11685 .ilen = 16,
11686 .result = "\x92\x68\x19\xd7\xb7\x5b\x0a\x31"
11687 "\x97\xcc\x72\xbe\x99\x17\xeb\x3e",
11688 .rlen = 16,
11689 }, {
11690 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
11691 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
11692 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
11693 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
11694 .klen = 32,
11695 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11696 "\x00\x00\x00\x00\x00\x00\x00\x02",
11697 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
11698 "\x38\x39\x41\x42\x43\x44\x45\x46",
11699 .ilen = 16,
11700 .result = "\x73\x09\xb7\x50\xb6\x77\x30\x50"
11701 "\x5c\x8a\x9c\x26\x77\x9d\xfc\x4a",
11702 .rlen = 16,
11703 }, {
11704 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
11705 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
11706 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
11707 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
11708 .klen = 32,
11709 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11710 "\x00\x00\x00\x02\x00\x00\x00\x00",
11711 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
11712 "\x38\x39\x41\x42\x43\x44\x45\x46",
11713 .ilen = 16,
11714 .result = "\x90\xae\x83\xe0\x22\xb9\x60\x91"
11715 "\xfa\xa9\xb7\x98\xe3\xed\x87\x01",
11716 .rlen = 16,
11717 }, {
11718 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
11719 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
11720 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
11721 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
11722 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
11723 .klen = 40,
11724 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11725 "\x00\x00\x00\x00\x00\x00\x00\x01",
11726 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
11727 "\x38\x39\x41\x42\x43\x44\x45\x46",
11728 .ilen = 16,
11729 .result = "\x99\xe9\x6e\xd4\xc9\x21\xa5\xf0"
11730 "\xd8\x83\xef\xd9\x07\x16\x5f\x35",
11731 .rlen = 16,
11732 }, {
11733 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
11734 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
11735 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
11736 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
11737 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
11738 .klen = 40,
11739 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11740 "\x00\x00\x00\x02\x00\x00\x00\x00",
11741 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
11742 "\x38\x39\x41\x42\x43\x44\x45\x46",
11743 .ilen = 16,
11744 .result = "\x42\x88\xf4\xcb\x21\x11\x6d\x8e"
11745 "\xde\x1a\xf2\x29\xf1\x4a\xe0\x15",
11746 .rlen = 16,
11747 }, {
11748 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
11749 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
11750 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
11751 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
11752 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
11753 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
11754 .klen = 48,
11755 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11756 "\x00\x00\x00\x00\x00\x00\x00\x01",
11757 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
11758 "\x38\x39\x41\x42\x43\x44\x45\x46",
11759 .ilen = 16,
11760 .result = "\x40\xaa\x34\x86\x4a\x8f\x78\xb9"
11761 "\xdb\xdb\x0f\x3d\x48\x70\xbe\x8d",
11762 .rlen = 16,
11763 }, {
11764 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
11765 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
11766 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
11767 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
11768 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
11769 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
11770 .klen = 48,
11771 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11772 "\x00\x00\x00\x02\x00\x00\x00\x00",
11773 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
11774 "\x38\x39\x41\x42\x43\x44\x45\x46",
11775 .ilen = 16,
11776 .result = "\x04\xab\x28\x37\x31\x7a\x26\xab"
11777 "\xa1\x70\x1b\x9c\xe7\xdd\x83\xff",
11778 .rlen = 16,
11779 }, {
11780 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
11781 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
11782 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
11783 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
11784 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
11785 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
11786 .klen = 48,
11787 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11788 "\x00\x00\x00\x00\x00\x00\x00\x01",
11789 .input = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
11790 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
11791 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
11792 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
11793 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
11794 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
11795 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
11796 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
11797 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
11798 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
11799 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
11800 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
11801 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
11802 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
11803 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
11804 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
11805 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
11806 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
11807 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
11808 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
11809 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
11810 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
11811 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
11812 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
11813 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
11814 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
11815 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
11816 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
11817 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
11818 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
11819 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
11820 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
11821 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
11822 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
11823 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
11824 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
11825 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
11826 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
11827 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
11828 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
11829 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
11830 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
11831 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
11832 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
11833 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
11834 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
11835 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
11836 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
11837 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
11838 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
11839 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
11840 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
11841 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
11842 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
11843 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
11844 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
11845 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
11846 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
11847 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
11848 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
11849 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
11850 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
11851 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
11852 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
11853 .ilen = 512,
11854 .result = "\x90\x69\x8e\xf2\x14\x86\x59\xf9"
11855 "\xec\xe7\xfa\x3f\x48\x9d\x7f\x96"
11856 "\x67\x76\xac\x2c\xd2\x63\x18\x93"
11857 "\x13\xf8\xf1\xf6\x71\x77\xb3\xee"
11858 "\x93\xb2\xcc\xf3\x26\xc1\x16\x4f"
11859 "\xd4\xe8\x43\xc1\x68\xa3\x3e\x06"
11860 "\x38\x51\xff\xa8\xb9\xa4\xeb\xb1"
11861 "\x62\xdd\x78\x81\xea\x1d\xef\x04"
11862 "\x1d\x07\xc1\x67\xc8\xd6\x77\xa1"
11863 "\x84\x95\xf4\x9a\xd9\xbc\x2d\xe2"
11864 "\xf6\x80\xfc\x91\x2a\xbc\x42\xa0"
11865 "\x40\x41\x69\xaa\x71\xc0\x37\xec"
11866 "\x39\xf3\xf2\xec\x82\xc3\x88\x79"
11867 "\xbc\xc3\xaa\xb7\xcf\x6a\x72\x80"
11868 "\x4c\xf4\x84\x8f\x13\x9e\x94\x5c"
11869 "\xe5\xb2\x91\xbb\x92\x51\x4d\xf1"
11870 "\xd6\x0d\x71\x6b\x7a\xc2\x2f\x12"
11871 "\x6f\x75\xc7\x80\x99\x50\x84\xcf"
11872 "\xa8\xeb\xd6\xe1\x1c\x59\x81\x7e"
11873 "\xb9\xb3\xde\x7a\x93\x14\x12\xa2"
11874 "\xf7\x43\xb3\x9d\x1a\x87\x65\x91"
11875 "\x42\x08\x40\x82\x06\x1c\x2d\x55"
11876 "\x6e\x48\xd5\x74\x07\x6e\x9d\x80"
11877 "\xeb\xb4\x97\xa1\x36\xdf\xfa\x74"
11878 "\x79\x7f\x5a\x75\xe7\x71\xc8\x8c"
11879 "\x7e\xf8\x3a\x77\xcd\x32\x05\xf9"
11880 "\x3d\xd4\xe9\xa2\xbb\xc4\x8b\x83"
11881 "\x42\x5c\x82\xfa\xe9\x4b\x96\x3b"
11882 "\x7f\x89\x8b\xf9\xf1\x87\xda\xf0"
11883 "\x87\xef\x13\x5d\xf0\xe2\xc5\xc1"
11884 "\xed\x14\xa9\x57\x19\x63\x40\x04"
11885 "\x24\xeb\x6e\x19\xd1\x3d\x70\x78"
11886 "\xeb\xda\x55\x70\x2c\x4f\x41\x5b"
11887 "\x56\x9f\x1a\xd3\xac\xf1\xc0\xc3"
11888 "\x21\xec\xd7\xd2\x55\x32\x7c\x2e"
11889 "\x3c\x48\x8e\xb4\x85\x35\x47\xfe"
11890 "\xe2\x88\x79\x98\x6a\xc9\x8d\xff"
11891 "\xe9\x89\x6e\xb8\xe2\x97\x00\xbd"
11892 "\xa4\x8f\xba\xd0\x8c\xcb\x79\x99"
11893 "\xb3\xb2\xb2\x7a\xc3\xb7\xef\x75"
11894 "\x23\x52\x76\xc3\x50\x6e\x66\xf8"
11895 "\xa2\xe2\xce\xba\x40\x21\x3f\xc9"
11896 "\x0a\x32\x7f\xf7\x08\x8c\x66\xcf"
11897 "\xd3\xdf\x57\x59\x83\xb8\xe1\x85"
11898 "\xd6\x8f\xfb\x48\x1f\x3a\xc4\x2f"
11899 "\xb4\x2d\x58\xab\xd8\x7f\x5e\x3a"
11900 "\xbc\x62\x3e\xe2\x6a\x52\x0d\x76"
11901 "\x2f\x1c\x1a\x30\xed\x95\x2a\x44"
11902 "\x35\xa5\x83\x04\x84\x01\x99\x56"
11903 "\xb7\xe3\x10\x96\xfa\xdc\x19\xdd"
11904 "\xe2\x7f\xcb\xa0\x49\x1b\xff\x4c"
11905 "\x73\xf6\xbb\x94\x00\xe8\xa9\x3d"
11906 "\xe2\x20\xe9\x3f\xfa\x07\x5d\x77"
11907 "\x06\xd5\x4f\x4d\x02\xb8\x40\x1b"
11908 "\x30\xed\x1a\x50\x19\xef\xc4\x2c"
11909 "\x02\xd9\xc5\xd3\x11\x33\x37\xe5"
11910 "\x2b\xa3\x95\xa6\xee\xd8\x74\x1d"
11911 "\x68\xa0\xeb\xbf\xdd\x5e\x99\x96"
11912 "\x91\xc3\x94\x24\xa5\x12\xa2\x37"
11913 "\xb3\xac\xcf\x2a\xfd\x55\x34\xfe"
11914 "\x79\x92\x3e\xe6\x1b\x49\x57\x5d"
11915 "\x93\x6c\x01\xf7\xcc\x4e\x20\xd1"
11916 "\xb2\x1a\xd8\x4c\xbd\x1d\x10\xe9"
11917 "\x5a\xa8\x92\x7f\xba\xe6\x0c\x95",
11918 .rlen = 512,
11919 },
11920};
11921
11922static struct cipher_testvec camellia_lrw_dec_tv_template[] = {
11923 /* Generated from AES-LRW test vectors */
11924 /* same as enc vectors with input and result reversed */
11925 {
11926 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
11927 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
11928 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
11929 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
11930 .klen = 32,
11931 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11932 "\x00\x00\x00\x00\x00\x00\x00\x01",
11933 .input = "\x92\x68\x19\xd7\xb7\x5b\x0a\x31"
11934 "\x97\xcc\x72\xbe\x99\x17\xeb\x3e",
11935 .ilen = 16,
11936 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
11937 "\x38\x39\x41\x42\x43\x44\x45\x46",
11938 .rlen = 16,
11939 }, {
11940 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
11941 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
11942 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
11943 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
11944 .klen = 32,
11945 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11946 "\x00\x00\x00\x00\x00\x00\x00\x02",
11947 .input = "\x73\x09\xb7\x50\xb6\x77\x30\x50"
11948 "\x5c\x8a\x9c\x26\x77\x9d\xfc\x4a",
11949 .ilen = 16,
11950 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
11951 "\x38\x39\x41\x42\x43\x44\x45\x46",
11952 .rlen = 16,
11953 }, {
11954 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
11955 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
11956 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
11957 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
11958 .klen = 32,
11959 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11960 "\x00\x00\x00\x02\x00\x00\x00\x00",
11961 .input = "\x90\xae\x83\xe0\x22\xb9\x60\x91"
11962 "\xfa\xa9\xb7\x98\xe3\xed\x87\x01",
11963 .ilen = 16,
11964 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
11965 "\x38\x39\x41\x42\x43\x44\x45\x46",
11966 .rlen = 16,
11967 }, {
11968 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
11969 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
11970 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
11971 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
11972 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
11973 .klen = 40,
11974 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11975 "\x00\x00\x00\x00\x00\x00\x00\x01",
11976 .input = "\x99\xe9\x6e\xd4\xc9\x21\xa5\xf0"
11977 "\xd8\x83\xef\xd9\x07\x16\x5f\x35",
11978 .ilen = 16,
11979 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
11980 "\x38\x39\x41\x42\x43\x44\x45\x46",
11981 .rlen = 16,
11982 }, {
11983 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
11984 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
11985 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
11986 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
11987 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
11988 .klen = 40,
11989 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
11990 "\x00\x00\x00\x02\x00\x00\x00\x00",
11991 .input = "\x42\x88\xf4\xcb\x21\x11\x6d\x8e"
11992 "\xde\x1a\xf2\x29\xf1\x4a\xe0\x15",
11993 .ilen = 16,
11994 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
11995 "\x38\x39\x41\x42\x43\x44\x45\x46",
11996 .rlen = 16,
11997 }, {
11998 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
11999 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
12000 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
12001 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
12002 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
12003 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
12004 .klen = 48,
12005 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
12006 "\x00\x00\x00\x00\x00\x00\x00\x01",
12007 .input = "\x40\xaa\x34\x86\x4a\x8f\x78\xb9"
12008 "\xdb\xdb\x0f\x3d\x48\x70\xbe\x8d",
12009 .ilen = 16,
12010 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
12011 "\x38\x39\x41\x42\x43\x44\x45\x46",
12012 .rlen = 16,
12013 }, {
12014 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
12015 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
12016 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
12017 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
12018 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
12019 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
12020 .klen = 48,
12021 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
12022 "\x00\x00\x00\x02\x00\x00\x00\x00",
12023 .input = "\x04\xab\x28\x37\x31\x7a\x26\xab"
12024 "\xa1\x70\x1b\x9c\xe7\xdd\x83\xff",
12025 .ilen = 16,
12026 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
12027 "\x38\x39\x41\x42\x43\x44\x45\x46",
12028 .rlen = 16,
12029 }, {
12030 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
12031 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
12032 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
12033 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
12034 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
12035 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
12036 .klen = 48,
12037 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
12038 "\x00\x00\x00\x00\x00\x00\x00\x01",
12039 .input = "\x90\x69\x8e\xf2\x14\x86\x59\xf9"
12040 "\xec\xe7\xfa\x3f\x48\x9d\x7f\x96"
12041 "\x67\x76\xac\x2c\xd2\x63\x18\x93"
12042 "\x13\xf8\xf1\xf6\x71\x77\xb3\xee"
12043 "\x93\xb2\xcc\xf3\x26\xc1\x16\x4f"
12044 "\xd4\xe8\x43\xc1\x68\xa3\x3e\x06"
12045 "\x38\x51\xff\xa8\xb9\xa4\xeb\xb1"
12046 "\x62\xdd\x78\x81\xea\x1d\xef\x04"
12047 "\x1d\x07\xc1\x67\xc8\xd6\x77\xa1"
12048 "\x84\x95\xf4\x9a\xd9\xbc\x2d\xe2"
12049 "\xf6\x80\xfc\x91\x2a\xbc\x42\xa0"
12050 "\x40\x41\x69\xaa\x71\xc0\x37\xec"
12051 "\x39\xf3\xf2\xec\x82\xc3\x88\x79"
12052 "\xbc\xc3\xaa\xb7\xcf\x6a\x72\x80"
12053 "\x4c\xf4\x84\x8f\x13\x9e\x94\x5c"
12054 "\xe5\xb2\x91\xbb\x92\x51\x4d\xf1"
12055 "\xd6\x0d\x71\x6b\x7a\xc2\x2f\x12"
12056 "\x6f\x75\xc7\x80\x99\x50\x84\xcf"
12057 "\xa8\xeb\xd6\xe1\x1c\x59\x81\x7e"
12058 "\xb9\xb3\xde\x7a\x93\x14\x12\xa2"
12059 "\xf7\x43\xb3\x9d\x1a\x87\x65\x91"
12060 "\x42\x08\x40\x82\x06\x1c\x2d\x55"
12061 "\x6e\x48\xd5\x74\x07\x6e\x9d\x80"
12062 "\xeb\xb4\x97\xa1\x36\xdf\xfa\x74"
12063 "\x79\x7f\x5a\x75\xe7\x71\xc8\x8c"
12064 "\x7e\xf8\x3a\x77\xcd\x32\x05\xf9"
12065 "\x3d\xd4\xe9\xa2\xbb\xc4\x8b\x83"
12066 "\x42\x5c\x82\xfa\xe9\x4b\x96\x3b"
12067 "\x7f\x89\x8b\xf9\xf1\x87\xda\xf0"
12068 "\x87\xef\x13\x5d\xf0\xe2\xc5\xc1"
12069 "\xed\x14\xa9\x57\x19\x63\x40\x04"
12070 "\x24\xeb\x6e\x19\xd1\x3d\x70\x78"
12071 "\xeb\xda\x55\x70\x2c\x4f\x41\x5b"
12072 "\x56\x9f\x1a\xd3\xac\xf1\xc0\xc3"
12073 "\x21\xec\xd7\xd2\x55\x32\x7c\x2e"
12074 "\x3c\x48\x8e\xb4\x85\x35\x47\xfe"
12075 "\xe2\x88\x79\x98\x6a\xc9\x8d\xff"
12076 "\xe9\x89\x6e\xb8\xe2\x97\x00\xbd"
12077 "\xa4\x8f\xba\xd0\x8c\xcb\x79\x99"
12078 "\xb3\xb2\xb2\x7a\xc3\xb7\xef\x75"
12079 "\x23\x52\x76\xc3\x50\x6e\x66\xf8"
12080 "\xa2\xe2\xce\xba\x40\x21\x3f\xc9"
12081 "\x0a\x32\x7f\xf7\x08\x8c\x66\xcf"
12082 "\xd3\xdf\x57\x59\x83\xb8\xe1\x85"
12083 "\xd6\x8f\xfb\x48\x1f\x3a\xc4\x2f"
12084 "\xb4\x2d\x58\xab\xd8\x7f\x5e\x3a"
12085 "\xbc\x62\x3e\xe2\x6a\x52\x0d\x76"
12086 "\x2f\x1c\x1a\x30\xed\x95\x2a\x44"
12087 "\x35\xa5\x83\x04\x84\x01\x99\x56"
12088 "\xb7\xe3\x10\x96\xfa\xdc\x19\xdd"
12089 "\xe2\x7f\xcb\xa0\x49\x1b\xff\x4c"
12090 "\x73\xf6\xbb\x94\x00\xe8\xa9\x3d"
12091 "\xe2\x20\xe9\x3f\xfa\x07\x5d\x77"
12092 "\x06\xd5\x4f\x4d\x02\xb8\x40\x1b"
12093 "\x30\xed\x1a\x50\x19\xef\xc4\x2c"
12094 "\x02\xd9\xc5\xd3\x11\x33\x37\xe5"
12095 "\x2b\xa3\x95\xa6\xee\xd8\x74\x1d"
12096 "\x68\xa0\xeb\xbf\xdd\x5e\x99\x96"
12097 "\x91\xc3\x94\x24\xa5\x12\xa2\x37"
12098 "\xb3\xac\xcf\x2a\xfd\x55\x34\xfe"
12099 "\x79\x92\x3e\xe6\x1b\x49\x57\x5d"
12100 "\x93\x6c\x01\xf7\xcc\x4e\x20\xd1"
12101 "\xb2\x1a\xd8\x4c\xbd\x1d\x10\xe9"
12102 "\x5a\xa8\x92\x7f\xba\xe6\x0c\x95",
12103 .ilen = 512,
12104 .result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
12105 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
12106 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
12107 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
12108 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
12109 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
12110 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
12111 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
12112 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
12113 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
12114 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
12115 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
12116 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
12117 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
12118 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
12119 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
12120 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
12121 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
12122 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
12123 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
12124 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
12125 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
12126 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
12127 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
12128 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
12129 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
12130 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
12131 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
12132 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
12133 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
12134 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
12135 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
12136 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
12137 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
12138 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
12139 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
12140 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
12141 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
12142 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
12143 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
12144 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
12145 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
12146 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
12147 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
12148 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
12149 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
12150 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
12151 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
12152 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
12153 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
12154 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
12155 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
12156 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
12157 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
12158 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
12159 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
12160 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
12161 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
12162 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
12163 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
12164 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
12165 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
12166 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
12167 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
12168 .rlen = 512,
12169 },
12170};
12171
12172static struct cipher_testvec camellia_xts_enc_tv_template[] = {
12173 /* Generated from AES-XTS test vectors */
12174 {
12175 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
12176 "\x00\x00\x00\x00\x00\x00\x00\x00"
12177 "\x00\x00\x00\x00\x00\x00\x00\x00"
12178 "\x00\x00\x00\x00\x00\x00\x00\x00",
12179 .klen = 32,
12180 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
12181 "\x00\x00\x00\x00\x00\x00\x00\x00",
12182 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
12183 "\x00\x00\x00\x00\x00\x00\x00\x00"
12184 "\x00\x00\x00\x00\x00\x00\x00\x00"
12185 "\x00\x00\x00\x00\x00\x00\x00\x00",
12186 .ilen = 32,
12187 .result = "\x06\xcb\xa5\xf1\x04\x63\xb2\x41"
12188 "\xdc\xca\xfa\x09\xba\x74\xb9\x05"
12189 "\x78\xba\xa4\xf8\x67\x4d\x7e\xad"
12190 "\x20\x18\xf5\x0c\x41\x16\x2a\x61",
12191 .rlen = 32,
12192 }, {
12193 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
12194 "\x11\x11\x11\x11\x11\x11\x11\x11"
12195 "\x22\x22\x22\x22\x22\x22\x22\x22"
12196 "\x22\x22\x22\x22\x22\x22\x22\x22",
12197 .klen = 32,
12198 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
12199 "\x00\x00\x00\x00\x00\x00\x00\x00",
12200 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
12201 "\x44\x44\x44\x44\x44\x44\x44\x44"
12202 "\x44\x44\x44\x44\x44\x44\x44\x44"
12203 "\x44\x44\x44\x44\x44\x44\x44\x44",
12204 .ilen = 32,
12205 .result = "\xc2\xb9\xdc\x44\x1d\xdf\xf2\x86"
12206 "\x8d\x35\x42\x0a\xa5\x5e\x3d\x4f"
12207 "\xb5\x37\x06\xff\xbd\xd4\x91\x70"
12208 "\x80\x1f\xb2\x39\x10\x89\x44\xf5",
12209 .rlen = 32,
12210 }, {
12211 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
12212 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
12213 "\x22\x22\x22\x22\x22\x22\x22\x22"
12214 "\x22\x22\x22\x22\x22\x22\x22\x22",
12215 .klen = 32,
12216 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
12217 "\x00\x00\x00\x00\x00\x00\x00\x00",
12218 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
12219 "\x44\x44\x44\x44\x44\x44\x44\x44"
12220 "\x44\x44\x44\x44\x44\x44\x44\x44"
12221 "\x44\x44\x44\x44\x44\x44\x44\x44",
12222 .ilen = 32,
12223 .result = "\x52\x1f\x9d\xf5\x5a\x58\x5a\x7e"
12224 "\x9f\xd0\x8e\x02\x9c\x9a\x6a\xa7"
12225 "\xb4\x3b\xce\xe7\x17\xaa\x89\x6a"
12226 "\x35\x3c\x6b\xb5\x61\x1c\x79\x38",
12227 .rlen = 32,
12228 }, {
12229 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
12230 "\x23\x53\x60\x28\x74\x71\x35\x26"
12231 "\x31\x41\x59\x26\x53\x58\x97\x93"
12232 "\x23\x84\x62\x64\x33\x83\x27\x95",
12233 .klen = 32,
12234 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
12235 "\x00\x00\x00\x00\x00\x00\x00\x00",
12236 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
12237 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
12238 "\x10\x11\x12\x13\x14\x15\x16\x17"
12239 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
12240 "\x20\x21\x22\x23\x24\x25\x26\x27"
12241 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
12242 "\x30\x31\x32\x33\x34\x35\x36\x37"
12243 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
12244 "\x40\x41\x42\x43\x44\x45\x46\x47"
12245 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
12246 "\x50\x51\x52\x53\x54\x55\x56\x57"
12247 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
12248 "\x60\x61\x62\x63\x64\x65\x66\x67"
12249 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
12250 "\x70\x71\x72\x73\x74\x75\x76\x77"
12251 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
12252 "\x80\x81\x82\x83\x84\x85\x86\x87"
12253 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
12254 "\x90\x91\x92\x93\x94\x95\x96\x97"
12255 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
12256 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
12257 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
12258 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
12259 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
12260 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
12261 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
12262 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
12263 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
12264 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
12265 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
12266 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
12267 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
12268 "\x00\x01\x02\x03\x04\x05\x06\x07"
12269 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
12270 "\x10\x11\x12\x13\x14\x15\x16\x17"
12271 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
12272 "\x20\x21\x22\x23\x24\x25\x26\x27"
12273 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
12274 "\x30\x31\x32\x33\x34\x35\x36\x37"
12275 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
12276 "\x40\x41\x42\x43\x44\x45\x46\x47"
12277 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
12278 "\x50\x51\x52\x53\x54\x55\x56\x57"
12279 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
12280 "\x60\x61\x62\x63\x64\x65\x66\x67"
12281 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
12282 "\x70\x71\x72\x73\x74\x75\x76\x77"
12283 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
12284 "\x80\x81\x82\x83\x84\x85\x86\x87"
12285 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
12286 "\x90\x91\x92\x93\x94\x95\x96\x97"
12287 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
12288 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
12289 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
12290 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
12291 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
12292 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
12293 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
12294 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
12295 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
12296 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
12297 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
12298 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
12299 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
12300 .ilen = 512,
12301 .result = "\xc7\xf9\x0a\xaa\xcb\xb5\x8f\x33"
12302 "\x60\xc3\xe9\x47\x90\xb7\x50\x57"
12303 "\xa3\xad\x81\x2f\xf5\x22\x96\x02"
12304 "\xaa\x7f\xea\xac\x29\x78\xca\x2a"
12305 "\x7c\xcd\x31\x1a\x3c\x40\x0a\x73"
12306 "\x09\x66\xad\x72\x0e\x4d\x5d\x77"
12307 "\xbc\xb8\x76\x80\x37\x59\xa9\x01"
12308 "\x9e\xfb\xdb\x6c\x93\xef\xb6\x8d"
12309 "\x1e\xc1\x94\xa8\xd4\xb5\xb0\x01"
12310 "\xd5\x01\x97\x28\xcd\x7a\x1f\xe8"
12311 "\x08\xda\x76\x00\x65\xcf\x7b\x31"
12312 "\xc6\xfa\xf2\x3b\x00\xa7\x6a\x9e"
12313 "\x6c\x43\x80\x87\xe0\xbb\x4e\xe5"
12314 "\xdc\x8a\xdf\xc3\x1d\x1b\x41\x04"
12315 "\xfb\x54\xdd\x29\x27\xc2\x65\x17"
12316 "\x36\x88\xb0\x85\x8d\x73\x7e\x4b"
12317 "\x1d\x16\x8a\x52\xbc\xa6\xbc\xa4"
12318 "\x8c\xd1\x04\x16\xbf\x8c\x01\x0f"
12319 "\x7e\x6b\x59\x15\x29\xd1\x9b\xd3"
12320 "\x6c\xee\xac\xdc\x45\x58\xca\x5b"
12321 "\x70\x0e\x6a\x12\x86\x82\x79\x9f"
12322 "\x16\xd4\x9d\x67\xcd\x70\x65\x26"
12323 "\x21\x72\x1e\xa1\x94\x8a\x83\x0c"
12324 "\x92\x42\x58\x5e\xa2\xc5\x31\xf3"
12325 "\x7b\xd1\x31\xd4\x15\x80\x31\x61"
12326 "\x5c\x53\x10\xdd\xea\xc8\x83\x5c"
12327 "\x7d\xa7\x05\x66\xcc\x1e\xbb\x05"
12328 "\x47\xae\xb4\x0f\x84\xd8\xf6\xb5"
12329 "\xa1\xc6\x52\x00\x52\xe8\xdc\xd9"
12330 "\x16\x31\xb2\x47\x91\x67\xaa\x28"
12331 "\x2c\x29\x85\xa3\xf7\xf2\x24\x93"
12332 "\x23\x80\x1f\xa8\x1b\x82\x8d\xdc"
12333 "\x9f\x0b\xcd\xb4\x3c\x20\xbc\xec"
12334 "\x4f\xc7\xee\xf8\xfd\xd9\xfb\x7e"
12335 "\x3f\x0d\x23\xfa\x3f\xa7\xcc\x66"
12336 "\x1c\xfe\xa6\x86\xf6\xf7\x85\xc7"
12337 "\x43\xc1\xd4\xfc\xe4\x79\xc9\x1d"
12338 "\xf8\x89\xcd\x20\x27\x84\x5d\x5c"
12339 "\x8e\x4f\x1f\xeb\x08\x21\x4f\xa3"
12340 "\xe0\x7e\x0b\x9c\xe7\x42\xcf\xb7"
12341 "\x3f\x43\xcc\x86\x71\x34\x6a\xd9"
12342 "\x5e\xec\x8f\x36\xc9\x0a\x03\xfe"
12343 "\x18\x41\xdc\x9e\x2e\x75\x20\x3e"
12344 "\xcc\x77\xe0\x8f\xe8\x43\x37\x4c"
12345 "\xed\x1a\x5a\xb3\xfa\x43\xc9\x71"
12346 "\x9f\xc5\xce\xcf\xff\xe7\x77\x1e"
12347 "\x35\x93\xde\x6b\xc0\x6a\x7e\xa9"
12348 "\x34\xb8\x27\x74\x08\xda\xf2\x4a"
12349 "\x23\x5b\x9f\x55\x3a\x57\x82\x52"
12350 "\xea\x6d\xc3\xc7\xf2\xc8\xb5\xdc"
12351 "\xc5\xb9\xbb\xaa\xf2\x29\x9f\x49"
12352 "\x7a\xef\xfe\xdc\x9f\xc9\x28\xe2"
12353 "\x96\x0b\x35\x84\x05\x0d\xd6\x2a"
12354 "\xea\x5a\xbf\x69\xde\xee\x4f\x8f"
12355 "\x84\xb9\xcf\xa7\x57\xea\xe0\xe8"
12356 "\x96\xef\x0f\x0e\xec\xc7\xa6\x74"
12357 "\xb1\xfe\x7a\x6d\x11\xdd\x0e\x15"
12358 "\x4a\x1e\x73\x7f\x55\xea\xf6\xe1"
12359 "\x5b\xb6\x71\xda\xb0\x0c\xba\x26"
12360 "\x5c\x48\x38\x6d\x1c\x32\xb2\x7d"
12361 "\x05\x87\xc2\x1e\x7e\x2d\xd4\x33"
12362 "\xcc\x06\xdb\xe7\x82\x29\x63\xd1"
12363 "\x52\x84\x4f\xee\x27\xe8\x02\xd4"
12364 "\x34\x3c\x69\xc2\xbd\x20\xe6\x7a",
12365 .rlen = 512,
12366 }, {
12367 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
12368 "\x23\x53\x60\x28\x74\x71\x35\x26"
12369 "\x62\x49\x77\x57\x24\x70\x93\x69"
12370 "\x99\x59\x57\x49\x66\x96\x76\x27"
12371 "\x31\x41\x59\x26\x53\x58\x97\x93"
12372 "\x23\x84\x62\x64\x33\x83\x27\x95"
12373 "\x02\x88\x41\x97\x16\x93\x99\x37"
12374 "\x51\x05\x82\x09\x74\x94\x45\x92",
12375 .klen = 64,
12376 .iv = "\xff\x00\x00\x00\x00\x00\x00\x00"
12377 "\x00\x00\x00\x00\x00\x00\x00\x00",
12378 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
12379 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
12380 "\x10\x11\x12\x13\x14\x15\x16\x17"
12381 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
12382 "\x20\x21\x22\x23\x24\x25\x26\x27"
12383 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
12384 "\x30\x31\x32\x33\x34\x35\x36\x37"
12385 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
12386 "\x40\x41\x42\x43\x44\x45\x46\x47"
12387 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
12388 "\x50\x51\x52\x53\x54\x55\x56\x57"
12389 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
12390 "\x60\x61\x62\x63\x64\x65\x66\x67"
12391 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
12392 "\x70\x71\x72\x73\x74\x75\x76\x77"
12393 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
12394 "\x80\x81\x82\x83\x84\x85\x86\x87"
12395 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
12396 "\x90\x91\x92\x93\x94\x95\x96\x97"
12397 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
12398 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
12399 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
12400 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
12401 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
12402 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
12403 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
12404 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
12405 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
12406 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
12407 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
12408 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
12409 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
12410 "\x00\x01\x02\x03\x04\x05\x06\x07"
12411 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
12412 "\x10\x11\x12\x13\x14\x15\x16\x17"
12413 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
12414 "\x20\x21\x22\x23\x24\x25\x26\x27"
12415 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
12416 "\x30\x31\x32\x33\x34\x35\x36\x37"
12417 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
12418 "\x40\x41\x42\x43\x44\x45\x46\x47"
12419 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
12420 "\x50\x51\x52\x53\x54\x55\x56\x57"
12421 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
12422 "\x60\x61\x62\x63\x64\x65\x66\x67"
12423 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
12424 "\x70\x71\x72\x73\x74\x75\x76\x77"
12425 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
12426 "\x80\x81\x82\x83\x84\x85\x86\x87"
12427 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
12428 "\x90\x91\x92\x93\x94\x95\x96\x97"
12429 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
12430 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
12431 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
12432 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
12433 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
12434 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
12435 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
12436 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
12437 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
12438 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
12439 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
12440 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
12441 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
12442 .ilen = 512,
12443 .result = "\x49\xcd\xb8\xbf\x2f\x73\x37\x28"
12444 "\x9a\x7f\x6e\x57\x55\xb8\x07\x88"
12445 "\x4a\x0d\x8b\x55\x60\xed\xb6\x7b"
12446 "\xf1\x74\xac\x96\x05\x7b\x32\xca"
12447 "\xd1\x4e\xf1\x58\x29\x16\x24\x6c"
12448 "\xf2\xb3\xe4\x88\x84\xac\x4d\xee"
12449 "\x97\x07\x82\xf0\x07\x12\x38\x0a"
12450 "\x67\x62\xaf\xfd\x85\x9f\x0a\x55"
12451 "\xa5\x20\xc5\x60\xe4\x68\x53\xa4"
12452 "\x0e\x2e\x65\xe3\xe4\x0c\x30\x7c"
12453 "\x1c\x01\x4f\x55\xa9\x13\xeb\x25"
12454 "\x21\x87\xbc\xd3\xe7\x67\x4f\x38"
12455 "\xa8\x14\x25\x71\xe9\x2e\x4c\x21"
12456 "\x41\x82\x0c\x45\x39\x35\xa8\x75"
12457 "\x03\x29\x01\x84\x8c\xab\x48\xbe"
12458 "\x11\x56\x22\x67\xb7\x67\x1a\x09"
12459 "\xa1\x72\x25\x41\x3c\x39\x65\x80"
12460 "\x7d\x2f\xf8\x2c\x73\x04\x58\x9d"
12461 "\xdd\x16\x8b\x63\x70\x4e\xc5\x17"
12462 "\x21\xe0\x84\x51\x4b\x6f\x05\x52"
12463 "\xe3\x63\x34\xfa\xa4\xaf\x33\x20"
12464 "\xc1\xae\x32\xc4\xb8\x2b\xdb\x76"
12465 "\xd9\x02\x31\x2f\xa3\xc6\xd0\x7b"
12466 "\xaf\x1b\x84\xe3\x9b\xbf\xa6\xe0"
12467 "\xb8\x8a\x13\x88\x71\xf4\x11\xa5"
12468 "\xe9\xa9\x10\x33\xe0\xbe\x49\x89"
12469 "\x41\x22\xf5\x9d\x80\x3e\x3b\x76"
12470 "\x01\x16\x50\x6e\x7c\x6a\x81\xe9"
12471 "\x13\x2c\xde\xb2\x5f\x79\xba\xb2"
12472 "\xb1\x75\xae\xd2\x07\x98\x4b\x69"
12473 "\xae\x7d\x5b\x90\xc2\x6c\xe6\x98"
12474 "\xd3\x4c\xa1\xa3\x9c\xc9\x33\x6a"
12475 "\x0d\x23\xb1\x79\x25\x13\x4b\xe5"
12476 "\xaf\x93\x20\x5c\x7f\x06\x7a\x34"
12477 "\x0b\x78\xe3\x67\x26\xe0\xad\x95"
12478 "\xc5\x4e\x26\x22\xcf\x73\x77\x62"
12479 "\x3e\x10\xd7\x90\x4b\x52\x1c\xc9"
12480 "\xef\x38\x52\x18\x0e\x29\x7e\xef"
12481 "\x34\xfe\x31\x95\xc5\xbc\xa8\xe2"
12482 "\xa8\x4e\x9f\xea\xa6\xf0\xfe\x5d"
12483 "\xc5\x39\x86\xed\x2f\x6d\xa0\xfe"
12484 "\x96\xcd\x41\x10\x78\x4e\x0c\xc9"
12485 "\xc3\x6d\x0f\xb7\xe8\xe0\x62\xab"
12486 "\x8b\xf1\x21\x89\xa1\x12\xaa\xfa"
12487 "\x9d\x70\xbe\x4c\xa8\x98\x89\x01"
12488 "\xb9\xe2\x61\xde\x0c\x4a\x0b\xaa"
12489 "\x89\xf5\x14\x79\x18\x8f\x3b\x0d"
12490 "\x21\x17\xf8\x59\x15\x24\x64\x22"
12491 "\x57\x48\x80\xd5\x3d\x92\x30\x07"
12492 "\xd9\xa1\x4a\x23\x16\x43\x48\x0e"
12493 "\x2b\x2d\x1b\x87\xef\x7e\xbd\xfa"
12494 "\x49\xbc\x7e\x68\x6e\xa8\x46\x95"
12495 "\xad\x5e\xfe\x0a\xa8\xd3\x1a\x5d"
12496 "\x6b\x84\xf3\x00\xba\x52\x05\x02"
12497 "\xe3\x96\x4e\xb6\x79\x3f\x43\xd3"
12498 "\x4d\x3f\xd6\xab\x0a\xc4\x75\x2d"
12499 "\xd1\x08\xc3\x6a\xc8\x37\x29\xa0"
12500 "\xcc\x9a\x05\xdd\x5c\xe1\xff\x66"
12501 "\xf2\x7a\x1d\xf2\xaf\xa9\x48\x89"
12502 "\xf5\x21\x0f\x02\x48\x83\x74\xbf"
12503 "\x2e\xe6\x93\x7b\xa0\xf4\xb1\x2b"
12504 "\xb1\x02\x0a\x5c\x79\x19\x3b\x75"
12505 "\xb7\x16\xd8\x12\x5c\xcd\x7d\x4e"
12506 "\xd5\xc6\x99\xcc\x4e\x6c\x94\x95",
12507 .rlen = 512,
12508 },
12509};
12510
12511static struct cipher_testvec camellia_xts_dec_tv_template[] = {
12512 /* Generated from AES-XTS test vectors */
12513 /* same as enc vectors with input and result reversed */
12514 {
12515 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
12516 "\x00\x00\x00\x00\x00\x00\x00\x00"
12517 "\x00\x00\x00\x00\x00\x00\x00\x00"
12518 "\x00\x00\x00\x00\x00\x00\x00\x00",
12519 .klen = 32,
12520 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
12521 "\x00\x00\x00\x00\x00\x00\x00\x00",
12522 .input = "\x06\xcb\xa5\xf1\x04\x63\xb2\x41"
12523 "\xdc\xca\xfa\x09\xba\x74\xb9\x05"
12524 "\x78\xba\xa4\xf8\x67\x4d\x7e\xad"
12525 "\x20\x18\xf5\x0c\x41\x16\x2a\x61",
12526 .ilen = 32,
12527 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
12528 "\x00\x00\x00\x00\x00\x00\x00\x00"
12529 "\x00\x00\x00\x00\x00\x00\x00\x00"
12530 "\x00\x00\x00\x00\x00\x00\x00\x00",
12531 .rlen = 32,
12532 }, {
12533 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
12534 "\x11\x11\x11\x11\x11\x11\x11\x11"
12535 "\x22\x22\x22\x22\x22\x22\x22\x22"
12536 "\x22\x22\x22\x22\x22\x22\x22\x22",
12537 .klen = 32,
12538 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
12539 "\x00\x00\x00\x00\x00\x00\x00\x00",
12540 .input = "\xc2\xb9\xdc\x44\x1d\xdf\xf2\x86"
12541 "\x8d\x35\x42\x0a\xa5\x5e\x3d\x4f"
12542 "\xb5\x37\x06\xff\xbd\xd4\x91\x70"
12543 "\x80\x1f\xb2\x39\x10\x89\x44\xf5",
12544 .ilen = 32,
12545 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
12546 "\x44\x44\x44\x44\x44\x44\x44\x44"
12547 "\x44\x44\x44\x44\x44\x44\x44\x44"
12548 "\x44\x44\x44\x44\x44\x44\x44\x44",
12549 .rlen = 32,
12550 }, {
12551 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
12552 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
12553 "\x22\x22\x22\x22\x22\x22\x22\x22"
12554 "\x22\x22\x22\x22\x22\x22\x22\x22",
12555 .klen = 32,
12556 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
12557 "\x00\x00\x00\x00\x00\x00\x00\x00",
12558 .input = "\x52\x1f\x9d\xf5\x5a\x58\x5a\x7e"
12559 "\x9f\xd0\x8e\x02\x9c\x9a\x6a\xa7"
12560 "\xb4\x3b\xce\xe7\x17\xaa\x89\x6a"
12561 "\x35\x3c\x6b\xb5\x61\x1c\x79\x38",
12562 .ilen = 32,
12563 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
12564 "\x44\x44\x44\x44\x44\x44\x44\x44"
12565 "\x44\x44\x44\x44\x44\x44\x44\x44"
12566 "\x44\x44\x44\x44\x44\x44\x44\x44",
12567 .rlen = 32,
12568 }, {
12569 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
12570 "\x23\x53\x60\x28\x74\x71\x35\x26"
12571 "\x31\x41\x59\x26\x53\x58\x97\x93"
12572 "\x23\x84\x62\x64\x33\x83\x27\x95",
12573 .klen = 32,
12574 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
12575 "\x00\x00\x00\x00\x00\x00\x00\x00",
12576 .input = "\xc7\xf9\x0a\xaa\xcb\xb5\x8f\x33"
12577 "\x60\xc3\xe9\x47\x90\xb7\x50\x57"
12578 "\xa3\xad\x81\x2f\xf5\x22\x96\x02"
12579 "\xaa\x7f\xea\xac\x29\x78\xca\x2a"
12580 "\x7c\xcd\x31\x1a\x3c\x40\x0a\x73"
12581 "\x09\x66\xad\x72\x0e\x4d\x5d\x77"
12582 "\xbc\xb8\x76\x80\x37\x59\xa9\x01"
12583 "\x9e\xfb\xdb\x6c\x93\xef\xb6\x8d"
12584 "\x1e\xc1\x94\xa8\xd4\xb5\xb0\x01"
12585 "\xd5\x01\x97\x28\xcd\x7a\x1f\xe8"
12586 "\x08\xda\x76\x00\x65\xcf\x7b\x31"
12587 "\xc6\xfa\xf2\x3b\x00\xa7\x6a\x9e"
12588 "\x6c\x43\x80\x87\xe0\xbb\x4e\xe5"
12589 "\xdc\x8a\xdf\xc3\x1d\x1b\x41\x04"
12590 "\xfb\x54\xdd\x29\x27\xc2\x65\x17"
12591 "\x36\x88\xb0\x85\x8d\x73\x7e\x4b"
12592 "\x1d\x16\x8a\x52\xbc\xa6\xbc\xa4"
12593 "\x8c\xd1\x04\x16\xbf\x8c\x01\x0f"
12594 "\x7e\x6b\x59\x15\x29\xd1\x9b\xd3"
12595 "\x6c\xee\xac\xdc\x45\x58\xca\x5b"
12596 "\x70\x0e\x6a\x12\x86\x82\x79\x9f"
12597 "\x16\xd4\x9d\x67\xcd\x70\x65\x26"
12598 "\x21\x72\x1e\xa1\x94\x8a\x83\x0c"
12599 "\x92\x42\x58\x5e\xa2\xc5\x31\xf3"
12600 "\x7b\xd1\x31\xd4\x15\x80\x31\x61"
12601 "\x5c\x53\x10\xdd\xea\xc8\x83\x5c"
12602 "\x7d\xa7\x05\x66\xcc\x1e\xbb\x05"
12603 "\x47\xae\xb4\x0f\x84\xd8\xf6\xb5"
12604 "\xa1\xc6\x52\x00\x52\xe8\xdc\xd9"
12605 "\x16\x31\xb2\x47\x91\x67\xaa\x28"
12606 "\x2c\x29\x85\xa3\xf7\xf2\x24\x93"
12607 "\x23\x80\x1f\xa8\x1b\x82\x8d\xdc"
12608 "\x9f\x0b\xcd\xb4\x3c\x20\xbc\xec"
12609 "\x4f\xc7\xee\xf8\xfd\xd9\xfb\x7e"
12610 "\x3f\x0d\x23\xfa\x3f\xa7\xcc\x66"
12611 "\x1c\xfe\xa6\x86\xf6\xf7\x85\xc7"
12612 "\x43\xc1\xd4\xfc\xe4\x79\xc9\x1d"
12613 "\xf8\x89\xcd\x20\x27\x84\x5d\x5c"
12614 "\x8e\x4f\x1f\xeb\x08\x21\x4f\xa3"
12615 "\xe0\x7e\x0b\x9c\xe7\x42\xcf\xb7"
12616 "\x3f\x43\xcc\x86\x71\x34\x6a\xd9"
12617 "\x5e\xec\x8f\x36\xc9\x0a\x03\xfe"
12618 "\x18\x41\xdc\x9e\x2e\x75\x20\x3e"
12619 "\xcc\x77\xe0\x8f\xe8\x43\x37\x4c"
12620 "\xed\x1a\x5a\xb3\xfa\x43\xc9\x71"
12621 "\x9f\xc5\xce\xcf\xff\xe7\x77\x1e"
12622 "\x35\x93\xde\x6b\xc0\x6a\x7e\xa9"
12623 "\x34\xb8\x27\x74\x08\xda\xf2\x4a"
12624 "\x23\x5b\x9f\x55\x3a\x57\x82\x52"
12625 "\xea\x6d\xc3\xc7\xf2\xc8\xb5\xdc"
12626 "\xc5\xb9\xbb\xaa\xf2\x29\x9f\x49"
12627 "\x7a\xef\xfe\xdc\x9f\xc9\x28\xe2"
12628 "\x96\x0b\x35\x84\x05\x0d\xd6\x2a"
12629 "\xea\x5a\xbf\x69\xde\xee\x4f\x8f"
12630 "\x84\xb9\xcf\xa7\x57\xea\xe0\xe8"
12631 "\x96\xef\x0f\x0e\xec\xc7\xa6\x74"
12632 "\xb1\xfe\x7a\x6d\x11\xdd\x0e\x15"
12633 "\x4a\x1e\x73\x7f\x55\xea\xf6\xe1"
12634 "\x5b\xb6\x71\xda\xb0\x0c\xba\x26"
12635 "\x5c\x48\x38\x6d\x1c\x32\xb2\x7d"
12636 "\x05\x87\xc2\x1e\x7e\x2d\xd4\x33"
12637 "\xcc\x06\xdb\xe7\x82\x29\x63\xd1"
12638 "\x52\x84\x4f\xee\x27\xe8\x02\xd4"
12639 "\x34\x3c\x69\xc2\xbd\x20\xe6\x7a",
12640 .ilen = 512,
12641 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
12642 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
12643 "\x10\x11\x12\x13\x14\x15\x16\x17"
12644 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
12645 "\x20\x21\x22\x23\x24\x25\x26\x27"
12646 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
12647 "\x30\x31\x32\x33\x34\x35\x36\x37"
12648 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
12649 "\x40\x41\x42\x43\x44\x45\x46\x47"
12650 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
12651 "\x50\x51\x52\x53\x54\x55\x56\x57"
12652 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
12653 "\x60\x61\x62\x63\x64\x65\x66\x67"
12654 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
12655 "\x70\x71\x72\x73\x74\x75\x76\x77"
12656 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
12657 "\x80\x81\x82\x83\x84\x85\x86\x87"
12658 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
12659 "\x90\x91\x92\x93\x94\x95\x96\x97"
12660 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
12661 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
12662 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
12663 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
12664 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
12665 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
12666 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
12667 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
12668 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
12669 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
12670 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
12671 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
12672 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
12673 "\x00\x01\x02\x03\x04\x05\x06\x07"
12674 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
12675 "\x10\x11\x12\x13\x14\x15\x16\x17"
12676 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
12677 "\x20\x21\x22\x23\x24\x25\x26\x27"
12678 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
12679 "\x30\x31\x32\x33\x34\x35\x36\x37"
12680 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
12681 "\x40\x41\x42\x43\x44\x45\x46\x47"
12682 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
12683 "\x50\x51\x52\x53\x54\x55\x56\x57"
12684 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
12685 "\x60\x61\x62\x63\x64\x65\x66\x67"
12686 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
12687 "\x70\x71\x72\x73\x74\x75\x76\x77"
12688 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
12689 "\x80\x81\x82\x83\x84\x85\x86\x87"
12690 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
12691 "\x90\x91\x92\x93\x94\x95\x96\x97"
12692 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
12693 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
12694 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
12695 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
12696 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
12697 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
12698 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
12699 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
12700 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
12701 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
12702 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
12703 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
12704 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
12705 .rlen = 512,
12706 }, {
12707 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
12708 "\x23\x53\x60\x28\x74\x71\x35\x26"
12709 "\x62\x49\x77\x57\x24\x70\x93\x69"
12710 "\x99\x59\x57\x49\x66\x96\x76\x27"
12711 "\x31\x41\x59\x26\x53\x58\x97\x93"
12712 "\x23\x84\x62\x64\x33\x83\x27\x95"
12713 "\x02\x88\x41\x97\x16\x93\x99\x37"
12714 "\x51\x05\x82\x09\x74\x94\x45\x92",
12715 .klen = 64,
12716 .iv = "\xff\x00\x00\x00\x00\x00\x00\x00"
12717 "\x00\x00\x00\x00\x00\x00\x00\x00",
12718 .input = "\x49\xcd\xb8\xbf\x2f\x73\x37\x28"
12719 "\x9a\x7f\x6e\x57\x55\xb8\x07\x88"
12720 "\x4a\x0d\x8b\x55\x60\xed\xb6\x7b"
12721 "\xf1\x74\xac\x96\x05\x7b\x32\xca"
12722 "\xd1\x4e\xf1\x58\x29\x16\x24\x6c"
12723 "\xf2\xb3\xe4\x88\x84\xac\x4d\xee"
12724 "\x97\x07\x82\xf0\x07\x12\x38\x0a"
12725 "\x67\x62\xaf\xfd\x85\x9f\x0a\x55"
12726 "\xa5\x20\xc5\x60\xe4\x68\x53\xa4"
12727 "\x0e\x2e\x65\xe3\xe4\x0c\x30\x7c"
12728 "\x1c\x01\x4f\x55\xa9\x13\xeb\x25"
12729 "\x21\x87\xbc\xd3\xe7\x67\x4f\x38"
12730 "\xa8\x14\x25\x71\xe9\x2e\x4c\x21"
12731 "\x41\x82\x0c\x45\x39\x35\xa8\x75"
12732 "\x03\x29\x01\x84\x8c\xab\x48\xbe"
12733 "\x11\x56\x22\x67\xb7\x67\x1a\x09"
12734 "\xa1\x72\x25\x41\x3c\x39\x65\x80"
12735 "\x7d\x2f\xf8\x2c\x73\x04\x58\x9d"
12736 "\xdd\x16\x8b\x63\x70\x4e\xc5\x17"
12737 "\x21\xe0\x84\x51\x4b\x6f\x05\x52"
12738 "\xe3\x63\x34\xfa\xa4\xaf\x33\x20"
12739 "\xc1\xae\x32\xc4\xb8\x2b\xdb\x76"
12740 "\xd9\x02\x31\x2f\xa3\xc6\xd0\x7b"
12741 "\xaf\x1b\x84\xe3\x9b\xbf\xa6\xe0"
12742 "\xb8\x8a\x13\x88\x71\xf4\x11\xa5"
12743 "\xe9\xa9\x10\x33\xe0\xbe\x49\x89"
12744 "\x41\x22\xf5\x9d\x80\x3e\x3b\x76"
12745 "\x01\x16\x50\x6e\x7c\x6a\x81\xe9"
12746 "\x13\x2c\xde\xb2\x5f\x79\xba\xb2"
12747 "\xb1\x75\xae\xd2\x07\x98\x4b\x69"
12748 "\xae\x7d\x5b\x90\xc2\x6c\xe6\x98"
12749 "\xd3\x4c\xa1\xa3\x9c\xc9\x33\x6a"
12750 "\x0d\x23\xb1\x79\x25\x13\x4b\xe5"
12751 "\xaf\x93\x20\x5c\x7f\x06\x7a\x34"
12752 "\x0b\x78\xe3\x67\x26\xe0\xad\x95"
12753 "\xc5\x4e\x26\x22\xcf\x73\x77\x62"
12754 "\x3e\x10\xd7\x90\x4b\x52\x1c\xc9"
12755 "\xef\x38\x52\x18\x0e\x29\x7e\xef"
12756 "\x34\xfe\x31\x95\xc5\xbc\xa8\xe2"
12757 "\xa8\x4e\x9f\xea\xa6\xf0\xfe\x5d"
12758 "\xc5\x39\x86\xed\x2f\x6d\xa0\xfe"
12759 "\x96\xcd\x41\x10\x78\x4e\x0c\xc9"
12760 "\xc3\x6d\x0f\xb7\xe8\xe0\x62\xab"
12761 "\x8b\xf1\x21\x89\xa1\x12\xaa\xfa"
12762 "\x9d\x70\xbe\x4c\xa8\x98\x89\x01"
12763 "\xb9\xe2\x61\xde\x0c\x4a\x0b\xaa"
12764 "\x89\xf5\x14\x79\x18\x8f\x3b\x0d"
12765 "\x21\x17\xf8\x59\x15\x24\x64\x22"
12766 "\x57\x48\x80\xd5\x3d\x92\x30\x07"
12767 "\xd9\xa1\x4a\x23\x16\x43\x48\x0e"
12768 "\x2b\x2d\x1b\x87\xef\x7e\xbd\xfa"
12769 "\x49\xbc\x7e\x68\x6e\xa8\x46\x95"
12770 "\xad\x5e\xfe\x0a\xa8\xd3\x1a\x5d"
12771 "\x6b\x84\xf3\x00\xba\x52\x05\x02"
12772 "\xe3\x96\x4e\xb6\x79\x3f\x43\xd3"
12773 "\x4d\x3f\xd6\xab\x0a\xc4\x75\x2d"
12774 "\xd1\x08\xc3\x6a\xc8\x37\x29\xa0"
12775 "\xcc\x9a\x05\xdd\x5c\xe1\xff\x66"
12776 "\xf2\x7a\x1d\xf2\xaf\xa9\x48\x89"
12777 "\xf5\x21\x0f\x02\x48\x83\x74\xbf"
12778 "\x2e\xe6\x93\x7b\xa0\xf4\xb1\x2b"
12779 "\xb1\x02\x0a\x5c\x79\x19\x3b\x75"
12780 "\xb7\x16\xd8\x12\x5c\xcd\x7d\x4e"
12781 "\xd5\xc6\x99\xcc\x4e\x6c\x94\x95",
12782 .ilen = 512,
12783 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
12784 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
12785 "\x10\x11\x12\x13\x14\x15\x16\x17"
12786 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
12787 "\x20\x21\x22\x23\x24\x25\x26\x27"
12788 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
12789 "\x30\x31\x32\x33\x34\x35\x36\x37"
12790 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
12791 "\x40\x41\x42\x43\x44\x45\x46\x47"
12792 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
12793 "\x50\x51\x52\x53\x54\x55\x56\x57"
12794 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
12795 "\x60\x61\x62\x63\x64\x65\x66\x67"
12796 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
12797 "\x70\x71\x72\x73\x74\x75\x76\x77"
12798 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
12799 "\x80\x81\x82\x83\x84\x85\x86\x87"
12800 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
12801 "\x90\x91\x92\x93\x94\x95\x96\x97"
12802 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
12803 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
12804 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
12805 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
12806 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
12807 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
12808 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
12809 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
12810 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
12811 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
12812 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
12813 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
12814 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
12815 "\x00\x01\x02\x03\x04\x05\x06\x07"
12816 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
12817 "\x10\x11\x12\x13\x14\x15\x16\x17"
12818 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
12819 "\x20\x21\x22\x23\x24\x25\x26\x27"
12820 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
12821 "\x30\x31\x32\x33\x34\x35\x36\x37"
12822 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
12823 "\x40\x41\x42\x43\x44\x45\x46\x47"
12824 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
12825 "\x50\x51\x52\x53\x54\x55\x56\x57"
12826 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
12827 "\x60\x61\x62\x63\x64\x65\x66\x67"
12828 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
12829 "\x70\x71\x72\x73\x74\x75\x76\x77"
12830 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
12831 "\x80\x81\x82\x83\x84\x85\x86\x87"
12832 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
12833 "\x90\x91\x92\x93\x94\x95\x96\x97"
12834 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
12835 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
12836 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
12837 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
12838 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
12839 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
12840 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
12841 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
12842 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
12843 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
12844 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
12845 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
12846 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
12847 .rlen = 512,
12848 },
11474}; 12849};
11475 12850
11476/* 12851/*