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();
            }
        }
示例#2
0
        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
                                                                               )
                                                                           );
            }
        }