/* */ #ifndef _D_MESSAGE_DIGEST_H_ #define _D_MESSAGE_DIGEST_H_ #include "common.h" #ifdef ENABLE_BITTORRENT #ifdef HAVE_LIBSSL #include #define MessageDigestContext EVP_MD_CTX #define sha1DigestInit(CTX) EVP_MD_CTX_init(&CTX) #define sha1DigestReset(CTX) EVP_DigestInit_ex(&CTX, EVP_sha1(), NULL) #define sha1DigestUpdate(CTX, DATA, LENGTH) EVP_DigestUpdate(&CTX, DATA, LENGTH) #define sha1DigestFinal(CTX, HASH) \ {\ int len;\ EVP_DigestFinal_ex(&CTX, HASH, (unsigned int*)&len);\ } #define sha1DigestFree(CTX) EVP_MD_CTX_cleanup(&CTX) #endif // HAVE_LIBSSL #ifdef HAVE_LIBGCRYPT #include #define MessageDigestContext gcry_md_hd_t #define sha1DigestInit(CTX) gcry_md_open(&CTX, GCRY_MD_SHA1, 0) #define sha1DigestReset(CTX) gcry_md_reset(CTX) #define sha1DigestUpdate(CTX, DATA, LENGTH) gcry_md_write(CTX, DATA, LENGTH) #define sha1DigestFinal(CTX, HASH) \ {\ gcry_md_final(CTX);\ memcpy(HASH, gcry_md_read(CTX, 0), 20);\ } #define sha1DigestFree(CTX) gcry_md_close(CTX) #endif // HAVE_LIBGCRYPT #endif // ENABLE_BITTORRENT #endif // _D_MESSAGE_DIGEST_H_