Hi, On 10/26/2015 09:54 PM, Marcel Holtmann wrote: > Hi Stephan, > >> This patch set adds the AF_ALG user space API to externalize the >> asymmetric cipher API recently added to the kernel crypto API. >> >> The patch set is tested with the user space library of libkcapi [1]. >> Use [1] test/test.sh for a full test run. The test covers the >> following scenarios: >> >> * sendmsg of one IOVEC >> >> * sendmsg of 16 IOVECs with non-linear buffer >> >> * vmsplice of one IOVEC >> >> * vmsplice of 15 IOVECs with non-linear buffer >> >> * invoking multiple separate cipher operations with one >> open cipher handle >> >> * encryption with private key (using vector from testmgr.h) >> >> * encryption with public key (using vector from testmgr.h) >> >> * decryption with private key (using vector from testmgr.h) > > after having discussions with David Howells and David Woodhouse, I don't > think we should expose akcipher via AF_ALG at all. I think the akcipher > operations for sign/verify/encrypt/decrypt should operate on asymmetric keys > in the first place. With akcipher you are pretty much bound to public and > private keys and the key is the important part and not the akcipher itself. > Especially since we want to support private keys in hardware (like TPM for > example). > > It seems more appropriate to use keyctl to derive the symmetric session key > from your asymmetric key. And then use the symmetric session key id with > skcipher via AF_ALG. Especially once symmetric key type has been introduced > this seems to be trivial then. > > I am not really in favor of having two userspace facing APIs for asymmetric > cipher usage. And we need to have an API that is capable to work with > hardware keys.
If we would have something like this: diff --git a/include/uapi/linux/if_alg.h b/include/uapi/linux/if_alg.h index f2acd2f..02e6162 100644 --- a/include/uapi/linux/if_alg.h +++ b/include/uapi/linux/if_alg.h @@ -34,9 +34,12 @@ struct af_alg_iv { #define ALG_SET_OP 3 #define ALG_SET_AEAD_ASSOCLEN 4 #define ALG_SET_AEAD_AUTHSIZE 5 +#define ALG_SET_PUBKEY 6 +#define ALG_SET_PUBKEY_ID 7 in case of ALG_SET_PUBKEY the key will be provided by user space and in case of ALG_SET_PUBKEY_ID the PF_ALG layer will retrieve the key from the keyring using the ID provided form user space. Will this be ok with you Marcel and David? Thanks, -- TS -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html