Skip to content

Commit 8e2b272

Browse files
aseiglerabergs
andauthored
Change TPM manufacturer string comparison handling (#568)
* Change TPM manfacturer sting comparison handling such that 49424d00 is effectively the same as 49424D00 * Remove dashes from hex strings * format --------- Co-authored-by: Anders Åberg <[email protected]>
1 parent a1fa1d5 commit 8e2b272

File tree

1 file changed

+27
-25
lines changed
  • Src/Fido2/AttestationFormat

1 file changed

+27
-25
lines changed

Src/Fido2/AttestationFormat/Tpm.cs

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,35 @@ namespace Fido2NetLib;
1515

1616
internal sealed class Tpm : AttestationVerifier
1717
{
18+
private static string ConvertTPMManufacturerToHexString(string id) => BitConverter.ToString(Convert.FromHexString(id.Split(':')[^1])).Replace("-", "");
19+
1820
public static readonly HashSet<string> TPMManufacturers =
1921
[
20-
"id:FFFFF1D0", // FIDO testing TPM
22+
ConvertTPMManufacturerToHexString("id:FFFFF1D0"), // FIDO testing TPM
2123
// From https://trustedcomputinggroup.org/wp-content/uploads/TCG-TPM-Vendor-ID-Registry-Version-1.02-Revision-1.00.pdf
22-
"id:414D4400", // 'AMD' AMD
23-
"id:41544D4C", // 'ATML' Atmel
24-
"id:4252434D", // 'BRCM' Broadcom
25-
"id:4353434F", // 'CSCO' Cisco
26-
"id:464C5953", // 'FLYS' Flyslice Technologies
27-
"id:48504500", // 'HPE' HPE
28-
"id:49424d00", // 'IBM' IBM
29-
"id:49465800", // 'IFX' Infinion
30-
"id:494E5443", // 'INTC' Intel
31-
"id:4C454E00", // 'LEN' Lenovo
32-
"id:4D534654", // 'MSFT' Microsoft
33-
"id:4E534D20", // 'NSM' National Semiconductor
34-
"id:4E545A00", // 'NTZ' Nationz
35-
"id:4E544300", // 'NTC' Nuvoton Technology
36-
"id:51434F4D", // 'QCOM' Qualcomm
37-
"id:534D5343", // 'SMSC' SMSC
38-
"id:53544D20", // 'STM ' ST Microelectronics
39-
"id:534D534E", // 'SMSN' Samsung
40-
"id:534E5300", // 'SNS' Sinosun
41-
"id:54584E00", // 'TXN' Texas Instruments
42-
"id:57454300", // 'WEC' Winbond
43-
"id:524F4343", // 'ROCC' Fuzhou Rockchip
44-
"id:474F4F47", // 'GOOG' Google
24+
ConvertTPMManufacturerToHexString("id:414D4400"), // 'AMD' AMD
25+
ConvertTPMManufacturerToHexString("id:41544D4C"), // 'ATML' Atmel
26+
ConvertTPMManufacturerToHexString("id:4252434D"), // 'BRCM' Broadcom
27+
ConvertTPMManufacturerToHexString("id:4353434F"), // 'CSCO' Cisco
28+
ConvertTPMManufacturerToHexString("id:464C5953"), // 'FLYS' Flyslice Technologies
29+
ConvertTPMManufacturerToHexString("id:48504500"), // 'HPE' HPE
30+
ConvertTPMManufacturerToHexString("id:49424d00"), // 'IBM' IBM
31+
ConvertTPMManufacturerToHexString("id:49465800"), // 'IFX' Infinion
32+
ConvertTPMManufacturerToHexString("id:494E5443"), // 'INTC' Intel
33+
ConvertTPMManufacturerToHexString("id:4C454E00"), // 'LEN' Lenovo
34+
ConvertTPMManufacturerToHexString("id:4D534654"), // 'MSFT' Microsoft
35+
ConvertTPMManufacturerToHexString("id:4E534D20"), // 'NSM' National Semiconductor
36+
ConvertTPMManufacturerToHexString("id:4E545A00"), // 'NTZ' Nationz
37+
ConvertTPMManufacturerToHexString("id:4E544300"), // 'NTC' Nuvoton Technology
38+
ConvertTPMManufacturerToHexString("id:51434F4D"), // 'QCOM' Qualcomm
39+
ConvertTPMManufacturerToHexString("id:534D5343"), // 'SMSC' SMSC
40+
ConvertTPMManufacturerToHexString("id:53544D20"), // 'STM ' ST Microelectronics
41+
ConvertTPMManufacturerToHexString("id:534D534E"), // 'SMSN' Samsung
42+
ConvertTPMManufacturerToHexString("id:534E5300"), // 'SNS' Sinosun
43+
ConvertTPMManufacturerToHexString("id:54584E00"), // 'TXN' Texas Instruments
44+
ConvertTPMManufacturerToHexString("id:57454300"), // 'WEC' Winbond
45+
ConvertTPMManufacturerToHexString("id:524F4343"), // 'ROCC' Fuzhou Rockchip
46+
ConvertTPMManufacturerToHexString("id:474F4F47"), // 'GOOG' Google
4547
];
4648

4749
public override ValueTask<VerifyAttestationResult> VerifyAsync(VerifyAttestationRequest request)
@@ -177,7 +179,7 @@ public override ValueTask<VerifyAttestationResult> VerifyAsync(VerifyAttestation
177179
throw new Fido2VerificationException(Fido2ErrorCode.InvalidAttestation, "SAN missing TPMManufacturer, TPMModel, or TPMVersion from TPM attestation certificate");
178180
}
179181

180-
if (!TPMManufacturers.Contains(tpmManufacturer))
182+
if (!TPMManufacturers.Contains(ConvertTPMManufacturerToHexString(tpmManufacturer)))
181183
throw new Fido2VerificationException(Fido2ErrorCode.InvalidAttestation, "Invalid TPM manufacturer found parsing TPM attestation");
182184

183185
// 5biiii. The Extended Key Usage extension MUST contain the "joint-iso-itu-t(2) internationalorganizations(23) 133 tcg-kp(8) tcg-kp-AIKCertificate(3)" OID.

0 commit comments

Comments
 (0)