key: add tpm_send command
Add internal kernel tpm_send() command used to seal/unseal keys. Changelog: - replaced module_put in tpm_send() with new tpm_chip_put() wrapper (suggested by David Howells) - Make tpm_send() cmd argument a 'void *' (suggested by David Howells) Signed-off-by: David Safford <safford@watson.ibm.com> Signed-off-by: Mimi Zohar <zohar@us.ibm.com> Acked-by: David Howells <dhowells@redhat.com> Acked-by: Serge E. Hallyn <serge.hallyn@canonical.com> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
@@ -780,6 +780,22 @@ int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(tpm_pcr_extend);
|
EXPORT_SYMBOL_GPL(tpm_pcr_extend);
|
||||||
|
|
||||||
|
int tpm_send(u32 chip_num, void *cmd, size_t buflen)
|
||||||
|
{
|
||||||
|
struct tpm_chip *chip;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
chip = tpm_chip_find_get(chip_num);
|
||||||
|
if (chip == NULL)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
rc = transmit_cmd(chip, cmd, buflen, "attempting tpm_cmd");
|
||||||
|
|
||||||
|
tpm_chip_put(chip);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(tpm_send);
|
||||||
|
|
||||||
ssize_t tpm_show_pcrs(struct device *dev, struct device_attribute *attr,
|
ssize_t tpm_show_pcrs(struct device *dev, struct device_attribute *attr,
|
||||||
char *buf)
|
char *buf)
|
||||||
{
|
{
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
extern int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf);
|
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_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash);
|
||||||
|
extern int tpm_send(u32 chip_num, void *cmd, size_t buflen);
|
||||||
#else
|
#else
|
||||||
static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) {
|
static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) {
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
@@ -38,5 +39,8 @@ static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) {
|
|||||||
static inline int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash) {
|
static inline int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash) {
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
static inline int tpm_send(u32 chip_num, void *cmd, size_t buflen) {
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user