crypto: af_alg - add setsockopt for auth tag size
Use setsockopt on the tfm FD to provide the authentication tag size for an AEAD cipher. This is achieved by adding a callback function which is intended to be used by the AEAD AF_ALG implementation. The optlen argument of the setsockopt specifies the authentication tag size to be used with the AEAD tfm. Signed-off-by: Stephan Mueller <smueller@chronox.de> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
905b42e559
commit
25fb8638e9
|
@ -215,6 +215,13 @@ static int alg_setsockopt(struct socket *sock, int level, int optname,
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
||||||
err = alg_setkey(sk, optval, optlen);
|
err = alg_setkey(sk, optval, optlen);
|
||||||
|
break;
|
||||||
|
case ALG_SET_AEAD_AUTHSIZE:
|
||||||
|
if (sock->state == SS_CONNECTED)
|
||||||
|
goto unlock;
|
||||||
|
if (!type->setauthsize)
|
||||||
|
goto unlock;
|
||||||
|
err = type->setauthsize(ask->private, optlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
unlock:
|
unlock:
|
||||||
|
|
|
@ -50,6 +50,7 @@ struct af_alg_type {
|
||||||
void (*release)(void *private);
|
void (*release)(void *private);
|
||||||
int (*setkey)(void *private, const u8 *key, unsigned int keylen);
|
int (*setkey)(void *private, const u8 *key, unsigned int keylen);
|
||||||
int (*accept)(void *private, struct sock *sk);
|
int (*accept)(void *private, struct sock *sk);
|
||||||
|
int (*setauthsize)(void *private, unsigned int authsize);
|
||||||
|
|
||||||
struct proto_ops *ops;
|
struct proto_ops *ops;
|
||||||
struct module *owner;
|
struct module *owner;
|
||||||
|
|
Loading…
Reference in New Issue