X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fwrbuf_sha1.c;fp=src%2Fwrbuf_sha1.c;h=d801a28fc67629ecf5e5253785e4b80c399280c0;hp=5627f6e0d8c1e5a0d163d6fd73344bdd51b79f70;hb=60f0955d87a511503ce48de0e99f697e112ff3d0;hpb=756129c2a4eaa8a0cc4e0acbc8b401083024c1e2 diff --git a/src/wrbuf_sha1.c b/src/wrbuf_sha1.c index 5627f6e..d801a28 100644 --- a/src/wrbuf_sha1.c +++ b/src/wrbuf_sha1.c @@ -20,10 +20,30 @@ #if HAVE_GCRYPT_H #include #endif +#if HAVE_NETTLE +#include +#endif int wrbuf_sha1_write(WRBUF b, const char *cp, size_t sz, int hexit) { -#if HAVE_GCRYPT_H +#if HAVE_NETTLE + struct sha1_ctx ctx; + uint8_t digest[SHA1_DIGEST_SIZE]; + + sha1_init(&ctx); + sha1_update(&ctx, sz, (uint8_t *) cp); + sha1_digest(&ctx, SHA1_DIGEST_SIZE, digest); + + if (hexit) + { + int i; + for (i = 0; i < SHA1_DIGEST_SIZE; i++) + wrbuf_printf(b, "%02x", digest[i]); + } + else + wrbuf_write(b, (const char *) digest, SHA1_DIGEST_SIZE); + return 0; +#elif HAVE_GCRYPT_H gcry_error_t e; gcry_md_hd_t hd; const unsigned char *digest_buf;