public void HandleRequest(EnableEncryptionRequest request, ClientConnection connection) { EnableEncryptionResponse.Builder newResponse = EnableEncryptionResponse.CreateBuilder(); newResponse .SetMessageId(1) .SetSuccess(true); newResponse.SetPublickey( ByteString.CopyFrom( connection .ServerAuthority .GenerateEncodedPublicKeyInfo())); EnableEncryptionResponse response = newResponse.Build(); connection.Send(response); if (request.Enable) { ((ProtoBuffEnvelope)connection.Envelope) .EnableEncryption( connection.ServerAuthority, request.Publickey.ToArray()); } else { ((ProtoBuffEnvelope)connection.Envelope).DisableEncryption(); } }
private static void HandleEnableEncryptionResponse(MessageEventArgs e) { EnableEncryptionResponse response = e.Message as EnableEncryptionResponse; encryptionEnabled = response.Success; if (encryptionEnabled) { e.ClientConnection.Envelope = new EncryptedMessageEnvelope((ICrypto) new SharedKeyCrypto( sa.Parameters, sa.KeyPair, serverPublicKey ) ); } }