aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2018-09-25 09:32:22 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2018-09-25 09:40:28 +0800
commite9c72f18ab9bc09923da739151821cc588c0d295 (patch)
tree8dfc3b93f219134d166c033a723b63338a62f67c
parent75f107fe3b59274e6be072320a1b59420b5447d8 (diff)
downloaddexon-bls-e9c72f18ab9bc09923da739151821cc588c0d295.tar
dexon-bls-e9c72f18ab9bc09923da739151821cc588c0d295.tar.gz
dexon-bls-e9c72f18ab9bc09923da739151821cc588c0d295.tar.bz2
dexon-bls-e9c72f18ab9bc09923da739151821cc588c0d295.tar.lz
dexon-bls-e9c72f18ab9bc09923da739151821cc588c0d295.tar.xz
dexon-bls-e9c72f18ab9bc09923da739151821cc588c0d295.tar.zst
dexon-bls-e9c72f18ab9bc09923da739151821cc588c0d295.zip
add SerializeToHexStr and DeserializeHexStr
-rw-r--r--ffi/go/bls/bls.go30
-rw-r--r--ffi/go/bls/bls_test.go36
-rw-r--r--ffi/go/bls/mcl.go3
3 files changed, 69 insertions, 0 deletions
diff --git a/ffi/go/bls/bls.go b/ffi/go/bls/bls.go
index 4d89baf..2448c3c 100644
--- a/ffi/go/bls/bls.go
+++ b/ffi/go/bls/bls.go
@@ -89,6 +89,16 @@ func (sec *SecretKey) SetLittleEndian(buf []byte) error {
return sec.v.SetLittleEndian(buf)
}
+// SerializeToHexStr --
+func (sec *SecretKey) SerializeToHexStr() string {
+ return sec.v.GetString(IoSerializeHexStr)
+}
+
+// DeserializeHexStr --
+func (sec *SecretKey) DeserializeHexStr(s string) error {
+ return sec.v.SetString(s, IoSerializeHexStr)
+}
+
// GetHexString --
func (sec *SecretKey) GetHexString() string {
return sec.v.GetString(16)
@@ -184,6 +194,16 @@ func (pub *PublicKey) Deserialize(buf []byte) error {
return pub.v.Deserialize(buf)
}
+// SerializeToHexStr --
+func (pub *PublicKey) SerializeToHexStr() string {
+ return pub.v.GetString(IoSerializeHexStr)
+}
+
+// DeserializeHexStr --
+func (pub *PublicKey) DeserializeHexStr(s string) error {
+ return pub.v.SetString(s, IoSerializeHexStr)
+}
+
// GetHexString --
func (pub *PublicKey) GetHexString() string {
return pub.v.GetString(16)
@@ -237,6 +257,16 @@ func (sign *Sign) Deserialize(buf []byte) error {
return sign.v.Deserialize(buf)
}
+// SerializeToHexStr --
+func (sign *Sign) SerializeToHexStr() string {
+ return sign.v.GetString(IoSerializeHexStr)
+}
+
+// DeserializeHexStr --
+func (sign *Sign) DeserializeHexStr(s string) error {
+ return sign.v.SetString(s, IoSerializeHexStr)
+}
+
// GetHexString --
func (sign *Sign) GetHexString() string {
return sign.v.GetString(16)
diff --git a/ffi/go/bls/bls_test.go b/ffi/go/bls/bls_test.go
index 400f90d..adc2806 100644
--- a/ffi/go/bls/bls_test.go
+++ b/ffi/go/bls/bls_test.go
@@ -280,6 +280,41 @@ func testData(t *testing.T) {
}
}
+func testSerializeToHexStr(t *testing.T) {
+ t.Log("testSerializeToHexStr")
+ var sec1, sec2 SecretKey
+ sec1.SetByCSPRNG()
+ s := sec1.SerializeToHexStr()
+ err := sec2.DeserializeHexStr(s)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !sec1.IsEqual(&sec2) {
+ t.Error("SecretKey not same")
+ }
+ pub1 := sec1.GetPublicKey()
+ s = pub1.SerializeToHexStr()
+ var pub2 PublicKey
+ err = pub2.DeserializeHexStr(s)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !pub1.IsEqual(&pub2) {
+ t.Error("PublicKey not same")
+ }
+ m := "doremi"
+ sign1 := sec1.Sign(m)
+ s = sign1.SerializeToHexStr()
+ var sign2 Sign
+ err = sign2.DeserializeHexStr(s)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !sign1.IsEqual(&sign2) {
+ t.Error("Sign not same")
+ }
+}
+
func testOrder(t *testing.T, c int) {
var curve string
var field string
@@ -337,6 +372,7 @@ func test(t *testing.T, c int) {
testStringConversion(t)
testOrder(t, c)
testDHKeyExchange(t)
+ testSerializeToHexStr(t)
}
func TestMain(t *testing.T) {
diff --git a/ffi/go/bls/mcl.go b/ffi/go/bls/mcl.go
index 713a8cc..9771201 100644
--- a/ffi/go/bls/mcl.go
+++ b/ffi/go/bls/mcl.go
@@ -20,6 +20,9 @@ const CurveFp382_2 = C.mclBn_CurveFp382_2
// BLS12_381
const BLS12_381 = C.MCL_BLS12_381
+// IoSerializeHexStr
+const IoSerializeHexStr = C.MCLBN_IO_SERIALIZE_HEX_STR
+
// GetMaxOpUnitSize --
func GetMaxOpUnitSize() int {
return int(C.MCLBN_FP_UNIT_SIZE)