Org.BouncyCastle.Crypto.Macs.CbcBlockCipherMac.Reset C# (CSharp) Method

Reset() public method

public Reset ( ) : void
return void
        public void Reset()
        {
            // Clear the buffer.
			Array.Clear(Buffer, 0, Buffer.Length);
			bufOff = 0;

			// Reset the underlying cipher.
            cipher.Reset();
        }
    }

Usage Example

Example #1
0
        public virtual ITestResult Perform()
        {
            KeyParameter key = new KeyParameter(keyBytes);
            IBlockCipher cipher = new DesEngine();
            IMac mac = new CbcBlockCipherMac(cipher);

            //
            // standard DAC - zero IV
            //
            mac.Init(key);

            mac.BlockUpdate(input1, 0, input1.Length);

            byte[] outBytes = new byte[4];

            mac.DoFinal(outBytes, 0);

            if (!Arrays.AreEqual(outBytes, output1))
            {
                return new SimpleTestResult(false, Name + ": Failed - expected "
					+ Hex.ToHexString(output1) + " got " + Hex.ToHexString(outBytes));
            }

            //
            // mac with IV.
            //
            ParametersWithIV param = new ParametersWithIV(key, ivBytes);

            mac.Init(param);

            mac.BlockUpdate(input1, 0, input1.Length);

            outBytes = new byte[4];

            mac.DoFinal(outBytes, 0);

            if (!Arrays.AreEqual(outBytes, output2))
            {
                return new SimpleTestResult(false, Name + ": Failed - expected "
					+ Hex.ToHexString(output2) + " got " + Hex.ToHexString(outBytes));
            }

            //
            // CFB mac with IV - 8 bit CFB mode
            //
            param = new ParametersWithIV(key, ivBytes);

            mac = new CfbBlockCipherMac(cipher);

            mac.Init(param);

            mac.BlockUpdate(input1, 0, input1.Length);

            outBytes = new byte[4];

            mac.DoFinal(outBytes, 0);

            if (!Arrays.AreEqual(outBytes, output3))
            {
                return new SimpleTestResult(false, Name + ": Failed - expected "
					+ Hex.ToHexString(output3) + " got " + Hex.ToHexString(outBytes));
            }

            //
            // word aligned data - zero IV
            //
            mac.Init(key);

            mac.BlockUpdate(input2, 0, input2.Length);

            outBytes = new byte[4];

            mac.DoFinal(outBytes, 0);

            if (!Arrays.AreEqual(outBytes, output4))
            {
                return new SimpleTestResult(false, Name + ": Failed - expected "
					+ Hex.ToHexString(output4) + " got " + Hex.ToHexString(outBytes));
            }

            //
            // word aligned data - zero IV - CBC padding
            //
            mac = new CbcBlockCipherMac(cipher, new Pkcs7Padding());

            mac.Init(key);

            mac.BlockUpdate(input2, 0, input2.Length);

            outBytes = new byte[4];

            mac.DoFinal(outBytes, 0);

            if (!Arrays.AreEqual(outBytes, output5))
            {
                return new SimpleTestResult(false, Name + ": Failed - expected "
					+ Hex.ToHexString(output5) + " got " + Hex.ToHexString(outBytes));
            }

            //
            // non-word aligned data - zero IV - CBC padding
            //
            mac.Reset();

            mac.BlockUpdate(input1, 0, input1.Length);

            outBytes = new byte[4];

            mac.DoFinal(outBytes, 0);

            if (!Arrays.AreEqual(outBytes, output6))
            {
                return new SimpleTestResult(false, Name + ": Failed - expected "
					+ Hex.ToHexString(output6) + " got " + Hex.ToHexString(outBytes));
            }

            //
            // non-word aligned data - zero IV - CBC padding
            //
            mac.Init(key);

            mac.BlockUpdate(input1, 0, input1.Length);

            outBytes = new byte[4];

            mac.DoFinal(outBytes, 0);

            if (!Arrays.AreEqual(outBytes, output6))
            {
                return new SimpleTestResult(false, Name + ": Failed - expected "
					+ Hex.ToHexString(output6) + " got " + Hex.ToHexString(outBytes));
            }

            return new SimpleTestResult(true, Name + ": Okay");
        }