Esempio n. 1
0
 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);
 }
Esempio n. 3
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);
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
 private static void WriteCertificate(ref WriterWrapper writer, Span <byte> certData)
 {
     writer.WriteBigEndian((UInt24)certData.Length);
     writer.Write(certData);
 }