From: Stephan Mueller <smueller@chronox.de>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Daniel Borkmann <dborkman@redhat.com>,
"'Quentin Gouchet'" <quentin.gouchet@gmail.com>,
lkml - Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-crypto@vger.kernel.org, linux-api@vger.kernel.org
Subject: [PATCH v3 1/7] crypto: AF_ALG: add user space interface for AEAD
Date: Fri, 21 Nov 2014 06:30:18 +0100 [thread overview]
Message-ID: <5694690.RURGUoE58b@tachyon.chronox.de> (raw)
In-Reply-To: <4088013.2O8zCP0xXa@tachyon.chronox.de>
AEAD requires the following data in addition to normal symmetric
ciphers:
* Associated authentication data of arbitrary length and
length
* Authentication tag for decryption and length
* Length of authentication tag for encryption
The memory structure for the data received by the kernel via sendmsg
must follow this structure:
* Symmetric encryption input: plaintext
* Symmetric encryption output: ciphertext
* AEAD encryption input: assoc data || plaintext
* AEAD encryption output: cipherntext || auth tag
* Symmetric decryption input: ciphertext
* Symmetric decryption output: plaintext
* AEAD decryption input: assoc data || ciphertext || authtag
* AEAD decryption output: plaintext
Therefore, in addition to submitting the data, AEAD requires that
the associated data length and the tag length must be communicated.
The plaintext/ciphertext length can be derived from the other two size
fields. Therefore, This patch adds setting the associated data length
and tag length as part of the sendmsg communication.
Signed-off-by: Stephan Mueller <smueller@chronox.de>
---
crypto/af_alg.c | 12 ++++++++++++
include/crypto/if_alg.h | 2 ++
include/uapi/linux/if_alg.h | 2 ++
3 files changed, 16 insertions(+)
diff --git a/crypto/af_alg.c b/crypto/af_alg.c
index 6a3ad80..75eb88c 100644
--- a/crypto/af_alg.c
+++ b/crypto/af_alg.c
@@ -421,6 +421,18 @@ int af_alg_cmsg_send(struct msghdr *msg, struct af_alg_control *con)
con->op = *(u32 *)CMSG_DATA(cmsg);
break;
+ case ALG_SET_AEAD_AUTHSIZE:
+ if (cmsg->cmsg_len < CMSG_LEN(sizeof(u32)))
+ return -EINVAL;
+ con->aead_authsize = *(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;
}
diff --git a/include/crypto/if_alg.h b/include/crypto/if_alg.h
index d61c111..60ed1b7 100644
--- a/include/crypto/if_alg.h
+++ b/include/crypto/if_alg.h
@@ -42,6 +42,8 @@ struct af_alg_completion {
struct af_alg_control {
struct af_alg_iv *iv;
int op;
+ unsigned int aead_authsize;
+ unsigned int aead_assoclen;
};
struct af_alg_type {
diff --git a/include/uapi/linux/if_alg.h b/include/uapi/linux/if_alg.h
index 0f9acce..f2acd2f 100644
--- a/include/uapi/linux/if_alg.h
+++ b/include/uapi/linux/if_alg.h
@@ -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
--
2.1.0
next prev parent reply other threads:[~2014-11-21 5:42 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-21 5:29 [PATCH v3 0/7] crypto: AF_ALG: add AEAD and RNG support Stephan Mueller
2014-11-21 5:30 ` Stephan Mueller [this message]
2014-11-24 14:26 ` [PATCH v3 1/7] crypto: AF_ALG: add user space interface for AEAD Herbert Xu
2014-11-21 5:30 ` [PATCH v3 3/7] crypto: AF_ALG: crypto API calls to inline functions Stephan Mueller
2014-11-21 5:31 ` [PATCH v3 2/7] crypto: AF_ALG: extend data structuers for AEAD Stephan Mueller
2014-11-21 5:32 ` [PATCH v3 4/7] crypto: AF_ALG: add AEAD support Stephan Mueller
2014-11-24 14:29 ` Herbert Xu
2014-11-24 14:58 ` Stephan Mueller
2014-11-25 14:58 ` Herbert Xu
2014-11-25 15:08 ` Stephan Mueller
2014-11-24 20:55 ` Stephan Mueller
2014-11-21 5:32 ` [PATCH v3 5/7] crypto: AF_ALG: add random number generator support Stephan Mueller
2014-11-24 14:31 ` Herbert Xu
2014-11-24 15:08 ` Stephan Mueller
2014-11-21 5:33 ` [PATCH v3 6/7] crypto: AF_ALG: enable RNG interface compilation Stephan Mueller
2014-11-21 5:34 ` [PATCH v3 7/7] crypto: AF_ALG: document the user space interface Stephan Mueller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5694690.RURGUoE58b@tachyon.chronox.de \
--to=smueller@chronox.de \
--cc=dborkman@redhat.com \
--cc=herbert@gondor.apana.org.au \
--cc=linux-api@vger.kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=quentin.gouchet@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox