aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2019-01-05 21:09:09 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2019-01-05 21:09:09 +0800
commit3c7d378c00da0c2d9cf2691bfd363fc0c41ffe54 (patch)
treeeac208a8678d701766ceab8dd3a02ff68570c178
parent62317075921e6e31b1e6ff31eb41d335696fd1bd (diff)
downloaddexon-bls-3c7d378c00da0c2d9cf2691bfd363fc0c41ffe54.tar
dexon-bls-3c7d378c00da0c2d9cf2691bfd363fc0c41ffe54.tar.gz
dexon-bls-3c7d378c00da0c2d9cf2691bfd363fc0c41ffe54.tar.bz2
dexon-bls-3c7d378c00da0c2d9cf2691bfd363fc0c41ffe54.tar.lz
dexon-bls-3c7d378c00da0c2d9cf2691bfd363fc0c41ffe54.tar.xz
dexon-bls-3c7d378c00da0c2d9cf2691bfd363fc0c41ffe54.tar.zst
dexon-bls-3c7d378c00da0c2d9cf2691bfd363fc0c41ffe54.zip
sample_test runs on mac
-rw-r--r--Makefile33
-rw-r--r--ffi/go/bls/bls.go19
-rw-r--r--readme.md2
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 <bls/bls.h>
@@ -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