6431
|
1 /* Declarations of functions and data types used for MD2 sum |
|
2 library functions. |
|
3 Copyright (C) 2000, 2001, 2003, 2005 Free Software Foundation, Inc. |
|
4 |
|
5 This program is free software; you can redistribute it and/or modify it |
|
6 under the terms of the GNU General Public License as published by the |
|
7 Free Software Foundation; either version 2, or (at your option) any |
|
8 later version. |
|
9 |
|
10 This program is distributed in the hope that it will be useful, |
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 GNU General Public License for more details. |
|
14 |
|
15 You should have received a copy of the GNU General Public License |
|
16 along with this program; if not, write to the Free Software Foundation, |
|
17 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ |
|
18 |
|
19 #ifndef MD2_H |
|
20 # define MD2_H 1 |
|
21 |
|
22 # include <stdio.h> |
|
23 # include <stddef.h> |
|
24 |
|
25 # define MD2_DIGEST_SIZE 16 |
|
26 |
|
27 /* Structure to save state of computation between the single steps. */ |
|
28 struct md2_ctx |
|
29 { |
|
30 unsigned char chksum[16], X[48], buf[16]; |
|
31 size_t curlen; |
|
32 }; |
|
33 |
|
34 |
|
35 /* Initialize structure containing state of computation. */ |
|
36 extern void md2_init_ctx (struct md2_ctx *ctx); |
|
37 |
|
38 /* Starting with the result of former calls of this function (or the |
|
39 initialization function update the context for the next LEN bytes |
|
40 starting at BUFFER. |
|
41 It is NOT required that LEN is a multiple of 64. */ |
|
42 extern void md2_process_block (const void *buffer, size_t len, |
|
43 struct md2_ctx *ctx); |
|
44 |
|
45 /* Starting with the result of former calls of this function (or the |
|
46 initialization function update the context for the next LEN bytes |
|
47 starting at BUFFER. |
|
48 It is NOT required that LEN is a multiple of 64. */ |
|
49 extern void md2_process_bytes (const void *buffer, size_t len, |
|
50 struct md2_ctx *ctx); |
|
51 |
|
52 /* Process the remaining bytes in the buffer and put result from CTX |
|
53 in first 16 bytes following RESBUF. The result is always in little |
|
54 endian byte order, so that a byte-wise output yields to the wanted |
|
55 ASCII representation of the message digest. |
|
56 |
|
57 IMPORTANT: On some systems it is required that RESBUF be correctly |
|
58 aligned for a 32 bits value. */ |
|
59 extern void *md2_finish_ctx (struct md2_ctx *ctx, void *resbuf); |
|
60 |
|
61 |
|
62 /* Put result from CTX in first 16 bytes following RESBUF. The result is |
|
63 always in little endian byte order, so that a byte-wise output yields |
|
64 to the wanted ASCII representation of the message digest. |
|
65 |
|
66 IMPORTANT: On some systems it is required that RESBUF is correctly |
|
67 aligned for a 32 bits value. */ |
|
68 extern void *md2_read_ctx (const struct md2_ctx *ctx, void *resbuf); |
|
69 |
|
70 |
|
71 /* Compute MD2 message digest for bytes read from STREAM. The |
|
72 resulting message digest number will be written into the 16 bytes |
|
73 beginning at RESBLOCK. */ |
|
74 extern int md2_stream (FILE *stream, void *resblock); |
|
75 |
|
76 /* Compute MD2 message digest for LEN bytes beginning at BUFFER. The |
|
77 result is always in little endian byte order, so that a byte-wise |
|
78 output yields to the wanted ASCII representation of the message |
|
79 digest. */ |
|
80 extern void *md2_buffer (const char *buffer, size_t len, void *resblock); |
|
81 |
|
82 #endif |