From: Jackie Huang <jackie.hu...@windriver.com> Mhash is a free (under GNU Lesser GPL) library which provides a uniform interface to a large number of hash algorithms. These algorithms can be used to compute checksums, message digests, and other signatures.
Signed-off-by: Jackie Huang <jackie.hu...@windriver.com> --- recipes-security/libmhash/files/Makefile.test | 13 ++++++++++ recipes-security/libmhash/files/mhash.c | 32 +++++++++++++++++++++++ recipes-security/libmhash/files/run-ptest | 12 +++++++++ recipes-security/libmhash/libmhash_0.9.9.9.bb | 37 +++++++++++++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100644 recipes-security/libmhash/files/Makefile.test create mode 100644 recipes-security/libmhash/files/mhash.c create mode 100644 recipes-security/libmhash/files/run-ptest create mode 100644 recipes-security/libmhash/libmhash_0.9.9.9.bb diff --git a/recipes-security/libmhash/files/Makefile.test b/recipes-security/libmhash/files/Makefile.test new file mode 100644 index 0000000..2e32626 --- /dev/null +++ b/recipes-security/libmhash/files/Makefile.test @@ -0,0 +1,13 @@ +# +# Makefile for compiling mhash tests +# + +ALL = mhash + +all: $(ALL) + +mhash: mhash.c + $(CC) $(CFLAGS) $(LDFLAGS) -o mhash mhash.c -lmhash + +clean: + rm -f *.debug $(ALL) diff --git a/recipes-security/libmhash/files/mhash.c b/recipes-security/libmhash/files/mhash.c new file mode 100644 index 0000000..5d123cc --- /dev/null +++ b/recipes-security/libmhash/files/mhash.c @@ -0,0 +1,32 @@ +#include <mhash.h> +#include <stdio.h> + +int main() +{ + + char password[] = "Jefe"; + int keylen = 4; + char data[] = "what do ya want for nothing?"; + int datalen = 28; + MHASH td; + unsigned char mac[16]; + int j; + + td = mhash_hmac_init(MHASH_MD5, password, keylen, mhash_get_hash_pblock(MHASH_MD5)); + + mhash(td, data, datalen); + mhash_hmac_deinit(td, mac); + +/* + * The output should be 0x750c783e6ab0b503eaa86e310a5db738 + * according to RFC 2104. + */ + + printf("0x"); + for (j = 0; j < mhash_get_block_size(MHASH_MD5); j++) { + printf("%.2x", mac[j]); + } + printf("\n"); + + exit(0); +} diff --git a/recipes-security/libmhash/files/run-ptest b/recipes-security/libmhash/files/run-ptest new file mode 100644 index 0000000..2b0b94a --- /dev/null +++ b/recipes-security/libmhash/files/run-ptest @@ -0,0 +1,12 @@ +#!/bin/sh + +OUTPUT=$($(dirname $0)/mhash) +MHASH_MD5="0x750c783e6ab0b503eaa86e310a5db738" + +if [ x"$OUTPUT" = x"$MHASH_MD5" ]; then + echo "PASS: mhash ptest" + exit 0 +else + echo "FAIL: mhash ptest" + exit 1 +fi diff --git a/recipes-security/libmhash/libmhash_0.9.9.9.bb b/recipes-security/libmhash/libmhash_0.9.9.9.bb new file mode 100644 index 0000000..9b34cb1 --- /dev/null +++ b/recipes-security/libmhash/libmhash_0.9.9.9.bb @@ -0,0 +1,37 @@ +SUMMARY = "Library of hashing algorithms." +DESCRIPTION = "\ + Mhash is a free (under GNU Lesser GPL) library \ + which provides a uniform interface to a large number of hash \ + algorithms. These algorithms can be used to compute checksums, \ + message digests, and other signatures. \ + " +HOMEPAGE = "http://mhash.sourceforge.net/" + +LICENSE = "LGPLv2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7" + +S = "${WORKDIR}/mhash-${PV}" + +SECTION = "libs" + +SRC_URI = "${SOURCEFORGE_MIRROR}/mhash/mhash-${PV}.tar.bz2 \ + file://Makefile.test \ + file://mhash.c \ + file://run-ptest \ + " + +SRC_URI[md5sum] = "f91c74f9ccab2b574a98be5bc31eb280" +SRC_URI[sha256sum] = "56521c52a9033779154432d0ae47ad7198914785265e1f570cee21ab248dfef0" + +inherit autotools-brokensep ptest + +do_compile_ptest() { + if [ ! -d ${S}/demo ]; then mkdir ${S}/demo; fi + cp ${WORKDIR}/Makefile.test ${S}/demo/Makefile + cp ${WORKDIR}/mhash.c ${S}/demo/ + make -C ${S}/demo CFLAGS="${CFLAGS} -I${S}/include/" LDFLAGS="${LDFLAGS} -L${S}/lib/.libs" +} + +do_install_ptest() { + install -m 0755 ${S}/demo/mhash ${D}${PTEST_PATH} +} -- 2.11.0 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto