summaryrefslogtreecommitdiffstats
path: root/crypto/algapi.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2007-08-29 19:27:26 +0800
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 16:55:40 -0700
commit39e1ee011f42dbbcb0210c73ea728ae54cf63b06 (patch)
tree0689571972f9678f93cec8bd7f3dac2934c5bc59 /crypto/algapi.c
parent1ae978208e2ee9ba1b01d309164bc5e590cd242d (diff)
downloadlinux-stable-39e1ee011f42dbbcb0210c73ea728ae54cf63b06.tar.gz
linux-stable-39e1ee011f42dbbcb0210c73ea728ae54cf63b06.tar.bz2
linux-stable-39e1ee011f42dbbcb0210c73ea728ae54cf63b06.zip
[CRYPTO] api: Add support for multiple template parameters
This patch adds support for having multiple parameters to a template, separated by a comma. It also adds support for integer parameters in addition to the current algorithm parameter type. This will be used by the authenc template which will have four parameters: the authentication algorithm, the encryption algorithm, the authentication size and the encryption key length. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/algapi.c')
-rw-r--r--crypto/algapi.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/crypto/algapi.c b/crypto/algapi.c
index 38aa9e994703..d9559609b525 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -439,13 +439,15 @@ EXPORT_SYMBOL_GPL(crypto_unregister_notifier);
struct crypto_attr_type *crypto_get_attr_type(struct rtattr **tb)
{
- struct rtattr *rta = tb[CRYPTOA_TYPE - 1];
+ struct rtattr *rta = tb[0];
struct crypto_attr_type *algt;
if (!rta)
return ERR_PTR(-ENOENT);
if (RTA_PAYLOAD(rta) < sizeof(*algt))
return ERR_PTR(-EINVAL);
+ if (rta->rta_type != CRYPTOA_TYPE)
+ return ERR_PTR(-EINVAL);
algt = RTA_DATA(rta);
@@ -470,13 +472,15 @@ EXPORT_SYMBOL_GPL(crypto_check_attr_type);
struct crypto_alg *crypto_get_attr_alg(struct rtattr **tb, u32 type, u32 mask)
{
- struct rtattr *rta = tb[CRYPTOA_ALG - 1];
+ struct rtattr *rta = tb[1];
struct crypto_attr_alg *alga;
if (!rta)
return ERR_PTR(-ENOENT);
if (RTA_PAYLOAD(rta) < sizeof(*alga))
return ERR_PTR(-EINVAL);
+ if (rta->rta_type != CRYPTOA_ALG)
+ return ERR_PTR(-EINVAL);
alga = RTA_DATA(rta);
alga->name[CRYPTO_MAX_ALG_NAME - 1] = 0;