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