Пример #1
0
 /// <summary>
 /// Create the response to the server, for it to be validate
 /// </summary>
 private void SignInUserResponse(Intent data)
 {
     try
     {
         // Extract the AuthenticatorAssertionResponse.
         AuthenticatorAssertionResponse response = AuthenticatorAssertionResponse.DeserializeFromBytes(data.GetByteArrayExtra(Fido.Fido2KeyResponseExtra));
         // Preparing the response
         var responseJson = Newtonsoft.Json.JsonConvert.SerializeObject(new Fido2AuthenticationChallengeRequest
         {
             Id       = CoreHelpers.Base64UrlEncode(response.GetKeyHandle()),
             RawId    = CoreHelpers.Base64UrlEncode(response.GetKeyHandle()),
             Type     = "public-key",
             Response = new Fido2AssertionResponse
             {
                 AuthenticatorData = CoreHelpers.Base64UrlEncode(response.GetAuthenticatorData()),
                 ClientDataJson    = CoreHelpers.Base64UrlEncode(response.GetClientDataJSON()),
                 Signature         = CoreHelpers.Base64UrlEncode(response.GetSignature()),
                 UserHandle        = (response.GetUserHandle() != null?CoreHelpers.Base64UrlEncode(response.GetUserHandle()):null),
             },
             Extensions = null
         }
                                                                        );
         // Sending the response
         // Messaging Service doesn't run completed if is on UI Thread, this (Device.BeginInvokeOnMainThread) is just to use message service out of UI Thread
         Xamarin.Forms.Device.BeginInvokeOnMainThread(() => ((MainActivity)this.application).Fido2Submission(responseJson));
     } catch (Exception e) {
         Log.Error(_tag_log, e.Message);
     } finally
     {
         Log.Info(_tag_log, "SignInUserResponse() -> finally()");
     }
 }
        public static ServerAssertionResultRequest ConvertToServerAssertionResultRequest(AuthenticatorAssertionResponse authenticatorAssertation)
        {
            ServerAssertionResultResponseRequest assertionResultResponse = new ServerAssertionResultResponseRequest();

            assertionResultResponse.Signature         = ByteUtils.ByteToBase64(authenticatorAssertation.GetSignature());
            assertionResultResponse.ClientDataJSON    = ByteUtils.ByteToBase64(authenticatorAssertation.GetClientDataJson());
            assertionResultResponse.AuthenticatorData = ByteUtils.ByteToBase64(authenticatorAssertation.GetAuthenticatorData());

            ServerAssertionResultRequest request = new ServerAssertionResultRequest();

            request.Response = assertionResultResponse;

            request.Id = ByteUtils.ByteToBase64(authenticatorAssertation.GetCredentialId());

            request.Type = "public-key";
            return(request);
        }