You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Rename DeserializeAndValidateBlob -> DeserializeAndValidateBlobAsync
* Make AuthenticatorAttestationResponse immutable
* Expose {PubArea,CertInfo}.Raw over a ReadOnlySpan<byte>
* Make MDSGetEndpointResponse immutable
* Make DevicePublicKeyAuthenticatorOutput immutable, and change properties that allocate to methods
* Make AttestedCredentialData immutable
* Add oid note
* Use Concat helper
* Rename ecparams -> ecParams
* Make AuthenticatorAssertionResponse immutable and improve nullability annotations
* Make AuthenticatorAssertionResponse.Signature a ReadOnlySpan
* Improve error message in AndroidKey
* Use Concat helper
* Breakout TrustAnchor logic from AuthenticatorAttestationResponse
* Pass {config,metadataService, cancellationToken} to DevicePublicKeyRegistrationAsync
* Move CryptoUtils -> /Extensions
* Introduce VerifyAttestationRequest to remove state from AttestationVerifier
* Move CoseKeyTypeFromOid helper to COSE
// Next, build temporary CredentialPublicKey for comparison from credCert and COSE algorithm
81
82
varcpk=newCredentialPublicKey(credCert,coseAlg);
82
83
83
84
// Finally, compare byte sequence of CredentialPublicKey built from credCert with byte sequence of CredentialPublicKey from AttestedCredentialData from authData
thrownewFido2VerificationException(Fido2ErrorCode.InvalidAttestation,"Credential public key in Apple attestation does not match subject public key of credCert");
86
87
87
88
// 7. If successful, return implementation-specific values representing attestation type Anonymous CA and attestation trust path x5c.
// 1. Verify that the x5c array contains the intermediate and leaf certificates for App Attest, starting from the credential certificate in the first data buffer in the array (credcert).
@@ -79,13 +80,13 @@ public override (AttestationType, X509Certificate2[]) Verify()
79
80
// 3. Generate a new SHA256 hash of the composite item to create nonce.
80
81
// 4. Obtain the value of the credCert extension with OID 1.2.840.113635.100.8.2, which is a DER - encoded ASN.1 sequence.Decode the sequence and extract the single octet string that it contains. Verify that the string equals nonce.
81
82
// Steps 2 - 4 done in the "apple" format verifier
thrownewFido2VerificationException("App ID hash does not match RP ID hash in Apple AppAttest attestation");
101
102
}
102
103
103
104
// 7. Verify that the authenticator data's counter field equals 0.
104
-
if(AuthData.SignCount!=0)
105
+
if(request.AuthData.SignCount!=0)
105
106
{
106
107
thrownewFido2VerificationException("Sign count does not equal 0 in Apple AppAttest attestation");
107
108
}
108
109
109
110
// 8. Verify that the authenticator data's aaguid field is either appattestdevelop if operating in the development environment, or appattest followed by seven 0x00 bytes if operating in the production environment.
0 commit comments