Tagged keys are keys that contain metadata indicating what they are and how to handle them using the new added tag_object API. A tag object represents the metadata (or simply a header/configuration) and the actual data (e.g. black key) obtained from hardware. Patch #2 adds support, for tagged keys, to skcipher algorithms by adding new transformations, with tk prefix to distinguish between plaintext and tagged keys. The tk_ transformations can be used directly by their name: struct sockaddr_alg sa = { .salg_family = AF_ALG, .salg_type = "skcipher", /* this selects the symmetric cipher / .salg_name = "tk(cbc(aes))" / this is the cipher name */ }; or for dm-crypt, e.g. using dmsetup: dmsetup -v create encrypted --table "0 $(blockdev --getsz /dev/mmcblk2p10) crypt capi:tk(cbc(aes))-plain :32:logon:seckey 0 /dev/mmcblk2p10 0 1 sector_size:512". tk_ transformations will know how to handle tagged keys, by loading the proper settings for KEY command. Iuliana Prodan (2): crypto: caam - add tag object functionality crypto: caam - support tagged keys for skcipher algorithms drivers/crypto/caam/Kconfig | 9 +++ drivers/crypto/caam/Makefile | 1 + drivers/crypto/caam/caamalg.c | 107 ++++++++++++++++++++++++++++-- drivers/crypto/caam/caamalg_desc.c | 28 ++++++-- drivers/crypto/caam/desc.h | 4 +- drivers/crypto/caam/desc_constr.h | 4 ++ drivers/crypto/caam/tag_object.c | 129 +++++++++++++++++++++++++++++++++++++ drivers/crypto/caam/tag_object.h | 99 ++++++++++++++++++++++++++++ 8 files changed, 372 insertions(+), 9 deletions(-) create mode 100644 drivers/crypto/caam/tag_object.c create mode 100644 drivers/crypto/caam/tag_object.h -- 2.1.0