On Fri, 2018-09-21 at 01:13:31 +0200, Guillem Jover wrote: > Hi! > > On Wed, 2018-09-19 at 00:31:26 +0800, Yangfl wrote: > > Package: wnpp > > Severity: wishlist > > Owner: Yangfl <mmyan...@gmail.com> > > > > * Package name : libmd5-rfc > > Version : 0.0+20020413 > > Upstream Author : Aladdin Enterprises > > * URL : https://sourceforge.net/projects/libmd5-rfc/ > > * License : zlib > > Programming Lang: C > > Description : RFC1321-based (RSA-free) MD5 library > > This is a very small C library implementing RFC1321, the MD5 message digest > > function. Unlike the existing W3C libmd5, it was written from the > > specifications (not the sample code) in RFC1321, and therefore is not > > required > > to acknowledge RSA in any way. > > There's already libmd in the archive which contains an RSA-free MD5 > implementation. I see the interface is not exactly the same, but I > think a handful of macros would easily take care of that, and I'd be > happy to include those in libmd's md5.h. > > Also the current package provides /usr/include/md5.h which will > conflict with libmd-dev.
Something like the attached patch would do I guess? I'm not sure if I'd want to expose those unconditionally, as that might pollute the namespace. Thanks, Guillem
diff --git i/include/md5.h w/include/md5.h index dee2bf4..72912b5 100644 --- i/include/md5.h +++ w/include/md5.h @@ -47,4 +47,17 @@ char *MD5Data(const uint8_t *, size_t, char *); } #endif +/* + * Interface compatibility with Aladdin Enterprises independent + * implemntation from RFC 1321. + */ + +typedef uint8_t md5_byte_t; +typedef uint32_t md5_word_t; +typedef MD5_CTX md5_state_t; + +#define md5_init(pms) MD5Init(pms) +#define md5_append(pms, data, nbytes) MD5Update(pms, data, nbytes) +#define md5_finish(pms, digest) MD5End(pms, digest) + #endif /* _MD5_H_ */ diff --git i/test/md5.c w/test/md5.c index 5dac6e1..2bf6cb4 100644 --- i/test/md5.c +++ w/test/md5.c @@ -34,8 +34,20 @@ void test_md5(const char *digest, const char *string) { char result[MD5_DIGEST_STRING_LENGTH]; + MD5_CTX ctx; + md5_state_t pms; assert(strcmp(digest, MD5Data(string, strlen(string), result)) == 0); + + MD5Init(&ctx); + MD5Update(&ctx, string, strlen(string)); + MD5End(&ctx, result); + assert(strcmp(digest, result) == 0); + + md5_init(&pms); + md5_append(&pms, string, strlen(string)); + md5_finish(&pms, result); + assert(strcmp(digest, result) == 0); } int