예제 #1
0
 public void SendServerInfo()
 {
     SendMessage(ServerInfo, new ServerInfo
     {
         ApiName            = _serverApiName,
         RawX509Certificate = LocalCertificate.Export(X509ContentType.Cert)
     });
 }
예제 #2
0
        /// <exception cref="NetMQSecurityException">The client key exchange must not be received while expecting a another message.</exception>
        private void OnClientKeyExchange(NetMQMessage incomingMessage)
        {
            if (m_lastReceivedMessage != HandshakeType.ClientHello || m_lastSentMessage != HandshakeType.ServerHelloDone)
            {
                throw new NetMQSecurityException(NetMQSecurityErrorCode.HandshakeUnexpectedMessage, "Client Key Exchange received when expecting another message");
            }

            HashLocalAndRemote(incomingMessage);

            var clientKeyExchangeMessage = new ClientKeyExchangeMessage();

            clientKeyExchangeMessage.SetFromNetMQMessage(incomingMessage);

            using (var rsa = LocalCertificate.GetRSAPrivateKey())                                                                    // .PrivateKey as RSACryptoServiceProvider;
            {
                byte[] premasterSecret = rsa.Decrypt(clientKeyExchangeMessage.EncryptedPreMasterSecret, RSAEncryptionPadding.Pkcs1); // false);

                GenerateMasterSecret(premasterSecret);
            }
            InvokeChangeCipherSuite();
        }
예제 #3
0
        protected override Task OnActivate(IWorkContext context)
        {
            _localCertificate = new LocalCertificate(new LocalCertificateKey(ActorKey.VectorKey));

            return(base.OnActivate(context));
        }