Skip to content

Commit

Permalink
crypto: af_alg - add user space interface for AEAD
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
smuellerDD authored and herbertx committed Dec 5, 2014
1 parent bc84b94 commit af8e807
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 0 deletions.
6 changes: 6 additions & 0 deletions crypto/af_alg.c
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,12 @@ int af_alg_cmsg_send(struct msghdr *msg, struct af_alg_control *con)
con->op = *(u32 *)CMSG_DATA(cmsg);
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:
return -EINVAL;
}
Expand Down
1 change: 1 addition & 0 deletions include/crypto/if_alg.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ struct af_alg_completion {
struct af_alg_control {
struct af_alg_iv *iv;
int op;
unsigned int aead_assoclen;
};

struct af_alg_type {
Expand Down
2 changes: 2 additions & 0 deletions include/uapi/linux/if_alg.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ struct af_alg_iv {
#define ALG_SET_KEY 1
#define ALG_SET_IV 2
#define ALG_SET_OP 3
#define ALG_SET_AEAD_ASSOCLEN 4
#define ALG_SET_AEAD_AUTHSIZE 5

/* Operations */
#define ALG_OP_DECRYPT 0
Expand Down

0 comments on commit af8e807

Please sign in to comment.