/// <summary> /// Deserializes the identifier into an byte array. /// </summary> /// <returns></returns> public byte[] ToBinary() { PacketBuffer buf = PacketBuffer.CreateDynamic(); ToBinary(buf); return(buf.ToArray()); }
public void TestDynamicReadBoundry() { using (PacketBuffer buffer = PacketBuffer.CreateDynamic(new byte[16])) { TestReadBoundry(buffer); } }
/// <summary> /// Returns the binary expression of this <see cref="FileMeta"/> without any encryption, hmacs, ivs, etc. /// </summary> /// <param name="version"></param> /// <returns></returns> public byte[] GetPlainData(ushort version) { using (PacketBuffer buf = PacketBuffer.CreateDynamic()) { if (version == 1) { Write_v1_1(buf); } else { Write_v1_2_Header(buf); Write_v1_2_Core(buf); } return(buf.ToArray()); } }
public void TestAesHmac() { byte[] hmac = AesStatic.GenerateKey(); byte[] key = AesStatic.GenerateKey(); byte[] iv = AesStatic.GenerateIV(); Random random = new Random(); byte[] plaintext = new byte[69854]; random.NextBytes(plaintext); PacketBuffer ciphertext = PacketBuffer.CreateDynamic(); AesStatic.EncryptWithHmac(plaintext, ciphertext, false, hmac, key); ciphertext.Position = 0; byte[] result = AesStatic.DecryptWithHmac(ciphertext, -1, hmac, key); CollectionAssert.AreEqual(plaintext, result); }
/// <summary> /// Returns the binary expression of this <see cref="FileMeta"/> like it will be sent over the internet. /// </summary> /// <param name="version"></param> /// <returns></returns> public byte[] GetBinaryData(ushort version) { using (PacketBuffer buf = PacketBuffer.CreateDynamic()) { if (version == 1) { Write_v1_1(buf); } else { if (Algorithm == ContentAlgorithm.None) { Write_v1_2_Header(buf); Write_v1_2_Core(buf); } else if (Algorithm == ContentAlgorithm.Aes256CbcHmacSha256) { Write_v1_2_Header(buf); // write header anyway because we always these data if (Available) { using (PacketBuffer ibuf = PacketBuffer.CreateDynamic()) { Write_v1_2_Core(ibuf); AesStatic.EncryptWithHmac(ibuf.ToArray(), buf, false, HmacKey, AesKey); } } else { buf.WriteByteArray(encryptedContent, false); // write all pre-read encrypted content including hmac, iv, etc. } } } return(buf.ToArray()); } }