@@ -15,33 +15,35 @@ namespace Fido2NetLib;
15
15
16
16
internal sealed class Tpm : AttestationVerifier
17
17
{
18
+ private static string ConvertTPMManufacturerToHexString ( string id ) => BitConverter . ToString ( Convert . FromHexString ( id . Split ( ':' ) [ ^ 1 ] ) ) . Replace ( "-" , "" ) ;
19
+
18
20
public static readonly HashSet < string > TPMManufacturers =
19
21
[
20
- "id:FFFFF1D0" , // FIDO testing TPM
22
+ ConvertTPMManufacturerToHexString ( "id:FFFFF1D0" ) , // FIDO testing TPM
21
23
// 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
45
47
] ;
46
48
47
49
public override ValueTask < VerifyAttestationResult > VerifyAsync ( VerifyAttestationRequest request )
@@ -177,7 +179,7 @@ public override ValueTask<VerifyAttestationResult> VerifyAsync(VerifyAttestation
177
179
throw new Fido2VerificationException ( Fido2ErrorCode . InvalidAttestation , "SAN missing TPMManufacturer, TPMModel, or TPMVersion from TPM attestation certificate" ) ;
178
180
}
179
181
180
- if ( ! TPMManufacturers . Contains ( tpmManufacturer ) )
182
+ if ( ! TPMManufacturers . Contains ( ConvertTPMManufacturerToHexString ( tpmManufacturer ) ) )
181
183
throw new Fido2VerificationException ( Fido2ErrorCode . InvalidAttestation , "Invalid TPM manufacturer found parsing TPM attestation" ) ;
182
184
183
185
// 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