diff --git a/filters.cpp b/filters.cpp index ca85edc7..0b4b2e2d 100644 --- a/filters.cpp +++ b/filters.cpp @@ -611,8 +611,14 @@ void StreamTransformationFilter::InitializeDerivedAndReturnNewSizes(const NameVa else m_padding = padding; - if (!isBlockCipher && (m_padding == PKCS_PADDING || m_padding == ONE_AND_ZEROS_PADDING)) - throw InvalidArgument("StreamTransformationFilter: PKCS_PADDING and ONE_AND_ZEROS_PADDING cannot be used with " + m_cipher.AlgorithmName()); + if (!isBlockCipher && (m_padding == PKCS_PADDING)) + throw InvalidArgument("StreamTransformationFilter: PKCS_PADDING cannot be used with " + m_cipher.AlgorithmName()); + + if (!isBlockCipher && (m_padding == W3C_PADDING)) + throw InvalidArgument("StreamTransformationFilter: W3C_PADDING cannot be used with " + m_cipher.AlgorithmName()); + + if (!isBlockCipher && (m_padding == ONE_AND_ZEROS_PADDING)) + throw InvalidArgument("StreamTransformationFilter: ONE_AND_ZEROS_PADDING cannot be used with " + m_cipher.AlgorithmName()); firstSize = 0; blockSize = m_cipher.MandatoryBlockSize();