diff options
-rw-r--r-- | ffi/go/bls/bls.go | 32 | ||||
-rw-r--r-- | ffi/go/bls/mcl.go | 38 |
2 files changed, 70 insertions, 0 deletions
diff --git a/ffi/go/bls/bls.go b/ffi/go/bls/bls.go index e9a6be3..b93837d 100644 --- a/ffi/go/bls/bls.go +++ b/ffi/go/bls/bls.go @@ -54,6 +54,14 @@ func (id *ID) SetLittleEndian(buf []byte) error { return id.v.SetLittleEndian(buf) } +func (id *ID) SerializeBig() []byte { + return id.v.SerializeBig() +} + +func (id *ID) DeserializeBig(buf []byte) error { + return id.v.DeserializeBig(buf) +} + // GetHexString -- func (id *ID) GetHexString() string { return id.v.GetString(16) @@ -126,6 +134,14 @@ func (sec *SecretKey) SetLittleEndian(buf []byte) error { return sec.v.SetLittleEndian(buf) } +func (sec *SecretKey) SerializeBig() []byte { + return sec.v.SerializeBig() +} + +func (sec *SecretKey) DeserializeBig(buf []byte) error { + return sec.v.DeserializeBig(buf) +} + // SerializeToHexStr -- func (sec *SecretKey) SerializeToHexStr() string { return sec.v.GetString(IoSerializeHexStr) @@ -257,6 +273,14 @@ func (pub *PublicKey) Deserialize(buf []byte) error { return pub.v.Deserialize(buf) } +func (pub *PublicKey) SerializeBig() []byte { + return pub.v.SerializeBig() +} + +func (pub *PublicKey) DeserializeBig(buf []byte) error { + return pub.v.DeserializeBig(buf) +} + // SerializeToHexStr -- func (pub *PublicKey) SerializeToHexStr() string { return pub.v.GetString(IoSerializeHexStr) @@ -346,6 +370,14 @@ func (sign *Sign) Deserialize(buf []byte) error { return sign.v.Deserialize(buf) } +func (sign *Sign) SerializeBig() []byte { + return sign.v.SerializeBig() +} + +func (sign *Sign) DeserializeBig(buf []byte) error { + return sign.v.DeserializeBig(buf) +} + // SerializeToHexStr -- func (sign *Sign) SerializeToHexStr() string { return sign.v.GetString(IoSerializeHexStr) diff --git a/ffi/go/bls/mcl.go b/ffi/go/bls/mcl.go index ca8d7f0..7c1dd9c 100644 --- a/ffi/go/bls/mcl.go +++ b/ffi/go/bls/mcl.go @@ -72,6 +72,14 @@ func GetFieldOrder() string { return string(buf[:n]) } +func reverse(b []byte) []byte { + l := make([]byte, len(b)) + for i := 0; i < len(b); i++ { + l[i] = b[len(b)-i-1] + } + return l +} + // Fr -- type Fr struct { v C.mclBnFr @@ -177,6 +185,16 @@ func (x *Fr) Serialize() []byte { return buf[:n] } +// SerializeBig serialize Fr to big endian +func (x *Fr) SerializeBig() []byte { + return reverse(x.Serialize()) +} + +// DeserializeBig deserialize Fr from big endian +func (x *Fr) DeserializeBig(buf []byte) error { + return x.Deserialize(reverse(buf)) +} + // FrNeg -- func FrNeg(out *Fr, x *Fr) { C.mclBnFr_neg(out.getPointer(), x.getPointer()) @@ -287,6 +305,16 @@ func (x *G1) Serialize() []byte { return buf[:n] } +// SerializeBig serialize G1 to big endian +func (x *G1) SerializeBig() []byte { + return reverse(x.Serialize()) +} + +// DeserializeBig deserialize G1 from big endian +func (x *G1) DeserializeBig(buf []byte) error { + return x.Deserialize(reverse(buf)) +} + // G1Neg -- func G1Neg(out *G1, x *G1) { C.mclBnG1_neg(out.getPointer(), x.getPointer()) @@ -397,6 +425,16 @@ func (x *G2) Serialize() []byte { return buf[:n] } +// SerializeBig serialize G2 to big endian +func (x *G2) SerializeBig() []byte { + return reverse(x.Serialize()) +} + +// DeserializeBig deserialize G2 from big endian +func (x *G2) DeserializeBig(buf []byte) error { + return x.Deserialize(reverse(buf)) +} + // G2Neg -- func G2Neg(out *G2, x *G2) { C.mclBnG2_neg(out.getPointer(), x.getPointer()) |