KEYS: Add KEYCTL_DH_COMPUTE command
authorMat Martineau <mathew.j.martineau@linux.intel.com>
Tue, 12 Apr 2016 18:54:58 +0000 (19:54 +0100)
committerDavid Howells <dhowells@redhat.com>
Tue, 12 Apr 2016 18:54:58 +0000 (19:54 +0100)
commitddbb41148724367394d0880c516bfaeed127b52e
tree3e5cc20804b646256525cd9c2de7a9681d7e4996
parent13100a72f40f5748a04017e0ab3df4cf27c809ef
KEYS: Add KEYCTL_DH_COMPUTE command

This adds userspace access to Diffie-Hellman computations through a
new keyctl() syscall command to calculate shared secrets or public
keys using input parameters stored in the keyring.

Input key ids are provided in a struct due to the current 5-arg limit
for the keyctl syscall. Only user keys are supported in order to avoid
exposing the content of logon or encrypted keys.

The output is written to the provided buffer, based on the assumption
that the values are only needed in userspace.

Future support for other types of key derivation would involve a new
command, like KEYCTL_ECDH_COMPUTE.

Once Diffie-Hellman support is included in the crypto API, this code
can be converted to use the crypto API to take advantage of possible
hardware acceleration and reduce redundant code.

Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Documentation/security/keys.txt
include/uapi/linux/keyctl.h
security/keys/Kconfig
security/keys/Makefile
security/keys/compat.c
security/keys/dh.c [new file with mode: 0644]
security/keys/internal.h
security/keys/keyctl.c