static int hashHash(const byte* data, word32 len, byte* hash, word32 algo, word32 hsize) { int ret = 0; #ifdef WOLFSSL_SMALL_STACK wolfssl_TI_Hash* hash_desc; #else wolfssl_TI_Hash hash_desc[1]; #endif #ifdef WOLFSSL_SMALL_STACK hash_desc = (wolfssl_TI_Hash*)XMALLOC(sizeof(wolfssl_TI_Hash), NULL, DYNAMIC_TYPE_TMP_BUFFER); if (hash_desc == NULL) return MEMORY_E; #endif if ((ret = hashInit(hash_desc)) != 0) { WOLFSSL_MSG("Hash Init failed"); } else { hashUpdate(hash_desc, data, len); hashFinal(hash_desc, hash, algo, hsize); } #ifdef WOLFSSL_SMALL_STACK XFREE(hash_desc, NULL, DYNAMIC_TYPE_TMP_BUFFER); #endif return ret; }
int main2() { string input_msg = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; auto hash = make_unique<OpenSSLSHA1>(); const char *cstr = input_msg.c_str(); int len = input_msg.size(); vector<byte> vec(cstr, cstr + len); hash->update(vec, 0, len); vector<byte> out; hash->hashFinal(out, 0); string actual = hexStr(out); cout << "using sha1 on input: " <<input_msg<< " got result(in hexa): " << actual << endl; return 0; }
WOLFSSL_API int wc_Sha256Final(Sha256* sha256, byte* hash) { return hashFinal((wolfssl_TI_Hash *)sha256, hash, SHAMD5_ALGO_SHA256, SHA256_DIGEST_SIZE) ; }
WOLFSSL_API int wc_Sha224Final(Sha224* sha224, byte* hash) { return hashFinal((wolfssl_TI_Hash *)sha224, hash, SHAMD5_ALGO_SHA224, SHA224_DIGEST_SIZE) ; }
WOLFSSL_API int wc_ShaFinal(Sha* sha, byte* hash) { return hashFinal((wolfssl_TI_Hash *)sha, hash, SHAMD5_ALGO_SHA1, SHA_DIGEST_SIZE) ; }
WOLFSSL_API void wc_Md5Final(Md5* md5, byte* hash) { hashFinal((wolfssl_TI_Hash *)md5, hash, SHAMD5_ALGO_MD5, MD5_DIGEST_SIZE) ; }