WSL2-Linux-Kernel/crypto
Denis Kenzior 64ae16dfee KEYS: asym_tpm: Add support for the sign operation [ver #2]
The sign operation can operate in a non-hashed mode by running the RSA
sign operation directly on the input.  This assumes that the input is
less than key_size_in_bytes - 11.  Since the TPM performs its own PKCS1
padding, it isn't possible to support 'raw' mode, only 'pkcs1'.

Alternatively, a hashed version is also possible.  In this variant the
input is hashed (by userspace) via the selected hash function first.
Then this implementation takes care of converting the hash to ASN.1
format and the sign operation is performed on the result.  This is
similar to the implementation inside crypto/rsa-pkcs1pad.c.

ASN1 templates were copied from crypto/rsa-pkcs1pad.c.  There seems to
be no easy way to expose that functionality, but likely the templates
should be shared somehow.

The sign operation is implemented via TPM_Sign operation on the TPM.
It is assumed that the TPM wrapped key provided uses
TPM_SS_RSASSAPKCS1v15_DER signature scheme.  This allows the TPM_Sign
operation to work on data up to key_len_in_bytes - 11 bytes long.

In theory, we could also use TPM_Unbind instead of TPM_Sign, but we would
have to manually pkcs1 pad the digest first.

Signed-off-by: Denis Kenzior <denkenz@gmail.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Tested-by: Marcel Holtmann <marcel@holtmann.org>
Reviewed-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: James Morris <james.morris@microsoft.com>
2018-10-26 09:30:47 +01:00
..
asymmetric_keys KEYS: asym_tpm: Add support for the sign operation [ver #2] 2018-10-26 09:30:47 +01:00
async_tx async_pq: Remove VLA usage 2018-06-18 20:17:38 +05:30
842.c
Kconfig crypto: x86/aes-ni - remove special handling of AES in PCBC mode 2018-10-05 10:16:56 +08:00
Makefile crypto: ofb - add output feedback mode 2018-09-28 12:46:26 +08:00
ablkcipher.c crypto: ablkcipher - fix crash flushing dcache in error path 2018-08-03 18:06:04 +08:00
acompress.c
aead.c
aegis.h crypto: aegis/generic - fix for big endian systems 2018-10-08 13:44:53 +08:00
aegis128.c crypto: aead - remove useless setting of type flags 2018-07-09 00:30:26 +08:00
aegis128l.c crypto: aead - remove useless setting of type flags 2018-07-09 00:30:26 +08:00
aegis256.c crypto: aead - remove useless setting of type flags 2018-07-09 00:30:26 +08:00
aes_generic.c
aes_ti.c
af_alg.c Revert "net: simplify sock_poll_wait" 2018-10-23 10:57:06 -07:00
ahash.c crypto: user - Implement a generic crypto statistics 2018-09-28 12:46:25 +08:00
akcipher.c
algapi.c crypto: user - Implement a generic crypto statistics 2018-09-28 12:46:25 +08:00
algboss.c crypto: api - Introduce notifier for new crypto algorithms 2018-09-04 11:37:04 +08:00
algif_aead.c crypto: null - Remove VLA usage of skcipher 2018-09-28 12:46:08 +08:00
algif_hash.c crypto: hash - Remove VLA usage 2018-09-04 11:35:03 +08:00
algif_rng.c
algif_skcipher.c Revert changes to convert to ->poll_mask() and aio IOCB_CMD_POLL 2018-06-28 10:40:47 -07:00
ansi_cprng.c
anubis.c
api.c evm: Don't deadlock if a crypto algorithm is unavailable 2018-07-18 07:27:22 -04:00
arc4.c
authenc.c crypto: null - Remove VLA usage of skcipher 2018-09-28 12:46:08 +08:00
authencesn.c crypto: null - Remove VLA usage of skcipher 2018-09-28 12:46:08 +08:00
blkcipher.c crypto: blkcipher - fix crash flushing dcache in error path 2018-08-03 18:06:04 +08:00
blowfish_common.c
blowfish_generic.c
camellia_generic.c
cast5_generic.c
cast6_generic.c
cast_common.c
cbc.c
ccm.c crypto: ccm - Remove VLA usage 2018-09-04 11:35:03 +08:00
cfb.c
chacha20_generic.c crypto: chacha20 - Fix chacha20_block() keystream alignment (again) 2018-09-21 13:24:50 +08:00
chacha20poly1305.c
cipher.c
cmac.c
compress.c
crc32_generic.c
crc32c_generic.c
crct10dif_common.c
crct10dif_generic.c
cryptd.c crypto: cryptd - Remove VLA usage of skcipher 2018-09-28 12:46:08 +08:00
crypto_engine.c
crypto_null.c crypto: null - Remove VLA usage of skcipher 2018-09-28 12:46:08 +08:00
crypto_user_base.c crypto: user - Implement a generic crypto statistics 2018-09-28 12:46:25 +08:00
crypto_user_stat.c crypto: user - Implement a generic crypto statistics 2018-09-28 12:46:25 +08:00
crypto_wq.c
ctr.c
cts.c
deflate.c
des_generic.c
dh.c crypto: dh - fix memory leak 2018-07-20 13:51:21 +08:00
dh_helper.c crypto: dh - make crypto_dh_encode_key() make robust 2018-08-03 18:06:06 +08:00
drbg.c crypto: drbg - in-place cipher operation for CTR 2018-08-03 18:05:48 +08:00
ecb.c
ecc.c crypto: ecdh - add public key verification test 2018-07-09 00:26:19 +08:00
ecc.h
ecc_curve_defs.h crypto: ecdh - fix typo of P-192 b value 2018-07-20 13:51:22 +08:00
ecdh.c
ecdh_helper.c
echainiv.c crypto: null - Remove VLA usage of skcipher 2018-09-28 12:46:08 +08:00
fcrypt.c
fips.c
gcm.c crypto: null - Remove VLA usage of skcipher 2018-09-28 12:46:08 +08:00
gf128mul.c
ghash-generic.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
hash_info.c
hmac.c
internal.h crypto: api - Introduce notifier for new crypto algorithms 2018-09-04 11:37:04 +08:00
jitterentropy-kcapi.c
jitterentropy.c
keywrap.c
khazad.c
kpp.c
lrw.c crypto: lrw - fix rebase error after out of bounds fix 2018-10-05 10:22:48 +08:00
lz4.c
lz4hc.c
lzo.c
md4.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
md5.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
memneq.c
michael_mic.c
morus640.c crypto: morus/generic - fix for big endian systems 2018-10-08 13:44:53 +08:00
morus1280.c crypto: morus/generic - fix for big endian systems 2018-10-08 13:44:53 +08:00
ofb.c crypto: ofb - add output feedback mode 2018-09-28 12:46:26 +08:00
pcbc.c
pcrypt.c
poly1305_generic.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
proc.c
ripemd.h
rmd128.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
rmd160.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
rmd256.c crypto: rmd256 - use swap macro in rmd256_transform 2018-07-27 19:28:36 +08:00
rmd320.c crypto: rmd320 - use swap macro in rmd320_transform 2018-07-27 19:28:36 +08:00
rng.c crypto: user - Implement a generic crypto statistics 2018-09-28 12:46:25 +08:00
rsa-pkcs1pad.c crypto: rsa-pkcs1pad: Allow hash to be optional [ver #2] 2018-10-26 09:30:46 +01:00
rsa.c
rsa_helper.c
rsaprivkey.asn1
rsapubkey.asn1
salsa20_generic.c
scatterwalk.c crypto: scatterwalk - remove 'chain' argument from scatterwalk_crypto_chain() 2018-08-03 18:06:03 +08:00
scompress.c
seed.c
seqiv.c crypto: null - Remove VLA usage of skcipher 2018-09-28 12:46:08 +08:00
serpent_generic.c
sha1_generic.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
sha3_generic.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2018-08-03 17:55:12 +08:00
sha256_generic.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
sha512_generic.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
shash.c crypto: shash - Remove VLA usage in unaligned hashing 2018-09-04 11:37:03 +08:00
simd.c
skcipher.c crypto: skcipher - Introduce crypto_sync_skcipher 2018-09-28 12:46:06 +08:00
sm3_generic.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
sm4_generic.c
tcrypt.c crypto: tcrypt - add OFB functional tests 2018-09-28 12:46:26 +08:00
tcrypt.h crypto: testmgr - update sm4 test vectors 2018-09-28 12:46:26 +08:00
tea.c
testmgr.c crypto: testmgr - fix sizeof() on COMP_BUF_SIZE 2018-10-12 14:20:45 +08:00
testmgr.h crypto: testmgr - update sm4 test vectors 2018-09-28 12:46:26 +08:00
tgr192.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
twofish_common.c
twofish_generic.c
vmac.c crypto: vmac - remove insecure version with hardcoded nonce 2018-07-01 21:00:44 +08:00
wp512.c crypto: shash - remove useless setting of type flags 2018-07-09 00:30:24 +08:00
xcbc.c crypto: xcbc - Remove VLA usage 2018-09-04 11:35:03 +08:00
xor.c
xts.c crypto: xts - Drop use of auxiliary buffer 2018-09-21 13:24:50 +08:00
zstd.c