netjack changes from torben (packet loss handling leads to "dummy" backend-like behav...
[jack.git] / jackd / md5.h
blobde5ddf39fb92dc20a09124635bf264fa498f1308
1 /*
2 * Declaration of functions and data types used for MD5 sum computing
3 * library functions. Copyright (C) 1995, 1996 Free Software
4 * Foundation, Inc. NOTE: The canonical source of this file is
5 * maintained with the GNU C Library. Bugs can be reported to
6 * bug-glibc@prep.ai.mit.edu.
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation; either version 2, or (at
11 * your option) any later version.
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21 * 02111-1307, USA.
26 * NOTE: during quick performance tests on a sun ultra and an alpha
27 * 255 300, the md5 libraries performed upwards of 3mb/sec. That
28 * included disk i/o on bobcat and panther.
31 #ifndef __MD5_H__
32 #define __MD5_H__
35 * Size of a standard MD5 signature in bytes. This definition is for
36 * external programs only. The MD5 routines themselves reference the
37 * signature as 4 unsigned 32-bit integers.
39 #define MD5_SIZE 16
42 * NOTE: the following is assumed to generate a 32-bit unsigned data
43 * type.
45 typedef unsigned int md5_uint32;
46 #define MAX_MD5_UINT32 ((md5_uint32)4294967295U)
49 * The MD5 algorithm works on blocks of characters of 64 bytes. This
50 * is an internal value only and is not necessary for external use.
52 #define MD5_BLOCK_SIZE 64
55 * Structure to save state of computation between the single steps.
57 typedef struct
59 md5_uint32 md_A; /* accumulater 1 */
60 md5_uint32 md_B; /* accumulater 2 */
61 md5_uint32 md_C; /* accumulater 3 */
62 md5_uint32 md_D; /* accumulater 4 */
64 md5_uint32 md_total[2]; /* totaling storage */
65 md5_uint32 md_buf_len; /* length of the storage buffer */
66 char md_buffer[MD5_BLOCK_SIZE * 2]; /* character storage buffer */
67 } md5_t;
69 /*<<<<<<<<<< The below prototypes are auto-generated by fillproto */
72 * md5_init
74 * DESCRIPTION:
76 * Initialize structure containing state of MD5 computation. (RFC 1321,
77 * 3.3: Step 3). This is for progressive MD5 calculations only. If
78 * you have the complete string available, md5_buffer should be used.
79 * md5_process should be called for each bunch of bytes and after the
80 * last process call, md5_finish should be called to get the
81 * signature.
83 * RETURNS:
85 * None.
87 * ARGUMENTS:
89 * md5_p - Pointer to md5 structure that we are initializing.
91 extern
92 void md5_init(md5_t *md5_p);
95 * md5_process
97 * DESCRIPTION:
99 * This function is used to progressively calculate a MD5 signature some
100 * number of bytes at a time. If you have the complete string
101 * available, md5_buffer should be used. The MD5 structure should
102 * have been initialized with md5_init and after the last process
103 * call, md5_finish should be called to get the results.
105 * RETURNS:
107 * None.
109 * ARGUMENTS:
111 * md5_p - Pointer to MD5 structure which we are progressively updating.
113 * buffer - A buffer of bytes whose MD5 signature we are calculating.
115 * buf_len - The length of the buffer.
117 extern
118 void md5_process(md5_t *md5_p, const void *buffer,
119 const unsigned int buf_len);
122 * md5_finish
124 * DESCRIPTION:
126 * Finish a progressing MD5 calculation and copy the resulting MD5
127 * signature into the result buffer which should be 16 bytes
128 * (MD5_SIZE). After this call, the MD5 structure is invalid.
130 * RETURNS:
132 * None.
134 * ARGUMENTS:
136 * md5_p - Pointer to MD5 structure which we are finishing.
138 * signature - A 16 byte buffer that will contain the MD5 signature.
140 extern
141 void md5_finish(md5_t *md5_p, void *signature);
144 * md5_buffer
146 * DESCRIPTION:
148 * This function is used to calculate a MD5 signature for a buffer of
149 * bytes. If you only have part of a buffer that you want to process
150 * then md5_init, md5_process, and md5_finish should be used.
152 * RETURNS:
154 * None.
156 * ARGUMENTS:
158 * buffer - A buffer of bytes whose MD5 signature we are calculating.
160 * buf_len - The length of the buffer.
162 * signature - A 16 byte buffer that will contain the MD5 signature.
164 extern
165 void md5_buffer(const char *buffer, const unsigned int buf_len,
166 void *signature);
169 * md5_sig_to_string
171 * DESCRIPTION:
173 * Convert a MD5 signature in a 16 byte buffer into a hexadecimal string
174 * representation.
176 * RETURNS:
178 * None.
180 * ARGUMENTS:
182 * signature - a 16 byte buffer that contains the MD5 signature.
184 * str - a string of charactes which should be at least 33 bytes long (2
185 * characters per MD5 byte and 1 for the \0).
187 * str_len - the length of the string.
189 extern
190 void md5_sig_to_string(void *signature, char *str, const int str_len);
193 * md5_sig_from_string
195 * DESCRIPTION:
197 * Convert a MD5 signature from a hexadecimal string representation into
198 * a 16 byte buffer.
200 * RETURNS:
202 * None.
204 * ARGUMENTS:
206 * signature - A 16 byte buffer that will contain the MD5 signature.
208 * str - A string of charactes which _must_ be at least 32 bytes long (2
209 * characters per MD5 byte).
211 extern
212 void md5_sig_from_string(void *signature, const char *str);
214 /*<<<<<<<<<< This is end of the auto-generated output from fillproto. */
216 #endif /* ! __MD5_H__ */