public IActionResult Post([FromBody] PublicKey clientPublicKey) { // Get public key. byte[] clientPublicKeyBytes = Encoding.UTF8.GetBytes(clientPublicKey.Key); //byte[] clientPublicKeyBytes = Convert.FromBase64String(clientPublicKey.Key); // Generate a new Private/Public keypair for the user session. (byte[] serverPrivateKey, byte[] serverPublicKey) = SecurityProvider.GeneratePrivatePublicPair(); // Store server private key, and client public key in user session HttpContext.Session.Set(SessionSecurityConsts.CLIENT_PUBLIC_KEY, clientPublicKeyBytes); HttpContext.Session.Set(SessionSecurityConsts.SERVER_PRIVATE_KEY, serverPrivateKey); HttpContext.Session.Set(SessionSecurityConsts.SERVER_PUBLIC_KEY, serverPublicKey); // Return server's public key, encrypted with client's public key. string cipheredPubKey = SecurityProvider.Encrypt(serverPublicKey, clientPublicKeyBytes); return(Ok(cipheredPubKey)); }