diff --git a/ffi/cs/mcl/mcl.cs b/ffi/cs/mcl/mcl.cs index 84caac3..49483ee 100644 --- a/ffi/cs/mcl/mcl.cs +++ b/ffi/cs/mcl/mcl.cs @@ -33,6 +33,7 @@ namespace mcl { [DllImport(dllName)] public static extern void mclBnFr_neg(ref Fr y, in Fr x); [DllImport(dllName)] public static extern void mclBnFr_inv(ref Fr y, in Fr x); + [DllImport(dllName)] public static extern void mclBnFr_sqr(ref Fr y, in Fr x); [DllImport(dllName)] public static extern void mclBnFr_add(ref Fr z, in Fr x, in Fr y); [DllImport(dllName)] public static extern void mclBnFr_sub(ref Fr z, in Fr x, in Fr y); [DllImport(dllName)] public static extern void mclBnFr_mul(ref Fr z, in Fr x, in Fr y); @@ -52,6 +53,7 @@ namespace mcl { [DllImport(dllName)] public static extern void mclBnFp_neg(ref Fp y, in Fp x); [DllImport(dllName)] public static extern void mclBnFp_inv(ref Fp y, in Fp x); + [DllImport(dllName)] public static extern void mclBnFp_sqr(ref Fp y, in Fp x); [DllImport(dllName)] public static extern void mclBnFp_add(ref Fp z, in Fp x, in Fp y); [DllImport(dllName)] public static extern void mclBnFp_sub(ref Fp z, in Fp x, in Fp y); [DllImport(dllName)] public static extern void mclBnFp_mul(ref Fp z, in Fp x, in Fp y); @@ -93,6 +95,7 @@ namespace mcl { [DllImport(dllName)] public static extern long mclBnGT_getStr([Out] StringBuilder buf, long maxBufSize, in GT x, int ioMode); [DllImport(dllName)] public static extern void mclBnGT_neg(ref GT y, in GT x); [DllImport(dllName)] public static extern void mclBnGT_inv(ref GT y, in GT x); + [DllImport(dllName)] public static extern void mclBnGT_sqr(ref GT y, in GT x); [DllImport(dllName)] public static extern void mclBnGT_add(ref GT z, in GT x, in GT y); [DllImport(dllName)] public static extern void mclBnGT_sub(ref GT z, in GT x, in GT y); [DllImport(dllName)] public static extern void mclBnGT_mul(ref GT z, in GT x, in GT y); @@ -131,6 +134,155 @@ namespace mcl { mclBn_setETHserialization(1); mclBn_setMapToMode(MCL_MAP_TO_MODE_HASH_TO_CURVE); } + public static void Add(ref Fr z, in Fr x, in Fr y) + { + mclBnFr_add(ref z, x, y); + } + public static void Sub(ref Fr z, in Fr x, in Fr y) + { + mclBnFr_sub(ref z, x, y); + } + public static void Mul(ref Fr z, in Fr x, in Fr y) + { + mclBnFr_mul(ref z, x, y); + } + public static void Div(ref Fr z, in Fr x, in Fr y) + { + mclBnFr_div(ref z, x, y); + } + public static void Neg(ref Fr y, in Fr x) + { + mclBnFr_neg(ref y, x); + } + public static void Inv(ref Fr y, in Fr x) + { + mclBnFr_inv(ref y, x); + } + public static void Sqr(ref Fr y, in Fr x) + { + mclBnFr_sqr(ref y, x); + } + + public static void Add(ref Fp z, in Fp x, in Fp y) + { + mclBnFp_add(ref z, x, y); + } + public static void Sub(ref Fp z, in Fp x, in Fp y) + { + mclBnFp_sub(ref z, x, y); + } + public static void Mul(ref Fp z, in Fp x, in Fp y) + { + mclBnFp_mul(ref z, x, y); + } + public static void Div(ref Fp z, in Fp x, in Fp y) + { + mclBnFp_div(ref z, x, y); + } + public static void Neg(ref Fp y, in Fp x) + { + mclBnFp_neg(ref y, x); + } + public static void Inv(ref Fp y, in Fp x) + { + mclBnFp_inv(ref y, x); + } + public static void Sqr(ref Fp y, in Fp x) + { + mclBnFp_sqr(ref y, x); + } + public static void Add(ref G1 z, in G1 x, in G1 y) + { + mclBnG1_add(ref z, x, y); + } + public static void Sub(ref G1 z, in G1 x, in G1 y) + { + mclBnG1_sub(ref z, x, y); + } + public static void Mul(ref G1 z, in G1 x, in Fr y) + { + mclBnG1_mul(ref z, x, y); + } + public static void Neg(ref G1 y, in G1 x) + { + mclBnG1_neg(ref y, x); + } + public static void Dbl(ref G1 y, in G1 x) + { + mclBnG1_dbl(ref y, x); + } + public static void Normalize(ref G1 y, in G1 x) + { + mclBnG1_normalize(ref y, x); + } + public static void Add(ref G2 z, in G2 x, in G2 y) + { + mclBnG2_add(ref z, x, y); + } + public static void Sub(ref G2 z, in G2 x, in G2 y) + { + mclBnG2_sub(ref z, x, y); + } + public static void Mul(ref G2 z, in G2 x, in Fr y) + { + mclBnG2_mul(ref z, x, y); + } + public static void Neg(ref G2 y, in G2 x) + { + mclBnG2_neg(ref y, x); + } + public static void Dbl(ref G2 y, in G2 x) + { + mclBnG2_dbl(ref y, x); + } + public static void Normalize(ref G2 y, in G2 x) + { + mclBnG2_normalize(ref y, x); + } + public static void Add(ref GT z, in GT x, in GT y) + { + mclBnGT_add(ref z, x, y); + } + public static void Sub(ref GT z, in GT x, in GT y) + { + mclBnGT_sub(ref z, x, y); + } + public static void Mul(ref GT z, in GT x, in GT y) + { + mclBnGT_mul(ref z, x, y); + } + public static void Div(ref GT z, in GT x, in GT y) + { + mclBnGT_div(ref z, x, y); + } + public static void Neg(ref GT y, in GT x) + { + mclBnGT_neg(ref y, x); + } + public static void Inv(ref GT y, in GT x) + { + mclBnGT_inv(ref y, x); + } + public static void Sqr(ref GT y, in GT x) + { + mclBnGT_sqr(ref y, x); + } + public static void Pow(ref GT z, in GT x, in Fr y) + { + mclBnGT_pow(ref z, x, y); + } + public static void Pairing(ref GT z, in G1 x, in G2 y) + { + mclBn_pairing(ref z, x, y); + } + public static void FinalExp(ref GT y, in GT x) + { + mclBn_finalExp(ref y, x); + } + public static void MillerLoop(ref GT z, in G1 x, in G2 y) + { + mclBn_millerLoop(ref z, x, y); + } [StructLayout(LayoutKind.Sequential)] struct U128 { private ulong v0, v1; @@ -227,21 +379,25 @@ namespace mcl { { mclBnFr_inv(ref this, x); } + public void Sqr(in Fr x) + { + MCL.Sqr(ref this, x); + } public void Add(in Fr x, in Fr y) { - mclBnFr_add(ref this, x, y); + MCL.Add(ref this, x, y); } public void Sub(in Fr x, in Fr y) { - mclBnFr_sub(ref this, x, y); + MCL.Sub(ref this, x, y); } public void Mul(in Fr x, in Fr y) { - mclBnFr_mul(ref this, x, y); + MCL.Mul(ref this, x, y); } public void Div(in Fr x, in Fr y) { - mclBnFr_div(ref this, x, y); + MCL.Div(ref this, x, y); } public static Fr operator -(in Fr x) { @@ -352,27 +508,31 @@ namespace mcl { } public void Neg(in Fp x) { - mclBnFp_neg(ref this, x); + MCL.Neg(ref this, x); } public void Inv(in Fp x) { - mclBnFp_inv(ref this, x); + MCL.Inv(ref this, x); + } + public void Sqr(in Fp x) + { + MCL.Sqr(ref this, x); } public void Add(in Fp x, in Fp y) { - mclBnFp_add(ref this, x, y); + MCL.Add(ref this, x, y); } public void Sub(in Fp x, in Fp y) { - mclBnFp_sub(ref this, x, y); + MCL.Sub(ref this, x, y); } public void Mul(in Fp x, in Fp y) { - mclBnFp_mul(ref this, x, y); + MCL.Mul(ref this, x, y); } public void Div(in Fp x, in Fp y) { - mclBnFp_div(ref this, x, y); + MCL.Div(ref this, x, y); } public static Fp operator -(in Fp x) { @@ -467,27 +627,27 @@ namespace mcl { } public void Neg(in G1 x) { - mclBnG1_neg(ref this, x); + MCL.Neg(ref this, x); } public void Dbl(in G1 x) { - mclBnG1_dbl(ref this, x); + MCL.Dbl(ref this, x); } public void Normalize(in G1 x) { - mclBnG1_normalize(ref this, x); + MCL.Normalize(ref this, x); } public void Add(in G1 x, in G1 y) { - mclBnG1_add(ref this, x, y); + MCL.Add(ref this, x, y); } public void Sub(in G1 x, in G1 y) { - mclBnG1_sub(ref this, x, y); + MCL.Sub(ref this, x, y); } public void Mul(in G1 x, in Fr y) { - mclBnG1_mul(ref this, x, y); + MCL.Mul(ref this, x, y); } } [StructLayout(LayoutKind.Sequential)] @@ -548,27 +708,27 @@ namespace mcl { } public void Neg(in G2 x) { - mclBnG2_neg(ref this, x); + MCL.Neg(ref this, x); } public void Dbl(in G2 x) { - mclBnG2_dbl(ref this, x); + MCL.Dbl(ref this, x); } public void Normalize(in G2 x) { - mclBnG2_normalize(ref this, x); + MCL.Normalize(ref this, x); } public void Add(in G2 x, in G2 y) { - mclBnG2_add(ref this, x, y); + MCL.Add(ref this, x, y); } public void Sub(in G2 x, in G2 y) { - mclBnG2_sub(ref this, x, y); + MCL.Sub(ref this, x, y); } - public void Mul(in G2 x, Fr y) + public void Mul(in G2 x, in Fr y) { - mclBnG2_mul(ref this, x, y); + MCL.Mul(ref this, x, y); } } [StructLayout(LayoutKind.Sequential)] @@ -607,27 +767,31 @@ namespace mcl { } public void Neg(in GT x) { - mclBnGT_neg(ref this, x); + MCL.Neg(ref this, x); } public void Inv(in GT x) { - mclBnGT_inv(ref this, x); + MCL.Inv(ref this, x); + } + public void Sqr(in GT x) + { + MCL.Sqr(ref this, x); } public void Add(in GT x, in GT y) { - mclBnGT_add(ref this, x, y); + MCL.Add(ref this, x, y); } public void Sub(in GT x, in GT y) { - mclBnGT_sub(ref this, x, y); + MCL.Sub(ref this, x, y); } public void Mul(in GT x, in GT y) { - mclBnGT_mul(ref this, x, y); + MCL.Mul(ref this, x, y); } public void Div(in GT x, in GT y) { - mclBnGT_div(ref this, x, y); + MCL.Div(ref this, x, y); } public static GT operator -(in GT x) { @@ -661,19 +825,19 @@ namespace mcl { } public void Pow(in GT x, in Fr y) { - mclBnGT_pow(ref this, x, y); + MCL.Pow(ref this, x, y); } public void Pairing(in G1 x, in G2 y) { - mclBn_pairing(ref this, x, y); + MCL.Pairing(ref this, x, y); } public void FinalExp(in GT x) { - mclBn_finalExp(ref this, x); + MCL.FinalExp(ref this, x); } public void MillerLoop(in G1 x, in G2 y) { - mclBn_millerLoop(ref this, x, y); + MCL.MillerLoop(ref this, x, y); } } }