public async Task <IActionResult> WindowsHello(WindowsHelloViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;

            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Login)));
            }

            var user = await _userManager.FindByIdAsync(model.UserId);

            if (user?.PublicKey == null)
            {
                return(RedirectToAction(nameof(Login)));
            }

            var authenticator = new FidoAuthenticator(user.PublicKey, HttpContext.Session.GetString("Challenge"));

            if (!authenticator.ValidateSignature(model.Signature, model.AuthenticatorData, model.ClientData))
            {
                return(RedirectToAction(nameof(Login)));
            }

            await _signInManager.SignInAsync(user, false);

            return(RedirectToLocal(returnUrl));
        }
Example #2
0
    static void Main()
    {
        var v = FidoAuthenticator.validateSignature(pk, d, a, s, challenge) ? "verified" : "unverified";

        Console.WriteLine(v);
    }