1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249 |
- /*!
- \ingroup SHA
- \brief This function initializes SHA3-224. This is automatically
- called by wc_Sha3_224Hash.
- \return 0 Returned upon successfully initializing
- \param sha3 pointer to the sha3 structure to use for encryption
- _Example_
- \code
- wc_Sha3 sha3[1];
- if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_224 failed");
- }
- else {
- wc_Sha3_224_Update(sha3, data, len);
- wc_Sha3_224_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_224Hash
- \sa wc_Sha3_224_Update
- \sa wc_Sha3_224_Final
- */
- int wc_InitSha3_224(wc_Sha3* sha3, void* heap, int devId);
- /*!
- \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 sha3 pointer to the sha3 structure to use for encryption
- \param data the data to be hashed
- \param len length of data to be hashed
- _Example_
- \code
- wc_Sha3 sha3[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_224 failed");
- }
- else {
- wc_Sha3_224_Update(sha3, data, len);
- wc_Sha3_224_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_224Hash
- \sa wc_Sha3_224_Final
- \sa wc_InitSha3_224
- */
- int wc_Sha3_224_Update(wc_Sha3* sha, const byte* data, word32 len);
- /*!
- \ingroup SHA
- \brief Finalizes hashing of data. Result is placed into hash.
- Resets state of sha3 struct.
- \return 0 Returned upon successfully finalizing.
- \param sha3 pointer to the sha3 structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Sha3 sha3[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_224 failed");
- }
- else {
- wc_Sha3_224_Update(sha3, data, len);
- wc_Sha3_224_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_224Hash
- \sa wc_Sha3_224_GetHash
- \sa wc_InitSha3_224
- */
- int wc_Sha3_224_Final(wc_Sha3* sha3, byte* hash);
- /*!
- \ingroup SHA
- \brief Resets the wc_Sha3 structure. Note: this is only supported
- if you have WOLFSSL_TI_HASH defined.
- \return none No returns.
- \param sha3 Pointer to the sha3 structure to be freed.
- _Example_
- \code
- wc_Sha3 sha3;
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_224(&sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_224 failed");
- }
- else {
- wc_Sha3_224_Update(&sha3, data, len);
- wc_Sha3_224_Final(&sha3, hash);
- wc_Sha3_224_Free(&sha3);
- }
- \endcode
- \sa wc_InitSha3_224
- \sa wc_Sha3_224_Update
- \sa wc_Sha3_224_Final
- */
- void wc_Sha3_224_Free(wc_Sha3*);
- /*!
- \ingroup SHA
- \brief Gets hash data. Result is placed into hash. Does not
- reset state of sha3 struct.
- \return 0 Returned upon successful copying of the hash.
- \param sha3 pointer to the sha3 structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Sha3 sha3[1];
- if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_224 failed");
- }
- else {
- wc_Sha3_224_Update(sha3, data, len);
- wc_Sha3_224_GetHash(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_224Hash
- \sa wc_Sha3_224_Final
- \sa wc_InitSha3_224
- \sa wc_Sha3_224_Copy
- */
- int wc_Sha3_224_GetHash(wc_Sha3* sha3, byte* hash);
- /*!
- \ingroup SHA
- \brief Copy the state of the hash.
- \return 0 Returned upon successful copying.
- \param sha3 pointer to the sha3 structure to copy
- \param dst pointer to the sha3 structure to copy into
- _Example_
- \code
- wc_Sha3 sha3[1];
- wc_Sha3 sha3_dup[1];
- if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_224 failed");
- }
- else {
- wc_Sha3_224_Update(sha3, data, len);
- wc_Sha3_224_Copy(sha3, sha3_dup);
- }
- \endcode
- \sa wc_Sha3_224Hash
- \sa wc_Sha3_224_Final
- \sa wc_InitSha3_224
- \sa wc_Sha3_224_GetHash
- */
- int wc_Sha3_224_Copy(wc_Sha3* sha3, wc_Sha3* dst);
- /*!
- \ingroup SHA
- \brief This function initializes SHA3-256. This is automatically
- called by wc_Sha3_256Hash.
- \return 0 Returned upon successfully initializing
- \param sha3 pointer to the sha3 structure to use for encryption
- _Example_
- \code
- wc_Sha3 sha3[1];
- if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_256 failed");
- }
- else {
- wc_Sha3_256_Update(sha3, data, len);
- wc_Sha3_256_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_256Hash
- \sa wc_Sha3_256_Update
- \sa wc_Sha3_256_Final
- */
- int wc_InitSha3_256(wc_Sha3* sha3, void* heap, int devId);
- /*!
- \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 sha3 pointer to the sha3 structure to use for encryption
- \param data the data to be hashed
- \param len length of data to be hashed
- _Example_
- \code
- wc_Sha3 sha3[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_256 failed");
- }
- else {
- wc_Sha3_256_Update(sha3, data, len);
- wc_Sha3_256_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_256Hash
- \sa wc_Sha3_256_Final
- \sa wc_InitSha3_256
- */
- int wc_Sha3_256_Update(wc_Sha3* sha, const byte* data, word32 len);
- /*!
- \ingroup SHA
- \brief Finalizes hashing of data. Result is placed into hash.
- Resets state of sha3 struct.
- \return 0 Returned upon successfully finalizing.
- \param sha3 pointer to the sha3 structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Sha3 sha3[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_256 failed");
- }
- else {
- wc_Sha3_256_Update(sha3, data, len);
- wc_Sha3_256_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_256Hash
- \sa wc_Sha3_256_GetHash
- \sa wc_InitSha3_256
- */
- int wc_Sha3_256_Final(wc_Sha3* sha3, byte* hash);
- /*!
- \ingroup SHA
- \brief Resets the wc_Sha3 structure. Note: this is only supported
- if you have WOLFSSL_TI_HASH defined.
- \return none No returns.
- \param sha3 Pointer to the sha3 structure to be freed.
- _Example_
- \code
- wc_Sha3 sha3;
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_256(&sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_256 failed");
- }
- else {
- wc_Sha3_256_Update(&sha3, data, len);
- wc_Sha3_256_Final(&sha3, hash);
- wc_Sha3_256_Free(&sha3);
- }
- \endcode
- \sa wc_InitSha3_256
- \sa wc_Sha3_256_Update
- \sa wc_Sha3_256_Final
- */
- void wc_Sha3_256_Free(wc_Sha3*);
- /*!
- \ingroup SHA
- \brief Gets hash data. Result is placed into hash. Does not
- reset state of sha3 struct.
- \return 0 Returned upon successful copying of the hash.
- \param sha3 pointer to the sha3 structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Sha3 sha3[1];
- if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_256 failed");
- }
- else {
- wc_Sha3_256_Update(sha3, data, len);
- wc_Sha3_256_GetHash(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_256Hash
- \sa wc_Sha3_256_Final
- \sa wc_InitSha3_256
- \sa wc_Sha3_256_Copy
- */
- int wc_Sha3_256_GetHash(wc_Sha3* sha3, byte* hash);
- /*!
- \ingroup SHA
- \brief Copy the state of the hash.
- \return 0 Returned upon successful copying.
- \param sha3 pointer to the sha3 structure to copy
- \param dst pointer to the sha3 structure to copy into
- _Example_
- \code
- wc_Sha3 sha3[1];
- wc_Sha3 sha3_dup[1];
- if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_256 failed");
- }
- else {
- wc_Sha3_256_Update(sha3, data, len);
- wc_Sha3_256_Copy(sha3, sha3_dup);
- }
- \endcode
- \sa wc_Sha3_256Hash
- \sa wc_Sha3_256_Final
- \sa wc_InitSha3_256
- \sa wc_Sha3_256_GetHash
- */
- int wc_Sha3_256_Copy(wc_Sha3* sha3, wc_Sha3* dst);
- /*!
- \ingroup SHA
- \brief This function initializes SHA3-384. This is automatically
- called by wc_Sha3_384Hash.
- \return 0 Returned upon successfully initializing
- \param sha3 pointer to the sha3 structure to use for encryption
- _Example_
- \code
- wc_Sha3 sha3[1];
- if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_384 failed");
- }
- else {
- wc_Sha3_384_Update(sha3, data, len);
- wc_Sha3_384_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_384Hash
- \sa wc_Sha3_384_Update
- \sa wc_Sha3_384_Final
- */
- int wc_InitSha3_384(wc_Sha3* sha3, void* heap, int devId);
- /*!
- \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 sha3 pointer to the sha3 structure to use for encryption
- \param data the data to be hashed
- \param len length of data to be hashed
- _Example_
- \code
- wc_Sha3 sha3[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_384 failed");
- }
- else {
- wc_Sha3_384_Update(sha3, data, len);
- wc_Sha3_384_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_384Hash
- \sa wc_Sha3_384_Final
- \sa wc_InitSha3_384
- */
- int wc_Sha3_384_Update(wc_Sha3* sha, const byte* data, word32 len);
- /*!
- \ingroup SHA
- \brief Finalizes hashing of data. Result is placed into hash.
- Resets state of sha3 struct.
- \return 0 Returned upon successfully finalizing.
- \param sha3 pointer to the sha3 structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Sha3 sha3[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_384 failed");
- }
- else {
- wc_Sha3_384_Update(sha3, data, len);
- wc_Sha3_384_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_384Hash
- \sa wc_Sha3_384_GetHash
- \sa wc_InitSha3_384
- */
- int wc_Sha3_384_Final(wc_Sha3* sha3, byte* hash);
- /*!
- \ingroup SHA
- \brief Resets the wc_Sha3 structure. Note: this is only supported
- if you have WOLFSSL_TI_HASH defined.
- \return none No returns.
- \param sha3 Pointer to the sha3 structure to be freed.
- _Example_
- \code
- wc_Sha3 sha3;
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_384(&sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_384 failed");
- }
- else {
- wc_Sha3_384_Update(&sha3, data, len);
- wc_Sha3_384_Final(&sha3, hash);
- wc_Sha3_384_Free(&sha3);
- }
- \endcode
- \sa wc_InitSha3_384
- \sa wc_Sha3_384_Update
- \sa wc_Sha3_384_Final
- */
- void wc_Sha3_384_Free(wc_Sha3*);
- /*!
- \ingroup SHA
- \brief Gets hash data. Result is placed into hash. Does not
- reset state of sha3 struct.
- \return 0 Returned upon successful copying of the hash.
- \param sha3 pointer to the sha3 structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Sha3 sha3[1];
- if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_38384ailed");
- }
- else {
- wc_Sha3_384_Update(sha3, data, len);
- wc_Sha3_384_GetHash(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_384Hash
- \sa wc_Sha3_384_Final
- \sa wc_InitSha3_384
- \sa wc_Sha3_384_Copy
- */
- int wc_Sha3_384_GetHash(wc_Sha3* sha3, byte* hash);
- /*!
- \ingroup SHA
- \brief Copy the state of the hash.
- \return 0 Returned upon successful copying.
- \param sha3 pointer to the sha3 structure to copy
- \param dst pointer to the sha3 structure to copy into
- _Example_
- \code
- wc_Sha3 sha3[1];
- wc_Sha3 sha3_dup[1];
- if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_384 failed");
- }
- else {
- wc_Sha3_384_Update(sha3, data, len);
- wc_Sha3_384_Copy(sha3, sha3_dup);
- }
- \endcode
- \sa wc_Sha3_384Hash
- \sa wc_Sha3_384_Final
- \sa wc_InitSha3_384
- \sa wc_Sha3_384_GetHash
- */
- int wc_Sha3_384_Copy(wc_Sha3* sha3, wc_Sha3* dst);
- /*!
- \ingroup SHA
- \brief This function initializes SHA3-512. This is automatically
- called by wc_Sha3_512Hash.
- \return 0 Returned upon successfully initializing
- \param sha3 pointer to the sha3 structure to use for encryption
- _Example_
- \code
- wc_Sha3 sha3[1];
- if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_512 failed");
- }
- else {
- wc_Sha3_512_Update(sha3, data, len);
- wc_Sha3_512_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_512Hash
- \sa wc_Sha3_512_Update
- \sa wc_Sha3_512_Final
- */
- int wc_InitSha3_512(wc_Sha3* sha3, void* heap, int devId);
- /*!
- \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 sha3 pointer to the sha3 structure to use for encryption
- \param data the data to be hashed
- \param len length of data to be hashed
- _Example_
- \code
- wc_Sha3 sha3[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_512 failed");
- }
- else {
- wc_Sha3_512_Update(sha3, data, len);
- wc_Sha3_512_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_512Hash
- \sa wc_Sha3_512_Final
- \sa wc_InitSha3_512
- */
- int wc_Sha3_512_Update(wc_Sha3* sha, const byte* data, word32 len);
- /*!
- \ingroup SHA
- \brief Finalizes hashing of data. Result is placed into hash.
- Resets state of sha3 struct.
- \return 0 Returned upon successfully finalizing.
- \param sha3 pointer to the sha3 structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Sha3 sha3[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_512 failed");
- }
- else {
- wc_Sha3_512_Update(sha3, data, len);
- wc_Sha3_512_Final(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_512Hash
- \sa wc_Sha3_512_GetHash
- \sa wc_InitSha3_512
- */
- int wc_Sha3_512_Final(wc_Sha3* sha3, byte* hash);
- /*!
- \ingroup SHA
- \brief Resets the wc_Sha3 structure. Note: this is only supported
- if you have WOLFSSL_TI_HASH defined.
- \return none No returns.
- \param sha3 Pointer to the sha3 structure to be freed.
- _Example_
- \code
- wc_Sha3 sha3;
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitSha3_512(&sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_512 failed");
- }
- else {
- wc_Sha3_512_Update(&sha3, data, len);
- wc_Sha3_512_Final(&sha3, hash);
- wc_Sha3_512_Free(&sha3);
- }
- \endcode
- \sa wc_InitSha3_512
- \sa wc_Sha3_512_Update
- \sa wc_Sha3_512_Final
- */
- void wc_Sha3_512_Free(wc_Sha3*);
- /*!
- \ingroup SHA
- \brief Gets hash data. Result is placed into hash. Does not
- reset state of sha3 struct.
- \return 0 Returned upon successful copying of the hash.
- \param sha3 pointer to the sha3 structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Sha3 sha3[1];
- if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_512 failed");
- }
- else {
- wc_Sha3_512_Update(sha3, data, len);
- wc_Sha3_512_GetHash(sha3, hash);
- }
- \endcode
- \sa wc_Sha3_512Hash
- \sa wc_Sha3_512_Final
- \sa wc_InitSha3_512
- \sa wc_Sha3_512_Copy
- */
- int wc_Sha3_512_GetHash(wc_Sha3* sha3, byte* hash);
- /*!
- \ingroup SHA
- \brief Copy the state of the hash.
- \return 0 Returned upon successful copying.
- \param sha3 pointer to the sha3 structure to copy
- \param dst pointer to the sha3 structure to copy into
- _Example_
- \code
- wc_Sha3 sha3[1];
- wc_Sha3 sha3_dup[1];
- if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitSha3_512 failed");
- }
- else {
- wc_Sha3_512_Update(sha3, data, len);
- wc_Sha3_512_Copy(sha3, sha3_dup);
- }
- \endcode
- \sa wc_Sha3_512Hash
- \sa wc_Sha3_512_Final
- \sa wc_InitSha3_512
- \sa wc_Sha3_512_GetHash
- */
- int wc_Sha3_512_Copy(wc_Sha3* sha3, wc_Sha3* dst);
- /*!
- \ingroup SHA
- \brief This function initializes SHAKE-128. This is automatically
- called by wc_Shake128Hash.
- \return 0 Returned upon successfully initializing
- \param shake pointer to the shake structure to use for encryption
- _Example_
- \code
- wc_Shake shake[1];
- if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake128 failed");
- }
- else {
- wc_Shake128_Update(shake, data, len);
- wc_Shake128_Final(shake, hash);
- }
- \endcode
- \sa wc_Shake128Hash
- \sa wc_Shake128_Update
- \sa wc_Shake128_Final
- */
- int wc_InitShake128(wc_Shake* shake, void* heap, int devId);
- /*!
- \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 shake pointer to the shake structure to use for encryption
- \param data the data to be hashed
- \param len length of data to be hashed
- _Example_
- \code
- wc_Shake shake[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake128 failed");
- }
- else {
- wc_Shake128_Update(shake, data, len);
- wc_Shake128_Final(shake, hash);
- }
- \endcode
- \sa wc_Shake128Hash
- \sa wc_Shake128_Final
- \sa wc_InitShake128
- */
- int wc_Shake128_Update(wc_Shake* sha, const byte* data, word32 len);
- /*!
- \ingroup SHA
- \brief Finalizes hashing of data. Result is placed into hash.
- Resets state of shake struct.
- \return 0 Returned upon successfully finalizing.
- \param shake pointer to the shake structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Shake shake[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake128 failed");
- }
- else {
- wc_Shake128_Update(shake, data, len);
- wc_Shake128_Final(shake, hash);
- }
- \endcode
- \sa wc_Shake128Hash
- \sa wc_Shake128_GetHash
- \sa wc_InitShake128
- */
- int wc_Shake128_Final(wc_Shake* shake, byte* hash);
- /*!
- \ingroup SHA
- \brief Called to absorb the provided byte array of length len. Cannot
- be called incrementally.
- \return 0 Returned upon successfully absorbed the data.
- \param shake pointer to the shake structure to use for encryption
- \param data the data to be absorbed
- \param len length of data to be absorbed
- _Example_
- \code
- wc_Shake shake[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- byte out[2 * WC_SHA3_128_BLOCK_SIZE];
- int blocks = 2;
- if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake128 failed");
- }
- else {
- wc_Shake128_Absorb(shake, data, len);
- wc_Shake128_SqueezeBlocks(shake, out, blocks);
- }
- \endcode
- \sa wc_Shake128_SqueezeBlocks
- \sa wc_InitShake128
- */
- int wc_Shake128_Absorb(wc_Shake* sha, const byte* data, word32 len);
- /*!
- \ingroup SHA
- \brief Squeeze out more blocks of data. Result is placed into out. Can be
- called inrementally.
- \return 0 Returned upon successfully squeezing.
- \param shake pointer to the shake structure to use for encryption
- \param hash Byte array to hold output.
- \param blocks Number of blocks to squeeze out. Each block is
- WC_SHA3_128_BLOCK_SIZE bytes in length.
- _Example_
- \code
- wc_Shake shake[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- byte out[2 * WC_SHA3_128_BLOCK_SIZE];
- int blocks = 2;
- if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake128 failed");
- }
- else {
- wc_Shake128_Absorb(shake, data, len);
- wc_Shake128_SqueezeBlocks(shake, out, blocks);
- }
- \endcode
- \sa wc_Shake128_Absorb
- \sa wc_InitShake128
- */
- int wc_Shake128_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt);
- /*!
- \ingroup SHA
- \brief Resets the wc_Shake structure. Note: this is only supported
- if you have WOLFSSL_TI_HASH defined.
- \return none No returns.
- \param shake Pointer to the shake structure to be freed.
- _Example_
- \code
- wc_Shake shake;
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitShake128(&shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake128 failed");
- }
- else {
- wc_Shake128_Update(&shake, data, len);
- wc_Shake128_Final(&shake, hash);
- wc_Shake128_Free(&shake);
- }
- \endcode
- \sa wc_InitShake128
- \sa wc_Shake128_Update
- \sa wc_Shake128_Final
- */
- void wc_Shake128_Free(wc_Shake*);
- /*!
- \ingroup SHA
- \brief Gets hash data. Result is placed into hash. Does not
- reset state of shake struct.
- \return 0 Returned upon successful copying of the hash.
- \param shake pointer to the shake structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Shake shake[1];
- if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake128 failed");
- }
- else {
- wc_Shake128_Update(shake, data, len);
- wc_Shake128_GetHash(shake, hash);
- }
- \endcode
- \sa wc_Shake128Hash
- \sa wc_Shake128_Final
- \sa wc_InitShake128
- \sa wc_Shake128_Copy
- */
- int wc_Shake128_GetHash(wc_Shake* shake, byte* hash);
- /*!
- \ingroup SHA
- \brief Copy the state of the hash.
- \return 0 Returned upon successful copying.
- \param shake pointer to the shake structure to copy
- \param dst pointer to the shake structure to copy into
- _Example_
- \code
- wc_Shake shake[1];
- wc_Shake shake_dup[1];
- if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake128 failed");
- }
- else {
- wc_Shake128_Update(shake, data, len);
- wc_Shake128_Copy(shake, shake_dup);
- }
- \endcode
- \sa wc_Shake128Hash
- \sa wc_Shake128_Final
- \sa wc_InitShake128
- \sa wc_Shake128_GetHash
- */
- int wc_Shake128_Copy(wc_Shake* shake, wc_Shake* dst);
- /*!
- \ingroup SHA
- \brief This function initializes SHAKE-256. This is automatically
- called by wc_Shake256Hash.
- \return 0 Returned upon successfully initializing
- \param shake pointer to the shake structure to use for encryption
- _Example_
- \code
- wc_Shake shake[1];
- if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake256 failed");
- }
- else {
- wc_Shake256_Update(shake, data, len);
- wc_Shake256_Final(shake, hash);
- }
- \endcode
- \sa wc_Shake256Hash
- \sa wc_Shake256_Update
- \sa wc_Shake256_Final
- */
- int wc_InitShake256(wc_Shake* shake, void* heap, int devId);
- /*!
- \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 shake pointer to the shake structure to use for encryption
- \param data the data to be hashed
- \param len length of data to be hashed
- _Example_
- \code
- wc_Shake shake[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake256 failed");
- }
- else {
- wc_Shake256_Update(shake, data, len);
- wc_Shake256_Final(shake, hash);
- }
- \endcode
- \sa wc_Shake256Hash
- \sa wc_Shake256_Final
- \sa wc_InitShake256
- */
- int wc_Shake256_Update(wc_Shake* sha, const byte* data, word32 len);
- /*!
- \ingroup SHA
- \brief Finalizes hashing of data. Result is placed into hash.
- Resets state of shake struct.
- \return 0 Returned upon successfully finalizing.
- \param shake pointer to the shake structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Shake shake[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake256 failed");
- }
- else {
- wc_Shake256_Update(shake, data, len);
- wc_Shake256_Final(shake, hash);
- }
- \endcode
- \sa wc_Shake256Hash
- \sa wc_Shake256_GetHash
- \sa wc_InitShake256
- */
- int wc_Shake256_Final(wc_Shake* shake, byte* hash);
- /*!
- \ingroup SHA
- \brief Called to absorb the provided byte array of length len. Cannot
- be called incrementally.
- \return 0 Returned upon successfully absorbed the data.
- \param shake pointer to the shake structure to use for encryption
- \param data the data to be absorbed
- \param len length of data to be absorbed
- _Example_
- \code
- wc_Shake shake[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- byte out[2 * WC_SHA3_256_BLOCK_SIZE];
- int blocks = 2;
- if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake256 failed");
- }
- else {
- wc_Shake256_Absorb(shake, data, len);
- wc_Shake256_SqueezeBlocks(shake, out, blocks);
- }
- \endcode
- \sa wc_Shake256_SqueezeBlocks
- \sa wc_InitShake256
- */
- int wc_Shake256_Absorb(wc_Shake* sha, const byte* data, word32 len);
- /*!
- \ingroup SHA
- \brief Squeeze out more blocks of data. Result is placed into out. Can be
- called incrementally.
- \return 0 Returned upon successfully squeezing.
- \param shake pointer to the shake structure to use for encryption
- \param hash Byte array to hold output.
- \param blocks Number of blocks to squeeze out. Each block is
- WC_SHA3_256_BLOCK_SIZE bytes in length.
- _Example_
- \code
- wc_Shake shake[1];
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- byte out[2 * WC_SHA3_256_BLOCK_SIZE];
- int blocks = 2;
- if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake256 failed");
- }
- else {
- wc_Shake256_Absorb(shake, data, len);
- wc_Shake256_SqueezeBlocks(shake, out, blocks);
- }
- \endcode
- \sa wc_Shake256_Absorb
- \sa wc_InitShake256
- */
- int wc_Shake256_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt);
- /*!
- \ingroup SHA
- \brief Resets the wc_Shake structure. Note: this is only supported
- if you have WOLFSSL_TI_HASH defined.
- \return none No returns.
- \param shake Pointer to the shake structure to be freed.
- _Example_
- \code
- wc_Shake shake;
- byte data[] = { Data to be hashed };
- word32 len = sizeof(data);
- if ((ret = wc_InitShake256(&shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake256 failed");
- }
- else {
- wc_Shake256_Update(&shake, data, len);
- wc_Shake256_Final(&shake, hash);
- wc_Shake256_Free(&shake);
- }
- \endcode
- \sa wc_InitShake256
- \sa wc_Shake256_Update
- \sa wc_Shake256_Final
- */
- void wc_Shake256_Free(wc_Shake*);
- /*!
- \ingroup SHA
- \brief Gets hash data. Result is placed into hash. Does not
- reset state of shake struct.
- \return 0 Returned upon successful copying of the hash.
- \param shake pointer to the shake structure to use for encryption
- \param hash Byte array to hold hash value.
- _Example_
- \code
- wc_Shake shake[1];
- if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake256 failed");
- }
- else {
- wc_Shake256_Update(shake, data, len);
- wc_Shake256_GetHash(shake, hash);
- }
- \endcode
- \sa wc_Shake256Hash
- \sa wc_Shake256_Final
- \sa wc_InitShake256
- \sa wc_Shake256_Copy
- */
- int wc_Shake256_GetHash(wc_Shake* shake, byte* hash);
- /*!
- \ingroup SHA
- \brief Copy the state of the hash.
- \return 0 Returned upon successful copying.
- \param shake pointer to the shake structure to copy
- \param dst pointer to the shake structure to copy into
- _Example_
- \code
- wc_Shake shake[1];
- wc_Shake shake_dup[1];
- if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
- WOLFSSL_MSG("wc_InitShake256 failed");
- }
- else {
- wc_Shake256_Update(shake, data, len);
- wc_Shake256_Copy(shake, shake_dup);
- }
- \endcode
- \sa wc_Shake256Hash
- \sa wc_Shake256_Final
- \sa wc_InitShake256
- \sa wc_Shake256_GetHash
- */
- int wc_Shake256_Copy(wc_Shake* shake, wc_Shake* dst);
|