public void Write_Encrypted_ResultBytesAreExpected()
        {
            //Arrange
            var expectedBytes      = GetProtectedMessageHex();
            var buffer             = new byte[PacketBuffer.MaxPacketSize];
            var version            = PacketVersion.CreateByDraft(32);
            var connectionIds      = GetConnectionIdsHex();
            var sourceConnectionId = PacketConnectionId.Parse(Utils.ParseHexString(connectionIds.SourceConnectionIdHex));
            var destConnectionId   = PacketConnectionId.Parse(Utils.ParseHexString(connectionIds.DestConnectionIdHex));
            var packetNumber       = PacketNumber.Parse(Utils.ParseHexString(GetPacketNumberHex()));
            var token            = PacketToken.Empty;
            var clientHelloBytes = Utils.ParseHexString(GetTlsClientHelloHex());
            var secrets          = GetSecrets();
            var aead             = Cipher.TLS_AES_128_GCM_SHA256.CreateAead(Utils.ParseHexString(secrets.Iv), Utils.ParseHexString(secrets.Key));
            var cipher           = Cipher.TLS_AES_128_GCM_SHA256.CreateCipher(Utils.ParseHexString(secrets.Hp));

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

            using (InitialPacket.StartProtectedWriting(aead, cipher, cursor, version, destConnectionId, sourceConnectionId, packetNumber, token))
            {
                using (PaddingFrame.EnsureLength(cursor, 1162))
                {
                    using (CryptoFrame.StartWriting(cursor, 0))
                    {
                        clientHelloBytes.CopyTo(cursor);
                    }
                }
            }

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