@@ -26,6 +26,9 @@
* Trusted keys are sealed to PCRs and other metadata. Although userspace
* manages both trusted/encrypted key-types, like the encrypted key type
* data, trusted key type data is not visible decrypted from userspace.
+ *
+ * Also, check for alternate trusted keys provided via TEE in case there
+ * is no TPM available.
*/
struct key *request_trusted_key(const char *trusted_desc,
const u8 **master_key, size_t *master_keylen)
@@ -34,8 +37,11 @@ struct key *request_trusted_key(const char *trusted_desc,
struct key *tkey;
tkey = request_key(&key_type_trusted, trusted_desc, NULL);
- if (IS_ERR(tkey))
- goto error;
+ if (IS_ERR(tkey)) {
+ tkey = request_key(&key_type_tee_trusted, trusted_desc, NULL);
+ if (IS_ERR(tkey))
+ goto error;
+ }
down_read(&tkey->sem);
tpayload = tkey->payload.data[0];
Allow search for TEE based trusted keys to act as master keys in case TPM device is not present. Signed-off-by: Sumit Garg <sumit.garg@linaro.org> --- security/keys/encrypted-keys/masterkey_trusted.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) -- 2.7.4