diff options
| author | weidai <weidai11@users.noreply.github.com> | 2005-01-20 04:19:35 +0000 |
|---|---|---|
| committer | weidai <weidai11@users.noreply.github.com> | 2005-01-20 04:19:35 +0000 |
| commit | b3924f2108c0b0825060e91f6fde8202ce35624d (patch) | |
| tree | 1f61e8bf59450a028415e5a3f08565a6ceb86afe /filters.cpp | |
| parent | 79e29d0de49969af44474cc890cffd7b1d6b1a4b (diff) | |
| download | cryptopp-git-b3924f2108c0b0825060e91f6fde8202ce35624d.tar.gz | |
changes done for FIPS-140 lab code drop
Diffstat (limited to 'filters.cpp')
| -rw-r--r-- | filters.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/filters.cpp b/filters.cpp index ee372bbe..1806d412 100644 --- a/filters.cpp +++ b/filters.cpp @@ -656,6 +656,7 @@ void StreamTransformationFilter::LastPut(const byte *inString, unsigned int leng void HashFilter::IsolatedInitialize(const NameValuePairs ¶meters) { m_putMessage = parameters.GetValueWithDefault(Name::PutMessage(), false); + m_truncatedDigestSize = parameters.GetIntValueWithDefault(Name::TruncatedDigestSize(), -1); m_hashModule.Restart(); } @@ -668,11 +669,14 @@ unsigned int HashFilter::Put2(const byte *inString, unsigned int length, int mes if (messageEnd) { { - unsigned int size, digestSize = m_hashModule.DigestSize(); - m_space = HelpCreatePutSpace(*AttachedTransformation(), NULL_CHANNEL, digestSize, digestSize, size = digestSize); - m_hashModule.Final(m_space); + unsigned int size; + m_digestSize = m_hashModule.DigestSize(); + if (m_truncatedDigestSize >= 0 && (unsigned int)m_truncatedDigestSize < m_digestSize) + m_digestSize = m_truncatedDigestSize; + m_space = HelpCreatePutSpace(*AttachedTransformation(), NULL_CHANNEL, m_digestSize, m_digestSize, size = m_digestSize); + m_hashModule.TruncatedFinal(m_space, m_digestSize); } - FILTER_OUTPUT(2, m_space, m_hashModule.DigestSize(), messageEnd); + FILTER_OUTPUT(2, m_space, m_digestSize, messageEnd); } FILTER_END_NO_MESSAGE_END; } |
