101e04c3fSmrg/* $OpenBSD: sha1.h,v 1.24 2012/12/05 23:19:57 deraadt Exp $ */ 201e04c3fSmrg 301e04c3fSmrg/* 401e04c3fSmrg * SHA-1 in C 501e04c3fSmrg * By Steve Reid <steve@edmweb.com> 601e04c3fSmrg * 100% Public Domain 701e04c3fSmrg */ 801e04c3fSmrg 901e04c3fSmrg#ifndef _SHA1_H 1001e04c3fSmrg#define _SHA1_H 1101e04c3fSmrg 1201e04c3fSmrg#include <stddef.h> 1301e04c3fSmrg#include <stdint.h> 1401e04c3fSmrg 1501e04c3fSmrg#define SHA1_BLOCK_LENGTH 64 1601e04c3fSmrg#define SHA1_DIGEST_LENGTH 20 1701e04c3fSmrg#define SHA1_DIGEST_STRING_LENGTH (SHA1_DIGEST_LENGTH * 2 + 1) 1801e04c3fSmrg 1901e04c3fSmrg#ifdef __cplusplus 2001e04c3fSmrgextern "C" { 2101e04c3fSmrg#endif 2201e04c3fSmrg 2301e04c3fSmrgtypedef struct _SHA1_CTX { 2401e04c3fSmrg uint32_t state[5]; 2501e04c3fSmrg uint64_t count; 2601e04c3fSmrg uint8_t buffer[SHA1_BLOCK_LENGTH]; 2701e04c3fSmrg} SHA1_CTX; 2801e04c3fSmrg 2901e04c3fSmrgvoid SHA1Init(SHA1_CTX *); 3001e04c3fSmrgvoid SHA1Pad(SHA1_CTX *); 3101e04c3fSmrgvoid SHA1Transform(uint32_t [5], const uint8_t [SHA1_BLOCK_LENGTH]); 3201e04c3fSmrgvoid SHA1Update(SHA1_CTX *, const uint8_t *, size_t); 3301e04c3fSmrgvoid SHA1Final(uint8_t [SHA1_DIGEST_LENGTH], SHA1_CTX *); 3401e04c3fSmrg 3501e04c3fSmrg#define HTONDIGEST(x) do { \ 3601e04c3fSmrg x[0] = htonl(x[0]); \ 3701e04c3fSmrg x[1] = htonl(x[1]); \ 3801e04c3fSmrg x[2] = htonl(x[2]); \ 3901e04c3fSmrg x[3] = htonl(x[3]); \ 4001e04c3fSmrg x[4] = htonl(x[4]); } while (0) 4101e04c3fSmrg 4201e04c3fSmrg#define NTOHDIGEST(x) do { \ 4301e04c3fSmrg x[0] = ntohl(x[0]); \ 4401e04c3fSmrg x[1] = ntohl(x[1]); \ 4501e04c3fSmrg x[2] = ntohl(x[2]); \ 4601e04c3fSmrg x[3] = ntohl(x[3]); \ 4701e04c3fSmrg x[4] = ntohl(x[4]); } while (0) 4801e04c3fSmrg 4901e04c3fSmrg#ifdef __cplusplus 5001e04c3fSmrg} 5101e04c3fSmrg#endif 5201e04c3fSmrg 5301e04c3fSmrg#endif /* _SHA1_H */ 54