diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-12-02 02:49:21 -0500 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2008-01-10 16:16:29 -0500 |
commit | 7ba683a6deba70251756aa5a021cdaa5c875a7a2 (patch) | |
tree | 80f63039b56bef0287fdf878163a5fe109821e58 /include/linux/crypto.h | |
parent | e29bc6ad0e84e3157e0f49130a15b278cb232c72 (diff) |
[CRYPTO] aead: Make authsize a run-time parameter
As it is authsize is an algorithm paramter which cannot be changed at
run-time. This is inconvenient because hardware that implements such
algorithms would have to register each authsize that they support
separately.
Since authsize is a property common to all AEAD algorithms, we can add
a function setauthsize that sets it at run-time, just like setkey.
This patch does exactly that and also changes authenc so that authsize
is no longer a parameter of its template.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'include/linux/crypto.h')
-rw-r--r-- | include/linux/crypto.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/include/linux/crypto.h b/include/linux/crypto.h index f56ae8721bc9..48aa5959abbb 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h | |||
@@ -187,11 +187,12 @@ struct ablkcipher_alg { | |||
187 | struct aead_alg { | 187 | struct aead_alg { |
188 | int (*setkey)(struct crypto_aead *tfm, const u8 *key, | 188 | int (*setkey)(struct crypto_aead *tfm, const u8 *key, |
189 | unsigned int keylen); | 189 | unsigned int keylen); |
190 | int (*setauthsize)(struct crypto_aead *tfm, unsigned int authsize); | ||
190 | int (*encrypt)(struct aead_request *req); | 191 | int (*encrypt)(struct aead_request *req); |
191 | int (*decrypt)(struct aead_request *req); | 192 | int (*decrypt)(struct aead_request *req); |
192 | 193 | ||
193 | unsigned int ivsize; | 194 | unsigned int ivsize; |
194 | unsigned int authsize; | 195 | unsigned int maxauthsize; |
195 | }; | 196 | }; |
196 | 197 | ||
197 | struct blkcipher_alg { | 198 | struct blkcipher_alg { |
@@ -754,6 +755,8 @@ static inline int crypto_aead_setkey(struct crypto_aead *tfm, const u8 *key, | |||
754 | return crypto_aead_crt(tfm)->setkey(tfm, key, keylen); | 755 | return crypto_aead_crt(tfm)->setkey(tfm, key, keylen); |
755 | } | 756 | } |
756 | 757 | ||
758 | int crypto_aead_setauthsize(struct crypto_aead *tfm, unsigned int authsize); | ||
759 | |||
757 | static inline struct crypto_aead *crypto_aead_reqtfm(struct aead_request *req) | 760 | static inline struct crypto_aead *crypto_aead_reqtfm(struct aead_request *req) |
758 | { | 761 | { |
759 | return __crypto_aead_cast(req->base.tfm); | 762 | return __crypto_aead_cast(req->base.tfm); |