@@ -15,33 +15,35 @@ namespace Fido2NetLib;
1515
1616internal 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