public async Task TestDecrypt() { var header = new MS2SizeHeader((uint)this.EncryptedBytes.Length, 21u, 13u); { byte[] bytes = await CryptoHelper.DecryptDataToDataAsync(MS2CryptoMode.MS2F, header, true, this.EncryptedBytes).ConfigureAwait(false); CollectionAssert.AreEqual(this.DecryptedBytes, bytes); } { byte[] bytes = await CryptoHelper.DecryptStreamToDataAsync(MS2CryptoMode.MS2F, header, true, new MemoryStream(this.EncryptedBytes)).ConfigureAwait(false); CollectionAssert.AreEqual(this.DecryptedBytes, bytes); } { Stream stream = await CryptoHelper.DecryptStreamToStreamAsync(MS2CryptoMode.MS2F, header, true, new MemoryStream(this.EncryptedBytes)).ConfigureAwait(false); byte[] bytes = new byte[header.Size]; uint bytesRead = (uint)await stream.ReadAsync(bytes, 0, (int)header.Size).ConfigureAwait(false); Assert.AreEqual(bytesRead, header.Size); CollectionAssert.AreEqual(this.DecryptedBytes, bytes); } }
public async Task Write_Data_EqualsTrue() { MS2SizeHeader expectedHeader = new MS2SizeHeader(1, 2, 3); MS2SizeHeader expectedData = new MS2SizeHeader(4, 5, 6); long expectedFileCount = 7; var obj = new MS2ArchiveHeaderNS2F(); using var ms = new MemoryStream(); await obj.WriteAsync(ms, expectedHeader, expectedData, expectedFileCount); ms.Position = 0; using var br = new BinaryReader(ms); long fileCount = br.ReadUInt32(); long dataCompressedSize = br.ReadInt64(); long dataEncodedSize = br.ReadInt64(); long size = br.ReadInt64(); long compressedSize = br.ReadInt64(); long encodedSize = br.ReadInt64(); long dataSize = br.ReadInt64(); var actualFileInfoSize = new MS2SizeHeader(encodedSize, compressedSize, size); var actualFileDataSize = new MS2SizeHeader(dataEncodedSize, dataCompressedSize, dataSize); var actualFileCount = fileCount; Assert.AreEqual(expectedHeader, actualFileInfoSize); Assert.AreEqual(expectedData, actualFileDataSize); Assert.AreEqual(expectedFileCount, actualFileCount); }
public async Task Read_Stream_EqualsTrue() { MS2SizeHeader expectedHeader = new MS2SizeHeader(1, 2, 3); MS2SizeHeader expectedData = new MS2SizeHeader(4, 5, 6); long expectedFileCount = 7; using var ms = new MemoryStream(); using var bw = new BinaryWriter(ms); bw.Write((uint)expectedFileCount); bw.Write(expectedData.CompressedSize); bw.Write(expectedData.EncodedSize); bw.Write(expectedHeader.Size); bw.Write(expectedHeader.CompressedSize); bw.Write(expectedHeader.EncodedSize); bw.Write(expectedData.Size); ms.Position = 0; var obj = new MS2ArchiveHeaderNS2F(); var(actualFileInfoSize, actualFileDataSize, actualFileCount) = await obj.ReadAsync(ms); Assert.AreEqual(expectedHeader, actualFileInfoSize); Assert.AreEqual(expectedData, actualFileDataSize); Assert.AreEqual(expectedFileCount, actualFileCount); }
public void Equals_SameReference_True() { var expected = new MS2SizeHeader(1, 2, 3); var actual = expected; Assert.AreEqual(expected, actual); }
public void GetHashCode_DifferentValues_False() { var notExpected = new MS2SizeHeader(1, 2, 3); var actual = new MS2SizeHeader(1, 2, 4); Assert.AreNotEqual(notExpected.GetHashCode(), actual.GetHashCode()); }
public void GetHashCode_SameValues_True() { var expected = new MS2SizeHeader(1, 2, 3); var actual = new MS2SizeHeader(1, 2, 3); Assert.AreEqual(expected.GetHashCode(), actual.GetHashCode()); }
public void Equals_SameValuesDifferentSize_False() { var notExpected = new MS2SizeHeader(1, 2, 3); var actual = new MS2SizeHeader(1, 2, 4); Assert.AreNotEqual(notExpected, actual); }
public void Equals_SameValues_True() { var expected = new MS2SizeHeader(1, 2, 3); var actual = new MS2SizeHeader(1, 2, 3); Assert.AreEqual(expected, actual); }
public async Task GetDecryptionStreamAsync_CompressedSizeDifferentThanDecodedSize_ThrowsArgumentException() { var bundle = GetRandomCryptoDataNS2FCompressed(); string input = bundle.EncryptedData; byte[] inputBytes = Encoding.GetBytes(input); using MemoryStream inputStream = new MemoryStream(inputBytes); MS2SizeHeader size = new MS2SizeHeader(84, 61, 54); await Assert.ThrowsExceptionAsync <ArgumentException>(() => CryptoHelper.GetDecryptionStreamAsync(inputStream, size, Cryptography.NS2F.Key, Cryptography.NS2F.IV, true)); }
public async Task GetDecryptionStreamAsync_UndecodableData_ThrowsIOExceptionWithBase64Text() { string input = "notbase64decodable"; byte[] inputBytes = Encoding.GetBytes(input); using MemoryStream inputStream = new MemoryStream(inputBytes); MS2SizeHeader size = new MS2SizeHeader(84, 61, 54); var ex = await Assert.ThrowsExceptionAsync <IOException>(() => CryptoHelper.GetDecryptionStreamAsync(inputStream, size, Cryptography.NS2F.Key, Cryptography.NS2F.IV, true)); Assert.IsTrue(ex.Message.Contains("base64")); }
public Task <(IMS2SizeHeader fileInfoSize, IMS2SizeHeader fileDataSize, long fileCount)> ReadAsync(Stream stream) { using var br = new BinaryReader(stream, Encoding.ASCII, true); long fileCount = br.ReadUInt32(); long dataCompressedSize = br.ReadInt64(); long dataEncodedSize = br.ReadInt64(); long size = br.ReadInt64(); long compressedSize = br.ReadInt64(); long encodedSize = br.ReadInt64(); long dataSize = br.ReadInt64(); IMS2SizeHeader fileInfoSize = new MS2SizeHeader(encodedSize, compressedSize, size); IMS2SizeHeader fileDataSize = new MS2SizeHeader(dataEncodedSize, dataCompressedSize, dataSize); return(Task.FromResult((fileInfoSize, fileDataSize, fileCount))); }
public async Task GetDecryptionStreamAsync_NS2FWithCompress_EqualsExpected() { var bundle = GetRandomCryptoDataNS2FCompressed(); string input = bundle.EncryptedData; string expected = bundle.Data; byte[] inputBytes = Encoding.GetBytes(input); using MemoryStream inputStream = new MemoryStream(inputBytes); MS2SizeHeader size = new MS2SizeHeader(84, 62, 54); var actualStream = await CryptoHelper.GetDecryptionStreamAsync(inputStream, size, Cryptography.NS2F.Key, Cryptography.NS2F.IV, true); byte[] actualBytes = actualStream.ToArray(); string actual = Encoding.GetString(actualBytes); Assert.AreEqual(expected, actual); }
public async Task Read_FromWrite_EqualsTrue() { MS2SizeHeader expectedHeader = new MS2SizeHeader(1, 2, 3); MS2SizeHeader expectedData = new MS2SizeHeader(4, 5, 6); long expectedFileCount = 7; var obj = new MS2ArchiveHeaderNS2F(); using var ms = new MemoryStream(); await obj.WriteAsync(ms, expectedHeader, expectedData, expectedFileCount); ms.Position = 0; var(actualFileInfoSize, actualFileDataSize, actualFileCount) = await obj.ReadAsync(ms); Assert.AreEqual(expectedHeader, actualFileInfoSize); Assert.AreEqual(expectedData, actualFileDataSize); Assert.AreEqual(expectedFileCount, actualFileCount); }
public Task <(IMS2SizeHeader fileInfoSize, IMS2SizeHeader fileDataSize, long fileCount)> ReadAsync(Stream stream) { using var br = new BinaryReader(stream, Encoding.ASCII, true); uint unk = br.ReadUInt32(); // TODO: unknown/unused? long dataCompressedSize = br.ReadInt64(); long dataEncodedSize = br.ReadInt64(); long size = br.ReadInt64(); long compressedSize = br.ReadInt64(); long encodedSize = br.ReadInt64(); long fileCount = br.ReadInt64(); long dataSize = br.ReadInt64(); Debug.Assert(unk == 0, "unk is not 0. unk=" + unk); IMS2SizeHeader fileInfoSize = new MS2SizeHeader(encodedSize, compressedSize, size); IMS2SizeHeader fileDataSize = new MS2SizeHeader(dataEncodedSize, dataCompressedSize, dataSize); return(Task.FromResult((fileInfoSize, fileDataSize, fileCount))); }