private IAeadBlockCipher ChooseBlockCipherMode(BlockCipherModes mode, IBlockCipher blockCipher)
{
switch (mode)
{
case BlockCipherModes.GCM:
return new GcmBlockCipher(blockCipher);
case BlockCipherModes.CCM:
return new CcmBlockCipher(blockCipher);
case BlockCipherModes.EAX:
return new EaxBlockCipher(blockCipher);
default:
throw new ArgumentOutOfRangeException(nameof(mode), mode, null);
}
}