/mcs/class/corlib/Test/System.Security.Cryptography/SymmetricAlgorithm2Test.cs
https://github.com/iainlane/mono · C# · 173 lines · 117 code · 19 blank · 37 comment · 1 complexity · 31ca8c8d68b5a55b3d3d8b9c2e77dbc4 MD5 · raw file
- //
- // SymmetricAlgorithm2Test.cs -
- // Non generated NUnit Test Cases for SymmetricAlgorithm
- //
- // Author:
- // Sebastien Pouliot <spouliot@ximian.com>
- //
- // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
- //
- // Permission is hereby granted, free of charge, to any person obtaining
- // a copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to
- // permit persons to whom the Software is furnished to do so, subject to
- // the following conditions:
- //
- // The above copyright notice and this permission notice shall be
- // included in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- //
- using NUnit.Framework;
- using System;
- using System.IO;
- using System.Security.Cryptography;
- using System.Text;
- namespace MonoTests.System.Security.Cryptography {
- // SymmetricAlgorithm is a abstract class - so most of it's functionality wont
- // be tested here (but will be in its descendants).
- [TestFixture]
- public class SymmetricAlgorithm2Test {
- [Test]
- public void KeySize_SameSize ()
- {
- using (SymmetricAlgorithm algo = SymmetricAlgorithm.Create ()) {
- // get a copy of the key
- byte[] key = algo.Key;
- int ks = algo.KeySize;
- // set the key size
- algo.KeySize = ks;
- // did it change the key ? Yes!
- Assert.AreNotEqual (BitConverter.ToString (key), BitConverter.ToString (algo.Key), "Key");
- }
- }
- [Test]
- public void BlockSize_SameSize ()
- {
- using (SymmetricAlgorithm algo = SymmetricAlgorithm.Create ()) {
- // get a copy of the IV
- byte[] iv = algo.IV;
- int bs = algo.BlockSize;
- // set the iv size
- algo.BlockSize = bs;
- // did it change the IV ? No!
- Assert.AreEqual (BitConverter.ToString (iv), BitConverter.ToString (algo.IV), "IV");
- }
- }
- [Test]
- [ExpectedException (typeof (CryptographicException))]
- public void InvalidBlockSize ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- algo.BlockSize = 255;
- }
- [Test]
- [ExpectedException (typeof (CryptographicException))]
- public void InvalidFeedbackSize ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- algo.FeedbackSize = algo.BlockSize + 1;
- }
- [Test]
- [ExpectedException (typeof (ArgumentNullException))]
- public void IV_Null ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- algo.IV = null;
- }
- [Test]
- [ExpectedException (typeof (CryptographicException))]
- public void IV_None ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- algo.IV = new byte [0]; // e.g. stream ciphers
- }
- [Test]
- [ExpectedException (typeof (CryptographicException))]
- public void IV_TooBig ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- algo.IV = new byte [algo.BlockSize + 1];
- }
- [Test]
- [ExpectedException (typeof (ArgumentNullException))]
- public void Key_Null ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- algo.Key = null;
- }
- [Test]
- [ExpectedException (typeof (CryptographicException))]
- public void Key_WrongSize ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- algo.Key = new byte [255];
- }
- [Test]
- [ExpectedException (typeof (CryptographicException))]
- public void KeySize_WrongSize ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- int n = 0;
- while (algo.ValidKeySize (++n));
- algo.KeySize = n;
- }
- [Test]
- [ExpectedException (typeof (CryptographicException))]
- public void InvalidCipherMode ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- algo.Mode = (CipherMode) 255;
- }
- [Test]
- [ExpectedException (typeof (CryptographicException))]
- public void InvalidPaddingMode ()
- {
- SymmetricAlgorithm algo = SymmetricAlgorithm.Create ();
- algo.Padding = (PaddingMode) 255;
- }
- [Test]
- [ExpectedException (typeof (CryptographicException))]
- public void FeedbackZero ()
- {
- // thanks to Yakk for the sample
- DES des = new DESCryptoServiceProvider();
- des.FeedbackSize = 0;
- des.Padding = PaddingMode.None;
- des.Mode = CipherMode.ECB;
- des.Key = new byte [8] { 8, 7, 6, 5, 4, 3, 2, 1 };
- ICryptoTransform enc = des.CreateEncryptor ();
- byte[] response = new byte [16];
- byte[] challenge = new byte [16] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
- enc.TransformBlock (challenge, 0, challenge.Length, response, 0);
- Assert.AreEqual ("7A-64-CD-1B-4F-EE-B5-92-54-90-53-E9-83-71-A6-0C", BitConverter.ToString (response));
- }
- }
- }