blob: a90e7f86a3ee0bed8720baba508479b55127dc17 [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.
*/
extern 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.
*/
extern int MDupdate (MDptr, 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(u_char *data, size_t len, u_char *mac, size_t maclen);
int MDsign(u_char *data, size_t len, u_char *mac, size_t maclen,
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 */