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