コード例 #1
0
        private static FidoRegisterResponse GetValidRegisterResponse()
        {
            var registerResponse = new FidoRegisterResponse
            {
                RegistrationData = FidoRegistrationData.FromWebSafeBase64(TestVectors.RegistrationResponseDataBase64),
                ClientData       = FidoClientData.FromJson(TestVectors.ClientDataRegister)
            };

            return(registerResponse);
        }
コード例 #2
0
        public void FromJson()
        {
            var json =
                "{ \"registrationData\":\"BQQcH08Pj414DUayxwcgVU4Z5NXfkFeWz51FT-g5gW7GjPWprecrSECJBj1oNsEjkJynnFkIwZLL4NC6M46GnUopQGJUaobtq9pUKffgVYPJDDLHuAQZLoDz390Z5uwbdFkzYItk3L270bBIM-k0VO1DKF25SGP2XK9NZv-qxWQrV_gwggIcMIIBBqADAgECAgQk26tAMAsGCSqGSIb3DQEBCzAuMSwwKgYDVQQDEyNZdWJpY28gVTJGIFJvb3QgQ0EgU2VyaWFsIDQ1NzIwMDYzMTAgFw0xNDA4MDEwMDAwMDBaGA8yMDUwMDkwNDAwMDAwMFowKzEpMCcGA1UEAwwgWXViaWNvIFUyRiBFRSBTZXJpYWwgMTM1MDMyNzc4ODgwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQCsJS-NH1HeUHEd46-xcpN7SpHn6oeb-w5r-veDCBwy1vUvWnJanjjv4dR_rV5G436ysKUAXUcsVe5fAnkORo2oxIwEDAOBgorBgEEAYLECgEBBAAwCwYJKoZIhvcNAQELA4IBAQCjY64OmDrzC7rxLIst81pZvxy7ShsPy2jEhFWEkPaHNFhluNsCacNG5VOITCxWB68OonuQrIzx70MfcqwYnbIcgkkUvxeIpVEaM9B7TI40ZHzp9h4VFqmps26QCkAgYfaapG4SxTK5k_lCPvqqTPmjtlS03d7ykkpUj9WZlVEN1Pf02aTVIZOHPHHJuH6GhT6eLadejwxtKDBTdNTv3V4UlvjDOQYQe9aL1jUNqtLDeBHso8pDvJMLc0CX3vadaI2UVQxM-xip4kuGouXYj0mYmaCbzluBDFNsrzkNyL3elg3zMMrKvAUhoYMjlX_-vKWcqQsgsQ0JtSMcWMJ-umeDMEYCIQCKz0k0wQVooa638uF67HNyqNaa2vL5A-LkCDrLV5v74QIhAPjJ8UrQVCymLS1xoLWTw0CPD5U7DuerMqHgsvEnMR3c\",\"challenge\":\"V8D5zRbaeY3Dl_AR5U4g3eZb_HCpZgd17Jeh1LqacL0\",\"version\":\"U2F_V2\",\"appId\":\"http://localhost:3214\",\"clientData\":\"eyJ0eXAiOiJuYXZpZ2F0b3IuaWQuZmluaXNoRW5yb2xsbWVudCIsImNoYWxsZW5nZSI6IlY4RDV6UmJhZVkzRGxfQVI1VTRnM2VaYl9IQ3BaZ2QxN0plaDFMcWFjTDAiLCJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjMyMTQiLCJjaWRfcHVia2V5IjoiIn0\"}";

            var response = FidoRegisterResponse.FromJson(json);

            Assert.IsNotNull(response.RegistrationData);
            Assert.IsNotNull(response.ClientData);
        }
コード例 #3
0
        public FidoDeviceRegistration FinishRegistration(FidoStartedRegistration startedRegistration,
                                                         string jsonDeviceResponse, IEnumerable <FidoFacetId> trustedFacetIds)
        {
            if (jsonDeviceResponse == null)
            {
                throw new ArgumentNullException("jsonDeviceResponse");
            }

            var registerResponse = FidoRegisterResponse.FromJson(jsonDeviceResponse);

            return(FinishRegistration(startedRegistration, registerResponse, trustedFacetIds));
        }
コード例 #4
0
        public FidoDeviceRegistration FinishRegistration(FidoStartedRegistration startedRegistration,
                                                         FidoRegisterResponse registerResponse, IEnumerable <FidoFacetId> trustedFacetIds)
        {
            if (startedRegistration == null)
            {
                throw new ArgumentNullException("startedRegistration");
            }
            if (registerResponse == null)
            {
                throw new ArgumentNullException("registerResponse");
            }
            if (trustedFacetIds == null)
            {
                throw new ArgumentNullException("trustedFacetIds");
            }

            registerResponse.Validate();

            var clientData = registerResponse.ClientData;

            ExpectClientDataType(clientData, RegisterType);

            if (clientData.Challenge != startedRegistration.Challenge)
            {
                throw new InvalidOperationException("Incorrect challenge signed in client data");
            }

            ValidateOrigin(trustedFacetIds, new FidoFacetId(clientData.Origin));

            var registrationData = registerResponse.RegistrationData;

            VerifyResponseSignature(startedRegistration.AppId, registrationData, clientData);

            return(new FidoDeviceRegistration(registrationData.KeyHandle, registrationData.UserPublicKey,
                                              registrationData.AttestationCertificate, 0));
        }