diff --git a/Makefile b/Makefile index 6e0edcf..44531f3 100644 --- a/Makefile +++ b/Makefile @@ -9,37 +9,28 @@ ecc_platform=2 -src = $(wildcard pc/*.c) $(wildcard fido2/*.c) $(wildcard fido2/extensions/*.c) \ - $(wildcard crypto/sha256/*.c) crypto/tiny-AES-c/aes.c +src = pc/device.c # pc/main.c -obj = $(src:.c=.o) crypto/micro-ecc/uECC.o +obj = $(src:.c=.o) LIBCBOR = tinycbor/lib/libtinycbor.a +LIBSOLO = fido2/libsolo.a ifeq ($(shell uname -s),Darwin) export LDFLAGS = -Wl,-dead_strip else export LDFLAGS = -Wl,--gc-sections endif -LDFLAGS += $(LIBCBOR) +LDFLAGS += $(LIBCBOR) $(LIBSOLO) -VERSION_FULL:=$(shell git describe) -VERSION:=$(shell python -c 'print("$(VERSION_FULL)".split("-")[0])') -VERSION_MAJ:=$(shell python -c 'print("$(VERSION)".split(".")[0])') -VERSION_MIN:=$(shell python -c 'print("$(VERSION)".split(".")[1])') -VERSION_PAT:=$(shell python -c 'print("$(VERSION)".split(".")[2])') -VERSION_FLAGS= -DSOLO_VERSION_MAJ=$(VERSION_MAJ) -DSOLO_VERSION_MIN=$(VERSION_MIN) \ - -DSOLO_VERSION_PATCH=$(VERSION_PAT) -DSOLO_VERSION=\"$(VERSION_FULL)\" +CFLAGS = -O2 -fdata-sections -ffunction-sections -g +ECC_CFLAGS = -O2 -fdata-sections -ffunction-sections -DuECC_PLATFORM=$(ecc_platform) -CFLAGS = -O2 -fdata-sections -ffunction-sections $(VERSION_FLAGS) -g - -INCLUDES = -I./tinycbor/src -I./crypto/sha256 -I./crypto/micro-ecc/ -Icrypto/tiny-AES-c/ -I./fido2/ -I./pc -I./fido2/extensions -INCLUDES += -I./crypto/cifra/src +INCLUDES = -I./fido2/ -I./pc -I../pc -I./tinycbor/src CFLAGS += $(INCLUDES) -# for crypto/tiny-AES-c -CFLAGS += -DAES256=1 -DAPP_CONFIG=\"app.h\" -DSOLO_EXPERIMENTAL=1 +CFLAGS += -DAES256=1 -DSOLO_EXPERIMENTAL=1 -DDEBUG_LEVEL=1 name = main @@ -53,7 +44,10 @@ tinycbor/Makefile crypto/tiny-AES-c/aes.c: cbor: $(LIBCBOR) $(LIBCBOR): - cd tinycbor/ && $(MAKE) clean && $(MAKE) LDFLAGS='' -j8 + cd tinycbor/ && $(MAKE) LDFLAGS='' -j8 + +$(LIBSOLO): + cd fido2/ && $(MAKE) CFLAGS="$(CFLAGS)" ECC_CFLAGS="$(ECC_CFLAGS)" APP_CONFIG=app.h -j8 version: @git describe @@ -66,12 +60,9 @@ test: venv $(MAKE) clean $(MAKE) cppcheck -$(name): $(obj) $(LIBCBOR) +$(name): $(obj) $(LIBCBOR) $(LIBSOLO) $(CC) $(LDFLAGS) -o $@ $(obj) $(LDFLAGS) -crypto/micro-ecc/uECC.o: ./crypto/micro-ecc/uECC.c - $(CC) -c -o $@ $^ -O2 -fdata-sections -ffunction-sections -DuECC_PLATFORM=$(ecc_platform) -I./crypto/micro-ecc/ - venv: python3 -m venv venv venv/bin/pip -q install --upgrade pip @@ -128,6 +119,7 @@ clean: (cd `dirname $$f` ; git checkout -- .) ;\ fi ;\ done + cd fido2 && $(MAKE) clean full-clean: clean rm -rf venv diff --git a/fido2/Makefile b/fido2/Makefile index 076473c..e0df118 100644 --- a/fido2/Makefile +++ b/fido2/Makefile @@ -9,9 +9,9 @@ INC += -I../tinycbor/src INC += -I../crypto/sha256 -I../crypto/micro-ecc -I../crypto/tiny-AES-c INC += -I../crypto/cifra/src -I../crypto/cifra/src/ext -CFLAGS += -DAPP_CONFIG=\"$(APP_CONFIG)\" -CFLAGS += $(INC) -CFLAGS += $(SOLO_VERSION_FLAGS) +INT_CFLAGS = -DAPP_CONFIG=\"$(APP_CONFIG)\" +INT_CFLAGS += $(INC) +INT_CFLAGS += $(SOLO_VERSION_FLAGS) SRC = apdu.c util.c u2f.c test_power.c SRC += stubs.c log.c ctaphid.c ctap.c @@ -34,10 +34,10 @@ libsolo.a: $(OBJ) $(AR) cqs $@ $^ %.o: %.c - $(CC) $^ $(CFLAGS) -c -o $@ + $(CC) $^ $(INT_CFLAGS) $(CFLAGS) -c -o $@ ../crypto/micro-ecc/uECC.o: ../crypto/micro-ecc/uECC.c - $(CC) $^ $(ECC_CFLAGS) -c -o $@ + $(CC) $^ $(INT_CFLAGS) $(ECC_CFLAGS) -c -o $@ clean: rm $(OBJ) libsolo.a diff --git a/fido2/example_app.h b/fido2/example_app.h index b5e8bd2..252bf0b 100644 --- a/fido2/example_app.h +++ b/fido2/example_app.h @@ -13,8 +13,6 @@ #define USING_PC -#define DEBUG_LEVEL 1 - #define ENABLE_U2F #define ENABLE_U2F_EXTENSIONS //#define BRIDGE_TO_WALLET diff --git a/fido2/log.h b/fido2/log.h index 17a2d6b..8e33648 100644 --- a/fido2/log.h +++ b/fido2/log.h @@ -7,7 +7,10 @@ #ifndef _LOG_H #define _LOG_H +#ifdef APP_CONFIG #include APP_CONFIG +#endif + #include #ifndef DEBUG_LEVEL @@ -50,7 +53,7 @@ typedef enum TAG_FILENO = (1UL << 31) } LOG_TAG; -#if DEBUG_LEVEL > 0 +#if defined(DEBUG_LEVEL) && DEBUG_LEVEL > 0 void set_logging_mask(uint32_t mask); #define printf1(tag,fmt, ...) LOG(tag & ~(TAG_FILENO), NULL, 0, fmt, ##__VA_ARGS__)