public virtual void TestProcessRegistrationResponse_NoTransports() { mockDataStore.Setup(x => x.GetEnrollSessionData(SESSION_ID)) .Returns(new EnrollSessionData(ACCOUNT_NAME, APP_ID_ENROLL, SERVER_CHALLENGE_ENROLL)); var u2FServer = new U2FServerReferenceImpl(mockChallengeGenerator.Object, mockDataStore.Object, crypto, TRUSTED_DOMAINS); var registrationResponse = new RegisterResponse(REGISTRATION_DATA_BASE64, BROWSER_DATA_ENROLL_BASE64, SESSION_ID); u2FServer.ProcessRegistrationResponse(registrationResponse, 0L); var expectedKeyData = new SecurityKeyData(0L, KEY_HANDLE, USER_PUBLIC_KEY_ENROLL_HEX, VENDOR_CERTIFICATE, 0); mockDataStore.Verify(x => x.AddSecurityKeyData(ACCOUNT_NAME, expectedKeyData)); }
public virtual void TestProcessRegistrationResponse_OneTransport() { mockDataStore.Setup(x => x.GetEnrollSessionData(SESSION_ID)) .Returns(new EnrollSessionData(ACCOUNT_NAME, APP_ID_ENROLL, SERVER_CHALLENGE_ENROLL)); var trustedCertificates = new List<X509Certificate>(); trustedCertificates.Add(TRUSTED_CERTIFICATE_ONE_TRANSPORT); mockDataStore.Setup(x => x.GetTrustedCertificates()).Returns(trustedCertificates); var u2FServer = new U2FServerReferenceImpl(mockChallengeGenerator.Object, mockDataStore.Object, crypto, TRUSTED_DOMAINS); var registrationResponse = new RegisterResponse(REGISTRATION_RESPONSE_DATA_ONE_TRANSPORT_BASE64, BROWSER_DATA_ENROLL_BASE64, SESSION_ID); u2FServer.ProcessRegistrationResponse(registrationResponse, 0L); var transports = new List<SecurityKeyDataTransports>(); transports.Add(SecurityKeyDataTransports.BluetoothRadio); var expectedKeyData = new SecurityKeyData(0L, transports, KEY_HANDLE, USER_PUBLIC_KEY_ENROLL_HEX, TRUSTED_CERTIFICATE_ONE_TRANSPORT, 0); mockDataStore.Verify(x => x.AddSecurityKeyData(ACCOUNT_NAME, expectedKeyData)); }
public virtual void TestProcessRegistrationResponse2() { mockDataStore.Setup(x => x.GetEnrollSessionData(SESSION_ID)) .Returns(new EnrollSessionData(ACCOUNT_NAME, APP_ID_ENROLL, SERVER_CHALLENGE_ENROLL)); var trustedCertificates = new List<X509Certificate>(); trustedCertificates.Add(VENDOR_CERTIFICATE); trustedCertificates.Add(TRUSTED_CERTIFICATE_2); mockDataStore.Setup(x => x.GetTrustedCertificates()).Returns(trustedCertificates); var u2FServer = new U2FServerReferenceImpl(mockChallengeGenerator.Object, mockDataStore.Object, crypto, TRUSTED_DOMAINS); var registrationResponse = new RegisterResponse(REGISTRATION_DATA_2_BASE64, BROWSER_DATA_2_BASE64, SESSION_ID); u2FServer.ProcessRegistrationResponse(registrationResponse, 0L); var expectedKeyData = new SecurityKeyData(0L, null, KEY_HANDLE_2, USER_PUBLIC_KEY_2, TRUSTED_CERTIFICATE_2, 0); mockDataStore.Verify(x => x.AddSecurityKeyData(ACCOUNT_NAME, expectedKeyData)); }
protected bool Equals(SecurityKeyData other) { return EnrollmentTime == other.EnrollmentTime && ContainSameTransports(Transports, other.Transports) && KeyHandle.SequenceEqual(other.KeyHandle) && PublicKey.SequenceEqual(other.PublicKey) && Equals(AttestationCertificate, other.AttestationCertificate) && Counter == other.Counter; }
protected bool Equals(SecurityKeyData other) { return(EnrollmentTime == other.EnrollmentTime && ContainSameTransports(Transports, other.Transports) && KeyHandle.SequenceEqual(other.KeyHandle) && PublicKey.SequenceEqual(other.PublicKey) && Equals(AttestationCertificate, other.AttestationCertificate) && Counter == other.Counter); }
public void AddSecurityKeyData(string accountName, SecurityKeyData securityKeyData) { var tokens = GetSecurityKeyData(accountName); tokens.Add(securityKeyData); securityKeyDataBase[accountName] = tokens; }
private void LoadFromJson(JObject json) { securityKeyDataBase.Clear(); var keys = json.GetValue("keys") as JObject ?? new JObject(); foreach (var pair in keys) { var accountName = pair.Key; var keyDatas = pair.Value; foreach (var keyData in keyDatas) { var enrollmentTime = (long) keyData["enrollmentTime"]; var keyHandle = WebSafeBase64Converter.FromBase64String((string) keyData["keyHandle"]); var publicKey = WebSafeBase64Converter.FromBase64String((string) keyData["publicKey"]); var attestationCertBytes = WebSafeBase64Converter.FromBase64String((string) keyData["attestationCert"]); var attestationCert = new X509CertificateParser().ReadCertificate(attestationCertBytes); var counter = (int) keyData["counter"]; var transportToken = keyData["transports"]; List<SecurityKeyDataTransports> transports = null; if (transportToken != null && transportToken.Type != JTokenType.Null) { var transportsArray = (JArray) transportToken; transports = transportsArray .Select(o => (string) o) .Select( s => (SecurityKeyDataTransports) Enum.Parse(typeof (SecurityKeyDataTransports), s, true)) .ToList(); } var securityKeyData = new SecurityKeyData(enrollmentTime, transports, keyHandle, publicKey, attestationCert, counter); AddSecurityKeyData(accountName, securityKeyData); } } }