private void WriteClientHello(ref WriterWrapper writer) { writer.WriteBigEndian(RecordVersion); _secretSchedule.GenerateClientRandom(); writer.Write(_secretSchedule.ClientRandom); writer.WriteBigEndian <byte>(0); writer.Write(_cryptoProvider.CipherSuites.GetCipherSuites()); writer.WriteBigEndian <byte>(0); }
public void WriteExtension(ref WriterWrapper writer) { //While we don't currently support renegotiation if the client does we should //respond to say we don't want any negotiation to give clarity to our position //and reduce an attack vector for a MITM attack writer.WriteBigEndian(ExtensionType.renegotiation_info); writer.WriteBigEndian <ushort>(1); writer.WriteBigEndian <byte>(0); }
public static void WriteHandshakeFrame(this ConnectionStates.ConnectionState state, int contentSize, BufferExtensions.ContentWriter content, HandshakeType handshakeType) { var writer = new WriterWrapper(state.Connection.HandshakeOutput.Writer.Alloc(), state.HandshakeHash); writer.WriteBigEndian(handshakeType); writer.WriteBigEndian((UInt24)contentSize); content(ref writer); Debug.Assert((writer.BytesWritten - 4) == contentSize); writer.Commit(); }
public void ClientSendKey(ref WriterWrapper writer) { writer.WriteBigEndian((byte)ClientSendSize); Span <byte> span = stackalloc byte[ClientSendSize]; PublicKeySpan(span); writer.Write(span); }
public static void WriteCertificates(ref WriterWrapper buffer, ICertificate certificate) { var size = GetCertificatesSize(certificate); buffer.WriteBigEndian((UInt24)size); WriteCertificate(ref buffer, certificate.CertificateData); foreach (var b in certificate.CertificateChain) { WriteCertificate(ref buffer, b); } }
private static void WriteCertificate(ref WriterWrapper writer, Span <byte> certData) { writer.WriteBigEndian((UInt24)certData.Length); writer.Write(certData); }