X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fwrbuf_sha1.c;h=d801a28fc67629ecf5e5253785e4b80c399280c0;hb=refs%2Ftags%2Fv5.15.0;hp=9412d1db4789d25a2ec17c7f29a7f823902fb0c1;hpb=7efed25c2ed807d32001e749f87f2eb300548c22;p=yaz-moved-to-github.git diff --git a/src/wrbuf_sha1.c b/src/wrbuf_sha1.c index 9412d1d..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; @@ -50,6 +70,11 @@ int wrbuf_sha1_write(WRBUF b, const char *cp, size_t sz, int hexit) #endif } +int wrbuf_sha1_puts(WRBUF b, const char *cp, int hexit) +{ + return wrbuf_sha1_write(b, cp, strlen(cp), hexit); +} + /* * Local variables: * c-basic-offset: 4