├── .github └── workflows │ └── dotnet.yml ├── .gitignore ├── LICENSE ├── README.md ├── SECURITY.md ├── ScottBrady.Fido2.sln ├── samples └── ScottBrady.Fido2.Samples.Basic │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── ScottBrady.Fido2.Samples.Basic.csproj │ └── wwwroot │ └── index.html ├── src └── ScottBrady.Fido2 │ ├── Cryptography │ ├── CoseConstants.cs │ ├── CredentialPublicKey.cs │ ├── FidoSignatureValidator.cs │ └── SignatureValidationStrategies │ │ ├── EcdsaSignatureValidationStrategy.cs │ │ ├── EdDsaSignatureValidationStrategy.cs │ │ ├── ISignatureValidationStrategy.cs │ │ └── RsaSignatureValidationStrategy.cs │ ├── Exceptions │ └── FidoException.cs │ ├── FidoAuthenticationRequest.cs │ ├── FidoAuthenticationResult.cs │ ├── FidoAuthenticationService.cs │ ├── FidoRegistrationRequest.cs │ ├── FidoRegistrationResult.cs │ ├── FidoRegistrationService.cs │ ├── Helpers │ ├── AuthenticatorResponseJsonConverter.cs │ ├── EmptyToNullStringConverter.cs │ ├── IntArrayJsonConverter.cs │ └── StreamExtensions.cs │ ├── Hosting │ ├── FidoOptions.cs │ ├── ServiceCollectionExtensions.cs │ └── WebApplicationExtensions.cs │ ├── Models │ ├── AttestationObject.cs │ ├── AuthenticatorData.cs │ ├── AuthenticatorSelectionCriteria.cs │ ├── ClientData.cs │ ├── PublicKeyCredential.cs │ ├── PublicKeyCredentialCreationOptions.cs │ ├── PublicKeyCredentialDescriptor.cs │ ├── PublicKeyCredentialParameters.cs │ ├── PublicKeyCredentialRequestOptions.cs │ ├── PublicKeyCredentialRpEntity.cs │ ├── PublicKeyCredentialUserEntity.cs │ └── TokenBinding.cs │ ├── Parsers │ ├── AttestationObjectParser.cs │ ├── AuthenticatorDataParser.cs │ └── ClientDataParser.cs │ ├── ScottBrady.Fido2.csproj │ ├── Stores │ ├── IFidoKeyStore.cs │ ├── IFidoOptionsStore.cs │ ├── InMemoryFidoKeyStore.cs │ ├── InMemoryFidoOptionsStore.cs │ └── JsonFidoKeyStore.cs │ └── WebAuthnConstants.cs └── test ├── ScottBrady.Fido2.Tests.Component ├── ApiTests.cs ├── Program.cs └── ScottBrady.Fido2.Tests.Component.csproj └── ScottBrady.Fido2.Tests ├── Cryptography ├── CredentialPublicKeyTests.cs ├── EcdsaSignatureValidationStrategyTests.cs └── FidoSignatureValidatorTests.cs ├── FidoAuthenticationServiceTests.cs ├── HappyPathTests.cs ├── Models └── JsonSerializationTests.cs ├── ScottBrady.Fido2.Tests.csproj └── Stores └── InMemoryFidoOptionsStoreTests.cs /.github/workflows/dotnet.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/.github/workflows/dotnet.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/README.md -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/SECURITY.md -------------------------------------------------------------------------------- /ScottBrady.Fido2.sln: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/ScottBrady.Fido2.sln -------------------------------------------------------------------------------- /samples/ScottBrady.Fido2.Samples.Basic/Program.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/samples/ScottBrady.Fido2.Samples.Basic/Program.cs -------------------------------------------------------------------------------- /samples/ScottBrady.Fido2.Samples.Basic/Properties/launchSettings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/samples/ScottBrady.Fido2.Samples.Basic/Properties/launchSettings.json -------------------------------------------------------------------------------- /samples/ScottBrady.Fido2.Samples.Basic/ScottBrady.Fido2.Samples.Basic.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/samples/ScottBrady.Fido2.Samples.Basic/ScottBrady.Fido2.Samples.Basic.csproj -------------------------------------------------------------------------------- /samples/ScottBrady.Fido2.Samples.Basic/wwwroot/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/samples/ScottBrady.Fido2.Samples.Basic/wwwroot/index.html -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Cryptography/CoseConstants.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Cryptography/CoseConstants.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Cryptography/CredentialPublicKey.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Cryptography/CredentialPublicKey.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Cryptography/FidoSignatureValidator.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Cryptography/FidoSignatureValidator.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Cryptography/SignatureValidationStrategies/EcdsaSignatureValidationStrategy.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Cryptography/SignatureValidationStrategies/EcdsaSignatureValidationStrategy.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Cryptography/SignatureValidationStrategies/EdDsaSignatureValidationStrategy.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Cryptography/SignatureValidationStrategies/EdDsaSignatureValidationStrategy.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Cryptography/SignatureValidationStrategies/ISignatureValidationStrategy.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Cryptography/SignatureValidationStrategies/ISignatureValidationStrategy.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Cryptography/SignatureValidationStrategies/RsaSignatureValidationStrategy.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Cryptography/SignatureValidationStrategies/RsaSignatureValidationStrategy.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Exceptions/FidoException.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Exceptions/FidoException.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/FidoAuthenticationRequest.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/FidoAuthenticationRequest.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/FidoAuthenticationResult.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/FidoAuthenticationResult.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/FidoAuthenticationService.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/FidoAuthenticationService.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/FidoRegistrationRequest.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/FidoRegistrationRequest.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/FidoRegistrationResult.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/FidoRegistrationResult.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/FidoRegistrationService.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/FidoRegistrationService.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Helpers/AuthenticatorResponseJsonConverter.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Helpers/AuthenticatorResponseJsonConverter.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Helpers/EmptyToNullStringConverter.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Helpers/EmptyToNullStringConverter.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Helpers/IntArrayJsonConverter.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Helpers/IntArrayJsonConverter.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Helpers/StreamExtensions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Helpers/StreamExtensions.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Hosting/FidoOptions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Hosting/FidoOptions.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Hosting/ServiceCollectionExtensions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Hosting/ServiceCollectionExtensions.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Hosting/WebApplicationExtensions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Hosting/WebApplicationExtensions.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/AttestationObject.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/AttestationObject.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/AuthenticatorData.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/AuthenticatorData.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/AuthenticatorSelectionCriteria.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/AuthenticatorSelectionCriteria.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/ClientData.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/ClientData.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/PublicKeyCredential.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/PublicKeyCredential.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/PublicKeyCredentialCreationOptions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/PublicKeyCredentialCreationOptions.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/PublicKeyCredentialDescriptor.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/PublicKeyCredentialDescriptor.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/PublicKeyCredentialParameters.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/PublicKeyCredentialParameters.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/PublicKeyCredentialRequestOptions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/PublicKeyCredentialRequestOptions.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/PublicKeyCredentialRpEntity.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/PublicKeyCredentialRpEntity.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/PublicKeyCredentialUserEntity.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/PublicKeyCredentialUserEntity.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Models/TokenBinding.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Models/TokenBinding.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Parsers/AttestationObjectParser.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Parsers/AttestationObjectParser.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Parsers/AuthenticatorDataParser.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Parsers/AuthenticatorDataParser.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Parsers/ClientDataParser.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Parsers/ClientDataParser.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/ScottBrady.Fido2.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/ScottBrady.Fido2.csproj -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Stores/IFidoKeyStore.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Stores/IFidoKeyStore.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Stores/IFidoOptionsStore.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Stores/IFidoOptionsStore.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Stores/InMemoryFidoKeyStore.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Stores/InMemoryFidoKeyStore.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Stores/InMemoryFidoOptionsStore.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Stores/InMemoryFidoOptionsStore.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/Stores/JsonFidoKeyStore.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/Stores/JsonFidoKeyStore.cs -------------------------------------------------------------------------------- /src/ScottBrady.Fido2/WebAuthnConstants.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/src/ScottBrady.Fido2/WebAuthnConstants.cs -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests.Component/ApiTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests.Component/ApiTests.cs -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests.Component/Program.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests.Component/Program.cs -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests.Component/ScottBrady.Fido2.Tests.Component.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests.Component/ScottBrady.Fido2.Tests.Component.csproj -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests/Cryptography/CredentialPublicKeyTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests/Cryptography/CredentialPublicKeyTests.cs -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests/Cryptography/EcdsaSignatureValidationStrategyTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests/Cryptography/EcdsaSignatureValidationStrategyTests.cs -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests/Cryptography/FidoSignatureValidatorTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests/Cryptography/FidoSignatureValidatorTests.cs -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests/FidoAuthenticationServiceTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests/FidoAuthenticationServiceTests.cs -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests/HappyPathTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests/HappyPathTests.cs -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests/Models/JsonSerializationTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests/Models/JsonSerializationTests.cs -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests/ScottBrady.Fido2.Tests.csproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests/ScottBrady.Fido2.Tests.csproj -------------------------------------------------------------------------------- /test/ScottBrady.Fido2.Tests/Stores/InMemoryFidoOptionsStoreTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scottbrady91/fido2-poc/HEAD/test/ScottBrady.Fido2.Tests/Stores/InMemoryFidoOptionsStoreTests.cs --------------------------------------------------------------------------------