Пример #1
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);
        }
Пример #2
0
        public void TestAes()
        {
            byte[] key = AesStatic.GenerateKey();
            Assert.IsNotNull(key);
            byte[] iv = AesStatic.GenerateIV();
            Assert.IsNotNull(iv);

            Random random = new Random();

            byte[] plaintext = new byte[45674];
            random.NextBytes(plaintext);

            byte[] ciphertext = AesStatic.Encrypt(plaintext, key, iv);
            Assert.IsNotNull(ciphertext);
            Assert.AreEqual(ciphertext.Length, Util.GetTotalSize(plaintext.Length, 16));

            byte[] decrypted = AesStatic.Decrypt(ciphertext, key, iv);
            Assert.IsNotNull(decrypted);
            CollectionAssert.AreEqual(plaintext, decrypted);
        }
Пример #3
0
        private FileMeta(ContentAlgorithm algorithm, byte[] hmacKey, byte[] aesKey, byte[] fileKey)
        {
            Algorithm = algorithm;
            AesKey    = aesKey;
            HmacKey   = hmacKey;
            FileKey   = fileKey;

            if (Algorithm == ContentAlgorithm.Aes256CbcHmacSha256)
            {
                if (AesKey == null)
                {
                    AesKey = AesStatic.GenerateKey();
                }
                else if (AesKey.Length != 32)
                {
                    throw new ArgumentOutOfRangeException(nameof(aesKey));
                }

                if (hmacKey == null)
                {
                    HmacKey = AesStatic.GenerateKey();
                }
                else if (HmacKey.Length != 32)
                {
                    throw new ArgumentOutOfRangeException(nameof(hmacKey));
                }

                if (fileKey == null)
                {
                    FileKey = AesStatic.GenerateKey();
                }
                else if (FileKey.Length != 32)
                {
                    throw new ArgumentOutOfRangeException(nameof(fileKey));
                }

                FileEncryption = ContentAlgorithm.Aes256Cbc; // The file needs no HMAC as we have an SHA256
            }
        }
Пример #4
0
 private void btnAesGenerate_Click(object sender, EventArgs e)
 => tbAesKey.Text = Util.ToHexString(AesStatic.GenerateKey());