aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
Diffstat (limited to 'crypto')
-rw-r--r--crypto/Kconfig19
-rw-r--r--crypto/Makefile2
-rw-r--r--crypto/ablkcipher.c4
-rw-r--r--crypto/aead.c4
-rw-r--r--crypto/ahash.c4
-rw-r--r--crypto/algapi.c35
-rw-r--r--crypto/async_tx/async_memcpy.c8
-rw-r--r--crypto/blkcipher.c8
-rw-r--r--crypto/camellia_generic.c (renamed from crypto/camellia.c)104
-rw-r--r--crypto/ccm.c4
-rw-r--r--crypto/crc32c.c94
-rw-r--r--crypto/crypto_user.c90
-rw-r--r--crypto/pcrypt.c8
-rw-r--r--crypto/scatterwalk.c8
-rw-r--r--crypto/shash.c8
-rw-r--r--crypto/tcrypt.c12
-rw-r--r--crypto/testmgr.c45
-rw-r--r--crypto/testmgr.h1383
18 files changed, 1653 insertions, 187 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig
index e6cfe1a25137..21ff9d015432 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -308,6 +308,7 @@ comment "Digest"
308config CRYPTO_CRC32C 308config CRYPTO_CRC32C
309 tristate "CRC32c CRC algorithm" 309 tristate "CRC32c CRC algorithm"
310 select CRYPTO_HASH 310 select CRYPTO_HASH
311 select CRC32
311 help 312 help
312 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used 313 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
313 by iSCSI for header and data digests and by others. 314 by iSCSI for header and data digests and by others.
@@ -654,6 +655,24 @@ config CRYPTO_CAMELLIA
654 See also: 655 See also:
655 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 656 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
656 657
658config CRYPTO_CAMELLIA_X86_64
659 tristate "Camellia cipher algorithm (x86_64)"
660 depends on (X86 || UML_X86) && 64BIT
661 depends on CRYPTO
662 select CRYPTO_ALGAPI
663 select CRYPTO_LRW
664 select CRYPTO_XTS
665 help
666 Camellia cipher algorithm module (x86_64).
667
668 Camellia is a symmetric key block cipher developed jointly
669 at NTT and Mitsubishi Electric Corporation.
670
671 The Camellia specifies three key sizes: 128, 192 and 256 bits.
672
673 See also:
674 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
675
657config CRYPTO_CAST5 676config CRYPTO_CAST5
658 tristate "CAST5 (CAST-128) cipher algorithm" 677 tristate "CAST5 (CAST-128) cipher algorithm"
659 select CRYPTO_ALGAPI 678 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/ablkcipher.c b/crypto/ablkcipher.c
index a0f768c1d9aa..8d3a056ebeea 100644
--- a/crypto/ablkcipher.c
+++ b/crypto/ablkcipher.c
@@ -613,8 +613,7 @@ out:
613 return err; 613 return err;
614} 614}
615 615
616static struct crypto_alg *crypto_lookup_skcipher(const char *name, u32 type, 616struct crypto_alg *crypto_lookup_skcipher(const char *name, u32 type, u32 mask)
617 u32 mask)
618{ 617{
619 struct crypto_alg *alg; 618 struct crypto_alg *alg;
620 619
@@ -652,6 +651,7 @@ static struct crypto_alg *crypto_lookup_skcipher(const char *name, u32 type,
652 651
653 return ERR_PTR(crypto_givcipher_default(alg, type, mask)); 652 return ERR_PTR(crypto_givcipher_default(alg, type, mask));
654} 653}
654EXPORT_SYMBOL_GPL(crypto_lookup_skcipher);
655 655
656int crypto_grab_skcipher(struct crypto_skcipher_spawn *spawn, const char *name, 656int crypto_grab_skcipher(struct crypto_skcipher_spawn *spawn, const char *name,
657 u32 type, u32 mask) 657 u32 type, u32 mask)
diff --git a/crypto/aead.c b/crypto/aead.c
index 04add3dca6fe..e4cb35159be4 100644
--- a/crypto/aead.c
+++ b/crypto/aead.c
@@ -470,8 +470,7 @@ out:
470 return err; 470 return err;
471} 471}
472 472
473static struct crypto_alg *crypto_lookup_aead(const char *name, u32 type, 473struct crypto_alg *crypto_lookup_aead(const char *name, u32 type, u32 mask)
474 u32 mask)
475{ 474{
476 struct crypto_alg *alg; 475 struct crypto_alg *alg;
477 476
@@ -503,6 +502,7 @@ static struct crypto_alg *crypto_lookup_aead(const char *name, u32 type,
503 502
504 return ERR_PTR(crypto_nivaead_default(alg, type, mask)); 503 return ERR_PTR(crypto_nivaead_default(alg, type, mask));
505} 504}
505EXPORT_SYMBOL_GPL(crypto_lookup_aead);
506 506
507int crypto_grab_aead(struct crypto_aead_spawn *spawn, const char *name, 507int crypto_grab_aead(struct crypto_aead_spawn *spawn, const char *name,
508 u32 type, u32 mask) 508 u32 type, u32 mask)
diff --git a/crypto/ahash.c b/crypto/ahash.c
index ac93c99cfae8..33bc9b62e9ae 100644
--- a/crypto/ahash.c
+++ b/crypto/ahash.c
@@ -46,7 +46,7 @@ static int hash_walk_next(struct crypto_hash_walk *walk)
46 unsigned int nbytes = min(walk->entrylen, 46 unsigned int nbytes = min(walk->entrylen,
47 ((unsigned int)(PAGE_SIZE)) - offset); 47 ((unsigned int)(PAGE_SIZE)) - offset);
48 48
49 walk->data = crypto_kmap(walk->pg, 0); 49 walk->data = kmap_atomic(walk->pg);
50 walk->data += offset; 50 walk->data += offset;
51 51
52 if (offset & alignmask) { 52 if (offset & alignmask) {
@@ -93,7 +93,7 @@ int crypto_hash_walk_done(struct crypto_hash_walk *walk, int err)
93 return nbytes; 93 return nbytes;
94 } 94 }
95 95
96 crypto_kunmap(walk->data, 0); 96 kunmap_atomic(walk->data);
97 crypto_yield(walk->flags); 97 crypto_yield(walk->flags);
98 98
99 if (err) 99 if (err)
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/async_tx/async_memcpy.c b/crypto/async_tx/async_memcpy.c
index 0d5a90ca6501..361b5e8239bc 100644
--- a/crypto/async_tx/async_memcpy.c
+++ b/crypto/async_tx/async_memcpy.c
@@ -79,13 +79,13 @@ async_memcpy(struct page *dest, struct page *src, unsigned int dest_offset,
79 /* wait for any prerequisite operations */ 79 /* wait for any prerequisite operations */
80 async_tx_quiesce(&submit->depend_tx); 80 async_tx_quiesce(&submit->depend_tx);
81 81
82 dest_buf = kmap_atomic(dest, KM_USER0) + dest_offset; 82 dest_buf = kmap_atomic(dest) + dest_offset;
83 src_buf = kmap_atomic(src, KM_USER1) + src_offset; 83 src_buf = kmap_atomic(src) + src_offset;
84 84
85 memcpy(dest_buf, src_buf, len); 85 memcpy(dest_buf, src_buf, len);
86 86
87 kunmap_atomic(src_buf, KM_USER1); 87 kunmap_atomic(src_buf);
88 kunmap_atomic(dest_buf, KM_USER0); 88 kunmap_atomic(dest_buf);
89 89
90 async_tx_sync_epilog(submit); 90 async_tx_sync_epilog(submit);
91 } 91 }
diff --git a/crypto/blkcipher.c b/crypto/blkcipher.c
index 1e61d1a888b2..4dd80c725498 100644
--- a/crypto/blkcipher.c
+++ b/crypto/blkcipher.c
@@ -43,22 +43,22 @@ static int blkcipher_walk_first(struct blkcipher_desc *desc,
43 43
44static inline void blkcipher_map_src(struct blkcipher_walk *walk) 44static inline void blkcipher_map_src(struct blkcipher_walk *walk)
45{ 45{
46 walk->src.virt.addr = scatterwalk_map(&walk->in, 0); 46 walk->src.virt.addr = scatterwalk_map(&walk->in);
47} 47}
48 48
49static inline void blkcipher_map_dst(struct blkcipher_walk *walk) 49static inline void blkcipher_map_dst(struct blkcipher_walk *walk)
50{ 50{
51 walk->dst.virt.addr = scatterwalk_map(&walk->out, 1); 51 walk->dst.virt.addr = scatterwalk_map(&walk->out);
52} 52}
53 53
54static inline void blkcipher_unmap_src(struct blkcipher_walk *walk) 54static inline void blkcipher_unmap_src(struct blkcipher_walk *walk)
55{ 55{
56 scatterwalk_unmap(walk->src.virt.addr, 0); 56 scatterwalk_unmap(walk->src.virt.addr);
57} 57}
58 58
59static inline void blkcipher_unmap_dst(struct blkcipher_walk *walk) 59static inline void blkcipher_unmap_dst(struct blkcipher_walk *walk)
60{ 60{
61 scatterwalk_unmap(walk->dst.virt.addr, 1); 61 scatterwalk_unmap(walk->dst.virt.addr);
62} 62}
63 63
64/* Get a spot of the specified length that does not straddle a page. 64/* Get a spot of the specified length that does not straddle a page.
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/ccm.c b/crypto/ccm.c
index c36d654cf56a..32fe1bb5decb 100644
--- a/crypto/ccm.c
+++ b/crypto/ccm.c
@@ -216,12 +216,12 @@ static void get_data_to_compute(struct crypto_cipher *tfm,
216 scatterwalk_start(&walk, sg_next(walk.sg)); 216 scatterwalk_start(&walk, sg_next(walk.sg));
217 n = scatterwalk_clamp(&walk, len); 217 n = scatterwalk_clamp(&walk, len);
218 } 218 }
219 data_src = scatterwalk_map(&walk, 0); 219 data_src = scatterwalk_map(&walk);
220 220
221 compute_mac(tfm, data_src, n, pctx); 221 compute_mac(tfm, data_src, n, pctx);
222 len -= n; 222 len -= n;
223 223
224 scatterwalk_unmap(data_src, 0); 224 scatterwalk_unmap(data_src);
225 scatterwalk_advance(&walk, n); 225 scatterwalk_advance(&walk, n);
226 scatterwalk_done(&walk, 0, len); 226 scatterwalk_done(&walk, 0, len);
227 if (len) 227 if (len)
diff --git a/crypto/crc32c.c b/crypto/crc32c.c
index 3f9ad2801052..06f7018c9d95 100644
--- a/crypto/crc32c.c
+++ b/crypto/crc32c.c
@@ -40,6 +40,7 @@
40#include <linux/module.h> 40#include <linux/module.h>
41#include <linux/string.h> 41#include <linux/string.h>
42#include <linux/kernel.h> 42#include <linux/kernel.h>
43#include <linux/crc32.h>
43 44
44#define CHKSUM_BLOCK_SIZE 1 45#define CHKSUM_BLOCK_SIZE 1
45#define CHKSUM_DIGEST_SIZE 4 46#define CHKSUM_DIGEST_SIZE 4
@@ -53,95 +54,6 @@ struct chksum_desc_ctx {
53}; 54};
54 55
55/* 56/*
56 * This is the CRC-32C table
57 * Generated with:
58 * width = 32 bits
59 * poly = 0x1EDC6F41
60 * reflect input bytes = true
61 * reflect output bytes = true
62 */
63
64static const u32 crc32c_table[256] = {
65 0x00000000L, 0xF26B8303L, 0xE13B70F7L, 0x1350F3F4L,
66 0xC79A971FL, 0x35F1141CL, 0x26A1E7E8L, 0xD4CA64EBL,
67 0x8AD958CFL, 0x78B2DBCCL, 0x6BE22838L, 0x9989AB3BL,
68 0x4D43CFD0L, 0xBF284CD3L, 0xAC78BF27L, 0x5E133C24L,
69 0x105EC76FL, 0xE235446CL, 0xF165B798L, 0x030E349BL,
70 0xD7C45070L, 0x25AFD373L, 0x36FF2087L, 0xC494A384L,
71 0x9A879FA0L, 0x68EC1CA3L, 0x7BBCEF57L, 0x89D76C54L,
72 0x5D1D08BFL, 0xAF768BBCL, 0xBC267848L, 0x4E4DFB4BL,
73 0x20BD8EDEL, 0xD2D60DDDL, 0xC186FE29L, 0x33ED7D2AL,
74 0xE72719C1L, 0x154C9AC2L, 0x061C6936L, 0xF477EA35L,
75 0xAA64D611L, 0x580F5512L, 0x4B5FA6E6L, 0xB93425E5L,
76 0x6DFE410EL, 0x9F95C20DL, 0x8CC531F9L, 0x7EAEB2FAL,
77 0x30E349B1L, 0xC288CAB2L, 0xD1D83946L, 0x23B3BA45L,
78 0xF779DEAEL, 0x05125DADL, 0x1642AE59L, 0xE4292D5AL,
79 0xBA3A117EL, 0x4851927DL, 0x5B016189L, 0xA96AE28AL,
80 0x7DA08661L, 0x8FCB0562L, 0x9C9BF696L, 0x6EF07595L,
81 0x417B1DBCL, 0xB3109EBFL, 0xA0406D4BL, 0x522BEE48L,
82 0x86E18AA3L, 0x748A09A0L, 0x67DAFA54L, 0x95B17957L,
83 0xCBA24573L, 0x39C9C670L, 0x2A993584L, 0xD8F2B687L,
84 0x0C38D26CL, 0xFE53516FL, 0xED03A29BL, 0x1F682198L,
85 0x5125DAD3L, 0xA34E59D0L, 0xB01EAA24L, 0x42752927L,
86 0x96BF4DCCL, 0x64D4CECFL, 0x77843D3BL, 0x85EFBE38L,
87 0xDBFC821CL, 0x2997011FL, 0x3AC7F2EBL, 0xC8AC71E8L,
88 0x1C661503L, 0xEE0D9600L, 0xFD5D65F4L, 0x0F36E6F7L,
89 0x61C69362L, 0x93AD1061L, 0x80FDE395L, 0x72966096L,
90 0xA65C047DL, 0x5437877EL, 0x4767748AL, 0xB50CF789L,
91 0xEB1FCBADL, 0x197448AEL, 0x0A24BB5AL, 0xF84F3859L,
92 0x2C855CB2L, 0xDEEEDFB1L, 0xCDBE2C45L, 0x3FD5AF46L,
93 0x7198540DL, 0x83F3D70EL, 0x90A324FAL, 0x62C8A7F9L,
94 0xB602C312L, 0x44694011L, 0x5739B3E5L, 0xA55230E6L,
95 0xFB410CC2L, 0x092A8FC1L, 0x1A7A7C35L, 0xE811FF36L,
96 0x3CDB9BDDL, 0xCEB018DEL, 0xDDE0EB2AL, 0x2F8B6829L,
97 0x82F63B78L, 0x709DB87BL, 0x63CD4B8FL, 0x91A6C88CL,
98 0x456CAC67L, 0xB7072F64L, 0xA457DC90L, 0x563C5F93L,
99 0x082F63B7L, 0xFA44E0B4L, 0xE9141340L, 0x1B7F9043L,
100 0xCFB5F4A8L, 0x3DDE77ABL, 0x2E8E845FL, 0xDCE5075CL,
101 0x92A8FC17L, 0x60C37F14L, 0x73938CE0L, 0x81F80FE3L,
102 0x55326B08L, 0xA759E80BL, 0xB4091BFFL, 0x466298FCL,
103 0x1871A4D8L, 0xEA1A27DBL, 0xF94AD42FL, 0x0B21572CL,
104 0xDFEB33C7L, 0x2D80B0C4L, 0x3ED04330L, 0xCCBBC033L,
105 0xA24BB5A6L, 0x502036A5L, 0x4370C551L, 0xB11B4652L,
106 0x65D122B9L, 0x97BAA1BAL, 0x84EA524EL, 0x7681D14DL,
107 0x2892ED69L, 0xDAF96E6AL, 0xC9A99D9EL, 0x3BC21E9DL,
108 0xEF087A76L, 0x1D63F975L, 0x0E330A81L, 0xFC588982L,
109 0xB21572C9L, 0x407EF1CAL, 0x532E023EL, 0xA145813DL,
110 0x758FE5D6L, 0x87E466D5L, 0x94B49521L, 0x66DF1622L,
111 0x38CC2A06L, 0xCAA7A905L, 0xD9F75AF1L, 0x2B9CD9F2L,
112 0xFF56BD19L, 0x0D3D3E1AL, 0x1E6DCDEEL, 0xEC064EEDL,
113 0xC38D26C4L, 0x31E6A5C7L, 0x22B65633L, 0xD0DDD530L,
114 0x0417B1DBL, 0xF67C32D8L, 0xE52CC12CL, 0x1747422FL,
115 0x49547E0BL, 0xBB3FFD08L, 0xA86F0EFCL, 0x5A048DFFL,
116 0x8ECEE914L, 0x7CA56A17L, 0x6FF599E3L, 0x9D9E1AE0L,
117 0xD3D3E1ABL, 0x21B862A8L, 0x32E8915CL, 0xC083125FL,
118 0x144976B4L, 0xE622F5B7L, 0xF5720643L, 0x07198540L,
119 0x590AB964L, 0xAB613A67L, 0xB831C993L, 0x4A5A4A90L,
120 0x9E902E7BL, 0x6CFBAD78L, 0x7FAB5E8CL, 0x8DC0DD8FL,
121 0xE330A81AL, 0x115B2B19L, 0x020BD8EDL, 0xF0605BEEL,
122 0x24AA3F05L, 0xD6C1BC06L, 0xC5914FF2L, 0x37FACCF1L,
123 0x69E9F0D5L, 0x9B8273D6L, 0x88D28022L, 0x7AB90321L,
124 0xAE7367CAL, 0x5C18E4C9L, 0x4F48173DL, 0xBD23943EL,
125 0xF36E6F75L, 0x0105EC76L, 0x12551F82L, 0xE03E9C81L,
126 0x34F4F86AL, 0xC69F7B69L, 0xD5CF889DL, 0x27A40B9EL,
127 0x79B737BAL, 0x8BDCB4B9L, 0x988C474DL, 0x6AE7C44EL,
128 0xBE2DA0A5L, 0x4C4623A6L, 0x5F16D052L, 0xAD7D5351L
129};
130
131/*
132 * Steps through buffer one byte at at time, calculates reflected
133 * crc using table.
134 */
135
136static u32 crc32c(u32 crc, const u8 *data, unsigned int length)
137{
138 while (length--)
139 crc = crc32c_table[(crc ^ *data++) & 0xFFL] ^ (crc >> 8);
140
141 return crc;
142}
143
144/*
145 * Steps through buffer one byte at at time, calculates reflected 57 * Steps through buffer one byte at at time, calculates reflected
146 * crc using table. 58 * crc using table.
147 */ 59 */
@@ -179,7 +91,7 @@ static int chksum_update(struct shash_desc *desc, const u8 *data,
179{ 91{
180 struct chksum_desc_ctx *ctx = shash_desc_ctx(desc); 92 struct chksum_desc_ctx *ctx = shash_desc_ctx(desc);
181 93
182 ctx->crc = crc32c(ctx->crc, data, length); 94 ctx->crc = __crc32c_le(ctx->crc, data, length);
183 return 0; 95 return 0;
184} 96}
185 97
@@ -193,7 +105,7 @@ static int chksum_final(struct shash_desc *desc, u8 *out)
193 105
194static int __chksum_finup(u32 *crcp, const u8 *data, unsigned int len, u8 *out) 106static int __chksum_finup(u32 *crcp, const u8 *data, unsigned int len, u8 *out)
195{ 107{
196 *(__le32 *)out = ~cpu_to_le32(crc32c(*crcp, data, len)); 108 *(__le32 *)out = ~cpu_to_le32(__crc32c_le(*crcp, data, len));
197 return 0; 109 return 0;
198} 110}
199 111
diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
index 16f8693cc147..f1ea0a064135 100644
--- a/crypto/crypto_user.c
+++ b/crypto/crypto_user.c
@@ -21,9 +21,13 @@
21#include <linux/module.h> 21#include <linux/module.h>
22#include <linux/crypto.h> 22#include <linux/crypto.h>
23#include <linux/cryptouser.h> 23#include <linux/cryptouser.h>
24#include <linux/sched.h>
24#include <net/netlink.h> 25#include <net/netlink.h>
25#include <linux/security.h> 26#include <linux/security.h>
26#include <net/net_namespace.h> 27#include <net/net_namespace.h>
28#include <crypto/internal/aead.h>
29#include <crypto/internal/skcipher.h>
30
27#include "internal.h" 31#include "internal.h"
28 32
29DEFINE_MUTEX(crypto_cfg_mutex); 33DEFINE_MUTEX(crypto_cfg_mutex);
@@ -301,10 +305,64 @@ static int crypto_del_alg(struct sk_buff *skb, struct nlmsghdr *nlh,
301 return crypto_unregister_instance(alg); 305 return crypto_unregister_instance(alg);
302} 306}
303 307
308static struct crypto_alg *crypto_user_skcipher_alg(const char *name, u32 type,
309 u32 mask)
310{
311 int err;
312 struct crypto_alg *alg;
313
314 type = crypto_skcipher_type(type);
315 mask = crypto_skcipher_mask(mask);
316
317 for (;;) {
318 alg = crypto_lookup_skcipher(name, type, mask);
319 if (!IS_ERR(alg))
320 return alg;
321
322 err = PTR_ERR(alg);
323 if (err != -EAGAIN)
324 break;
325 if (signal_pending(current)) {
326 err = -EINTR;
327 break;
328 }
329 }
330
331 return ERR_PTR(err);
332}
333
334static struct crypto_alg *crypto_user_aead_alg(const char *name, u32 type,
335 u32 mask)
336{
337 int err;
338 struct crypto_alg *alg;
339
340 type &= ~(CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_GENIV);
341 type |= CRYPTO_ALG_TYPE_AEAD;
342 mask &= ~(CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_GENIV);
343 mask |= CRYPTO_ALG_TYPE_MASK;
344
345 for (;;) {
346 alg = crypto_lookup_aead(name, type, mask);
347 if (!IS_ERR(alg))
348 return alg;
349
350 err = PTR_ERR(alg);
351 if (err != -EAGAIN)
352 break;
353 if (signal_pending(current)) {
354 err = -EINTR;
355 break;
356 }
357 }
358
359 return ERR_PTR(err);
360}
361
304static int crypto_add_alg(struct sk_buff *skb, struct nlmsghdr *nlh, 362static int crypto_add_alg(struct sk_buff *skb, struct nlmsghdr *nlh,
305 struct nlattr **attrs) 363 struct nlattr **attrs)
306{ 364{
307 int exact; 365 int exact = 0;
308 const char *name; 366 const char *name;
309 struct crypto_alg *alg; 367 struct crypto_alg *alg;
310 struct crypto_user_alg *p = nlmsg_data(nlh); 368 struct crypto_user_alg *p = nlmsg_data(nlh);
@@ -325,7 +383,19 @@ static int crypto_add_alg(struct sk_buff *skb, struct nlmsghdr *nlh,
325 else 383 else
326 name = p->cru_name; 384 name = p->cru_name;
327 385
328 alg = crypto_alg_mod_lookup(name, p->cru_type, p->cru_mask); 386 switch (p->cru_type & p->cru_mask & CRYPTO_ALG_TYPE_MASK) {
387 case CRYPTO_ALG_TYPE_AEAD:
388 alg = crypto_user_aead_alg(name, p->cru_type, p->cru_mask);
389 break;
390 case CRYPTO_ALG_TYPE_GIVCIPHER:
391 case CRYPTO_ALG_TYPE_BLKCIPHER:
392 case CRYPTO_ALG_TYPE_ABLKCIPHER:
393 alg = crypto_user_skcipher_alg(name, p->cru_type, p->cru_mask);
394 break;
395 default:
396 alg = crypto_alg_mod_lookup(name, p->cru_type, p->cru_mask);
397 }
398
329 if (IS_ERR(alg)) 399 if (IS_ERR(alg))
330 return PTR_ERR(alg); 400 return PTR_ERR(alg);
331 401
@@ -387,11 +457,23 @@ static int crypto_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
387 457
388 if ((type == (CRYPTO_MSG_GETALG - CRYPTO_MSG_BASE) && 458 if ((type == (CRYPTO_MSG_GETALG - CRYPTO_MSG_BASE) &&
389 (nlh->nlmsg_flags & NLM_F_DUMP))) { 459 (nlh->nlmsg_flags & NLM_F_DUMP))) {
460 struct crypto_alg *alg;
461 u16 dump_alloc = 0;
462
390 if (link->dump == NULL) 463 if (link->dump == NULL)
391 return -EINVAL; 464 return -EINVAL;
392 465
393 return netlink_dump_start(crypto_nlsk, skb, nlh, 466 list_for_each_entry(alg, &crypto_alg_list, cra_list)
394 link->dump, link->done, 0); 467 dump_alloc += CRYPTO_REPORT_MAXSIZE;
468
469 {
470 struct netlink_dump_control c = {
471 .dump = link->dump,
472 .done = link->done,
473 .min_dump_alloc = dump_alloc,
474 };
475 return netlink_dump_start(crypto_nlsk, skb, nlh, &c);
476 }
395 } 477 }
396 478
397 err = nlmsg_parse(nlh, crypto_msg_min[type], attrs, CRYPTOCFGA_MAX, 479 err = nlmsg_parse(nlh, crypto_msg_min[type], attrs, CRYPTOCFGA_MAX,
diff --git a/crypto/pcrypt.c b/crypto/pcrypt.c
index 29a89dad68b6..b2c99dc1c5e2 100644
--- a/crypto/pcrypt.c
+++ b/crypto/pcrypt.c
@@ -280,11 +280,11 @@ static int pcrypt_aead_init_tfm(struct crypto_tfm *tfm)
280 280
281 ictx->tfm_count++; 281 ictx->tfm_count++;
282 282
283 cpu_index = ictx->tfm_count % cpumask_weight(cpu_active_mask); 283 cpu_index = ictx->tfm_count % cpumask_weight(cpu_online_mask);
284 284
285 ctx->cb_cpu = cpumask_first(cpu_active_mask); 285 ctx->cb_cpu = cpumask_first(cpu_online_mask);
286 for (cpu = 0; cpu < cpu_index; cpu++) 286 for (cpu = 0; cpu < cpu_index; cpu++)
287 ctx->cb_cpu = cpumask_next(ctx->cb_cpu, cpu_active_mask); 287 ctx->cb_cpu = cpumask_next(ctx->cb_cpu, cpu_online_mask);
288 288
289 cipher = crypto_spawn_aead(crypto_instance_ctx(inst)); 289 cipher = crypto_spawn_aead(crypto_instance_ctx(inst));
290 290
@@ -472,7 +472,7 @@ static int pcrypt_init_padata(struct padata_pcrypt *pcrypt,
472 goto err_free_padata; 472 goto err_free_padata;
473 } 473 }
474 474
475 cpumask_and(mask->mask, cpu_possible_mask, cpu_active_mask); 475 cpumask_and(mask->mask, cpu_possible_mask, cpu_online_mask);
476 rcu_assign_pointer(pcrypt->cb_cpumask, mask); 476 rcu_assign_pointer(pcrypt->cb_cpumask, mask);
477 477
478 pcrypt->nblock.notifier_call = pcrypt_cpumask_change_notify; 478 pcrypt->nblock.notifier_call = pcrypt_cpumask_change_notify;
diff --git a/crypto/scatterwalk.c b/crypto/scatterwalk.c
index 41e529af0773..7281b8a93ad3 100644
--- a/crypto/scatterwalk.c
+++ b/crypto/scatterwalk.c
@@ -40,9 +40,9 @@ void scatterwalk_start(struct scatter_walk *walk, struct scatterlist *sg)
40} 40}
41EXPORT_SYMBOL_GPL(scatterwalk_start); 41EXPORT_SYMBOL_GPL(scatterwalk_start);
42 42
43void *scatterwalk_map(struct scatter_walk *walk, int out) 43void *scatterwalk_map(struct scatter_walk *walk)
44{ 44{
45 return crypto_kmap(scatterwalk_page(walk), out) + 45 return kmap_atomic(scatterwalk_page(walk)) +
46 offset_in_page(walk->offset); 46 offset_in_page(walk->offset);
47} 47}
48EXPORT_SYMBOL_GPL(scatterwalk_map); 48EXPORT_SYMBOL_GPL(scatterwalk_map);
@@ -83,9 +83,9 @@ void scatterwalk_copychunks(void *buf, struct scatter_walk *walk,
83 if (len_this_page > nbytes) 83 if (len_this_page > nbytes)
84 len_this_page = nbytes; 84 len_this_page = nbytes;
85 85
86 vaddr = scatterwalk_map(walk, out); 86 vaddr = scatterwalk_map(walk);
87 memcpy_dir(buf, vaddr, len_this_page, out); 87 memcpy_dir(buf, vaddr, len_this_page, out);
88 scatterwalk_unmap(vaddr, out); 88 scatterwalk_unmap(vaddr);
89 89
90 scatterwalk_advance(walk, len_this_page); 90 scatterwalk_advance(walk, len_this_page);
91 91
diff --git a/crypto/shash.c b/crypto/shash.c
index 9100912716ae..21fc12e2378f 100644
--- a/crypto/shash.c
+++ b/crypto/shash.c
@@ -281,10 +281,10 @@ int shash_ahash_digest(struct ahash_request *req, struct shash_desc *desc)
281 if (nbytes < min(sg->length, ((unsigned int)(PAGE_SIZE)) - offset)) { 281 if (nbytes < min(sg->length, ((unsigned int)(PAGE_SIZE)) - offset)) {
282 void *data; 282 void *data;
283 283
284 data = crypto_kmap(sg_page(sg), 0); 284 data = kmap_atomic(sg_page(sg));
285 err = crypto_shash_digest(desc, data + offset, nbytes, 285 err = crypto_shash_digest(desc, data + offset, nbytes,
286 req->result); 286 req->result);
287 crypto_kunmap(data, 0); 287 kunmap_atomic(data);
288 crypto_yield(desc->flags); 288 crypto_yield(desc->flags);
289 } else 289 } else
290 err = crypto_shash_init(desc) ?: 290 err = crypto_shash_init(desc) ?:
@@ -420,9 +420,9 @@ static int shash_compat_digest(struct hash_desc *hdesc, struct scatterlist *sg,
420 420
421 desc->flags = hdesc->flags; 421 desc->flags = hdesc->flags;
422 422
423 data = crypto_kmap(sg_page(sg), 0); 423 data = kmap_atomic(sg_page(sg));
424 err = crypto_shash_digest(desc, data + offset, nbytes, out); 424 err = crypto_shash_digest(desc, data + offset, nbytes, out);
425 crypto_kunmap(data, 0); 425 kunmap_atomic(data);
426 crypto_yield(desc->flags); 426 crypto_yield(desc->flags);
427 goto out; 427 goto out;
428 } 428 }
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/*