180 lines
4.1 KiB
C
180 lines
4.1 KiB
C
/*!
|
|
\ingroup MD5
|
|
|
|
\brief This function initializes md5. This is automatically
|
|
called by wc_Md5Hash.
|
|
|
|
\return 0 Returned upon successfully initializing.
|
|
\return BAD_FUNC_ARG Returned if the Md5 structure is passed
|
|
as a NULL value.
|
|
|
|
\param md5 pointer to the md5 structure to use for encryption
|
|
|
|
_Example_
|
|
\code
|
|
Md5 md5;
|
|
byte* hash;
|
|
if ((ret = wc_InitMd5(&md5)) != 0) {
|
|
WOLFSSL_MSG("wc_Initmd5 failed");
|
|
}
|
|
else {
|
|
ret = wc_Md5Update(&md5, data, len);
|
|
if (ret != 0) {
|
|
// Md5 Update Failure Case.
|
|
}
|
|
ret = wc_Md5Final(&md5, hash);
|
|
if (ret != 0) {
|
|
// Md5 Final Failure Case.
|
|
}
|
|
}
|
|
\endcode
|
|
|
|
\sa wc_Md5Hash
|
|
\sa wc_Md5Update
|
|
\sa wc_Md5Final
|
|
*/
|
|
WOLFSSL_API int wc_InitMd5(wc_Md5*);
|
|
|
|
/*!
|
|
\ingroup MD5
|
|
|
|
\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.
|
|
\return BAD_FUNC_ARG Returned if the Md5 structure is NULL or if
|
|
data is NULL and len is greater than zero. The function should
|
|
not return an error if the data parameter is NULL and len is zero.
|
|
|
|
\param md5 pointer to the md5 structure to use for encryption
|
|
\param data the data to be hashed
|
|
\param len length of data to be hashed
|
|
|
|
_Example_
|
|
\code
|
|
Md5 md5;
|
|
byte data[] = { Data to be hashed };
|
|
word32 len = sizeof(data);
|
|
|
|
if ((ret = wc_InitMd5(&md5)) != 0) {
|
|
WOLFSSL_MSG("wc_Initmd5 failed");
|
|
}
|
|
else {
|
|
ret = wc_Md5Update(&md5, data, len);
|
|
if (ret != 0) {
|
|
// Md5 Update Error Case.
|
|
}
|
|
ret = wc_Md5Final(&md5, hash);
|
|
if (ret != 0) {
|
|
// Md5 Final Error Case.
|
|
}
|
|
}
|
|
\endcode
|
|
|
|
\sa wc_Md5Hash
|
|
\sa wc_Md5Final
|
|
\sa wc_InitMd5
|
|
*/
|
|
WOLFSSL_API int wc_Md5Update(wc_Md5*, const byte*, word32);
|
|
|
|
/*!
|
|
\ingroup MD5
|
|
|
|
\brief Finalizes hashing of data. Result is placed into hash. Md5
|
|
Struct is reset. Note: This function will also return the result
|
|
of calling IntelQaSymMd5() in the case that HAVE_INTEL_QA is defined.
|
|
|
|
\return 0 Returned upon successfully finalizing.
|
|
\return BAD_FUNC_ARG Returned if the Md5 structure or hash pointer
|
|
is passed in NULL.
|
|
|
|
\param md5 pointer to the md5 structure to use for encryption
|
|
\param hash Byte array to hold hash value.
|
|
|
|
_Example_
|
|
\code
|
|
md5 md5[1];
|
|
byte data[] = { Data to be hashed };
|
|
word32 len = sizeof(data);
|
|
|
|
if ((ret = wc_InitMd5(md5)) != 0) {
|
|
WOLFSSL_MSG("wc_Initmd5 failed");
|
|
}
|
|
else {
|
|
ret = wc_Md5Update(md5, data, len);
|
|
if (ret != 0) {
|
|
// Md5 Update Failure Case.
|
|
}
|
|
ret = wc_Md5Final(md5, hash);
|
|
if (ret != 0) {
|
|
// Md5 Final Failure Case.
|
|
}
|
|
}
|
|
\endcode
|
|
|
|
\sa wc_Md5Hash
|
|
\sa wc_InitMd5
|
|
\sa wc_Md5GetHash
|
|
*/
|
|
WOLFSSL_API int wc_Md5Final(wc_Md5*, byte*);
|
|
|
|
/*!
|
|
\ingroup MD5
|
|
|
|
\brief Resets the Md5 structure. Note: this is only supported if
|
|
you have WOLFSSL_TI_HASH defined.
|
|
|
|
\return none No returns.
|
|
|
|
\param md5 Pointer to the Md5 structure to be reset.
|
|
|
|
_Example_
|
|
\code
|
|
Md5 md5;
|
|
byte data[] = { Data to be hashed };
|
|
word32 len = sizeof(data);
|
|
|
|
if ((ret = wc_InitMd5(&md5)) != 0) {
|
|
WOLFSSL_MSG("wc_InitMd5 failed");
|
|
}
|
|
else {
|
|
wc_Md5Update(&md5, data, len);
|
|
wc_Md5Final(&md5, hash);
|
|
wc_Md5Free(&md5);
|
|
}
|
|
\endcode
|
|
|
|
\sa wc_InitMd5
|
|
\sa wc_Md5Update
|
|
\sa wc_Md5Final
|
|
*/
|
|
WOLFSSL_API void wc_Md5Free(wc_Md5*);
|
|
|
|
/*!
|
|
\ingroup MD5
|
|
|
|
\brief Gets hash data. Result is placed into hash. Md5 struct
|
|
is not reset.
|
|
|
|
\return none No returns
|
|
|
|
\param md5 pointer to the md5 structure to use for encryption.
|
|
\param hash Byte array to hold hash value.
|
|
|
|
_Example_
|
|
\code
|
|
md5 md5[1];
|
|
if ((ret = wc_InitMd5(md5)) != 0) {
|
|
WOLFSSL_MSG("wc_Initmd5 failed");
|
|
}
|
|
else {
|
|
wc_Md5Update(md5, data, len);
|
|
wc_Md5GetHash(md5, hash);
|
|
}
|
|
\endcode
|
|
|
|
\sa wc_Md5Hash
|
|
\sa wc_Md5Final
|
|
\sa wc_InitMd5
|
|
*/
|
|
WOLFSSL_API int wc_Md5GetHash(wc_Md5*, byte*);
|