aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2017-05-29 05:43:37 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2017-05-29 05:43:37 +0800
commit0dbdb0f7dc29d27ba815c9a9205a8bc989d117bd (patch)
tree8bf65db09128d18539016227811ce760dc5a1747
parent14c6246a6ca198a89498d766641b07230e9c647d (diff)
downloaddexon-bls-0dbdb0f7dc29d27ba815c9a9205a8bc989d117bd.tar
dexon-bls-0dbdb0f7dc29d27ba815c9a9205a8bc989d117bd.tar.gz
dexon-bls-0dbdb0f7dc29d27ba815c9a9205a8bc989d117bd.tar.bz2
dexon-bls-0dbdb0f7dc29d27ba815c9a9205a8bc989d117bd.tar.lz
dexon-bls-0dbdb0f7dc29d27ba815c9a9205a8bc989d117bd.tar.xz
dexon-bls-0dbdb0f7dc29d27ba815c9a9205a8bc989d117bd.tar.zst
dexon-bls-0dbdb0f7dc29d27ba815c9a9205a8bc989d117bd.zip
go/bls uses GetHex/SetHex
-rw-r--r--go/bls/bls.go37
-rw-r--r--src/bls_if.cpp8
2 files changed, 32 insertions, 13 deletions
diff --git a/go/bls/bls.go b/go/bls/bls.go
index f342615..c569f1f 100644
--- a/go/bls/bls.go
+++ b/go/bls/bls.go
@@ -10,7 +10,6 @@ package bls
import "C"
import "fmt"
import "unsafe"
-import "encoding/hex"
// CurveFp254BNb -- 254 bit curve
const CurveFp254BNb = 0
@@ -315,16 +314,24 @@ func (pub *PublicKey) Deserialize(buf []byte) error {
// GetHexString --
func (pub *PublicKey) GetHexString() string {
- return fmt.Sprintf("%x", pub.Serialize())
+ buf := make([]byte, 1024)
+ // #nosec
+ n := C.blsPublicKeyGetHexStr((*C.char)(unsafe.Pointer(&buf[0])), C.size_t(len(buf)), pub.getPointer())
+ if n == 0 {
+ panic("err blsPublicKeyGetHexStr")
+ }
+ return string(buf[:n])
}
// SetHexString --
func (pub *PublicKey) SetHexString(s string) error {
- b, err := hex.DecodeString(s)
- if err != nil {
- return err
+ buf := []byte(s)
+ // #nosec
+ err := C.blsPublicKeySetHexStr(pub.getPointer(), (*C.char)(unsafe.Pointer(&buf[0])), C.size_t(len(buf)))
+ if err != 0 {
+ return fmt.Errorf("err blsPublicKeySetHexStr %x", buf)
}
- return pub.Deserialize(b)
+ return nil
}
// IsSame --
@@ -389,16 +396,24 @@ func (sign *Sign) Deserialize(buf []byte) error {
// GetHexString --
func (sign *Sign) GetHexString() string {
- return fmt.Sprintf("%x", sign.Serialize())
+ buf := make([]byte, 1024)
+ // #nosec
+ n := C.blsSignatureGetHexStr((*C.char)(unsafe.Pointer(&buf[0])), C.size_t(len(buf)), sign.getPointer())
+ if n == 0 {
+ panic("err blsSignatureGetHexStr")
+ }
+ return string(buf[:n])
}
// SetHexString --
func (sign *Sign) SetHexString(s string) error {
- b, err := hex.DecodeString(s)
- if err != nil {
- return err
+ buf := []byte(s)
+ // #nosec
+ err := C.blsSignatureSetHexStr(sign.getPointer(), (*C.char)(unsafe.Pointer(&buf[0])), C.size_t(len(buf)))
+ if err != 0 {
+ return fmt.Errorf("err blsSignatureSetHexStr %x", buf)
}
- return sign.Deserialize(b)
+ return nil
}
// IsSame --
diff --git a/src/bls_if.cpp b/src/bls_if.cpp
index d8b24ea..6213a4f 100644
--- a/src/bls_if.cpp
+++ b/src/bls_if.cpp
@@ -222,7 +222,9 @@ size_t blsPublicKeyGetHexStr(char *buf, size_t maxBufSize, const blsPublicKey *p
{
std::string s;
s.resize(1024);
- if (blsPublicKeySerialize(&s[0], s.size(), pub) == 0) {
+ size_t len = blsPublicKeySerialize(&s[0], s.size(), pub);
+ if (len > 0) {
+ s.resize(len);
s = mcl::fp::littleEndianToHexStr(s.c_str(), s.size());
if (s.size() < maxBufSize) {
memcpy(buf, s.c_str(), s.size());
@@ -276,7 +278,9 @@ size_t blsSignatureGetHexStr(char *buf, size_t maxBufSize, const blsSignature *s
{
std::string s;
s.resize(1024);
- if (blsSignatureSerialize(&s[0], s.size(), sig) == 0) {
+ size_t len = blsSignatureSerialize(&s[0], s.size(), sig);
+ if (len > 0) {
+ s.resize(len);
s = mcl::fp::littleEndianToHexStr(s.c_str(), s.size());
if (s.size() < maxBufSize) {
memcpy(buf, s.c_str(), s.size());