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); } }
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}"); } }
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; } } }