32 void AddData(
char const* aData,
size_t aDataLength);
36 void Add(
const T& value)
38 AddData((
const char*)&value, (
unsigned int)
sizeof(value));
43 void FinalDigest(
char* aDigest);
59 unsigned int mBuf[SHA256LENGTH];
61 unsigned char mIn[BLOCKSIZE];
64 unsigned int CircularShift(
unsigned int aBits,
unsigned int aWord);
65 static unsigned int CH(
unsigned int aX,
unsigned int aY,
unsigned int aZ);
66 static unsigned int MAJ(
unsigned int aX,
unsigned int aY,
unsigned int aZ);
68 static unsigned int SIG0(
unsigned int aX);
69 static unsigned int SIG1(
unsigned int aX);
70 static unsigned int sig0(
unsigned int aX);
71 static unsigned int sig1(
unsigned int aX);
73 static void Bytes2Word(
unsigned char const* aBytes,
unsigned int& aWord);
74 static void Word2Bytes(
size_t const& aWord,
unsigned char* aBytes);
80 static const unsigned int mK256[64];
81 static const unsigned int mH256[SHA256LENGTH];
117 std::string ToHex()
const;
126inline unsigned int UtSHA::CircularShift(
unsigned int aBits,
unsigned int aWord)
128 return (aWord << aBits) | (aWord >> (32 - aBits));
131inline unsigned int UtSHA::CH(
unsigned int aX,
unsigned int aY,
unsigned int aZ)
133 return ((aX & (aY ^ aZ)) ^ aZ);
136inline unsigned int UtSHA::MAJ(
unsigned int aX,
unsigned int aY,
unsigned int aZ)
138 return (((aX | aY) & aZ) | (aX & aY));
141inline unsigned int UtSHA::SIG0(
unsigned int aX)
143 return ((aX >> 2) | (aX << 30)) ^ ((aX >> 13) | (aX << 19)) ^ ((aX >> 22) | (aX << 10));
146inline unsigned int UtSHA::SIG1(
unsigned int aX)
148 return ((aX >> 6) | (aX << 26)) ^ ((aX >> 11) | (aX << 21)) ^ ((aX >> 25) | (aX << 7));
151inline unsigned int UtSHA::sig0(
unsigned int aX)
153 return ((aX >> 7) | (aX << 25)) ^ ((aX >> 18) | (aX << 14)) ^ (aX >> 3);
156inline unsigned int UtSHA::sig1(
unsigned int aX)
158 return ((aX >> 17) | (aX << 15)) ^ ((aX >> 19) | (aX << 13)) ^ (aX >> 10);
161inline void UtSHA::Bytes2Word(
unsigned char const* aBytes,
unsigned int& aWord)
163 aWord = (
unsigned int)*(aBytes + 3) | (
unsigned int)(*(aBytes + 2) << 8) | (
unsigned int)(*(aBytes + 1) << 16) |
164 (
unsigned int)(*aBytes << 24);
167inline void UtSHA::Word2Bytes(
size_t const& aWord,
unsigned char* aBytes)
170 *aBytes = aWord & 0xff;
171 *--aBytes = (aWord >> 8) & 0xff;
172 *--aBytes = (aWord >> 16) & 0xff;
173 *--aBytes = (aWord >> 24) & 0xff;
#define WSF_UT_EXPORT
Definition WsfUtExport.hpp:32
Container for a UtSHA Digest.
Definition UtSHA.hpp:88
@ cBUFFER_SIZE
Definition UtSHA.hpp:93
void Clear()
Definition UtSHA.hpp:90
unsigned int mWords[8]
Definition UtSHA.hpp:121
unsigned long long mWord64[4]
Definition UtSHA.hpp:122
bool operator!=(const UtSHA_Digest &aRhs) const
Definition UtSHA.hpp:100
bool operator==(const UtSHA_Digest &aRhs) const
Definition UtSHA.hpp:95
char mBytes[cBUFFER_SIZE]
Definition UtSHA.hpp:120
bool operator<(const UtSHA_Digest &aRhs) const
Definition UtSHA.hpp:101
void Add(const T &value)
Definition UtSHA.hpp:36
UtSHA()
Definition UtSHA.cpp:35
void AddData(char const *aData, size_t aDataLength)
Definition UtSHA.cpp:50