145 lines
3 KiB
C
145 lines
3 KiB
C
/*!
|
|
\ingroup SHA
|
|
|
|
\brief This function initializes SHA. This is automatically called
|
|
by wc_ShaHash.
|
|
|
|
\return 0 Returned upon successfully initializing
|
|
|
|
\param sha pointer to the sha structure to use for encryption
|
|
|
|
_Example_
|
|
\code
|
|
Sha sha[1];
|
|
if ((ret = wc_InitSha(sha)) != 0) {
|
|
WOLFSSL_MSG("wc_InitSha failed");
|
|
}
|
|
else {
|
|
wc_ShaUpdate(sha, data, len);
|
|
wc_ShaFinal(sha, hash);
|
|
}
|
|
\endcode
|
|
|
|
\sa wc_ShaHash
|
|
\sa wc_ShaUpdate
|
|
\sa wc_ShaFinal
|
|
*/
|
|
WOLFSSL_API int wc_InitSha(wc_Sha*);
|
|
|
|
/*!
|
|
\ingroup SHA
|
|
|
|
\brief Can be called to continually hash the provided byte array of
|
|
length len.
|
|
|
|
\return 0 Returned upon successfully adding the data to the digest.
|
|
|
|
\param sha pointer to the sha structure to use for encryption
|
|
\param data the data to be hashed
|
|
\param len length of data to be hashed
|
|
|
|
_Example_
|
|
\code
|
|
Sha sha[1];
|
|
byte data[] = { // Data to be hashed };
|
|
word32 len = sizeof(data);
|
|
|
|
if ((ret = wc_InitSha(sha)) != 0) {
|
|
WOLFSSL_MSG("wc_InitSha failed");
|
|
}
|
|
else {
|
|
wc_ShaUpdate(sha, data, len);
|
|
wc_ShaFinal(sha, hash);
|
|
}
|
|
\endcode
|
|
|
|
\sa wc_ShaHash
|
|
\sa wc_ShaFinal
|
|
\sa wc_InitSha
|
|
*/
|
|
WOLFSSL_API int wc_ShaUpdate(wc_Sha*, const byte*, word32);
|
|
|
|
/*!
|
|
\ingroup SHA
|
|
|
|
\brief Finalizes hashing of data. Result is placed into hash.
|
|
Resets state of sha struct.
|
|
|
|
\return 0 Returned upon successfully finalizing.
|
|
|
|
\param sha pointer to the sha structure to use for encryption
|
|
\param hash Byte array to hold hash value.
|
|
|
|
_Example_
|
|
\code
|
|
Sha sha[1];
|
|
byte data[] = { Data to be hashed };
|
|
word32 len = sizeof(data);
|
|
|
|
if ((ret = wc_InitSha(sha)) != 0) {
|
|
WOLFSSL_MSG("wc_InitSha failed");
|
|
}
|
|
else {
|
|
wc_ShaUpdate(sha, data, len);
|
|
wc_ShaFinal(sha, hash);
|
|
}
|
|
\endcode
|
|
|
|
\sa wc_ShaHash
|
|
\sa wc_InitSha
|
|
\sa wc_ShaGetHash
|
|
*/
|
|
WOLFSSL_API int wc_ShaFinal(wc_Sha*, byte*);
|
|
|
|
/*!
|
|
\ingroup SHA
|
|
|
|
\brief Used to clean up memory used by an initialized Sha struct.
|
|
Note: this is only supported if you have WOLFSSL_TI_HASH defined.
|
|
|
|
\return No returns.
|
|
|
|
\param sha Pointer to the Sha struct to free.
|
|
|
|
_Example_
|
|
\code
|
|
Sha sha;
|
|
wc_InitSha(&sha);
|
|
// Use sha
|
|
wc_ShaFree(&sha);
|
|
\endcode
|
|
|
|
\sa wc_InitSha
|
|
\sa wc_ShaUpdate
|
|
\sa wc_ShaFinal
|
|
*/
|
|
WOLFSSL_API void wc_ShaFree(wc_Sha*);
|
|
|
|
/*!
|
|
\ingroup SHA
|
|
|
|
\brief Gets hash data. Result is placed into hash. Does not reset state
|
|
of sha struct.
|
|
|
|
\return 0 Returned upon successfully finalizing.
|
|
|
|
\param sha pointer to the sha structure to use for encryption
|
|
\param hash Byte array to hold hash value.
|
|
|
|
_Example_
|
|
\code
|
|
Sha sha[1];
|
|
if ((ret = wc_InitSha(sha)) != 0) {
|
|
WOLFSSL_MSG("wc_InitSha failed");
|
|
}
|
|
else {
|
|
wc_ShaUpdate(sha, data, len);
|
|
wc_ShaGetHash(sha, hash);
|
|
}
|
|
\endcode
|
|
|
|
\sa wc_ShaHash
|
|
\sa wc_ShaFinal
|
|
\sa wc_InitSha
|
|
*/
|
|
WOLFSSL_API int wc_ShaGetHash(wc_Sha*, byte*);
|