tpm2: change tpm2_calculate_policy_pcr(), tpm2_calculate_sealing_policy() to use Tpm2PCRValue array
An array of Tpm2PCRValue objects effectively replaces a TPML_PCR_SELECTION object combined with an array of (properly ordered) TPM2B_DIGEST objects. Also update tpm2_calculate_sealing_policy() pin parameter to boolean use_pin, since the function does not need to know the pin value, only if a pin is being used.
This commit is contained in:
+6
-9
@@ -831,23 +831,20 @@ static int verb_sign(int argc, char *argv[], void *userdata) {
|
||||
if (tpmalg < 0)
|
||||
return log_error_errno(tpmalg, "Unsupported PCR bank");
|
||||
|
||||
TPML_PCR_SELECTION pcr_selection;
|
||||
tpm2_tpml_pcr_selection_from_mask(1 << TPM_PCR_INDEX_KERNEL_IMAGE,
|
||||
tpmalg,
|
||||
&pcr_selection);
|
||||
|
||||
TPM2B_DIGEST pcr_values = {
|
||||
TPM2B_DIGEST pcr_digest = {
|
||||
.size = p->value_size,
|
||||
};
|
||||
assert(sizeof(pcr_values.buffer) >= p->value_size);
|
||||
memcpy_safe(pcr_values.buffer, p->value, p->value_size);
|
||||
assert(sizeof(pcr_digest.buffer) >= p->value_size);
|
||||
memcpy_safe(pcr_digest.buffer, p->value, p->value_size);
|
||||
|
||||
Tpm2PCRValue pcr_value = TPM2_PCR_VALUE_MAKE(TPM_PCR_INDEX_KERNEL_IMAGE, tpmalg, pcr_digest);
|
||||
|
||||
TPM2B_DIGEST pcr_policy_digest;
|
||||
r = tpm2_digest_init(TPM2_ALG_SHA256, &pcr_policy_digest);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = tpm2_calculate_policy_pcr(&pcr_selection, &pcr_values, 1, &pcr_policy_digest);
|
||||
r = tpm2_calculate_policy_pcr(&pcr_value, 1, &pcr_policy_digest);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user