diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-11 01:01:27 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-11 01:01:27 -0500 |
commit | 4f58cb90bcb04cfe18f524d1c9a65edef5eb3f51 (patch) | |
tree | 8c686e8b736eed7258921909282c0955543c7d2f /include/crypto/lrw.h | |
parent | e7691a1ce341c80ed9504244a36b31c025217391 (diff) | |
parent | 08c70fc3a239475122e20b7a21dfae4c264c24f7 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (54 commits)
crypto: gf128mul - remove leftover "(EXPERIMENTAL)" in Kconfig
crypto: serpent-sse2 - remove unneeded LRW/XTS #ifdefs
crypto: serpent-sse2 - select LRW and XTS
crypto: twofish-x86_64-3way - remove unneeded LRW/XTS #ifdefs
crypto: twofish-x86_64-3way - select LRW and XTS
crypto: xts - remove dependency on EXPERIMENTAL
crypto: lrw - remove dependency on EXPERIMENTAL
crypto: picoxcell - fix boolean and / or confusion
crypto: caam - remove DECO access initialization code
crypto: caam - fix polarity of "propagate error" logic
crypto: caam - more desc.h cleanups
crypto: caam - desc.h - convert spaces to tabs
crypto: talitos - convert talitos_error to struct device
crypto: talitos - remove NO_IRQ references
crypto: talitos - fix bad kfree
crypto: convert drivers/crypto/* to use module_platform_driver()
char: hw_random: convert drivers/char/hw_random/* to use module_platform_driver()
crypto: serpent-sse2 - should select CRYPTO_CRYPTD
crypto: serpent - rename serpent.c to serpent_generic.c
crypto: serpent - cleanup checkpatch errors and warnings
...
Diffstat (limited to 'include/crypto/lrw.h')
-rw-r--r-- | include/crypto/lrw.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/include/crypto/lrw.h b/include/crypto/lrw.h new file mode 100644 index 000000000000..25a2c8716375 --- /dev/null +++ b/include/crypto/lrw.h | |||
@@ -0,0 +1,43 @@ | |||
1 | #ifndef _CRYPTO_LRW_H | ||
2 | #define _CRYPTO_LRW_H | ||
3 | |||
4 | #include <crypto/b128ops.h> | ||
5 | |||
6 | struct scatterlist; | ||
7 | struct gf128mul_64k; | ||
8 | struct blkcipher_desc; | ||
9 | |||
10 | #define LRW_BLOCK_SIZE 16 | ||
11 | |||
12 | struct lrw_table_ctx { | ||
13 | /* optimizes multiplying a random (non incrementing, as at the | ||
14 | * start of a new sector) value with key2, we could also have | ||
15 | * used 4k optimization tables or no optimization at all. In the | ||
16 | * latter case we would have to store key2 here */ | ||
17 | struct gf128mul_64k *table; | ||
18 | /* stores: | ||
19 | * key2*{ 0,0,...0,0,0,0,1 }, key2*{ 0,0,...0,0,0,1,1 }, | ||
20 | * key2*{ 0,0,...0,0,1,1,1 }, key2*{ 0,0,...0,1,1,1,1 } | ||
21 | * key2*{ 0,0,...1,1,1,1,1 }, etc | ||
22 | * needed for optimized multiplication of incrementing values | ||
23 | * with key2 */ | ||
24 | be128 mulinc[128]; | ||
25 | }; | ||
26 | |||
27 | int lrw_init_table(struct lrw_table_ctx *ctx, const u8 *tweak); | ||
28 | void lrw_free_table(struct lrw_table_ctx *ctx); | ||
29 | |||
30 | struct lrw_crypt_req { | ||
31 | be128 *tbuf; | ||
32 | unsigned int tbuflen; | ||
33 | |||
34 | struct lrw_table_ctx *table_ctx; | ||
35 | void *crypt_ctx; | ||
36 | void (*crypt_fn)(void *ctx, u8 *blks, unsigned int nbytes); | ||
37 | }; | ||
38 | |||
39 | int lrw_crypt(struct blkcipher_desc *desc, struct scatterlist *dst, | ||
40 | struct scatterlist *src, unsigned int nbytes, | ||
41 | struct lrw_crypt_req *req); | ||
42 | |||
43 | #endif /* _CRYPTO_LRW_H */ | ||