/** * Returns an amcl.BN256.ECP2 on input of an ECP2 protobuf object. * * @param w a protobuf object representing an ECP2 * @return a ECP2 created from the protobuf object */ public static ECP2 ToECP2(this Protos.Idemix.ECP2 w) { byte[] valuexa = w.Xa.ToByteArray(); byte[] valuexb = w.Xb.ToByteArray(); byte[] valueya = w.Ya.ToByteArray(); byte[] valueyb = w.Yb.ToByteArray(); FP2 valuex = new FP2(BIG.FromBytes(valuexa), BIG.FromBytes(valuexb)); FP2 valuey = new FP2(BIG.FromBytes(valueya), BIG.FromBytes(valueyb)); return(new ECP2(valuex, valuey)); }
/** * Converts an amcl.BN256.ECP2 into an ECP2 protobuf object. * * @param w an ECP2 to be transformed into a protobuf object * @return a protobuf representation of the ECP2 */ public static Protos.Idemix.ECP2 ToProto(this ECP2 w) { byte[] valueXA = new byte[FIELD_BYTES]; byte[] valueXB = new byte[FIELD_BYTES]; byte[] valueYA = new byte[FIELD_BYTES]; byte[] valueYB = new byte[FIELD_BYTES]; w.X.A.ToBytes(valueXA); w.X.B.ToBytes(valueXB); w.Y.A.ToBytes(valueYA); w.Y.B.ToBytes(valueYB); Protos.Idemix.ECP2 ecp2 = new Protos.Idemix.ECP2(); ecp2.Xa = ByteString.CopyFrom(valueXA); ecp2.Xb = ByteString.CopyFrom(valueXB); ecp2.Ya = ByteString.CopyFrom(valueYA); ecp2.Yb = ByteString.CopyFrom(valueYB); return(ecp2); }