1 // 2 // SHA256ManagedTest.cs - NUnit Test Cases for SHA256Managed 3 // 4 // Author: 5 // Sebastien Pouliot <sebastien@ximian.com> 6 // 7 // (C) 2002 Motus Technologies Inc. (http://www.motus.com) 8 // Copyright (C) 2004, 2007 Novell, Inc (http://www.novell.com) 9 // 10 11 using NUnit.Framework; 12 using System; 13 using System.Security.Cryptography; 14 using System.Text; 15 16 namespace MonoTests.System.Security.Cryptography { 17 18 // References: 19 // a. FIPS PUB 180-2: Secure Hash Standard 20 // http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf 21 22 // we inherit from SHA256Test because all SHA256 implementation must return the 23 // same results (hence should run a common set of unit tests). 24 25 [TestFixture] 26 public class SHA256ManagedTest : SHA256TestBase { 27 28 [SetUp] SetUp()29 public override void SetUp () 30 { 31 hash = new SHA256Managed (); 32 } 33 34 [Test] Create()35 public override void Create () 36 { 37 // no need to repeat this test 38 } 39 40 // none of those values changes for a particuliar implementation of SHA256 41 [Test] StaticInfo()42 public override void StaticInfo () 43 { 44 // test all values static for SHA256 45 base.StaticInfo (); 46 string className = hash.ToString (); 47 Assert.IsTrue (hash.CanReuseTransform, className + ".CanReuseTransform"); 48 Assert.IsTrue (hash.CanTransformMultipleBlocks, className + ".CanTransformMultipleBlocks"); 49 Assert.AreEqual ("System.Security.Cryptography.SHA256Managed", className, className + ".ToString()"); 50 } 51 52 [Test] FIPSCompliance_Test1()53 public void FIPSCompliance_Test1 () 54 { 55 SHA256 sha = (SHA256) hash; 56 // First test, we hash the string "abc" 57 FIPS186_Test1 (sha); 58 } 59 60 [Test] FIPSCompliance_Test2()61 public void FIPSCompliance_Test2 () 62 { 63 SHA256 sha = (SHA256) hash; 64 // Second test, we hash the string "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu" 65 FIPS186_Test2 (sha); 66 } 67 68 [Test] FIPSCompliance_Test3()69 public void FIPSCompliance_Test3 () 70 { 71 SHA256 sha = (SHA256) hash; 72 // Third test, we hash 1,000,000 times the character "a" 73 FIPS186_Test3 (sha); 74 } 75 } 76 77 } 78