diff --git a/index.bs b/index.bs
index 9ae2b19f7..775383c41 100644
--- a/index.bs
+++ b/index.bs
@@ -6556,8 +6556,11 @@ engine.
setting the `extraData` parameter to the digest of |attToBeSigned| using the hash algorithm corresponding to the "alg" signature algorithm.
(For the "RS256" algorithm, this would be a SHA-256 digest.)
- Set the |pubArea| field to the public area of the credential public key, the |certInfo| field to the output parameter of the
- same name, and the |sig| field to the signature obtained from the above procedure.
+ Set the |pubArea| field to the public area of the credential public key (the TPMT_PUBLIC structure), the |certInfo| field (the TPMS_ATTEST structure)
+ to the output parameter of the same name, and the |sig| field to the signature obtained from the above procedure.
+
+ Note: If the |pubArea| is read from the TPM using the TPM2_ReadPublic command, that command returns a TPM2B_PUBLIC structure. TPM2B_PUBLIC
+ is two bytes of length followed by the TPMT_PUBLIC structure. The two bytes of length must be removed prior to putting this into the |pubArea|.
: Verification procedure
:: Given the [=verification procedure inputs=] |attStmt|, |authenticatorData| and |clientDataHash|, the [=verification procedure=] is
@@ -6571,24 +6574,30 @@ engine.
Concatenate |authenticatorData| and |clientDataHash| to form |attToBeSigned|.
+ Verify integrity of |certInfo|
+ - Verify that |x5c| is present.
+ - Verify that |aikCert| meets the requirements in [[#sctn-tpm-cert-requirements]].
+ - If |aikCert| contains an extension with OID `1.3.6.1.4.1.45724.1.1.4` (`id-fido-gen-ce-aaguid`) verify that the value of this
+ extension matches the [=authData/attestedCredentialData/aaguid=]
in |authenticatorData|.
+ - Verify the |sig| is a valid signature over |certInfo| using the attestation public key in |aikCert| with the
+ algorithm specified in |alg|.
+
Validate that |certInfo| is valid:
+ Note: |certInfo| is a TPMS_ATTEST structure.
- Verify that `magic` is set to `TPM_GENERATED_VALUE`.
- Verify that `type` is set to `TPM_ST_ATTEST_CERTIFY`.
- Verify that `extraData` is set to the hash of |attToBeSigned| using the hash algorithm employed in "alg".
- Verify that `attested` contains a `TPMS_CERTIFY_INFO` structure as specified in [[!TPMv2-Part2]] section 10.12.3,
- whose `name` field contains a valid Name for |pubArea|,
- as computed using the procedure specified in [[!TPMv2-Part1]]
- section 16. Note that the hash algorithm is included within the attested `name` field of the TPMS_CERTIFY_INFO structure.
- - Verify that |x5c| is present.
- - Note that the remaining fields in the "Standard Attestation Structure" [[!TPMv2-Part1]]
+ whose `name` field contains a valid Name for |pubArea|, as computed using the procedure specified in [[!TPMv2-Part1]] section 16 using the nameAlg in the |pubArea|.
+
+ Note: The hash algorithm is also included within the attested `name`
+ field of the TPMS_CERTIFY_INFO structure and will also match nameAlg in |pubArea| when returned by the TPM.
+
+ Note: The remaining fields in the "Standard Attestation Structure" [[!TPMv2-Part1]]
section 31.2, i.e., `qualifiedSigner`, `clockInfo` and `firmwareVersion` are ignored.
- These fields MAY be used as an input to risk engines.
+ Depending on the properties of the |aikCert| key used, these fields may be obfuscated.
+ If valid, these MAY be used as an input to risk engines.
- - Verify the |sig| is a valid signature over |certInfo| using the attestation public key in |aikCert| with the
- algorithm specified in |alg|.
- - Verify that |aikCert| meets the requirements in [[#sctn-tpm-cert-requirements]].
- - If |aikCert| contains an extension with OID `1.3.6.1.4.1.45724.1.1.4` (`id-fido-gen-ce-aaguid`) verify that the value of this
- extension matches the [=authData/attestedCredentialData/aaguid=]
in |authenticatorData|.
- If successful, return implementation-specific values representing [=attestation type=] [=AttCA=] and [=attestation trust
path=] |x5c|.
@@ -6602,6 +6611,11 @@ TPM [=attestation certificate=] MUST have the following fields/extensions:
- The Subject Alternative Name extension MUST be set as defined in [[!TPMv2-EK-Profile]] section 3.2.9.
+ Note: Previous versions of [[!TPMv2-EK-Profile]] allowed the inclusion of an optional attribute,
+ called HardwareModuleName, that contains the TPM serial number in the EK certificate.
+ HardwareModuleName SHOULD NOT be placed in in the [=attestation certificate=]
+ Subject Alternative Name.
+
- The Extended Key Usage extension MUST contain the OID `2.23.133.8.3`
("joint-iso-itu-t(2) internationalorganizations(23) 133 tcg-kp(8) tcg-kp-AIKCertificate(3)").
@@ -9435,7 +9449,7 @@ for their contributions as our W3C Team Contacts.
"TPMv2-EK-Profile": {
"title": "TCG EK Credential Profile for TPM Family 2.0",
"publisher": "Trusted Computing Group",
- "href": "https://www.trustedcomputinggroup.org/wp-content/uploads/Credential_Profile_EK_V2.0_R14_published.pdf"
+ "href": "https://trustedcomputinggroup.org/wp-content/uploads/TCG-EK-Credential-Profile-V-2.5-R2_published.pdf"
},
"FIDOAuthnrSecReqs": {