From 3c7d378c00da0c2d9cf2691bfd363fc0c41ffe54 Mon Sep 17 00:00:00 2001 From: MITSUNARI Shigeo Date: Sat, 5 Jan 2019 22:09:09 +0900 Subject: sample_test runs on mac --- Makefile | 33 ++++++++++++++++++++++----------- ffi/go/bls/bls.go | 19 +++++++++++++++++-- readme.md | 2 +- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index c4141e2..8d60435 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,10 @@ -MCL_DIR?=../mcl +ifeq ($(findstring MINGW64,$(shell uname -s)),MINGW64) + # cgo accepts not '/c/path' but 'c:/path' + PWD=$(shell pwd|sed s'@^/\([a-z]\)@\1:@') +else + PWD=$(shell pwd) +endif +MCL_DIR?=$(PWD)/../mcl include $(MCL_DIR)/common.mk LIB_DIR=lib OBJ_DIR=obj @@ -82,38 +88,43 @@ $(EXE_DIR)/%256_test.exe: $(OBJ_DIR)/%256_test.o $(BLS256_LIB) $(MCL_LIB) # sample exe links libbls256.a $(EXE_DIR)/%.exe: $(OBJ_DIR)/%.o $(BLS256_LIB) $(MCL_LIB) $(PRE)$(CXX) $< -o $@ $(BLS256_LIB) -L$(MCL_DIR)/lib -lmcl $(LDFLAGS) +ifeq ($(OS),mac) + install_name_tool bin/bls_smpl.exe -change lib/libmcl.dylib $(MCL_DIR)/lib/libmcl.dylib +endif SAMPLE_EXE=$(addprefix $(EXE_DIR)/,$(SAMPLE_SRC:.cpp=.exe)) sample: $(SAMPLE_EXE) TEST_EXE=$(addprefix $(EXE_DIR)/,$(TEST_SRC:.cpp=.exe)) +ifeq ($(OS),mac) + LIBPATH_KEY=DYLD_LIBRARY_PATH +else + LIBPATH_KEY=LD_LIBRARY_PATH +endif test_ci: $(TEST_EXE) - @sh -ec 'for i in $(TEST_EXE); do echo $$i; env LSAN_OPTIONS=verbosity=1 log_threads=1 LD_LIBRARY_PATH=../mcl/lib $$i; done' + @sh -ec 'for i in $(TEST_EXE); do echo $$i; env PATH=$$PATH:../mcl/lib $(LIBPATH_KEY)=../mcl/lib LSAN_OPTIONS=verbosity=1 log_threads=1 $$i; done' $(MAKE) sample_test test: $(TEST_EXE) @echo test $(TEST_EXE) - @sh -ec 'for i in $(TEST_EXE); do env LD_LIBRARY_PATH=../mcl/lib $$i|grep "ctest:name"; done' > result.txt + @sh -ec 'for i in $(TEST_EXE); do env PATH=$$PATH:../mcl/lib $(LIBPATH_KEY)=../mcl/lib $$i|grep "ctest:name"; done' > result.txt @grep -v "ng=0, exception=0" result.txt; if [ $$? -eq 1 ]; then echo "all unit tests succeed"; else exit 1; fi $(MAKE) sample_test sample_test: $(EXE_DIR)/bls_smpl.exe - env LD_LIBRARY_PATH=../mcl/lib python bls_smpl.py + env PATH=$$PATH:../mcl/lib $(LIBPATH_KEY)=../mcl/lib python bls_smpl.py # PATH is for mingw, LD_LIBRARY_PATH is for linux, DYLD_LIBRARY_PATH is for mac COMMON_LIB_PATH="../../../lib:../../../../mcl/lib" -# use bls384 unless tags is specified -test_go_default: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS384_SLIB) - cd ffi/go/bls && env PATH=$$PATH:$(COMMON_LIB_PATH) LD_LIBRARY_PATH=$(COMMON_LIB_PATH) DYLD_LIBRARY_PATH=$(COMMON_LIB_PATH) go test . +PATH_VAL=$$PATH:$(COMMON_LIB_PATH) LD_LIBRARY_PATH=$(COMMON_LIB_PATH) DYLD_LIBRARY_PATH=$(COMMON_LIB_PATH) CGO_LDFLAGS="-L../../../lib" CGO_CFLAGS="-I$(PWD)/include -I$(MCL_DIR)/include" test_go256: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS256_SLIB) - cd ffi/go/bls && env PATH=$$PATH:$(COMMON_LIB_PATH) LD_LIBRARY_PATH=$(COMMON_LIB_PATH) DYLD_LIBRARY_PATH=$(COMMON_LIB_PATH) go test -tags bn256 . + cd ffi/go/bls && env PATH=$(PATH_VAL) go test -tags bn256 . test_go384: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS384_SLIB) - cd ffi/go/bls && env PATH=$$PATH:$(COMMON_LIB_PATH) LD_LIBRARY_PATH=$(COMMON_LIB_PATH) DYLD_LIBRARY_PATH=$(COMMON_LIB_PATH) go test -tags bn384 . + cd ffi/go/bls && env PATH=$(PATH_VAL) go test -tags bn384 . test_go384_256: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS384_256_SLIB) - cd ffi/go/bls && env PATH=$$PATH:$(COMMON_LIB_PATH) LD_LIBRARY_PATH=$(COMMON_LIB_PATH) DYLD_LIBRARY_PATH=$(COMMON_LIB_PATH) go test -tags bn384_256 . + cd ffi/go/bls && env PATH=$(PATH_VAL) go test -tags bn384_256 . test_go: - $(MAKE) test_go_default $(MAKE) test_go256 $(MAKE) test_go384 $(MAKE) test_go384_256 diff --git a/ffi/go/bls/bls.go b/ffi/go/bls/bls.go index 7b9313e..9b2691c 100644 --- a/ffi/go/bls/bls.go +++ b/ffi/go/bls/bls.go @@ -1,14 +1,13 @@ package bls /* -#cgo CFLAGS:-I../../../include -I../../../../mcl/include/ #cgo bn256 CFLAGS:-DMCLBN_FP_UNIT_SIZE=4 #cgo bn256 LDFLAGS:-lbls256 #cgo bn384 CFLAGS:-DMCLBN_FP_UNIT_SIZE=6 #cgo bn384 LDFLAGS:-lbls384 #cgo bn384_256 CFLAGS:-DMCLBN_FP_UNIT_SIZE=6 -DMCLBN_FR_UNIT_SIZE=4 #cgo bn384_256 LDFLAGS:-lbls384_256 -#cgo LDFLAGS:-L../../../lib -lbls384 +#cgo LDFLAGS:-lbls384 #cgo LDFLAGS:-lcrypto -lgmp -lgmpxx -lstdc++ #include "config.h" #include @@ -332,3 +331,19 @@ func DHKeyExchange(sec *SecretKey, pub *PublicKey) (out PublicKey) { C.blsDHKeyExchange(out.getPointer(), sec.getPointer(), pub.getPointer()) return out } + +// HashAndMapToSignature -- +func HashAndMapToSignature(buf []byte) *Sign { + sig := new(Sign) + err := sig.v.HashAndMapTo(buf) + if err == nil { + return sig + } else { + return nil + } +} + +// VerifyPairing -- +func VerifyPairing(X *Sign, Y *Sign, pub *PublicKey) bool { + return C.blsVerifyPairing(X.getPointer(), Y.getPointer(), pub.getPointer()) == 1 +} diff --git a/readme.md b/readme.md index b517630..89ea433 100644 --- a/readme.md +++ b/readme.md @@ -16,7 +16,7 @@ git clone git://github.com/herumi/cybozulib_ext ; for only Windows ``` # News -* (Break backward compatibility) The suffix `_dy` of library name is removed. +* (Break backward compatibility) The suffix `_dy` of library name is removed and bls\*.a requires libmcl.so set LD_LIBRARY_PATH to the directory. * -tags option for Go bindings * -tags bn256 * -tags bn384\_256 -- cgit v1.2.3