diff --git a/lib/import/import-libkeccak.mk b/lib/import/import-libkeccak.mk new file mode 100644 index 0000000..9e92fd9 --- /dev/null +++ b/lib/import/import-libkeccak.mk @@ -0,0 +1,9 @@ +XKCP_SRC_DIR := $(call select_from_ports,xkcp) + +ifeq ($(filter-out $(SPECS),64bit),) + INC_DIR += $(XKCP_SRC_DIR)/generic64/libkeccak.a +endif + +ifeq ($(filter-out $(SPECS),32bit),) + INC_DIR += $(XKCP_SRC_DIR)/generic32/libkeccak.a +endif diff --git a/lib/import/libkeccak.mk b/lib/import/libkeccak.mk new file mode 100644 index 0000000..e69de29 diff --git a/lib/mk/libkeccak.inc b/lib/mk/libkeccak.inc new file mode 100644 index 0000000..3f4cddf --- /dev/null +++ b/lib/mk/libkeccak.inc @@ -0,0 +1,3 @@ +INC_DIR += $(REP_DIR)/src/lib/keccak +SRC_C += $(notdir $(wildcard $(KECCAK_SRC_DIR)/*.c)) +vpath %.c $(KECCAK_SRC_DIR) diff --git a/lib/mk/spec/32bit/libkeccak.mk b/lib/mk/spec/32bit/libkeccak.mk new file mode 100644 index 0000000..c356116 --- /dev/null +++ b/lib/mk/spec/32bit/libkeccak.mk @@ -0,0 +1,4 @@ +XKCP_SRC_DIR := $(call select_from_ports,xkcp) +KECCAK_SRC_DIR := $(XKCP_SRC_DIR)/generic32/libkeccak.a + +include $(REP_DIR)/lib/mk/libkeccak.inc diff --git a/lib/mk/spec/64bit/libkeccak.mk b/lib/mk/spec/64bit/libkeccak.mk new file mode 100644 index 0000000..cd5f3fa --- /dev/null +++ b/lib/mk/spec/64bit/libkeccak.mk @@ -0,0 +1,4 @@ +XKCP_SRC_DIR := $(call select_from_ports,xkcp) +KECCAK_SRC_DIR := $(XKCP_SRC_DIR)/generic64/libkeccak.a + +include $(REP_DIR)/lib/mk/libkeccak.inc diff --git a/ports/xkcp.hash b/ports/xkcp.hash new file mode 100644 index 0000000..5787c08 --- /dev/null +++ b/ports/xkcp.hash @@ -0,0 +1 @@ +cafc0339ae335bd559d667749899feae48acc9c1 diff --git a/ports/xkcp.port b/ports/xkcp.port new file mode 100644 index 0000000..8c13fd7 --- /dev/null +++ b/ports/xkcp.port @@ -0,0 +1,24 @@ +LICENSE := CC0 +VERSION := HEAD +DOWNLOADS := xkcp.archive + +OWNER := XKCP +REPO := XKCP +REV := 645e825ae47d7c91780aa5e48eb07e0b035165ea +URL(xkcp) := https://github.com/$(OWNER)/$(REPO)/archive/$(REV).tar.gz +SHA(xkcp) := 883f13c471b31e6ca0329634e74abe5e11cadd50674625b51b40522834a2d6ab +DIR(xkcp) = tmp + +_dirs: generic32/libkeccak.a generic64/libkeccak.a + +generic32/libkeccak.a: tmp/bin/generic32_libkeccak.a.tar.gz + tar fx $< + +generic64/libkeccak.a: tmp/bin/generic64_libkeccak.a.tar.gz + tar fx $< + +tmp/bin/generic32_libkeccak.a.tar.gz: tmp + make -C $< generic32/libkeccak.a.pack + +tmp/bin/generic64_libkeccak.a.tar.gz: tmp + make -C $< generic64/libkeccak.a.pack diff --git a/src/lib/keccak/assert.h b/src/lib/keccak/assert.h new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/keccak/stdint.h b/src/lib/keccak/stdint.h new file mode 100644 index 0000000..bdd64cf --- /dev/null +++ b/src/lib/keccak/stdint.h @@ -0,0 +1,5 @@ +#include +#include + +typedef genode_uint32_t uint32_t; +typedef genode_uint64_t uint64_t; diff --git a/src/lib/keccak/stdio.h b/src/lib/keccak/stdio.h new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/keccak/stdlib.h b/src/lib/keccak/stdlib.h new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/lib/keccak/stdlib.h @@ -0,0 +1 @@ + diff --git a/src/lib/keccak/string.h b/src/lib/keccak/string.h new file mode 100644 index 0000000..ce37b58 --- /dev/null +++ b/src/lib/keccak/string.h @@ -0,0 +1,27 @@ +#ifndef __FAKE_STRING_H__ +#define __FAKE_STRING_H__ + +#include "stdint.h" + +static inline int memcmp(const void *p0, const void *p1, size_t size) +{ + const unsigned char *c0 = (const unsigned char *)p0; + const unsigned char *c1 = (const unsigned char *)p1; + + size_t i; + for (i = 0; i < size; i++) + if (c0[i] != c1[i]) return c0[i] - c1[i]; + + return 0; +} + +void *memcpy(void *dst, const void *src, size_t size); +void *memset(void *dst, int i, size_t size); + +typedef void FILE; + +static inline void assert() { } +static inline int fprintf(FILE * restrict stream, const char * restrict format, ...) { return -1; } +static inline int fputc(int c, FILE *stream) { return -1; } + +#endif