blob: 4635fbeba40d5d251ddb2b9b3fc0ad9e83e425a3 [file] [log] [blame] [edit]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Our Python generator removes the "_serialized_" namespace when generating
// the code, to avoid symbol clash with the code generated by flatc.
namespace hwsec._serialized_;
// Data for the TPM 2.0 policy digest.
table Tpm2PolicyDigest {
// TPM policy digest for the TPM2_PolicyPCR command.
digest:[ubyte] (id: 0);
}
// Data for the TPM 2.0 method based on the "TPM2_PolicySigned" feature.
table Tpm2PolicySignedData {
// DER-encoded blob of the X.509 Subject Public Key Info of the key that
// should be used for unsealing.
public_key_spki_der:[ubyte] (id: 0);
// The secret blob, wrapped by the TPM's Storage Root Key.
srk_wrapped_secret:[ubyte] (id: 1);
// The signature scheme (TPM_ALG_ID) that should be used for unsealing.
scheme:int = null (id: 2);
// The signature hash algorithm (TPM_ALG_ID) that should be used for
// unsealing.
hash_alg:int = null (id: 3);
// Multiple alternative sets of PCR digests that are applied to the
// wrapped secret. For unsealing, it's enough to satisfy only one of those
// restrictions.
// Note that the order of items here is important: it defines the order of
// arguments when building the TPM policy digest.
pcr_policy_digests:[Tpm2PolicyDigest] (id: 4);
}
// Index and value of a TPM Platform Configuration Register (PCR).
table Tpm12PcrValue {
pcr_index:uint = null (id: 0);
pcr_value:[ubyte] (id: 1);
}
// TPM 1.2 data that is bound to the specific set of PCRs.
table Tpm12PcrBoundItem {
// Set of PCRs to which the secret blob is bound.
pcr_values:[Tpm12PcrValue] (id: 0);
// The secret blob, which is bound to the PCR values specified by
// |pcr_values| and with the AuthData value that is stored encrypted in
// |cmk_wrapped_auth_data|.
bound_secret:[ubyte] (id: 1);
}
// Data for the TPM 1.2 method based on the "Certified Migratable Key"
// functionality.
table Tpm12CertifiedMigratableKeyData {
// DER-encoded blob of the X.509 Subject Public Key Info of the key that
// should be used for unsealing.
public_key_spki_der:[ubyte] (id: 0);
// The blob of the Certified Migratable Key wrapped by the TPM's Storage
// Root Key.
srk_wrapped_cmk:[ubyte] (id: 1);
// The TPM_PUBKEY blob of the Certified Migratable Key.
cmk_pubkey:[ubyte] (id: 2);
// The AuthData blob encrypted by the CMK using the RSAES-OAEP MGF1
// algorithm.
cmk_wrapped_auth_data:[ubyte] (id: 3);
// Multiple alternative representations of the secret data, where each
// representation is bound to its specific set of PCRs and to the AuthData
// value that is stored encrypted in |cmk_wrapped_auth_data|.
pcr_bound_items:[Tpm12PcrBoundItem] (id: 4);
}
union SignatureSealedData {
Tpm2PolicySignedData,
Tpm12CertifiedMigratableKeyData
}