[yocto] [meta-security][PATCH 2/2] libmhash: add new recipe

jackie.huang at windriver.com jackie.huang at windriver.com
Thu Jul 27 19:00:57 PDT 2017


From: Jackie Huang <jackie.huang at 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.huang at 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




More information about the yocto mailing list