diff --git a/ffi/java/MclTest.java b/ffi/java/MclTest.java index 3dd6dc7..1bbc3ce 100644 --- a/ffi/java/MclTest.java +++ b/ffi/java/MclTest.java @@ -51,6 +51,8 @@ public class MclTest { Fr t = new Fr(); t.deserialize(b); assertBool("serialize", x.equals(t)); + t.setLittleEndianMod(b); + assertBool("setLittleEndianMod", x.equals(t)); } G1 P = new G1(); System.out.println("P=" + P); diff --git a/ffi/java/com/herumi/mcl/Fr.java b/ffi/java/com/herumi/mcl/Fr.java index 8ed95df..b992652 100644 --- a/ffi/java/com/herumi/mcl/Fr.java +++ b/ffi/java/com/herumi/mcl/Fr.java @@ -96,6 +96,10 @@ public class Fr { MclJNI.Fr_deserialize(swigCPtr, this, cbuf); } + public void setLittleEndianMod(byte[] cbuf) { + MclJNI.Fr_setLittleEndianMod(swigCPtr, this, cbuf); + } + public byte[] serialize() { return MclJNI.Fr_serialize(swigCPtr, this); } } diff --git a/ffi/java/com/herumi/mcl/MclJNI.java b/ffi/java/com/herumi/mcl/MclJNI.java index 24e34cf..05345c2 100644 --- a/ffi/java/com/herumi/mcl/MclJNI.java +++ b/ffi/java/com/herumi/mcl/MclJNI.java @@ -33,6 +33,7 @@ public class MclJNI { public final static native String Fr_toString__SWIG_0(long jarg1, Fr jarg1_, int jarg2); public final static native String Fr_toString__SWIG_1(long jarg1, Fr jarg1_); public final static native void Fr_deserialize(long jarg1, Fr jarg1_, byte[] jarg2); + public final static native void Fr_setLittleEndianMod(long jarg1, Fr jarg1_, byte[] jarg2); public final static native byte[] Fr_serialize(long jarg1, Fr jarg1_); public final static native void delete_Fr(long jarg1); public final static native void neg__SWIG_1(long jarg1, Fp jarg1_, long jarg2, Fp jarg2_); diff --git a/ffi/java/mcl_impl.hpp b/ffi/java/mcl_impl.hpp index 9bd1ef6..2319114 100644 --- a/ffi/java/mcl_impl.hpp +++ b/ffi/java/mcl_impl.hpp @@ -28,6 +28,12 @@ void deserializeT(T& x, const char *cbuf, size_t bufSize) } } +template +void setLittleEndianModT(T& x, const char *cbuf, size_t bufSize) +{ + x.setLittleEndianMod(cbuf, bufSize); +} + template void serializeT(std::string& out, const T& x) { @@ -88,6 +94,10 @@ public: { deserializeT(self_, cbuf, bufSize); } + void setLittleEndianMod(const char *cbuf, size_t bufSize) throw(std::exception) + { + setLittleEndianModT(self_, cbuf, bufSize); + } void serialize(std::string& out) const throw(std::exception) { serializeT(out, self_); diff --git a/ffi/java/mcl_wrap.cxx b/ffi/java/mcl_wrap.cxx index 1caec48..802c722 100644 --- a/ffi/java/mcl_wrap.cxx +++ b/ffi/java/mcl_wrap.cxx @@ -789,6 +789,37 @@ SWIGEXPORT void JNICALL Java_com_herumi_mcl_MclJNI_Fr_1deserialize(JNIEnv *jenv, } +SWIGEXPORT void JNICALL Java_com_herumi_mcl_MclJNI_Fr_1setLittleEndianMod(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jbyteArray jarg2) { + Fr *arg1 = (Fr *) 0 ; + char *arg2 = (char *) 0 ; + size_t arg3 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(Fr **)&jarg1; + { + if (jarg2) { + arg2 = (char *) jenv->GetByteArrayElements(jarg2, 0); + arg3 = (size_t) jenv->GetArrayLength(jarg2); + } else { + arg2 = 0; + arg3 = 0; + } + } + try { + (arg1)->setLittleEndianMod((char const *)arg2,arg3); + } catch(std::exception &_e) { + SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, (&_e)->what()); + return ; + } + { + if (jarg2) jenv->ReleaseByteArrayElements(jarg2, (jbyte *)arg2, 0); + } + +} + + SWIGEXPORT jbyteArray JNICALL Java_com_herumi_mcl_MclJNI_Fr_1serialize(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { jbyteArray jresult = 0 ; Fr *arg1 = (Fr *) 0 ;