public void Write_ResultBytesAreExpected()
        {
            //Arrange
            var expectedBytes = GetMessageHexString();
            var buffer        = new byte[TlsBuffer.MaxRecordSize];
            var random        = HandshakeRandom.Parse(GetBytesOfRandom());
            var sessionId     = SessionId.Parse(GetBytesOfSessionId());

            //Act
            var cursor = new MemoryCursor(buffer);

            using (TlsRecord.StartWriting(cursor, RecordType.Handshake, ProtocolVersion.Tls12))
                using (ServerHello.StartWriting(cursor, random, Cipher.TLS_AES_128_GCM_SHA256, sessionId))
                {
                    using (cursor.StartKeyShareWriting())
                    {
                        using (KeyShareEntry.StartWriting(cursor, NamedGroup.X25519))
                        {
                            GetBytesOfPublicKey().CopyTo(cursor);
                        }
                    }

                    using (cursor.StartSupportedVersionWriting())
                    {
                        ProtocolVersion.Tls13.WriteBytes(cursor);
                    }
                }

            //Assert
            Assert.Equal(expectedBytes, Utils.ToHexString(cursor.PeekStart().ToArray()), true);
        }
Esempio n. 2
0
        public void Write_ResultBytesAreExpected()
        {
            //Arrange
            var expectedBytes = GetMessageHexString();
            var buffer        = new byte[TlsBuffer.MaxRecordSize];
            var random        = HandshakeRandom.Parse(GetBytesOfRandom());
            var ciphers       = new[] { Cipher.TLS_AES_128_GCM_SHA256, Cipher.TLS_AES_256_GCM_SHA384, Cipher.TLS_CHACHA20_POLY1305_SHA256 };
            var sessionId     = SessionId.Parse(GetBytesOfSessionId());

            //Act
            var cursor = new MemoryCursor(buffer);

            using (TlsRecord.StartWriting(cursor, RecordType.Handshake, ProtocolVersion.Tls10))
                using (ClientHello.StartWriting(cursor, random, ciphers, sessionId))
                {
                    using (cursor.StartServerNamesWriting())
                    {
                        ServerNameEntry.WriteHostName(cursor, "example.ulfheim.net");
                    }

                    using (cursor.StartSupportedGroupsWriting())
                    {
                        NamedGroup.X25519.WriteBytes(cursor);
                        NamedGroup.SECP256R1.WriteBytes(cursor);
                        NamedGroup.SECP384R1.WriteBytes(cursor);
                    }

                    using (cursor.StartSignatureAlgorithmsWriting())
                    {
                        SignatureScheme.ECDSA_SECP256R1_SHA256.WriteBytes(cursor);
                        SignatureScheme.RSA_PSS_RSAE_SHA256.WriteBytes(cursor);
                        SignatureScheme.RSA_PKCS1_SHA256.WriteBytes(cursor);
                        SignatureScheme.ECDSA_SECP384R1_SHA384.WriteBytes(cursor);
                        SignatureScheme.RSA_PSS_RSAE_SHA384.WriteBytes(cursor);
                        SignatureScheme.RSA_PKCS1_SHA384.WriteBytes(cursor);
                        SignatureScheme.RSA_PSS_RSAE_SHA512.WriteBytes(cursor);
                        SignatureScheme.RSA_PKCS1_SHA512.WriteBytes(cursor);
                        SignatureScheme.RSA_PKCS1_SHA1.WriteBytes(cursor);
                    }

                    using (cursor.StartKeySharesWriting())
                    {
                        using (KeyShareEntry.StartWriting(cursor, NamedGroup.X25519))
                        {
                            GetBytesOfPublicKey().CopyTo(cursor);
                        }
                    }

                    using (cursor.StartPskKeyExchangeModesWriting())
                    {
                        PskKeyExchangeMode.PskDheKe.WriteBytes(cursor);
                    }

                    using (cursor.StartSupportedVersionsWriting())
                    {
                        ProtocolVersion.Tls13.WriteBytes(cursor);
                    }
                }

            //Assert
            Assert.Equal(expectedBytes, Utils.ToHexString(cursor.PeekStart().ToArray()), true);
        }