1238104Sdes#ifndef LDNS_SHA1_H 2238104Sdes#define LDNS_SHA1_H 3238104Sdes 4238104Sdes#ifdef __cplusplus 5238104Sdesextern "C" { 6238104Sdes#endif 7238104Sdes 8238104Sdes#define LDNS_SHA1_BLOCK_LENGTH 64 9238104Sdes#define LDNS_SHA1_DIGEST_LENGTH 20 10238104Sdes 11238104Sdestypedef struct { 12238104Sdes uint32_t state[5]; 13238104Sdes uint64_t count; 14238104Sdes unsigned char buffer[LDNS_SHA1_BLOCK_LENGTH]; 15238104Sdes} ldns_sha1_ctx; 16238104Sdes 17238104Sdesvoid ldns_sha1_init(ldns_sha1_ctx * context); 18238104Sdesvoid ldns_sha1_transform(uint32_t state[5], const unsigned char buffer[LDNS_SHA1_BLOCK_LENGTH]); 19238104Sdesvoid ldns_sha1_update(ldns_sha1_ctx *context, const unsigned char *data, unsigned int len); 20238104Sdesvoid ldns_sha1_final(unsigned char digest[LDNS_SHA1_DIGEST_LENGTH], ldns_sha1_ctx *context); 21238104Sdes 22238104Sdes/** 23238104Sdes * Convenience function to digest a fixed block of data at once. 24238104Sdes * 25238104Sdes * \param[in] data the data to digest 26238104Sdes * \param[in] data_len the length of data in bytes 27238104Sdes * \param[out] digest the length of data in bytes 28238104Sdes * This pointer MUST have LDNS_SHA1_DIGEST_LENGTH bytes 29238104Sdes * available 30238104Sdes * \return the SHA1 digest of the given data 31238104Sdes */ 32238104Sdesunsigned char *ldns_sha1(unsigned char *data, unsigned int data_len, unsigned char *digest); 33238104Sdes 34238104Sdes#ifdef __cplusplus 35238104Sdes} 36238104Sdes#endif 37238104Sdes 38238104Sdes#endif /* LDNS_SHA1_H */ 39