crypto: af_alg - add user space interface for AEAD
AEAD requires the caller to specify the following information separate from the data stream. This information allows the AEAD interface handler to identify the AAD, ciphertext/plaintext and the authentication tag: * Associated authentication data of arbitrary length and length * Length of authentication tag for encryption Signed-off-by: Stephan Mueller <smueller@chronox.de> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Родитель
bc84b94a71
Коммит
af8e80731a
|
@ -421,6 +421,12 @@ int af_alg_cmsg_send(struct msghdr *msg, struct af_alg_control *con)
|
||||||
con->op = *(u32 *)CMSG_DATA(cmsg);
|
con->op = *(u32 *)CMSG_DATA(cmsg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ALG_SET_AEAD_ASSOCLEN:
|
||||||
|
if (cmsg->cmsg_len < CMSG_LEN(sizeof(u32)))
|
||||||
|
return -EINVAL;
|
||||||
|
con->aead_assoclen = *(u32 *)CMSG_DATA(cmsg);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ struct af_alg_completion {
|
||||||
struct af_alg_control {
|
struct af_alg_control {
|
||||||
struct af_alg_iv *iv;
|
struct af_alg_iv *iv;
|
||||||
int op;
|
int op;
|
||||||
|
unsigned int aead_assoclen;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct af_alg_type {
|
struct af_alg_type {
|
||||||
|
|
|
@ -32,6 +32,8 @@ struct af_alg_iv {
|
||||||
#define ALG_SET_KEY 1
|
#define ALG_SET_KEY 1
|
||||||
#define ALG_SET_IV 2
|
#define ALG_SET_IV 2
|
||||||
#define ALG_SET_OP 3
|
#define ALG_SET_OP 3
|
||||||
|
#define ALG_SET_AEAD_ASSOCLEN 4
|
||||||
|
#define ALG_SET_AEAD_AUTHSIZE 5
|
||||||
|
|
||||||
/* Operations */
|
/* Operations */
|
||||||
#define ALG_OP_DECRYPT 0
|
#define ALG_OP_DECRYPT 0
|
||||||
|
|
Загрузка…
Ссылка в новой задаче