Tests JNI share aggregate
This commit is contained in:
@@ -1488,7 +1488,7 @@ JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256
|
||||
jbyte *in32;
|
||||
|
||||
secp256k1_pubkey **vss_commitments;
|
||||
jbyteArray jvss_commitment;
|
||||
jbyteArray jvss_commitment, jvss_commitment_bytes;
|
||||
jbyte *pub;
|
||||
|
||||
jbyte *id33;
|
||||
@@ -1525,7 +1525,8 @@ JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256
|
||||
shares[i] = calloc(1, sizeof(secp256k1_frost_share));
|
||||
jshare = (jbyteArray)(*penv)->GetObjectArrayElement(penv, jshares, i);
|
||||
size = (*penv)->GetArrayLength(penv, jshare);
|
||||
CHECKRESULT1(size != sizeof(secp256k1_frost_share), "invalid share size", free_shares(shares, count));
|
||||
CHECKRESULT1(size != 32, "invalid share size", free_shares(shares, count));
|
||||
|
||||
in32 = (*penv)->GetByteArrayElements(penv, jshare, 0);
|
||||
result = secp256k1_frost_share_parse(ctx, shares[i], (unsigned char *)in32);
|
||||
(*penv)->ReleaseByteArrayElements(penv, jshare, in32, 0);
|
||||
@@ -1535,16 +1536,26 @@ JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256
|
||||
count = (*penv)->GetArrayLength(penv, jvss_commitments);
|
||||
vss_commitments = calloc(count, sizeof(secp256k1_pubkey *));
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
vss_commitments[i] = calloc(1, sizeof(secp256k1_pubkey));
|
||||
for(i = 0; i < count; i++) {
|
||||
jvss_commitment = (jbyteArray)(*penv)->GetObjectArrayElement(penv, jvss_commitments, i);
|
||||
size = (*penv)->GetArrayLength(penv, jvss_commitment);
|
||||
CHECKRESULT1((size != 33) && (size != 65), "invalid public key size", free_pubkeys(vss_commitments, count));
|
||||
pub = (*penv)->GetByteArrayElements(penv, jvss_commitment, 0);
|
||||
result = secp256k1_ec_pubkey_parse(ctx, vss_commitments[i], (unsigned char *)pub, size);
|
||||
(*penv)->ReleaseByteArrayElements(penv, jvss_commitment, pub, 0);
|
||||
CHECKRESULT1(!result, "secp256k1_ec_pubkey_parse failed", free_pubkeys(vss_commitments, count));
|
||||
CHECKRESULT1(size != jthreshold, "vss commitments should have the same size as threshold", free_pubkeys(vss_commitments, count));
|
||||
|
||||
// TODO: Check table of contents
|
||||
|
||||
vss_commitments[i] = calloc(jthreshold, sizeof(secp256k1_pubkey));
|
||||
|
||||
for (int j = 0; j < jthreshold; j++)
|
||||
{
|
||||
// vss_commitment[i] = calloc(1, sizeof(secp256k1_pubkey));
|
||||
jvss_commitment_bytes = (jbyteArray)(*penv)->GetObjectArrayElement(penv, jvss_commitment, j);
|
||||
size = (*penv)->GetArrayLength(penv, jvss_commitment_bytes);
|
||||
CHECKRESULT1(size != 65, "invalid vss commitment size", free_pubkeys(vss_commitments, count));
|
||||
pub = (*penv)->GetByteArrayElements(penv, jvss_commitment_bytes, 0);
|
||||
result = secp256k1_ec_pubkey_parse(ctx, &vss_commitments[i][j], (unsigned char *)pub, size);
|
||||
(*penv)->ReleaseByteArrayElements(penv, jvss_commitment_bytes, pub, 0);
|
||||
CHECKRESULT1(!result, "secp256k1_ec_pubkey_parse failed", free_pubkeys(vss_commitments, count));
|
||||
}
|
||||
}
|
||||
|
||||
id33 = (*penv)->GetByteArrayElements(penv, jid33, 0);
|
||||
@@ -1612,7 +1623,7 @@ JNIEXPORT jint JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256k1_1fr
|
||||
|
||||
|
||||
size = (*penv)->GetArrayLength(penv, jshare);
|
||||
CHECKRESULT(size != sizeof(secp256k1_frost_share), "invalid share size");
|
||||
CHECKRESULT(size != 32, "invalid share size");
|
||||
in32 = (*penv)->GetByteArrayElements(penv, jshare, 0);
|
||||
result = secp256k1_frost_share_parse(ctx, &share, (unsigned char *)in32);
|
||||
(*penv)->ReleaseByteArrayElements(penv, jshare, in32, 0);
|
||||
@@ -1661,7 +1672,9 @@ JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256
|
||||
jbyte *id33, *jpubkey;
|
||||
|
||||
secp256k1_pubkey **vss_commitments;
|
||||
jbyteArray jvss_commitment;
|
||||
jbyteArray jvss_commitment, jvss_commitment_bytes;
|
||||
jbyte *pub;
|
||||
|
||||
jbyteArray jpubshare;
|
||||
|
||||
size_t size, count, i;
|
||||
@@ -1686,16 +1699,23 @@ JNIEXPORT jbyteArray JNICALL Java_fr_acinq_secp256k1_Secp256k1CFunctions_secp256
|
||||
count = (*penv)->GetArrayLength(penv, jvss_commitments);
|
||||
vss_commitments = calloc(count, sizeof(secp256k1_pubkey *));
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
vss_commitments[i] = calloc(1, sizeof(secp256k1_pubkey));
|
||||
for(i = 0; i < count; i++) {
|
||||
jvss_commitment = (jbyteArray)(*penv)->GetObjectArrayElement(penv, jvss_commitments, i);
|
||||
size = (*penv)->GetArrayLength(penv, jvss_commitment);
|
||||
CHECKRESULT1((size != 33) && (size != 65), "invalid public key size", free_pubkeys(vss_commitments, count));
|
||||
jpubkey = (*penv)->GetByteArrayElements(penv, jvss_commitment, 0);
|
||||
result = secp256k1_ec_pubkey_parse(ctx, vss_commitments[i], (unsigned char *)jpubkey, size);
|
||||
(*penv)->ReleaseByteArrayElements(penv, jvss_commitment, jpubkey, 0);
|
||||
CHECKRESULT1(!result, "secp256k1_ec_pubkey_parse failed", free_pubkeys(vss_commitments, count));
|
||||
CHECKRESULT1(size != jthreshold, "vss commitments should have the same size as threshold", free_pubkeys(vss_commitments, count));
|
||||
|
||||
vss_commitments[i] = calloc(jthreshold, sizeof(secp256k1_pubkey));
|
||||
|
||||
for (int j = 0; j < jthreshold; j++)
|
||||
{
|
||||
jvss_commitment_bytes = (jbyteArray)(*penv)->GetObjectArrayElement(penv, jvss_commitment, j);
|
||||
size = (*penv)->GetArrayLength(penv, jvss_commitment_bytes);
|
||||
CHECKRESULT1(size != 65, "invalid vss commitment size", free_pubkeys(vss_commitments, count));
|
||||
pub = (*penv)->GetByteArrayElements(penv, jvss_commitment_bytes, 0);
|
||||
result = secp256k1_ec_pubkey_parse(ctx, &vss_commitments[i][j], (unsigned char *)pub, size);
|
||||
(*penv)->ReleaseByteArrayElements(penv, jvss_commitment_bytes, pub, 0);
|
||||
CHECKRESULT1(!result, "secp256k1_ec_pubkey_parse failed", free_pubkeys(vss_commitments, count));
|
||||
}
|
||||
}
|
||||
|
||||
result = secp256k1_frost_compute_pubshare(
|
||||
|
||||
Reference in New Issue
Block a user