aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2007-12-02 02:49:21 -0500
committerHerbert Xu <herbert@gondor.apana.org.au>2008-01-10 16:16:29 -0500
commit7ba683a6deba70251756aa5a021cdaa5c875a7a2 (patch)
tree80f63039b56bef0287fdf878163a5fe109821e58 /include/linux
parente29bc6ad0e84e3157e0f49130a15b278cb232c72 (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')
-rw-r--r--include/linux/crypto.h5
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 {
187struct aead_alg { 187struct 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
197struct blkcipher_alg { 198struct 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
758int crypto_aead_setauthsize(struct crypto_aead *tfm, unsigned int authsize);
759
757static inline struct crypto_aead *crypto_aead_reqtfm(struct aead_request *req) 760static 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);