diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-12-03 20:46:48 -0500 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2008-01-10 16:16:46 -0500 |
commit | b9c55aa475599183d0eab6833ea23e70c52dd24b (patch) | |
tree | 74e011e9b95291f230d6e7200730e3bc3b9d7153 /include | |
parent | 806d183aa6cc565d0f6bd2fb7fc6bfb175cc4813 (diff) |
[CRYPTO] skcipher: Create default givcipher instances
This patch makes crypto_alloc_ablkcipher/crypto_grab_skcipher always
return algorithms that are capable of generating their own IVs through
givencrypt and givdecrypt. Each algorithm may specify its default IV
generator through the geniv field.
For algorithms that do not set the geniv field, the blkcipher layer will
pick a default. Currently it's chainiv for synchronous algorithms and
eseqiv for asynchronous algorithms. Note that if these wrappers do not
work on an algorithm then that algorithm must specify its own geniv or
it can't be used at all.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'include')
-rw-r--r-- | include/crypto/internal/skcipher.h | 2 | ||||
-rw-r--r-- | include/linux/crypto.h | 9 |
2 files changed, 4 insertions, 7 deletions
diff --git a/include/crypto/internal/skcipher.h b/include/crypto/internal/skcipher.h index 80c5bfb14a60..2071999d4b5e 100644 --- a/include/crypto/internal/skcipher.h +++ b/include/crypto/internal/skcipher.h | |||
@@ -53,6 +53,8 @@ static inline struct crypto_ablkcipher *crypto_spawn_skcipher( | |||
53 | crypto_skcipher_mask(0))); | 53 | crypto_skcipher_mask(0))); |
54 | } | 54 | } |
55 | 55 | ||
56 | int skcipher_null_givencrypt(struct skcipher_givcrypt_request *req); | ||
57 | int skcipher_null_givdecrypt(struct skcipher_givcrypt_request *req); | ||
56 | const char *crypto_default_geniv(const struct crypto_alg *alg); | 58 | const char *crypto_default_geniv(const struct crypto_alg *alg); |
57 | 59 | ||
58 | struct crypto_instance *skcipher_geniv_alloc(struct crypto_template *tmpl, | 60 | struct crypto_instance *skcipher_geniv_alloc(struct crypto_template *tmpl, |
diff --git a/include/linux/crypto.h b/include/linux/crypto.h index fa7afa9b9f4f..835dcaf3fe4e 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h | |||
@@ -561,13 +561,8 @@ static inline u32 crypto_skcipher_mask(u32 mask) | |||
561 | return mask; | 561 | return mask; |
562 | } | 562 | } |
563 | 563 | ||
564 | static inline struct crypto_ablkcipher *crypto_alloc_ablkcipher( | 564 | struct crypto_ablkcipher *crypto_alloc_ablkcipher(const char *alg_name, |
565 | const char *alg_name, u32 type, u32 mask) | 565 | u32 type, u32 mask); |
566 | { | ||
567 | return __crypto_ablkcipher_cast( | ||
568 | crypto_alloc_base(alg_name, crypto_skcipher_type(type), | ||
569 | crypto_skcipher_mask(mask))); | ||
570 | } | ||
571 | 566 | ||
572 | static inline struct crypto_tfm *crypto_ablkcipher_tfm( | 567 | static inline struct crypto_tfm *crypto_ablkcipher_tfm( |
573 | struct crypto_ablkcipher *tfm) | 568 | struct crypto_ablkcipher *tfm) |