aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ffi/go/bls/bls.go32
-rw-r--r--ffi/go/bls/mcl.go38
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())