protected virtual TlsServerHello GenerateServerHello() { var serverUnixTime = HandshakeParameters.GetUnixTime(); HandshakeParameters.ServerRandom = Context.Session.GetSecureRandomBytes(32); TlsBuffer.WriteInt32(HandshakeParameters.ServerRandom.Buffer, 0, serverUnixTime); return(new TlsServerHello( Context.NegotiatedProtocol, HandshakeParameters.ServerRandom, HandshakeParameters.SessionId, PendingCrypto.Cipher.Code, HandshakeParameters.ActiveExtensions)); }
SecureBuffer CreateParameterBuffer(HandshakeParameters hsp) { var length = 4 + publicBytes.Length; var buffer = new TlsBuffer(64 + length); buffer.Write(hsp.ClientRandom.Buffer); buffer.Write(hsp.ServerRandom.Buffer); buffer.Write((byte)curveType); buffer.Write((short)namedCurve); buffer.Write((byte)publicBytes.Length); buffer.Write(publicBytes); return(new SecureBuffer(buffer.Buffer)); }
public static SignatureAndHashAlgorithm SelectSignatureType(HandshakeParameters handshakeParameters) { if (handshakeParameters.SignatureAlgorithms != null) { return(SelectSignatureType(handshakeParameters.SignatureAlgorithms)); } else if (handshakeParameters.ClientCertificateParameters != null) { return(SelectSignatureType(handshakeParameters.ClientCertificateParameters.SignatureAndHashAlgorithms)); } else { return(new SignatureAndHashAlgorithm(HashAlgorithmType.Sha256, SignatureAlgorithmType.Rsa)); } }
SecureBuffer CreateParameterBuffer(HandshakeParameters hsp) { var length = P.Length + G.Length + Y.Length + 6; var buffer = new TlsBuffer(64 + length); buffer.Write(hsp.ClientRandom.Buffer); buffer.Write(hsp.ServerRandom.Buffer); buffer.Write((short)P.Length); buffer.Write(P); buffer.Write((short)G.Length); buffer.Write(G); buffer.Write((short)Y.Length); buffer.Write(Y); return(new SecureBuffer(buffer.Buffer)); }
protected virtual TlsClientHello GenerateClientHello() { var clientUnixTime = HandshakeParameters.GetUnixTime(); HandshakeParameters.ClientRandom = Context.Session.GetSecureRandomBytes(32); TlsBuffer.WriteInt32(HandshakeParameters.ClientRandom.Buffer, 0, clientUnixTime); var requestedUserCiphers = Config.UserSettings != null ? Config.UserSettings.RequestedCiphers : null; CipherSuiteCollection requestedCiphers; if (requestedUserCiphers != null) { requestedCiphers = new CipherSuiteCollection(Config.RequestedProtocol, requestedUserCiphers); } else { requestedCiphers = CipherSuiteFactory.GetDefaultCiphers(Config.RequestedProtocol); } if (requestedCiphers.Protocol != Config.RequestedProtocol) { throw new TlsException(AlertDescription.ProtocolVersion); } HandshakeParameters.SupportedCiphers = requestedCiphers.Clone(); if (Config.EnableSecureRenegotiation && !Session.SecureRenegotiation && ((Config.RenegotiationFlags & RenegotiationFlags.SendCipherSpecCode) != 0)) { HandshakeParameters.SupportedCiphers.AddSCSV(); } if (ServerNameExtension.IsLegalHostName(Config.TargetHost)) { HandshakeParameters.RequestedExtensions.Add(new ServerNameExtension(Config.TargetHost)); } if (Config.EnableSecureRenegotiation && (Session.SecureRenegotiation || ((Config.RenegotiationFlags & RenegotiationFlags.SendClientHelloExtension) != 0))) { HandshakeParameters.RequestedExtensions.Add(RenegotiationExtension.CreateClient(Context)); } if (UserSettings.HasClientCertificateParameters) { HandshakeParameters.RequestedExtensions.Add(new SignatureAlgorithmsExtension(UserSettings.ClientCertificateParameters.SignatureAndHashAlgorithms)); } return(new TlsClientHello( Config.RequestedProtocol, HandshakeParameters.ClientRandom, HandshakeParameters.SessionId, HandshakeParameters.SupportedCiphers.ToArray(), HandshakeParameters.RequestedExtensions)); }
protected virtual TlsClientHello GenerateClientHello() { var clientUnixTime = HandshakeParameters.GetUnixTime(); TlsBuffer.WriteInt32(HandshakeParameters.ClientRandom.Buffer, 0, clientUnixTime); if (ServerNameExtension.IsLegalHostName(Config.TargetHost)) { HandshakeParameters.RequestedExtensions.Add(new ServerNameExtension(Config.TargetHost)); } if (Config.EnableSecureRenegotiation && (Session.SecureRenegotiation || ((Config.RenegotiationFlags & RenegotiationFlags.SendClientHelloExtension) != 0))) { HandshakeParameters.RequestedExtensions.Add(RenegotiationExtension.CreateClient(Context)); } if (Session.SignatureParameters != null) { HandshakeParameters.RequestedExtensions.Add(new SignatureAlgorithmsExtension(Session.SignatureParameters)); } return(new TlsClientHello( Config.RequestedProtocol, HandshakeParameters.ClientRandom, HandshakeParameters.SessionId, HandshakeParameters.SupportedCiphers.ToArray(), HandshakeParameters.RequestedExtensions)); }
SecureBuffer CreateParameterBuffer (HandshakeParameters hsp) { var length = 4 + publicBytes.Length; var buffer = new TlsBuffer (64 + length); buffer.Write (hsp.ClientRandom.Buffer); buffer.Write (hsp.ServerRandom.Buffer); buffer.Write ((byte)curveType); buffer.Write ((short)namedCurve); buffer.Write ((byte)publicBytes.Length); buffer.Write (publicBytes); return new SecureBuffer (buffer.Buffer); }
SecureBuffer CreateParameterBuffer (HandshakeParameters hsp) { var length = P.Length + G.Length + Y.Length + 6; var buffer = new TlsBuffer (64 + length); buffer.Write (hsp.ClientRandom.Buffer); buffer.Write (hsp.ServerRandom.Buffer); buffer.Write ((short)P.Length); buffer.Write (P); buffer.Write ((short)G.Length); buffer.Write (G); buffer.Write ((short)Y.Length); buffer.Write (Y); return new SecureBuffer (buffer.Buffer); }