Annotation of embedaddon/bird/lib/sha1.h, revision 1.1.1.1
1.1 misho 1: /*
2: * BIRD Library -- SHA-1 Hash Function (FIPS 180-1, RFC 3174)
3: *
4: * (c) 2015 CZ.NIC z.s.p.o.
5: *
6: * Based on the code from libucw-6.4
7: * (c) 2008--2009 Martin Mares <mj@ucw.cz>
8: *
9: * Based on the code from libgcrypt-1.2.3, which is
10: * (c) 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
11: *
12: * Can be freely distributed and used under the terms of the GNU GPL.
13: */
14:
15: #ifndef _BIRD_SHA1_H_
16: #define _BIRD_SHA1_H_
17:
18: #include "nest/bird.h"
19:
20:
21: #define SHA1_SIZE 20 /* Size of the SHA1 hash in its binary representation */
22: #define SHA1_HEX_SIZE 41 /* Buffer length for a string containing SHA1 in hexadecimal format. */
23: #define SHA1_BLOCK_SIZE 64 /* SHA1 splits input to blocks of this size. */
24:
25:
26: /*
27: * Internal SHA1 state.
28: * You should use it just as an opaque handle only.
29: */
30: struct hash_context;
31:
32: struct sha1_context {
33: u32 h0, h1, h2, h3, h4;
34: byte buf[SHA1_BLOCK_SIZE];
35: uint nblocks;
36: uint count;
37: };
38:
39: void sha1_init(struct hash_context *ctx); /* Initialize new algorithm run in the @ctx context. **/
40: /*
41: * Push another @len bytes of data pointed to by @buf onto the SHA1 hash
42: * currently in @ctx. You can call this any times you want on the same hash (and
43: * you do not need to reinitialize it by @sha1_init()). It has the same effect
44: * as concatenating all the data together and passing them at once.
45: */
46: void sha1_update(struct hash_context *ctx, const byte *buf, uint len);
47: /*
48: * No more @sha1_update() calls will be done. This terminates the hash and
49: * returns a pointer to it.
50: *
51: * Note that the pointer points into data in the @ctx context. If it ceases to
52: * exist, the pointer becomes invalid.
53: */
54: byte *sha1_final(struct hash_context *ctx);
55:
56: /*
57: * A convenience one-shot function for SHA1 hash. It is equivalent to this
58: * snippet of code:
59: *
60: * sha1_context ctx;
61: * sha1_init(&ctx);
62: * sha1_update(&ctx, buffer, length);
63: * memcpy(outbuf, sha1_final(&ctx), SHA1_SIZE);
64: */
65: void sha1_hash_buffer(byte *outbuf, const byte *buffer, uint length);
66:
67:
68: #endif /* _BIRD_SHA1_H_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>