aboutsummaryrefslogtreecommitdiffstats
path: root/ffi/go/bls/mcl.go
diff options
context:
space:
mode:
Diffstat (limited to 'ffi/go/bls/mcl.go')
-rw-r--r--ffi/go/bls/mcl.go38
1 files changed, 38 insertions, 0 deletions
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())