* [PATCH] KEYS: Add placeholder for KDF usage with DH
@ 2016-05-26 22:40 David Howells
2016-05-31 9:37 ` David Howells
0 siblings, 1 reply; 3+ messages in thread
From: David Howells @ 2016-05-26 22:40 UTC (permalink / raw)
To: jmorris
Cc: dhowells, Mat Martineau, Stephan Mueller, keyrings, linux-crypto,
linux-security-module
Hi James,
Could you pass this along to Linus as soon as possible, please? This
alters a new keyctl function added in the current merge window to allow for
a future extension planned for the next merge window.
Thanks,
David
---
From: Stephan Mueller <smueller@chronox.de>
Date: Thu May 26 23:38:12 2016 +0200
KEYS: Add placeholder for KDF usage with DH
The values computed during Diffie-Hellman key exchange are often used
in combination with key derivation functions to create cryptographic
keys. Add a placeholder for a later implementation to configure a
key derivation function that will transform the Diffie-Hellman
result returned by the KEYCTL_DH_COMPUTE command.
[This patch was stripped down from a patch produced by Mat Martineau that
had a bug in the compat code - so for the moment Stephan's patch simply
requires that the placeholder argument must be NULL]
Original-signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: David Howells <dhowells@redhat.com>
---
Documentation/security/keys.txt | 5 ++++-
security/keys/compat.c | 2 +-
security/keys/dh.c | 8 +++++++-
security/keys/internal.h | 5 +++--
security/keys/keyctl.c | 4 ++--
5 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/Documentation/security/keys.txt b/Documentation/security/keys.txt
index 20d05719bceb..3849814bfe6d 100644
--- a/Documentation/security/keys.txt
+++ b/Documentation/security/keys.txt
@@ -826,7 +826,8 @@ The keyctl syscall functions are:
(*) Compute a Diffie-Hellman shared secret or public key
long keyctl(KEYCTL_DH_COMPUTE, struct keyctl_dh_params *params,
- char *buffer, size_t buflen);
+ char *buffer, size_t buflen,
+ void *reserved);
The params struct contains serial numbers for three keys:
@@ -843,6 +844,8 @@ The keyctl syscall functions are:
public key. If the base is the remote public key, the result is
the shared secret.
+ The reserved argument must be set to NULL.
+
The buffer length must be at least the length of the prime, or zero.
If the buffer length is nonzero, the length of the result is
diff --git a/security/keys/compat.c b/security/keys/compat.c
index c8783b3b628c..36c80bf5b89c 100644
--- a/security/keys/compat.c
+++ b/security/keys/compat.c
@@ -134,7 +134,7 @@ COMPAT_SYSCALL_DEFINE5(keyctl, u32, option,
case KEYCTL_DH_COMPUTE:
return keyctl_dh_compute(compat_ptr(arg2), compat_ptr(arg3),
- arg4);
+ arg4, compat_ptr(arg5));
default:
return -EOPNOTSUPP;
diff --git a/security/keys/dh.c b/security/keys/dh.c
index 880505a4b9f1..531ed2ec132f 100644
--- a/security/keys/dh.c
+++ b/security/keys/dh.c
@@ -78,7 +78,8 @@ error:
}
long keyctl_dh_compute(struct keyctl_dh_params __user *params,
- char __user *buffer, size_t buflen)
+ char __user *buffer, size_t buflen,
+ void __user *reserved)
{
long ret;
MPI base, private, prime, result;
@@ -97,6 +98,11 @@ long keyctl_dh_compute(struct keyctl_dh_params __user *params,
goto out;
}
+ if (reserved) {
+ ret = -EINVAL;
+ goto out;
+ }
+
keylen = mpi_from_key(pcopy.prime, buflen, &prime);
if (keylen < 0 || !prime) {
/* buflen == 0 may be used to query the required buffer size,
diff --git a/security/keys/internal.h b/security/keys/internal.h
index 8ec7a528365d..a705a7d92ad7 100644
--- a/security/keys/internal.h
+++ b/security/keys/internal.h
@@ -260,10 +260,11 @@ static inline long keyctl_get_persistent(uid_t uid, key_serial_t destring)
#ifdef CONFIG_KEY_DH_OPERATIONS
extern long keyctl_dh_compute(struct keyctl_dh_params __user *, char __user *,
- size_t);
+ size_t, void __user *);
#else
static inline long keyctl_dh_compute(struct keyctl_dh_params __user *params,
- char __user *buffer, size_t buflen)
+ char __user *buffer, size_t buflen,
+ void __user *reserved)
{
return -EOPNOTSUPP;
}
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
index 3b135a0af344..d580ad06b792 100644
--- a/security/keys/keyctl.c
+++ b/security/keys/keyctl.c
@@ -1688,8 +1688,8 @@ SYSCALL_DEFINE5(keyctl, int, option, unsigned long, arg2, unsigned long, arg3,
case KEYCTL_DH_COMPUTE:
return keyctl_dh_compute((struct keyctl_dh_params __user *) arg2,
- (char __user *) arg3,
- (size_t) arg4);
+ (char __user *) arg3, (size_t) arg4,
+ (void __user *) arg5);
default:
return -EOPNOTSUPP;
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] KEYS: Add placeholder for KDF usage with DH
2016-05-26 22:40 [PATCH] KEYS: Add placeholder for KDF usage with DH David Howells
@ 2016-05-31 9:37 ` David Howells
2016-06-01 2:48 ` James Morris
0 siblings, 1 reply; 3+ messages in thread
From: David Howells @ 2016-05-31 9:37 UTC (permalink / raw)
To: jmorris
Cc: dhowells, Mat Martineau, Stephan Mueller, keyrings, linux-crypto,
linux-security-module
Hi James,
> Could you pass this along to Linus as soon as possible, please? This
> alters a new keyctl function added in the current merge window to allow for
> a future extension planned for the next merge window.
Is this likely to go to Linus before -rc2? If not, we'll need to do things
differently.
David
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] KEYS: Add placeholder for KDF usage with DH
2016-05-31 9:37 ` David Howells
@ 2016-06-01 2:48 ` James Morris
0 siblings, 0 replies; 3+ messages in thread
From: James Morris @ 2016-06-01 2:48 UTC (permalink / raw)
To: David Howells
Cc: Mat Martineau, Stephan Mueller, keyrings, linux-crypto,
linux-security-module
On Tue, 31 May 2016, David Howells wrote:
> Hi James,
>
> > Could you pass this along to Linus as soon as possible, please? This
> > alters a new keyctl function added in the current merge window to allow for
> > a future extension planned for the next merge window.
>
> Is this likely to go to Linus before -rc2? If not, we'll need to do things
> differently.
It should be ok, I'll see how it goes with Linus.
--
James Morris
<jmorris@namei.org>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-06-01 2:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-26 22:40 [PATCH] KEYS: Add placeholder for KDF usage with DH David Howells
2016-05-31 9:37 ` David Howells
2016-06-01 2:48 ` James Morris
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).