Add veirtual dtor IteratedHash and ClonableImpl due to non-trivial data members
parent
6bb6e8ab63
commit
11eede3926
16
iterhash.h
16
iterhash.h
|
|
@ -21,7 +21,8 @@ public:
|
||||||
//! \brief Iterated hash base class
|
//! \brief Iterated hash base class
|
||||||
//! \tparam T Hash word type
|
//! \tparam T Hash word type
|
||||||
//! \tparam BASE HashTransformation derived class
|
//! \tparam BASE HashTransformation derived class
|
||||||
//! \details BASE should be derived from HashTransformation, MessageAuthenticationCode, or similar class.
|
//! \details IteratedHashBase() provides an interface for derived classes. BASE should be derived from
|
||||||
|
//! HashTransformation, MessageAuthenticationCode, or a similar class.
|
||||||
//! \sa HashTransformation, MessageAuthenticationCode
|
//! \sa HashTransformation, MessageAuthenticationCode
|
||||||
template <class T, class BASE>
|
template <class T, class BASE>
|
||||||
class CRYPTOPP_NO_VTABLE IteratedHashBase : public BASE
|
class CRYPTOPP_NO_VTABLE IteratedHashBase : public BASE
|
||||||
|
|
@ -95,7 +96,8 @@ private:
|
||||||
//! \tparam T_Endianness Endianness type of hash
|
//! \tparam T_Endianness Endianness type of hash
|
||||||
//! \tparam T_BlockSize Block size of the hash
|
//! \tparam T_BlockSize Block size of the hash
|
||||||
//! \tparam T_Base HashTransformation derived class
|
//! \tparam T_Base HashTransformation derived class
|
||||||
//! \details T_Base should be derived from HashTransformation, MessageAuthenticationCode, or similar class.
|
//! \details IteratedHash is the first implementation of the IteratedHashBase interface. T_Base should be derived
|
||||||
|
//! from HashTransformation, MessageAuthenticationCode, or a similar class.
|
||||||
//! \sa HashTransformation, MessageAuthenticationCode
|
//! \sa HashTransformation, MessageAuthenticationCode
|
||||||
template <class T_HashWordType, class T_Endianness, unsigned int T_BlockSize, class T_Base = HashTransformation>
|
template <class T_HashWordType, class T_Endianness, unsigned int T_BlockSize, class T_Base = HashTransformation>
|
||||||
class CRYPTOPP_NO_VTABLE IteratedHash : public IteratedHashBase<T_HashWordType, T_Base>
|
class CRYPTOPP_NO_VTABLE IteratedHash : public IteratedHashBase<T_HashWordType, T_Base>
|
||||||
|
|
@ -104,6 +106,10 @@ public:
|
||||||
typedef T_Endianness ByteOrderClass;
|
typedef T_Endianness ByteOrderClass;
|
||||||
typedef T_HashWordType HashWordType;
|
typedef T_HashWordType HashWordType;
|
||||||
|
|
||||||
|
#ifndef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562
|
||||||
|
virtual ~IteratedHash() { }
|
||||||
|
#endif
|
||||||
|
|
||||||
CRYPTOPP_CONSTANT(BLOCKSIZE = T_BlockSize)
|
CRYPTOPP_CONSTANT(BLOCKSIZE = T_BlockSize)
|
||||||
// BCB2006 workaround: can't use BLOCKSIZE here
|
// BCB2006 workaround: can't use BLOCKSIZE here
|
||||||
CRYPTOPP_COMPILE_ASSERT((T_BlockSize & (T_BlockSize - 1)) == 0); // blockSize is a power of 2
|
CRYPTOPP_COMPILE_ASSERT((T_BlockSize & (T_BlockSize - 1)) == 0); // blockSize is a power of 2
|
||||||
|
|
@ -143,7 +149,7 @@ protected:
|
||||||
//! \tparam T_Transform Static transformation class
|
//! \tparam T_Transform Static transformation class
|
||||||
//! \tparam T_DigestSize Digest size of the hash
|
//! \tparam T_DigestSize Digest size of the hash
|
||||||
//! \tparam T_StateAligned Flag indicating if state is 16-byte aligned
|
//! \tparam T_StateAligned Flag indicating if state is 16-byte aligned
|
||||||
//! \details T_Transform should be derived from HashTransformation, MessageAuthenticationCode, or similar class.
|
//! \details T_Transform should be derived from HashTransformation, MessageAuthenticationCode, or a similar class.
|
||||||
//! \sa HashTransformation, MessageAuthenticationCode
|
//! \sa HashTransformation, MessageAuthenticationCode
|
||||||
template <class T_HashWordType, class T_Endianness, unsigned int T_BlockSize, unsigned int T_StateSize, class T_Transform, unsigned int T_DigestSize = 0, bool T_StateAligned = false>
|
template <class T_HashWordType, class T_Endianness, unsigned int T_BlockSize, unsigned int T_StateSize, class T_Transform, unsigned int T_DigestSize = 0, bool T_StateAligned = false>
|
||||||
class CRYPTOPP_NO_VTABLE IteratedHashWithStaticTransform
|
class CRYPTOPP_NO_VTABLE IteratedHashWithStaticTransform
|
||||||
|
|
@ -152,6 +158,10 @@ class CRYPTOPP_NO_VTABLE IteratedHashWithStaticTransform
|
||||||
public:
|
public:
|
||||||
CRYPTOPP_CONSTANT(DIGESTSIZE = T_DigestSize ? T_DigestSize : T_StateSize)
|
CRYPTOPP_CONSTANT(DIGESTSIZE = T_DigestSize ? T_DigestSize : T_StateSize)
|
||||||
|
|
||||||
|
#ifndef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562
|
||||||
|
virtual ~ClonableImpl() { }
|
||||||
|
#endif
|
||||||
|
|
||||||
//! Provides the digest size of the hash
|
//! Provides the digest size of the hash
|
||||||
//! \return the digest size of the hash.
|
//! \return the digest size of the hash.
|
||||||
//! details DigestSize() returns <tt>DIGESTSIZE</tt>.
|
//! details DigestSize() returns <tt>DIGESTSIZE</tt>.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue