]>
Commit | Line | Data |
---|---|---|
acddc0ed | 1 | // SPDX-License-Identifier: BSD-3-Clause |
c1a03d47 | 2 | /* |
3 | * Copyright (C) 2004 6WIND | |
4 | * <Vincent.Jardin@6WIND.com> | |
5 | * All rights reserved. | |
6 | * | |
7 | * This MD5 code is Big endian and Little Endian compatible. | |
8 | */ | |
9 | ||
10 | /* | |
11 | * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. | |
12 | * All rights reserved. | |
c1a03d47 | 13 | */ |
14 | ||
15 | #ifndef _LIBZEBRA_MD5_H_ | |
16 | #define _LIBZEBRA_MD5_H_ | |
17 | ||
5e244469 RW |
18 | #ifdef __cplusplus |
19 | extern "C" { | |
20 | #endif | |
21 | ||
c1a03d47 | 22 | #define MD5_BUFLEN 64 |
23 | ||
24 | typedef struct { | |
25 | union { | |
d62a17ae | 26 | uint32_t md5_state32[4]; |
27 | uint8_t md5_state8[16]; | |
c1a03d47 | 28 | } md5_st; |
29 | ||
30 | #define md5_sta md5_st.md5_state32[0] | |
31 | #define md5_stb md5_st.md5_state32[1] | |
32 | #define md5_stc md5_st.md5_state32[2] | |
33 | #define md5_std md5_st.md5_state32[3] | |
34 | #define md5_st8 md5_st.md5_state8 | |
35 | ||
36 | union { | |
d62a17ae | 37 | uint64_t md5_count64; |
38 | uint8_t md5_count8[8]; | |
c1a03d47 | 39 | } md5_count; |
40 | #define md5_n md5_count.md5_count64 | |
41 | #define md5_n8 md5_count.md5_count8 | |
42 | ||
d62a17ae | 43 | uint md5_i; |
44 | uint8_t md5_buf[MD5_BUFLEN]; | |
c1a03d47 | 45 | } md5_ctxt; |
46 | ||
d62a17ae | 47 | extern void md5_init(md5_ctxt *); |
d7c0a89a | 48 | extern void md5_loop(md5_ctxt *, const void *, unsigned int); |
d62a17ae | 49 | extern void md5_pad(md5_ctxt *); |
50 | extern void md5_result(uint8_t *, md5_ctxt *); | |
c1a03d47 | 51 | |
52 | /* compatibility */ | |
53 | #define MD5_CTX md5_ctxt | |
54 | #define MD5Init(x) md5_init((x)) | |
55 | #define MD5Update(x, y, z) md5_loop((x), (y), (z)) | |
d62a17ae | 56 | #define MD5Final(x, y) \ |
57 | do { \ | |
58 | md5_pad((y)); \ | |
59 | md5_result((x), (y)); \ | |
60 | } while (0) | |
c1a03d47 | 61 | |
bed930fd | 62 | /* From RFC 2104 */ |
d62a17ae | 63 | void hmac_md5(unsigned char *text, int text_len, unsigned char *key, |
64 | int key_len, uint8_t *digest); | |
bed930fd | 65 | |
5e244469 RW |
66 | #ifdef __cplusplus |
67 | } | |
68 | #endif | |
69 | ||
c1a03d47 | 70 | #endif /* ! _LIBZEBRA_MD5_H_*/ |