Crypto++ 7.0 Free C++ class library of cryptographic schemes

Static Public Member Functions | List of all members
SM3 Class Reference

SM3 hash function. More...

Inheritance diagram for SM3:

## Static Public Member Functions
static void | InitState (HashWordType *state)
| Initialize state array. More...
static void | Transform (HashWordType *digest, const HashWordType *data)
| Operate the hash. More...
static const char * | StaticAlgorithmName ()
| The algorithm name. More...
Static Public Member Functions inherited from AlgorithmImpl< IteratedHash< word32, BigEndian, T_BlockSize >, SM3 >
static std::string | StaticAlgorithmName ()
| The algorithm name. More...

## Additional Inherited Members
Public Types inherited from IteratedHash< word32, BigEndian, T_BlockSize >
typedef BigEndian | ByteOrderClass
typedef word32 | HashWordType
Public Types inherited from IteratedHashBase< word32, HashTransformation >
typedef word32 | HashWordType
Public Member Functions inherited from IteratedHashWithStaticTransform< word32, BigEndian, 64, 32, SM3, 32, true >
unsigned int | DigestSize () const
| Provides the digest size of the hash. More...
Public Member Functions inherited from ClonableImpl< SM3, AlgorithmImpl< IteratedHash< word32, BigEndian, T_BlockSize >, SM3 > >
Clonable * | Clone () const
Public Member Functions inherited from AlgorithmImpl< IteratedHash< word32, BigEndian, T_BlockSize >, SM3 >
std::string | AlgorithmName () const
| The algorithm name. More...
Public Member Functions inherited from IteratedHash< word32, BigEndian, T_BlockSize >
unsigned int | BlockSize () const
| Provides the block size of the hash. More...
ByteOrder | GetByteOrder () const
| Provides the byte order of the hash. More...
void | CorrectEndianess (HashWordType *out, const HashWordType *in, size_t byteCount)
| Adjusts the byte ordering of the hash. More...
Public Member Functions inherited from IteratedHashBase< word32, HashTransformation >
| IteratedHashBase ()
| Construct an IteratedHashBase.
unsigned int | OptimalBlockSize () const
| Provides the input block size most efficient for this cipher. More...
unsigned int | OptimalDataAlignment () const
| Provides input and output data alignment for optimal performance. More...
void | Update (const byte *input, size_t length)
| Updates a hash with additional input. More...
byte * | CreateUpdateSpace (size_t &size)
| Requests space which can be written into by the caller. More...
void | Restart ()
| Restart the hash. More...
void | TruncatedFinal (byte *digest, size_t digestSize)
| Computes the hash of the current message. More...
virtual std::string | AlgorithmProvider () const
| Retrieve the provider of this algorithm. More...
Public Member Functions inherited from HashTransformation
HashTransformation & | Ref ()
| Provides a reference to this object. More...
virtual void | Final (byte *digest)
| Computes the hash of the current message. More...
unsigned int | TagSize () const
| Provides the tag size of the hash. More...
virtual void | CalculateDigest (byte *digest, const byte *input, size_t length)
| Updates the hash with additional input and computes the hash of the current message. More...
virtual bool | Verify (const byte *digest)
| Verifies the hash of the current message. More...
virtual bool | VerifyDigest (const byte *digest, const byte *input, size_t length)
| Updates the hash with additional input and verifies the hash of the current message. More...
virtual void | CalculateTruncatedDigest (byte *digest, size_t digestSize, const byte *input, size_t length)
| Updates the hash with additional input and computes the hash of the current message. More...
virtual bool | TruncatedVerify (const byte *digest, size_t digestLength)
| Verifies the hash of the current message. More...
virtual bool | VerifyTruncatedDigest (const byte *digest, size_t digestLength, const byte *input, size_t length)
| Updates the hash with additional input and verifies the hash of the current message. More...
Public Member Functions inherited from Algorithm
| Algorithm (bool checkSelfTestStatus=true)
| Interface for all crypto algorithms. More...
Static Public Attributes inherited from IteratedHashWithStaticTransform< word32, BigEndian, 64, 32, SM3, 32, true >
static const int | DIGESTSIZE
Static Public Attributes inherited from IteratedHash< word32, BigEndian, T_BlockSize >
static const int | BLOCKSIZE

## Detailed Description

SM3 hash function.

SM3 is a hash function designed by Xiaoyun Wang, et al. The hash is part of the Chinese State Cryptography Administration portfolio.

See also
  SM3 Hash Function

Since
  Crypto++ 6.0

Definition at line 27 of file sm3.h.

## Member Function Documentation

## ◆ InitState()

void SM3::InitState | ( | HashWordType * | state | ) |
| static

Initialize state array.

Parameters

  state | the state of the hash

InitState sets a state array to SHA256 initial values

Hashes which derive from IteratedHashWithStaticTransform provide static member functions InitState() and Transform(). External classes, like SEAL and MDC, can initialize state with a user provided key and operate the hash on the data with the user supplied state.

Definition at line 230 of file sm3.cpp.

## ◆ Transform()

void SM3::Transform | ( | HashWordType * | digest,
|  | const HashWordType * | data
| ) |  |
| static

Operate the hash.

Parameters

  digest | the state of the hash
  data | the data to be digested

Transform() operates the hash on `data`. When the call is invoked `digest` holds initial or current state. Upon return `digest` holds the hash or updated state.

Hashes which derive from IteratedHashWithStaticTransform provide static member functions InitState() and Transform(). External classes, like SEAL and MDC, can initialize state with a user provided key and operate the hash on the data with the user supplied state.

Definition at line 240 of file sm3.cpp.

## ◆ StaticAlgorithmName()

static const char* SM3::StaticAlgorithmName | ( |  | ) |
| inline static

The algorithm name.

Returns
  C-style string "SM3"

Definition at line 53 of file sm3.h.

The documentation for this class was generated from the following files:

- sm3.h
- sm3.cpp