private SymmetricAlgorithm GetCryptoProvider(byte[] iv)
{
var result = EncryptionSettings.GenerateAlgorithm();
encryptionStartingKeyAndIV = encryptionStartingKeyAndIV ?? GetStartingKeyAndIVForEncryption(result);
if (iv != null && iv.Length != encryptionIVSize)
throw new ArgumentException("GetCryptoProvider: IV has wrong length. Given length: " + iv.Length + ", expected length: " + encryptionIVSize);
result.Key = encryptionStartingKeyAndIV.Item1;
result.IV = iv ?? encryptionStartingKeyAndIV.Item2;
return result;
}