mirror of
https://gitlab.freedesktop.org/libbsd/libbsd.git
synced 2025-01-09 19:27:42 +01:00
11ec8f1e5d
This is a non-portable header, and we cannot expect it to be provided by the system libc (e.g. musl). We just need and rely on declaration that we have defined ourselves in our own <bsd/sys/cdefs.h>. So we switch to only ever assume that. Fixes: https://bugs.freedesktop.org/105281
59 lines
2.0 KiB
C
59 lines
2.0 KiB
C
/* $OpenBSD: md5.h,v 1.16 2004/06/22 01:57:30 jfb Exp $ */
|
|
|
|
/*
|
|
* This code implements the MD5 message-digest algorithm.
|
|
* The algorithm is due to Ron Rivest. This code was
|
|
* written by Colin Plumb in 1993, no copyright is claimed.
|
|
* This code is in the public domain; do with it what you wish.
|
|
*
|
|
* Equivalent code is available from RSA Data Security, Inc.
|
|
* This code has been tested against that, and is equivalent,
|
|
* except that you don't need to include two pages of legalese
|
|
* with every copy.
|
|
*/
|
|
|
|
#ifndef LIBBSD_MD5_H
|
|
#define LIBBSD_MD5_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define MD5_BLOCK_LENGTH 64
|
|
#define MD5_DIGEST_LENGTH 16
|
|
#define MD5_DIGEST_STRING_LENGTH (MD5_DIGEST_LENGTH * 2 + 1)
|
|
|
|
typedef struct MD5Context {
|
|
uint32_t state[4]; /* state */
|
|
uint64_t count; /* number of bits, mod 2^64 */
|
|
uint8_t buffer[MD5_BLOCK_LENGTH]; /* input buffer */
|
|
} MD5_CTX;
|
|
|
|
#ifdef LIBBSD_OVERLAY
|
|
#include <sys/cdefs.h>
|
|
#else
|
|
#include <bsd/sys/cdefs.h>
|
|
#endif
|
|
#include <sys/types.h>
|
|
|
|
__BEGIN_DECLS
|
|
void MD5Init(MD5_CTX *);
|
|
void MD5Update(MD5_CTX *, const uint8_t *, size_t)
|
|
__attribute__((__bounded__(__string__,2,3)));
|
|
void MD5Pad(MD5_CTX *);
|
|
void MD5Final(uint8_t [MD5_DIGEST_LENGTH], MD5_CTX *)
|
|
__attribute__((__bounded__(__minbytes__,1,MD5_DIGEST_LENGTH)));
|
|
void MD5Transform(uint32_t [4], const uint8_t [MD5_BLOCK_LENGTH])
|
|
__attribute__((__bounded__(__minbytes__,1,4)))
|
|
__attribute__((__bounded__(__minbytes__,2,MD5_BLOCK_LENGTH)));
|
|
char *MD5End(MD5_CTX *, char *)
|
|
__attribute__((__bounded__(__minbytes__,2,MD5_DIGEST_STRING_LENGTH)));
|
|
char *MD5File(const char *, char *)
|
|
__attribute__((__bounded__(__minbytes__,2,MD5_DIGEST_STRING_LENGTH)));
|
|
char *MD5FileChunk(const char *, char *, off_t, off_t)
|
|
__attribute__((__bounded__(__minbytes__,2,MD5_DIGEST_STRING_LENGTH)));
|
|
char *MD5Data(const uint8_t *, size_t, char *)
|
|
__attribute__((__bounded__(__string__,1,2)))
|
|
__attribute__((__bounded__(__minbytes__,3,MD5_DIGEST_STRING_LENGTH)));
|
|
__END_DECLS
|
|
|
|
#endif /* LIBBSD_MD5_H */
|