diff --git a/cryptlib.cpp b/cryptlib.cpp index dadd9cec..df138ddb 100644 --- a/cryptlib.cpp +++ b/cryptlib.cpp @@ -87,7 +87,7 @@ void SimpleKeyingInterface::ThrowIfResynchronizable() void SimpleKeyingInterface::ThrowIfInvalidIV(const byte *iv) { - if (!iv && !(IVRequirement() == INTERNALLY_GENERATED_IV || IVRequirement() == UNIQUE_IV || !IsResynchronizable())) + if (!iv && IVRequirement() == UNPREDICTABLE_RANDOM_IV) throw InvalidArgument(GetAlgorithm().AlgorithmName() + ": this object cannot use a null IV"); } diff --git a/modes.cpp b/modes.cpp index 789fafb2..46332284 100644 --- a/modes.cpp +++ b/modes.cpp @@ -56,7 +56,8 @@ void CFB_ModePolicy::TransformRegister() void CFB_ModePolicy::CipherResynchronize(const byte *iv, size_t length) { - memcpy_s(m_register, m_register.size(), iv, BlockSize()); + assert(length == BlockSize()); + CopyOrZero(m_register, iv, length); TransformRegister(); } @@ -85,6 +86,7 @@ void OFB_ModePolicy::WriteKeystream(byte *keystreamBuffer, size_t iterationCount void OFB_ModePolicy::CipherResynchronize(byte *keystreamBuffer, const byte *iv, size_t length) { + assert(length == BlockSize()); CopyOrZero(m_register, iv, length); }