public void GetSymmetricAlgorithmAES ()
		{
			byte [] bytes = new byte [32];
			Key key = new Key (bytes);
			SymmetricAlgorithm alg = key.GetSymmetricAlgorithm (
				SecurityAlgorithms.Aes128Encryption);
			Assert.AreEqual (256, alg.KeySize, "#1-1");
			Assert.AreEqual (CipherMode.CBC, alg.Mode, "#1-2");
			Assert.AreEqual (PaddingMode.PKCS7, alg.Padding, "#1-3");
			alg = key.GetSymmetricAlgorithm (SecurityAlgorithms.Aes192Encryption);
			Assert.AreEqual (256, alg.KeySize, "#2-1");
			Assert.AreEqual (CipherMode.CBC, alg.Mode, "#2-2");
			Assert.AreEqual (PaddingMode.PKCS7, alg.Padding, "#2-3");
			alg = key.GetSymmetricAlgorithm (SecurityAlgorithms.Aes256Encryption);
			Assert.AreEqual (256, alg.KeySize, "#3-1");
			Assert.AreEqual (CipherMode.CBC, alg.Mode, "#3-2");
			Assert.AreEqual (PaddingMode.PKCS7, alg.Padding, "#3-3");

			alg = key.GetSymmetricAlgorithm (SecurityAlgorithms.Aes128KeyWrap);
			Assert.IsTrue (alg is AES, "#4");
			alg = key.GetSymmetricAlgorithm (SecurityAlgorithms.Aes192KeyWrap);
			Assert.IsTrue (alg is AES, "#5");
			alg = key.GetSymmetricAlgorithm (SecurityAlgorithms.Aes256KeyWrap);
			Assert.IsTrue (alg is AES, "#6");
			//alg = key.GetSymmetricAlgorithm (SecurityAlgorithms.TripleDesKeyWrap);
			//Assert.IsTrue (alg is TripleDES, "#7");
		}
        public void GetSymmetricAlgorithm3VulnerableTDESEnc()
        {
            byte [] bytes = new byte [24];
            Key     key   = new Key(bytes);

            // strange, TripleDesEncryption works with 32bytes key,
            // but TripleDesKeyWrap doesn't.
            key.GetSymmetricAlgorithm(SecurityAlgorithms.TripleDesEncryption);
        }
        // no error???
        public void GetSymmetricAlgorithmWrongSize2()
        {
            AES aes = new AES();

            aes.KeySize = 192;
            aes.GenerateKey();
            Key key = new Key(aes.Key);

            Assert.IsNotNull(key.GetSymmetricAlgorithm(SecurityAlgorithms.Aes256Encryption));
        }
        public void GetSymmetricAlgorithmAES()
        {
            byte []            bytes = new byte [32];
            Key                key   = new Key(bytes);
            SymmetricAlgorithm alg   = key.GetSymmetricAlgorithm(
                SecurityAlgorithms.Aes128Encryption);

            Assert.AreEqual(256, alg.KeySize, "#1-1");
            Assert.AreEqual(CipherMode.CBC, alg.Mode, "#1-2");
            Assert.AreEqual(PaddingMode.PKCS7, alg.Padding, "#1-3");
            alg = key.GetSymmetricAlgorithm(SecurityAlgorithms.Aes192Encryption);
            Assert.AreEqual(256, alg.KeySize, "#2-1");
            Assert.AreEqual(CipherMode.CBC, alg.Mode, "#2-2");
            Assert.AreEqual(PaddingMode.PKCS7, alg.Padding, "#2-3");
            alg = key.GetSymmetricAlgorithm(SecurityAlgorithms.Aes256Encryption);
            Assert.AreEqual(256, alg.KeySize, "#3-1");
            Assert.AreEqual(CipherMode.CBC, alg.Mode, "#3-2");
            Assert.AreEqual(PaddingMode.PKCS7, alg.Padding, "#3-3");

            alg = key.GetSymmetricAlgorithm(SecurityAlgorithms.Aes128KeyWrap);
            Assert.IsTrue(alg is AES, "#4");
            alg = key.GetSymmetricAlgorithm(SecurityAlgorithms.Aes192KeyWrap);
            Assert.IsTrue(alg is AES, "#5");
            alg = key.GetSymmetricAlgorithm(SecurityAlgorithms.Aes256KeyWrap);
            Assert.IsTrue(alg is AES, "#6");
            //alg = key.GetSymmetricAlgorithm (SecurityAlgorithms.TripleDesKeyWrap);
            //Assert.IsTrue (alg is TripleDES, "#7");
        }
        public void GetSymmetricAlgorithmWrongSizeDES()
        {
            Key key = new Key(new byte [32]);

            Assert.IsNotNull(key.GetSymmetricAlgorithm(SecurityAlgorithms.TripleDesKeyWrap));
        }
        // hmm, no error
        public void GetSymmetricAlgorithmWrongSize()
        {
            Key key = new Key(new byte [32]);

            Assert.IsNotNull(key.GetSymmetricAlgorithm(SecurityAlgorithms.Aes192Encryption));
        }
        public void GetSymmetricAlgorithmNullKey()
        {
            Key key = new Key(raw);

            Assert.IsNotNull(key.GetSymmetricAlgorithm(SecurityAlgorithms.Aes192Encryption));
        }
		public void GetSymmetricAlgorithm3VulnerableTDESEnc ()
		{
			byte [] bytes = new byte [24];
			Key key = new Key (bytes);
			// strange, TripleDesEncryption works with 32bytes key,
			// but TripleDesKeyWrap doesn't.
			key.GetSymmetricAlgorithm (SecurityAlgorithms.TripleDesEncryption);
		}
		// no error???
		public void GetSymmetricAlgorithmWrongSize2 ()
		{
			AES aes = new AES ();
			aes.KeySize = 192;
			aes.GenerateKey ();
			Key key = new Key (aes.Key);
			Assert.IsNotNull (key.GetSymmetricAlgorithm (SecurityAlgorithms.Aes256Encryption));
		}
		public void GetSymmetricAlgorithmWrongSizeDES ()
		{
			Key key = new Key (new byte [32]);
			Assert.IsNotNull (key.GetSymmetricAlgorithm (SecurityAlgorithms.TripleDesKeyWrap));
		}
		// hmm, no error
		public void GetSymmetricAlgorithmWrongSize ()
		{
			Key key = new Key (new byte [32]);
			Assert.IsNotNull (key.GetSymmetricAlgorithm (SecurityAlgorithms.Aes192Encryption));
		}
		public void GetSymmetricAlgorithmNullKey ()
		{
			Key key = new Key (raw);
			Assert.IsNotNull (key.GetSymmetricAlgorithm (SecurityAlgorithms.Aes192Encryption));
		}