public void Setup()
        {
            var engineFactory = new BlockCipherEngineFactory();
            var modeFactory   = new ModeBlockCipherFactory();

            _subject = new Ff1BlockCipher(
                engineFactory.GetSymmetricCipherPrimitive(BlockCipherEngines.Aes),
                modeFactory,
                new AesFfInternals(engineFactory, modeFactory));
        }
        public void ShouldEncryptCorrectly(string keyHex, string ptHex, string ctHex)
        {
            var key            = new BitString(keyHex);
            var payload        = new BitString(ptHex);
            var expectedResult = new BitString(ctHex);

            var factory = new BlockCipherEngineFactory();
            var engine  = factory.GetSymmetricCipherPrimitive(BlockCipherEngines.Aes);

            var subject = new ModeBlockCipherFactory().GetStandardCipher(engine, BlockCipherModesOfOperation.CbcMac);

            var param  = new ModeBlockCipherParameters(BlockCipherDirections.Encrypt, BitString.Zeroes(128), key, payload);
            var result = subject.ProcessPayload(param);

            Assert.IsTrue(result.Success, result.ErrorMessage);
            Assert.AreEqual(expectedResult.ToHex(), result.Result.ToHex());
        }