pkg/kamailio/fedora/16: Updated rel in .spec to dev2
[sip-router] / md5.h
1 /*
2  * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
3  * rights reserved.
4  * 
5  * License to copy and use this software is granted provided that it
6  * is identified as the "RSA Data Security, Inc. MD5 Message-Digest
7  * Algorithm" in all material mentioning or referencing this software
8  * or this function.
9  * 
10  * License is also granted to make and use derivative works provided
11  * that such works are identified as "derived from the RSA Data
12  * Security, Inc. MD5 Message-Digest Algorithm" in all material
13  * mentioning or referencing the derived work.
14  * 
15  * RSA Data Security, Inc. makes no representations concerning either
16  * the merchantability of this software or the suitability of this
17  * software for any particular purpose. It is provided "as is"
18  * without express or implied warranty of any kind.
19  * 
20  * These notices must be retained in any copies of any part of this
21  * documentation and/or software.
22  */
23
24 /*!
25  * \file
26  * \brief SIP-router core :: md5 hash support
27  * \ingroup core
28  * Module: \ref core
29  */
30
31 #ifndef MD5_H
32 #define MD5_H
33
34 /**
35  * \brief MD5 context
36  */
37 typedef struct {
38   unsigned int state[4];                                   /* state (ABCD) */
39   unsigned int count[2];        /* number of bits, modulo 2^64 (lsb first) */
40   unsigned char buffer[64];                         /* input buffer */
41 } MD5_CTX;
42
43 /**
44  * \brief MD5 context initialization
45  * 
46  * MD5 context initialization. Begins an MD5 operation, writing a new context.
47  * \param context initialized context
48  */
49 void MD5Init (MD5_CTX *context);
50
51 /**
52  * \brief MD5 block update operation
53  * 
54  * MD5 block update operation. Continues an MD5 message-digest
55  * operation, processing another message block, and updating the
56  * context.
57  * \param context context
58  * \param input input block
59  * \param inputLen length of input block
60  */
61 void U_MD5Update (MD5_CTX *context, unsigned char *input, unsigned int inputLen);
62
63   /**
64  * \brief MD5 finalization
65  * 
66  * MD5 finalization. Ends an MD5 message-digest operation, writing the
67  * the message digest and zeroizing the context.
68  * \param digest message digest
69  * \param context context
70  */
71 void U_MD5Final (unsigned char digest[16], MD5_CTX *context);
72
73 /*!
74  * \brief Small wrapper around MD5Update
75  *
76  * Small wrapper around MD5Update, because everybody uses this on 'str' types
77  * \param context MD5 context
78  * \param input input block
79  * \param inputLen length of input block
80  * \note please not use this in new code
81  * \todo review and fix all wrong usage
82  */
83 static inline void MD5Update (MD5_CTX *context, char *input, unsigned int inputLen)
84 {
85         return U_MD5Update(context, (unsigned char *)input, inputLen);
86 }
87
88 /*!
89  * \brief Small wrapper around MD5Final
90  *
91  * Small wrapper around MD5Final, because everybody uses this on 'str' types
92  * \param digest message digest
93  * \param context MD5 context
94  * \note please not use this in new code
95  * \todo review and fix all wrong usage
96  */
97 static inline void MD5Final (char digest[16], MD5_CTX *context)
98 {
99         U_MD5Final((unsigned char *)digest, context);
100 }
101
102 #endif /* MD5_H */