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); }