Return byteArray instead of array of byteArrays
This commit is contained in:
parent
3efca867e6
commit
41ddd40691
@ -278,9 +278,9 @@ JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp2
|
|||||||
/*
|
/*
|
||||||
* Class: fr_acinq_secp256k1_Secp256k1CFunctions
|
* Class: fr_acinq_secp256k1_Secp256k1CFunctions
|
||||||
* Method: secp256k1_frost_share_agg
|
* Method: secp256k1_frost_share_agg
|
||||||
* Signature: (J[[B[[[BII[B)[[B
|
* Signature: (J[[B[[[BII[B)[B
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1share_1agg
|
JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1share_1agg
|
||||||
(JNIEnv *, jclass, jlong, jobjectArray, jobjectArray, jint, jint, jbyteArray);
|
(JNIEnv *, jclass, jlong, jobjectArray, jobjectArray, jint, jint, jbyteArray);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -318,17 +318,17 @@ JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256
|
|||||||
/*
|
/*
|
||||||
* Class: fr_acinq_secp256k1_Secp256k1CFunctions
|
* Class: fr_acinq_secp256k1_Secp256k1CFunctions
|
||||||
* Method: secp256k1_frost_pubkey_xonly_tweak_add
|
* Method: secp256k1_frost_pubkey_xonly_tweak_add
|
||||||
* Signature: (J[B[B)[[B
|
* Signature: (J[B[B)[B
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1pubkey_1xonly_1tweak_1add
|
JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1pubkey_1xonly_1tweak_1add
|
||||||
(JNIEnv *, jclass, jlong, jbyteArray, jbyteArray);
|
(JNIEnv *, jclass, jlong, jbyteArray, jbyteArray);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: fr_acinq_secp256k1_Secp256k1CFunctions
|
* Class: fr_acinq_secp256k1_Secp256k1CFunctions
|
||||||
* Method: secp256k1_frost_nonce_gen
|
* Method: secp256k1_frost_nonce_gen
|
||||||
* Signature: (J[B[B[B[B[B)[[B
|
* Signature: (J[B[B[B[B[B)[B
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1nonce_1gen
|
JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1nonce_1gen
|
||||||
(JNIEnv *, jclass, jlong, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray);
|
(JNIEnv *, jclass, jlong, jbyteArray, jbyteArray, jbyteArray, jbyteArray, jbyteArray);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1440,7 +1440,7 @@ void free_shares(secp256k1_frost_share **shares, size_t count)
|
|||||||
* Method: secp256k1_frost_share_agg
|
* Method: secp256k1_frost_share_agg
|
||||||
* Signature: (J[[B[[[BII[B)[[B
|
* Signature: (J[[B[[[BII[B)[[B
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1share_1agg
|
JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1share_1agg
|
||||||
(JNIEnv *penv, jclass clazz, jlong jctx, jobjectArray jshares, jobjectArray jvss_commitments, jint jtotalShareCount, jint jthreshold, jbyteArray jid33)
|
(JNIEnv *penv, jclass clazz, jlong jctx, jobjectArray jshares, jobjectArray jvss_commitments, jint jtotalShareCount, jint jthreshold, jbyteArray jid33)
|
||||||
{
|
{
|
||||||
secp256k1_context *ctx = (secp256k1_context *)jctx;
|
secp256k1_context *ctx = (secp256k1_context *)jctx;
|
||||||
@ -1462,6 +1462,10 @@ JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp2
|
|||||||
|
|
||||||
size_t size, count;
|
size_t size, count;
|
||||||
|
|
||||||
|
jbyteArray jresult;
|
||||||
|
jbyte *result_ptr = NULL;
|
||||||
|
unsigned char result_array[32 + 32]; // TODO: Put correct pubnonce
|
||||||
|
|
||||||
if (jctx == 0)
|
if (jctx == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -1511,7 +1515,6 @@ JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp2
|
|||||||
|
|
||||||
id33 = (*penv)->GetByteArrayElements(penv, jid33, 0);
|
id33 = (*penv)->GetByteArrayElements(penv, jid33, 0);
|
||||||
|
|
||||||
|
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
result = secp256k1_frost_share_agg(
|
result = secp256k1_frost_share_agg(
|
||||||
@ -1525,24 +1528,18 @@ JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp2
|
|||||||
(unsigned char *)id33
|
(unsigned char *)id33
|
||||||
);
|
);
|
||||||
|
|
||||||
jobjectArray output = (*penv)->NewObjectArray(penv, 2, jbyteArray, NULL);
|
result = secp256k1_frost_share_serialize(ctx, result_array, &aggregate_share);
|
||||||
|
|
||||||
jaggregate_share = (*penv)->NewByteArray(penv, 64);
|
|
||||||
copy_bytes_to_java(penv, jaggregate_share, 64, aggregate_share);
|
|
||||||
|
|
||||||
output[0] = (*penv)->NewByteArray(penv, 32);
|
|
||||||
pub = (*penv)->GetByteArrayElements(penv, output[0], 0);
|
|
||||||
result = secp256k1_frost_share_serialize(ctx, (unsigned char *)pub, &aggregate_share);
|
|
||||||
(*penv)->ReleaseByteArrayElements(penv, output[0], pub, 0);
|
|
||||||
CHECKRESULT(!result, "secp256k1_frost_share_serialize failed");
|
CHECKRESULT(!result, "secp256k1_frost_share_serialize failed");
|
||||||
|
|
||||||
output[1] = (*penv)->NewByteArray(penv, 32);
|
result = secp256k1_xonly_pubkey_serialize(ctx, result_array + 32, &aggregate_public_key);
|
||||||
pub = (*penv)->GetByteArrayElements(penv, output[1], 0);
|
|
||||||
result = secp256k1_xonly_pubkey_serialize(ctx, (unsigned char *)pub, &aggregate_public_key);
|
|
||||||
(*penv)->ReleaseByteArrayElements(penv, output[1], pub, 0);
|
|
||||||
CHECKRESULT(!result, "secp256k1_xonly_pubkey_serialize failed");
|
CHECKRESULT(!result, "secp256k1_xonly_pubkey_serialize failed");
|
||||||
|
|
||||||
return output;
|
jresult = (*penv)->NewByteArray(penv, sizeof(result_array));
|
||||||
|
result_ptr = (*penv)->GetByteArrayElements(penv, jresult, 0);
|
||||||
|
memcpy(result_ptr, result_array, sizeof(result_array));
|
||||||
|
(*penv)->ReleaseByteArrayElements(penv, jresult, result_ptr, 0);
|
||||||
|
|
||||||
|
return jresult;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1581,11 +1578,11 @@ JNIEXPORT jint JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1fr
|
|||||||
|
|
||||||
share = calloc(1, sizeof(secp256k1_frost_share));
|
share = calloc(1, sizeof(secp256k1_frost_share));
|
||||||
size = (*penv)->GetArrayLength(penv, jshare);
|
size = (*penv)->GetArrayLength(penv, jshare);
|
||||||
// TODO: CHECKRESULT1(size != fr_acinq_secp256k1_Secp256k1CFunctions_SECP256K1_MUSIG_PUBLIC_NONCE_SIZE, "invalid public nonce size", free_nonces(pubnonces, count));
|
CHECKRESULT1(size != sizeof(secp256k1_frost_share), "invalid share size", free(&share));
|
||||||
in32 = (*penv)->GetByteArrayElements(penv, jshare, 0);
|
in32 = (*penv)->GetByteArrayElements(penv, jshare, 0);
|
||||||
result = secp256k1_frost_share_parse(ctx, share, (unsigned char *)in32);
|
result = secp256k1_frost_share_parse(ctx, share, (unsigned char *)in32);
|
||||||
(*penv)->ReleaseByteArrayElements(penv, jshare, in32, 0);
|
(*penv)->ReleaseByteArrayElements(penv, jshare, in32, 0);
|
||||||
// TODO: CHECKRESULT1(!result, "secp256k1_frost_share_parse failed", free_shares(shares, count));
|
CHECKRESULT1(!result, "secp256k1_frost_share_parse failed", free(&share));
|
||||||
|
|
||||||
id33 = (*penv)->GetByteArrayElements(penv, jid33, 0);
|
id33 = (*penv)->GetByteArrayElements(penv, jid33, 0);
|
||||||
|
|
||||||
@ -1779,7 +1776,7 @@ JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256
|
|||||||
* Method: secp256k1_frost_pubkey_xonly_tweak_add
|
* Method: secp256k1_frost_pubkey_xonly_tweak_add
|
||||||
* Signature: (J[B[B)[[B
|
* Signature: (J[B[B)[[B
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1pubkey_1xonly_1tweak_1add
|
JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1pubkey_1xonly_1tweak_1add
|
||||||
(JNIEnv *penv, jclass clazz, jlong jctx, jbyteArray jtweak_cache, jbyteArray jtweak32)
|
(JNIEnv *penv, jclass clazz, jlong jctx, jbyteArray jtweak_cache, jbyteArray jtweak32)
|
||||||
{
|
{
|
||||||
secp256k1_context *ctx = (secp256k1_context *)jctx;
|
secp256k1_context *ctx = (secp256k1_context *)jctx;
|
||||||
@ -1808,14 +1805,20 @@ JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp2
|
|||||||
CHECKRESULT((*penv)->GetArrayLength(penv, jtweak32) != 32, "tweak must be 32 bytes");
|
CHECKRESULT((*penv)->GetArrayLength(penv, jtweak32) != 32, "tweak must be 32 bytes");
|
||||||
tweak32 = (*penv)->GetByteArrayElements(penv, jtweak32, 0);
|
tweak32 = (*penv)->GetByteArrayElements(penv, jtweak32, 0);
|
||||||
|
|
||||||
int result = secp256k1_frost_pubkey_ec_tweak_add(
|
int result = secp256k1_frost_pubkey_xonly_tweak_add(
|
||||||
ctx,
|
ctx,
|
||||||
pubkey,
|
&pubkey,
|
||||||
&tweak_cache,
|
&tweak_cache,
|
||||||
&public_key
|
&public_key
|
||||||
);
|
);
|
||||||
|
|
||||||
(*penv)->ReleaseByteArrayElements(penv, jtweak32, tweak32, 0);
|
(*penv)->ReleaseByteArrayElements(penv, jtweak32, tweak32, 0);
|
||||||
CHECKRESULT(!result, "secp256k1_frost_pubkey_ec_tweak_add failed");
|
CHECKRESULT(!result, "secp256k1_frost_pubkey_xonly_tweak_add failed");
|
||||||
|
|
||||||
|
jbyteArray jresult;
|
||||||
|
jbyte *result_ptr = NULL;
|
||||||
|
unsigned char result_array[32 + sizeof(secp256k1_frost_tweak_cache)]; // TODO: Put correct pubnonce
|
||||||
|
|
||||||
|
|
||||||
jpubkey = (*penv)->NewByteArray(penv, 65);
|
jpubkey = (*penv)->NewByteArray(penv, 65);
|
||||||
pub = (*penv)->GetByteArrayElements(penv, jpubkey, 0);
|
pub = (*penv)->GetByteArrayElements(penv, jpubkey, 0);
|
||||||
@ -1825,7 +1828,7 @@ JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp2
|
|||||||
CHECKRESULT(!result, "secp256k1_ec_pubkey_serialize failed");
|
CHECKRESULT(!result, "secp256k1_ec_pubkey_serialize failed");
|
||||||
|
|
||||||
pub = (*penv)->GetByteArrayElements(penv, jtweak_cache, 0);
|
pub = (*penv)->GetByteArrayElements(penv, jtweak_cache, 0);
|
||||||
memcpy(pub, tweak_cache.data, sizeof(secp256k1_musig_keyagg_cache));
|
memcpy(pub, tweak_cache.data, sizeof(secp256k1_frost_tweak_cache));
|
||||||
(*penv)->ReleaseByteArrayElements(penv, jtweak_cache, pub, 0);
|
(*penv)->ReleaseByteArrayElements(penv, jtweak_cache, pub, 0);
|
||||||
|
|
||||||
return jpubkey;
|
return jpubkey;
|
||||||
@ -1836,7 +1839,7 @@ JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp2
|
|||||||
* Method: secp256k1_frost_nonce_gen
|
* Method: secp256k1_frost_nonce_gen
|
||||||
* Signature: (J[B[B[B[B[B)[[B
|
* Signature: (J[B[B[B[B[B)[[B
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1nonce_1gen
|
JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1frost_1nonce_1gen
|
||||||
(JNIEnv *penv, jclass clazz, jlong jctx, jbyteArray jsession_id32, jbyteArray jshare, jbyteArray jmsg32, jbyteArray jpubkey, jbyteArray jextra_input32)
|
(JNIEnv *penv, jclass clazz, jlong jctx, jbyteArray jsession_id32, jbyteArray jshare, jbyteArray jmsg32, jbyteArray jpubkey, jbyteArray jextra_input32)
|
||||||
{
|
{
|
||||||
secp256k1_context *ctx = (secp256k1_context *)jctx;
|
secp256k1_context *ctx = (secp256k1_context *)jctx;
|
||||||
@ -1856,6 +1859,10 @@ JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp2
|
|||||||
secp256k1_musig_keyagg_cache keyaggcache;
|
secp256k1_musig_keyagg_cache keyaggcache;
|
||||||
unsigned char extra_input32[32];
|
unsigned char extra_input32[32];
|
||||||
|
|
||||||
|
jbyteArray jnonce;
|
||||||
|
jbyte *nonce_ptr = NULL;
|
||||||
|
unsigned char nonce[sizeof(secp256k1_frost_secnonce) + sizeof(secp256k1_frost_pubnonce)]; // TODO: Put correct pubnonce
|
||||||
|
|
||||||
size_t size, count;
|
size_t size, count;
|
||||||
|
|
||||||
if (jctx == 0)
|
if (jctx == 0)
|
||||||
@ -1915,18 +1922,17 @@ JNIEXPORT jobjectArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp2
|
|||||||
);
|
);
|
||||||
|
|
||||||
CHECKRESULT(!result, "secp256k1_frost_nonce_gen failed");
|
CHECKRESULT(!result, "secp256k1_frost_nonce_gen failed");
|
||||||
// TODO: copy nonce result...
|
|
||||||
// memcpy(nonce, secnonce.data, fr_acinq_secp256k1_Secp256k1CFunctions_SECP256K1_MUSIG_SECRET_NONCE_SIZE);
|
|
||||||
// result = secp256k1_musig_pubnonce_serialize(ctx, nonce + fr_acinq_secp256k1_Secp256k1CFunctions_SECP256K1_MUSIG_SECRET_NONCE_SIZE, &pubnonce);
|
|
||||||
// CHECKRESULT(!result, "secp256k1_musig_pubnonce_serialize failed");
|
|
||||||
//
|
|
||||||
// jnonce = (*penv)->NewByteArray(penv, sizeof(nonce));
|
|
||||||
// nonce_ptr = (*penv)->GetByteArrayElements(penv, jnonce, 0);
|
|
||||||
// memcpy(nonce_ptr, nonce, sizeof(nonce));
|
|
||||||
// (*penv)->ReleaseByteArrayElements(penv, jnonce, nonce_ptr, 0);
|
|
||||||
//
|
|
||||||
// return jnonce;
|
|
||||||
|
|
||||||
|
memcpy(nonce, secnonce.data, sizeof(secp256k1_frost_secnonce));
|
||||||
|
result = secp256k1_frost_pubnonce_serialize(ctx, nonce + sizeof(secp256k1_frost_secnonce), &pubnonce);
|
||||||
|
CHECKRESULT(!result, "secp256k1_frost_pubnonce_serialize failed");
|
||||||
|
|
||||||
|
jnonce = (*penv)->NewByteArray(penv, sizeof(nonce));
|
||||||
|
nonce_ptr = (*penv)->GetByteArrayElements(penv, jnonce, 0);
|
||||||
|
memcpy(nonce_ptr, nonce, sizeof(nonce));
|
||||||
|
(*penv)->ReleaseByteArrayElements(penv, jnonce, nonce_ptr, 0);
|
||||||
|
|
||||||
|
return jnonce;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -161,7 +161,7 @@ public class Secp256k1CFunctions {
|
|||||||
* [0] agg_share: the aggregated share
|
* [0] agg_share: the aggregated share
|
||||||
* [1] agg_pk: the aggregated x-only public key
|
* [1] agg_pk: the aggregated x-only public key
|
||||||
*/
|
*/
|
||||||
public static native byte[][] secp256k1_frost_share_agg(long ctx, byte[][] shares, byte[][][] vss_commitments, int totalShareCount, int threshold, byte[] id33);
|
public static native byte[] secp256k1_frost_share_agg(long ctx, byte[][] shares, byte[][][] vss_commitments, int totalShareCount, int threshold, byte[] id33);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verifies a share received during a key generation session
|
* Verifies a share received during a key generation session
|
||||||
@ -269,7 +269,7 @@ public class Secp256k1CFunctions {
|
|||||||
* function returns 0. If you do not need it, this arg can be NULL.
|
* function returns 0. If you do not need it, this arg can be NULL.
|
||||||
* [1] tweak_cache: pointer to a `frost_tweak_cache` struct initialized by `frost_pubkey_tweak`
|
* [1] tweak_cache: pointer to a `frost_tweak_cache` struct initialized by `frost_pubkey_tweak`
|
||||||
*/
|
*/
|
||||||
public static native byte[][] secp256k1_frost_pubkey_xonly_tweak_add(long ctx, byte[] tweakCache, byte[] tweak32);
|
public static native byte[] secp256k1_frost_pubkey_xonly_tweak_add(long ctx, byte[] tweakCache, byte[] tweak32);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts a signing session by generating a nonce
|
* Starts a signing session by generating a nonce
|
||||||
@ -310,7 +310,7 @@ public class Secp256k1CFunctions {
|
|||||||
* [0] secnonce: pointer to a structure to store the secret nonce
|
* [0] secnonce: pointer to a structure to store the secret nonce
|
||||||
* [1] pubnonce: pointer to a structure to store the public nonce
|
* [1] pubnonce: pointer to a structure to store the public nonce
|
||||||
*/
|
*/
|
||||||
public static native byte[][] secp256k1_frost_nonce_gen(long ctx, byte[] sessionId32, byte[] share, byte[] msg32, byte[] publicKey, byte[] extraInput32);
|
public static native byte[] secp256k1_frost_nonce_gen(long ctx, byte[] sessionId32, byte[] share, byte[] msg32, byte[] publicKey, byte[] extraInput32);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes the public nonces of all signers and computes a session that is
|
* Takes the public nonces of all signers and computes a session that is
|
||||||
|
@ -166,8 +166,8 @@ public object NativeSecp256k1 : Secp256k1 {
|
|||||||
id33
|
id33
|
||||||
)
|
)
|
||||||
return Pair(
|
return Pair(
|
||||||
result[0], // agg_share
|
result.take(Secp256k1.FROST_SERIALIZED_SHARE_SIZE).toByteArray(), // agg_share
|
||||||
result[1] // agg_pk
|
result.takeLast(Secp256k1.SERIALIZED_X_ONLY_PUBKEY_SIZE).toByteArray() // agg_pk
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,17 +216,12 @@ public object NativeSecp256k1 : Secp256k1 {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun frostPublicKeyXonlyTweakAdd(tweakCache: ByteArray, tweak32: ByteArray): Pair<ByteArray?, ByteArray> {
|
override fun frostPublicKeyXonlyTweakAdd(tweakCache: ByteArray, tweak32: ByteArray): ByteArray? {
|
||||||
val result = Secp256k1CFunctions.secp256k1_frost_pubkey_xonly_tweak_add(
|
return Secp256k1CFunctions.secp256k1_frost_pubkey_xonly_tweak_add(
|
||||||
Secp256k1Context.getContext(),
|
Secp256k1Context.getContext(),
|
||||||
tweakCache,
|
tweakCache,
|
||||||
tweak32
|
tweak32
|
||||||
)
|
)
|
||||||
|
|
||||||
return Pair(
|
|
||||||
result[0], // output_pubkey
|
|
||||||
result[1] // tweak_cache
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun frostNonceGen(
|
override fun frostNonceGen(
|
||||||
@ -246,8 +241,8 @@ public object NativeSecp256k1 : Secp256k1 {
|
|||||||
)
|
)
|
||||||
|
|
||||||
return Pair(
|
return Pair(
|
||||||
result[0], // secnonce
|
result.take(Secp256k1.FROST_SECNONCE_SIZE).toByteArray(), // secnonce
|
||||||
result[1] // pubnonce
|
result.takeLast(Secp256k1.FROST_SERIALIZED_PUBNONCE_SIZE).toByteArray() // pubnonce
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,7 +293,7 @@ public interface Secp256k1 {
|
|||||||
|
|
||||||
public fun frostPublicKeyEcTweakAdd(tweakCache: ByteArray, tweak32: ByteArray): ByteArray?
|
public fun frostPublicKeyEcTweakAdd(tweakCache: ByteArray, tweak32: ByteArray): ByteArray?
|
||||||
|
|
||||||
public fun frostPublicKeyXonlyTweakAdd(tweakCache: ByteArray, tweak32: ByteArray): Pair<ByteArray?, ByteArray>
|
public fun frostPublicKeyXonlyTweakAdd(tweakCache: ByteArray, tweak32: ByteArray): ByteArray?
|
||||||
|
|
||||||
public fun frostNonceGen(sessionId32: ByteArray, share: ByteArray?, msg32: ByteArray?, publicKey: ByteArray?, extraInput32: ByteArray?): Pair<ByteArray, ByteArray>
|
public fun frostNonceGen(sessionId32: ByteArray, share: ByteArray?, msg32: ByteArray?, publicKey: ByteArray?, extraInput32: ByteArray?): Pair<ByteArray, ByteArray>
|
||||||
|
|
||||||
@ -320,6 +320,7 @@ public interface Secp256k1 {
|
|||||||
|
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
public const val X_ONLY_PUBKEY_SIZE: Int = 64
|
public const val X_ONLY_PUBKEY_SIZE: Int = 64
|
||||||
|
public const val SERIALIZED_X_ONLY_PUBKEY_SIZE: Int = 32
|
||||||
|
|
||||||
public const val MUSIG2_SECRET_NONCE_SIZE: Int = 132
|
public const val MUSIG2_SECRET_NONCE_SIZE: Int = 132
|
||||||
public const val MUSIG2_PUBLIC_NONCE_SIZE: Int = 66
|
public const val MUSIG2_PUBLIC_NONCE_SIZE: Int = 66
|
||||||
@ -334,8 +335,8 @@ public interface Secp256k1 {
|
|||||||
public const val FROST_SECNONCE_SIZE: Int = 69
|
public const val FROST_SECNONCE_SIZE: Int = 69
|
||||||
public const val FROST_PUBNONCE_SIZE: Int = 133
|
public const val FROST_PUBNONCE_SIZE: Int = 133
|
||||||
public const val FROST_SERIALIZED_PARTIAL_SIGNATURE_SIZE: Int = 33
|
public const val FROST_SERIALIZED_PARTIAL_SIGNATURE_SIZE: Int = 33
|
||||||
public const val FROST_SERIALIZED_SHARE_SIZE: Int = 33
|
public const val FROST_SERIALIZED_SHARE_SIZE: Int = 32
|
||||||
public const val FROST_SERIALIZED_PUBNONCE_SIZE: Int = 67
|
public const val FROST_SERIALIZED_PUBNONCE_SIZE: Int = 66
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -696,7 +696,7 @@ public object Secp256k1Native : Secp256k1 {
|
|||||||
return natOutput
|
return natOutput
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun frostPublicKeyXonlyTweakAdd(tweakCache: ByteArray, tweak32: ByteArray): Pair<ByteArray?, ByteArray> {
|
override fun frostPublicKeyXonlyTweakAdd(tweakCache: ByteArray, tweak32: ByteArray): ByteArray? {
|
||||||
require(tweakCache.size == Secp256k1.FROST_TWEAK_CACHE_SIZE)
|
require(tweakCache.size == Secp256k1.FROST_TWEAK_CACHE_SIZE)
|
||||||
require(tweak32.size == 32)
|
require(tweak32.size == 32)
|
||||||
|
|
||||||
@ -713,10 +713,7 @@ public object Secp256k1Native : Secp256k1 {
|
|||||||
tweak32 = toNat(tweak32)
|
tweak32 = toNat(tweak32)
|
||||||
)
|
)
|
||||||
|
|
||||||
return Pair(
|
return serializePubkey(nPublicKey)
|
||||||
serializePubkey(nPublicKey),
|
|
||||||
serializeFrostTweakCache(nTweakCache)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user