diff options
Diffstat (limited to 'ffi/go/bls')
-rw-r--r-- | ffi/go/bls/bls.go | 30 | ||||
-rw-r--r-- | ffi/go/bls/bls_test.go | 36 | ||||
-rw-r--r-- | ffi/go/bls/mcl.go | 3 |
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) |