private ICryptoTransform CreateEncryptor(byte[] key, byte[] IV, EncryptModeEnum encryptMode, AesKeySize keySize = AesKeySize.Aes128, PaddingMode paddingMode = PaddingMode.PKCS7) { if (EncryptModeEnum.CBC.Equals(encryptMode)) { return(AesCBCEncryptor.CreateEncryptor(key, IV, keySize, paddingMode)); } if (EncryptModeEnum.CTR.Equals(encryptMode)) { return(AesCTREncryptor.CreateEncryptor(key, IV, keySize)); } throw new Exception($"Encryption Mode {encryptMode} not valid"); }
private static AesSettings Create(IConfigurationSection section) { EncryptModeEnum mode = section["Mode"].ToEnum <EncryptModeEnum>(); switch (mode) { case EncryptModeEnum.ECB: return(CreateEcb(section)); case EncryptModeEnum.CBC: case EncryptModeEnum.CTR: case EncryptModeEnum.GCM: return(CreateDefault(section)); default: throw new ArgumentOutOfRangeException($"Argumendt {mode}"); } }
public IEncryptorFactory CreateFactory(EncryptModeEnum mode, byte[] aad = null) { var settings = AesSettings.GetEnumerator(); switch (mode) { case EncryptModeEnum.ECB: return(new EcbEncryptorFactory(settings.FirstOrDefault(s => EncryptModeEnum.ECB.Equals(s.Mode)))); case EncryptModeEnum.CBC: return(new CbcEncryptorFactory(settings.FirstOrDefault(s => EncryptModeEnum.CBC.Equals(s.Mode)))); case EncryptModeEnum.CTR: return(new CtrEncryptorFactory(settings.FirstOrDefault(s => EncryptModeEnum.CTR.Equals(s.Mode)))); case EncryptModeEnum.GCM: return(new GcmEncryptorFactory(settings.FirstOrDefault(s => EncryptModeEnum.GCM.Equals(s.Mode)), aad)); default: throw new ArgumentOutOfRangeException($"Invalid Mode {mode}"); } }