public IModeBlockCipher <SymmetricCipherResult> GetStandardCipher( IBlockCipherEngine engine, BlockCipherModesOfOperation modeOfOperation ) { switch (modeOfOperation) { case BlockCipherModesOfOperation.Cbc: return(new CbcBlockCipher(engine)); case BlockCipherModesOfOperation.Cbci: return(new CbciBlockCipher(engine)); case BlockCipherModesOfOperation.CbcCs1: return(new CbcCtsBlockCipher(engine, new CiphertextStealingMode1())); case BlockCipherModesOfOperation.CbcCs2: return(new CbcCtsBlockCipher(engine, new CiphertextStealingMode2())); case BlockCipherModesOfOperation.CbcCs3: return(new CbcCtsBlockCipher(engine, new CiphertextStealingMode3())); case BlockCipherModesOfOperation.CbcMac: return(new CbcMacBlockCipher(engine)); case BlockCipherModesOfOperation.CfbBit: return(new CfbBlockCipher(engine, new ShiftRegisterStrategyBit(engine))); case BlockCipherModesOfOperation.CfbByte: return(new CfbBlockCipher(engine, new ShiftRegisterStrategyByte(engine))); case BlockCipherModesOfOperation.CfbBlock: return(new CfbBlockCipher(engine, new ShiftRegisterStrategyFullBlock(engine))); case BlockCipherModesOfOperation.CfbpBit: return(new CfbpBlockCipher(engine, new ShiftRegisterStrategyBit(engine))); case BlockCipherModesOfOperation.CfbpByte: return(new CfbpBlockCipher(engine, new ShiftRegisterStrategyByte(engine))); case BlockCipherModesOfOperation.CfbpBlock: return(new CfbpBlockCipher(engine, new ShiftRegisterStrategyFullBlock(engine))); case BlockCipherModesOfOperation.Ctr: throw new ArgumentException($"{modeOfOperation} not a standard mode, use {nameof(GetCounterCipher)} instead"); case BlockCipherModesOfOperation.Ecb: return(new EcbBlockCipher(engine)); case BlockCipherModesOfOperation.Ofb: return(new OfbBlockCipher(engine)); case BlockCipherModesOfOperation.Ofbi: return(new OfbiBlockCipher(engine)); default: throw new ArgumentException(nameof(modeOfOperation)); } }
public MonteCarloTdesCfb( IBlockCipherEngineFactory engineFactory, IModeBlockCipherFactory modeFactory, IMonteCarloKeyMakerTdes keyMaker, int shiftSize, BlockCipherModesOfOperation mode ) { _algo = modeFactory.GetStandardCipher( engineFactory.GetSymmetricCipherPrimitive(BlockCipherEngines.Tdes), mode ); _keyMaker = keyMaker; Shift = shiftSize; }
public IMonteCarloTester <MCTResult <AlgoArrayResponse>, AlgoArrayResponse> GetInstance( BlockCipherModesOfOperation mode ) { var keyMaker = new AesMonteCarloKeyMaker(); switch (mode) { case BlockCipherModesOfOperation.Ecb: return(new MonteCarloAesEcb(_engineFactory, _modeFactory, keyMaker)); case BlockCipherModesOfOperation.Cbc: return(new MonteCarloAesCbc(_engineFactory, _modeFactory, keyMaker)); case BlockCipherModesOfOperation.CbcCs1: case BlockCipherModesOfOperation.CbcCs2: case BlockCipherModesOfOperation.CbcCs3: return(new MonteCarloAesCbcCts(_engineFactory, _modeFactory, keyMaker, mode)); case BlockCipherModesOfOperation.CfbBit: return(new MonteCarloAesCfb(_engineFactory, _modeFactory, keyMaker, 1, BlockCipherModesOfOperation.CfbBit)); case BlockCipherModesOfOperation.CfbByte: return(new MonteCarloAesCfb(_engineFactory, _modeFactory, keyMaker, 8, BlockCipherModesOfOperation.CfbByte)); case BlockCipherModesOfOperation.CfbBlock: return(new MonteCarloAesCfb(_engineFactory, _modeFactory, keyMaker, 128, BlockCipherModesOfOperation.CfbBlock)); case BlockCipherModesOfOperation.Ofb: return(new MonteCarloAesOfb(_engineFactory, _modeFactory, keyMaker)); case BlockCipherModesOfOperation.Cbci: case BlockCipherModesOfOperation.CbcMac: case BlockCipherModesOfOperation.Ccm: case BlockCipherModesOfOperation.CfbpBit: case BlockCipherModesOfOperation.CfbpByte: case BlockCipherModesOfOperation.CfbpBlock: case BlockCipherModesOfOperation.Ctr: case BlockCipherModesOfOperation.Gcm: case BlockCipherModesOfOperation.Ofbi: throw new NotSupportedException(); default: throw new ArgumentException(nameof(mode)); } }
public MonteCarloAesCfb( IBlockCipherEngineFactory engineFactory, IModeBlockCipherFactory modeFactory, IMonteCarloKeyMakerAes keyMaker, int shiftSize, BlockCipherModesOfOperation mode ) { var engine = engineFactory.GetSymmetricCipherPrimitive(BlockCipherEngines.Aes); _algo = modeFactory.GetStandardCipher( engine, mode ); _keyMaker = keyMaker; _blockSizeBits = engine.BlockSizeBits; Shift = shiftSize; }
public IAeadModeBlockCipher GetAeadCipher( IBlockCipherEngine engine, BlockCipherModesOfOperation modeOfOperation ) { switch (modeOfOperation) { case BlockCipherModesOfOperation.Ccm: return(new CcmBlockCipher(engine, new ModeBlockCipherFactory(), new AES_CCMInternals())); case BlockCipherModesOfOperation.Gcm: return(new GcmBlockCipher(engine, new ModeBlockCipherFactory(), new AES_GCMInternals(new ModeBlockCipherFactory(), new BlockCipherEngineFactory()))); case BlockCipherModesOfOperation.GcmSiv: return(new GcmSivBlockCipher(engine, new ModeBlockCipherFactory(), new AES_GCMInternals(new ModeBlockCipherFactory(), new BlockCipherEngineFactory()))); default: throw new InvalidOperationException(); } }
public MonteCarloAesCbcCts(IBlockCipherEngineFactory engineFactory, IModeBlockCipherFactory modeFactory, IMonteCarloKeyMakerAes keyMaker, BlockCipherModesOfOperation mode) { _algo = modeFactory.GetStandardCipher( engineFactory.GetSymmetricCipherPrimitive(BlockCipherEngines.Aes), mode ); _keyMaker = keyMaker; }
public IMonteCarloTester <MCTResult <AlgoArrayResponse>, AlgoArrayResponse> GetInstance(BlockCipherModesOfOperation mode) { switch (mode) { case BlockCipherModesOfOperation.Ecb: return(new MonteCarloTdesEcb(_engineFactory, _modeFactory, new TDES_ECB.MonteCarloKeyMaker())); case BlockCipherModesOfOperation.Cbc: return(new MonteCarloTdesCbc(_engineFactory, _modeFactory, new TDES_CBC.MonteCarloKeyMaker())); case BlockCipherModesOfOperation.CfbBit: return(new MonteCarloTdesCfb(_engineFactory, _modeFactory, new TDES_CFB.MonteCarloKeyMaker(), 1, mode)); case BlockCipherModesOfOperation.CfbByte: return(new MonteCarloTdesCfb(_engineFactory, _modeFactory, new TDES_CFB.MonteCarloKeyMaker(), 8, mode)); case BlockCipherModesOfOperation.CfbBlock: return(new MonteCarloTdesCfb(_engineFactory, _modeFactory, new TDES_CFB.MonteCarloKeyMaker(), 64, mode)); case BlockCipherModesOfOperation.Ofb: return(new MonteCarloTdesOfb(_engineFactory, _modeFactory, new TDES_OFB.MonteCarloKeyMaker())); case BlockCipherModesOfOperation.Cbci: return(new MonteCarloTdesCbci(_engineFactory, _modeFactory, new TDES_CBCI.MonteCarloKeyMaker())); case BlockCipherModesOfOperation.CfbpBit: return(new MonteCarloTdesCfbp(_engineFactory, _modeFactory, new TDES_CFBP.MonteCarloKeyMaker(), mode)); case BlockCipherModesOfOperation.CfbpByte: return(new MonteCarloTdesCfbp(_engineFactory, _modeFactory, new TDES_CFBP.MonteCarloKeyMaker(), mode)); case BlockCipherModesOfOperation.CfbpBlock: return(new MonteCarloTdesCfbp(_engineFactory, _modeFactory, new TDES_CFBP.MonteCarloKeyMaker(), mode)); case BlockCipherModesOfOperation.Ofbi: return(new MonteCarloTdesOfbi(_engineFactory, _modeFactory, new TDES_OFBI.MonteCarloKeyMaker())); case BlockCipherModesOfOperation.CbcMac: case BlockCipherModesOfOperation.Ccm: case BlockCipherModesOfOperation.Ctr: case BlockCipherModesOfOperation.Gcm: throw new NotSupportedException(nameof(mode)); default: throw new ArgumentException(nameof(mode)); } }
public MonteCarloTdesCfbp(IBlockCipherEngineFactory engineFactory, IModeBlockCipherFactory modeFactory, IMonteCarloKeyMakerTdes keyMaker, BlockCipherModesOfOperation mode) { _algo = modeFactory.GetStandardCipher( engineFactory.GetSymmetricCipherPrimitive(BlockCipherEngines.Tdes), mode ); _keyMaker = keyMaker; switch (mode) { case BlockCipherModesOfOperation.CfbpBit: Shift = 1; break; case BlockCipherModesOfOperation.CfbpByte: Shift = 8; break; case BlockCipherModesOfOperation.CfbpBlock: Shift = 64; break; default: throw new ArgumentException(nameof(mode)); } }