Ejemplo n.º 1
0
        private void ButtonNext_Click(object sender, RoutedEventArgs e)
        {
            var challenge = Common.HexStringToBytes(this.TextChallenge.Text);
            var att_b     = Common.HexStringToBytes(this.TextAttestation.Text);
            var att       = Serializer.DeserializeAttestation(att_b);

            if (att == null)
            {
                // Attestaion Deserialize Error
                return;
            }

            // verify
            var v      = new AttestationVerifier();
            var verify = v.Verify(rpid, challenge, att);

            if (verify.IsSuccess)
            {
                if (page4 == null)
                {
                    page4 = new Page4(verify.CredentialID, verify.PublicKeyPem);
                }
                this.NavigationService.Navigate(page4);
            }
        }
Ejemplo n.º 2
0
        private async void ButtonMakeCredential_Click(object sender, RoutedEventArgs e)
        {
            GetFirstUSBDevice();
            string rpid      = "test.com";
            var    challenge = AttestationVerifier.CreateChallenge();
            var    param     = new g.FIDO2.CTAP.CTAPCommandMakeCredentialParam(rpid, challenge);
            var    res       = await con.MakeCredentialAsync(param, "1234");

            if (res.DeviceStatus == g.FIDO2.CTAP.DeviceStatus.NotConnected)
            {
                // FIDOキーが接続されていない場合
                return;
            }
            else if (res.DeviceStatus == g.FIDO2.CTAP.DeviceStatus.Timeout)
            {
                // FIDOキーのタッチ待ちでTimeoutした場合
                return;
            }
            else if (res.DeviceStatus == g.FIDO2.CTAP.DeviceStatus.Ok)
            {
                string verifyResult = "";
                if (res.CTAPResponse.Status == 0)
                {
                    if (res.CTAPResponse.Attestation != null)
                    {
                        // verify
                        var v      = new AttestationVerifier();
                        var verify = v.Verify(rpid, challenge, res.CTAPResponse.Attestation);
                        verifyResult = $"- Verify = {verify.IsSuccess}\r\n- CredentialID = {Common.BytesToHexString(verify.CredentialID)}\r\n- PublicKey = {verify.PublicKeyPem}";
                        if (verify.IsSuccess)
                        {
                            // store
                            creid  = verify.CredentialID.ToArray();
                            pubkey = verify.PublicKeyPem;
                        }
                    }
                }
                MessageBox.Show($"MakeCredentialAsync\r\n- Status = {res.CTAPResponse.Status}\r\n- StatusMsg = {res.CTAPResponse.StatusMsg}\r\n{verifyResult}");
            }
        }
Ejemplo n.º 3
0
        private async void ButtonMakeCredential_Click(object sender, RoutedEventArgs e)
        {
            addLog("<makeCredential>");

            var rpid      = "BLEtest.com";
            var challenge = Encoding.ASCII.GetBytes("this is challenge");

            var param = new g.FIDO2.CTAP.CTAPCommandMakeCredentialParam(rpid, challenge, new byte[0]);

            param.RpName          = "BLEtest name";
            param.UserName        = "******";
            param.UserDisplayName = "testUserDisplayName";
            param.Option_rk       = false;
            param.Option_uv       = true;
            //param.Extensions = new Dictionary<string, bool> { { "hmac-secret", true } };

            string pin = "";

            var res = await con.MakeCredentialAsync(param, pin);

            LogResponse(res.DeviceStatus, res.CTAPResponse);

            if (res?.CTAPResponse.Status == 0)
            {
                if (res.CTAPResponse?.Attestation != null)
                {
                    //Verify
                    var v      = new AttestationVerifier();
                    var verify = v.Verify(rpid, challenge, res.CTAPResponse.Attestation);
                    addLog($"- Verify = {verify.IsSuccess}\r\n- - PublicKey = {verify.PublicKeyPem}");

                    var creid = res.CTAPResponse.Attestation.CredentialId.ToHexString();
                    addLog($"- CredentialID = {creid}");
                    textBoxCreID.Text = creid;
                    pubkey            = verify.PublicKeyPem;
                }
            }
        }