s390/pkey: Introduce new API for transforming key blobs
Introduce a new ioctl API and in-kernel API to transform a variable length key blob of any supported type into a protected key. Transforming a secure key blob uses the already existing function pkey_sec2protk(). Transforming a protected key blob also verifies if the protected key is still valid. If not, -ENODEV is returned. Both APIs are described in detail in the header files arch/s390/include/asm/pkey.h and arch/s390/include/uapi/asm/pkey.h. Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com> Reviewed-by: Harald Freudenberger <freude@linux.ibm.com> Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:

committed by
Martin Schwidefsky

parent
cb26b9ff71
commit
fb1136d658
@@ -21,9 +21,13 @@
|
||||
#define PKEY_IOCTL_MAGIC 'p'
|
||||
|
||||
#define SECKEYBLOBSIZE 64 /* secure key blob size is always 64 bytes */
|
||||
#define PROTKEYBLOBSIZE 80 /* protected key blob size is always 80 bytes */
|
||||
#define MAXPROTKEYSIZE 64 /* a protected key blob may be up to 64 bytes */
|
||||
#define MAXCLRKEYSIZE 32 /* a clear key value may be up to 32 bytes */
|
||||
|
||||
#define MINKEYBLOBSIZE SECKEYBLOBSIZE /* Minimum size of a key blob */
|
||||
#define MAXKEYBLOBSIZE PROTKEYBLOBSIZE /* Maximum size of a key blob */
|
||||
|
||||
/* defines for the type field within the pkey_protkey struct */
|
||||
#define PKEY_KEYTYPE_AES_128 1
|
||||
#define PKEY_KEYTYPE_AES_192 2
|
||||
@@ -148,4 +152,15 @@ struct pkey_verifyprotk {
|
||||
|
||||
#define PKEY_VERIFYPROTK _IOW(PKEY_IOCTL_MAGIC, 0x09, struct pkey_verifyprotk)
|
||||
|
||||
/*
|
||||
* Transform an key blob (of any type) into a protected key
|
||||
*/
|
||||
struct pkey_kblob2pkey {
|
||||
__u8 __user *key; /* in: the key blob */
|
||||
__u32 keylen; /* in: the key blob length */
|
||||
struct pkey_protkey protkey; /* out: the protected key */
|
||||
};
|
||||
|
||||
#define PKEY_KBLOB2PROTK _IOWR(PKEY_IOCTL_MAGIC, 0x0A, struct pkey_kblob2pkey)
|
||||
|
||||
#endif /* _UAPI_PKEY_H */
|
||||
|
Reference in New Issue
Block a user