Exemple #1
0
        /// <summary>
        /// Deserializes the identifier into an byte array.
        /// </summary>
        /// <returns></returns>
        public byte[] ToBinary()
        {
            PacketBuffer buf = PacketBuffer.CreateDynamic();

            ToBinary(buf);
            return(buf.ToArray());
        }
Exemple #2
0
 public void TestDynamicReadBoundry()
 {
     using (PacketBuffer buffer = PacketBuffer.CreateDynamic(new byte[16]))
     {
         TestReadBoundry(buffer);
     }
 }
Exemple #3
0
 /// <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());
     }
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        /// <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());
            }
        }