Beispiel #1
0
        private async void ButtonGetAssertion_Click(object sender, RoutedEventArgs e)
        {
            GetFirstUSBDevice();
            var rpid      = "test.com";
            var challenge = AttestationVerifier.CreateChallenge();
            var param     = new g.FIDO2.CTAP.CTAPCommandGetAssertionParam(rpid, challenge, creid);

            param.Option_up = true;

            var res = await con.GetAssertionAsync(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.Assertion != null)
                {
                    // verify
                    var v      = new AssertionVerifier();
                    var verify = v.Verify(rpid, pubkey, challenge, res.CTAPResponse.Assertion);
                    verifyResult = $"- Verify = {verify.IsSuccess}";
                }
                MessageBox.Show($"GetAssertionAsync\r\n- Status = {res.CTAPResponse.Status}\r\n- StatusMsg = {res.CTAPResponse.StatusMsg}\r\n{verifyResult}");
            }
        }
Beispiel #2
0
        private async void ButtonGetAssertion_Click(object sender, RoutedEventArgs e)
        {
            addLog("<getAssertion>");

            var rpid      = this.textBoxRPID.Text;
            var challenge = System.Text.Encoding.ASCII.GetBytes("this is challenge");

            //var creid = g.FIDO2.Common.HexStringToBytes("99F946F5EAC7F8F9D56FF1F791626143DCBB9450AAA102F4EDBFF6D9913E44E9161B7AE113EFC482DA6C22A9037840757D8DA9922233BCB99F0473528E6DD7E8");
            byte[] creid = null;
            if (!string.IsNullOrEmpty(textBoxCreID.Text))
            {
                creid = g.FIDO2.Common.HexStringToBytes(textBoxCreID.Text);
            }

            var param = new g.FIDO2.CTAP.CTAPCommandGetAssertionParam(rpid, challenge, creid);

            param.Option_up = true;
            param.Option_uv = false;

            //Include the hmac-secret extension in the assertion
            if (this.checkBoxHmacSecret.IsChecked.HasValue && this.checkBoxHmacSecret.IsChecked.Value)
            {
                param.UseHmacExtension = true;
            }

            string pin = this.textBoxPIN.Text;

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

            LogResponse(res.DeviceStatus, res.CTAPResponse);

            if (res?.CTAPResponse?.Assertion?.NumberOfCredentials > 0)
            {
                for (int intIc = 0; intIc < res.CTAPResponse.Assertion.NumberOfCredentials - 1; intIc++)
                {
                    var next = await con.GetNextAssertionAsync();

                    LogResponse(res.DeviceStatus, next.CTAPResponse);
                }
            }
        }