blob: 12b192a0dd455d885c54acc44dc0cbdd14b9f9a0 [file] [log] [blame]
/*
* ** **************************************************************************
* ** md5.h -- Header file for implementation of MD5 Message Digest Algorithm **
* ** Updated: 2/13/90 by Ronald L. Rivest **
* ** (C) 1990 RSA Data Security, Inc. **
* ** **************************************************************************
*/
#ifndef MD5_H
#define MD5_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* MDstruct is the data structure for a message digest computation.
*/
typedef struct {
unsigned int buffer[4]; /* Holds 4-word result of MD computation */
unsigned char count[8]; /* Number of bits processed so far */
unsigned int done; /* Nonzero means MD computation finished */
} MDstruct , *MDptr;
/*
* MDbegin(MD)
* ** Input: MD -- an MDptr
* ** Initialize the MDstruct prepatory to doing a message digest computation.
*/
NETSNMP_IMPORT void MDbegin(MDptr);
/*
* MDupdate(MD,X,count)
* ** Input: MD -- an MDptr
* ** X -- a pointer to an array of unsigned characters.
* ** count -- the number of bits of X to use (an unsigned int).
* ** Updates MD using the first ``count'' bits of X.
* ** The array pointed to by X is not modified.
* ** If count is not a multiple of 8, MDupdate uses high bits of last byte.
* ** This is the basic input routine for a user.
* ** The routine terminates the MD computation when count < 512, so
* ** every MD computation should end with one call to MDupdate with a
* ** count less than 512. Zero is OK for a count.
*/
NETSNMP_IMPORT int MDupdate(MDptr, const unsigned char *, unsigned int);
/*
* MDprint(MD)
* ** Input: MD -- an MDptr
* ** Prints message digest buffer MD as 32 hexadecimal digits.
* ** Order is from low-order byte of buffer[0] to high-order byte of buffer[3].
* ** Each byte is printed with high-order hexadecimal digit first.
*/
extern void MDprint(MDptr);
int MDchecksum(const u_char * data, size_t len, u_char * mac,
size_t maclen);
int MDsign(const u_char * data, size_t len, u_char * mac,
size_t maclen, const u_char * secret,
size_t secretlen);
void MDget(MDstruct * MD, u_char * buf, size_t buflen);
/*
* ** End of md5.h
* ****************************(cut)****************************************
*/
#ifdef __cplusplus
}
#endif
#endif /* MD5_H */