diff --git a/Src/Fido2/Extensions/CryptoUtils.cs b/Src/Fido2/Extensions/CryptoUtils.cs index 6edb3407..4d8da0d2 100644 --- a/Src/Fido2/Extensions/CryptoUtils.cs +++ b/Src/Fido2/Extensions/CryptoUtils.cs @@ -61,7 +61,7 @@ public static bool ValidateTrustChain(X509Certificate2[] trustPath, X509Certific // Let's check the simplest case first. If subject and issuer are the same, and the attestation cert is in the list, that's all the validation we need // We have the same singular root cert in trustpath and it is in attestationRootCertificates - if (trustPath.Length == 1 && trustPath[0].Subject.Equals(trustPath[0].Issuer, StringComparison.Ordinal)) + if (trustPath.Length == 1) { foreach (X509Certificate2 cert in attestationRootCertificates) { diff --git a/Tests/Fido2.Tests/CryptoUtilsTests.cs b/Tests/Fido2.Tests/CryptoUtilsTests.cs index 2ce5d81a..505f75db 100644 --- a/Tests/Fido2.Tests/CryptoUtilsTests.cs +++ b/Tests/Fido2.Tests/CryptoUtilsTests.cs @@ -66,8 +66,8 @@ public void TestValidateTrustChainSubAnchor() Assert.False(0 == attestationRootCertificates[0].Issuer.CompareTo(attestationRootCertificates[0].Subject)); Assert.True(CryptoUtils.ValidateTrustChain(trustPath, attestationRootCertificates)); - Assert.False(CryptoUtils.ValidateTrustChain(trustPath, trustPath)); - Assert.False(CryptoUtils.ValidateTrustChain(attestationRootCertificates, attestationRootCertificates)); + Assert.True(CryptoUtils.ValidateTrustChain(trustPath, trustPath)); + Assert.True(CryptoUtils.ValidateTrustChain(attestationRootCertificates, attestationRootCertificates)); Assert.False(CryptoUtils.ValidateTrustChain(attestationRootCertificates, trustPath)); }