mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
tpm: seal/unseal for TPM 2.0
Added tpm_trusted_seal() and tpm_trusted_unseal() API for sealing trusted keys. This patch implements basic sealing and unsealing functionality for TPM 2.0: * Seal with a parent key using a 20 byte auth value. * Unseal with a parent key using a 20 byte auth value. Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
This commit is contained in:
parent
fe351e8d4e
commit
954650efb7
5 changed files with 366 additions and 3 deletions
|
@ -30,6 +30,8 @@
|
|||
#define TPM_ANY_NUM 0xFFFF
|
||||
|
||||
struct tpm_chip;
|
||||
struct trusted_key_payload;
|
||||
struct trusted_key_options;
|
||||
|
||||
struct tpm_class_ops {
|
||||
const u8 req_complete_mask;
|
||||
|
@ -46,11 +48,22 @@ struct tpm_class_ops {
|
|||
|
||||
#if defined(CONFIG_TCG_TPM) || defined(CONFIG_TCG_TPM_MODULE)
|
||||
|
||||
extern int tpm_is_tpm2(u32 chip_num);
|
||||
extern int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf);
|
||||
extern int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash);
|
||||
extern int tpm_send(u32 chip_num, void *cmd, size_t buflen);
|
||||
extern int tpm_get_random(u32 chip_num, u8 *data, size_t max);
|
||||
extern int tpm_seal_trusted(u32 chip_num,
|
||||
struct trusted_key_payload *payload,
|
||||
struct trusted_key_options *options);
|
||||
extern int tpm_unseal_trusted(u32 chip_num,
|
||||
struct trusted_key_payload *payload,
|
||||
struct trusted_key_options *options);
|
||||
#else
|
||||
static inline int tpm_is_tpm2(u32 chip_num)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) {
|
||||
return -ENODEV;
|
||||
}
|
||||
|
@ -63,5 +76,18 @@ static inline int tpm_send(u32 chip_num, void *cmd, size_t buflen) {
|
|||
static inline int tpm_get_random(u32 chip_num, u8 *data, size_t max) {
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int tpm_seal_trusted(u32 chip_num,
|
||||
struct trusted_key_payload *payload,
|
||||
struct trusted_key_options *options)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
static inline int tpm_unseal_trusted(u32 chip_num,
|
||||
struct trusted_key_payload *payload,
|
||||
struct trusted_key_options *options)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue