diff --git a/src/nativeMain/kotlin/fr/acinq/secp256k1/Secp256k1Native.kt b/src/nativeMain/kotlin/fr/acinq/secp256k1/Secp256k1Native.kt index fcc29c2..8804b32 100644 --- a/src/nativeMain/kotlin/fr/acinq/secp256k1/Secp256k1Native.kt +++ b/src/nativeMain/kotlin/fr/acinq/secp256k1/Secp256k1Native.kt @@ -603,27 +603,22 @@ public object Secp256k1Native : Secp256k1 { memScoped { val nFrostShare = allocFrostShare(share) -// val nVssCommitment = vssCommitment.map { allocPublicKey(it).ptr } + val nVssCommitments = allocArray>(1) - val nVssCommitment = allocArray>(vssCommitment.size) - vssCommitment.forEachIndexed { index, bytes -> - memcpy(nVssCommitment[index], bytes.refTo(0).getPointer(memScope), bytes.size.convert()) + val pubkeyArray = allocArray(vssCommitment.size) + vssCommitment.forEachIndexed { commitmentIndex, pubkeyData -> + if (secp256k1_ec_pubkey_parse(ctx, pubkeyArray[commitmentIndex].ptr, toNat(pubkeyData), pubkeyData.size.convert()) == 0) { + error("Failed to parse public key") + } } -// val nVssCommitment = allocArray>(vssCommitment.size) -// vssCommitment.forEachIndexed { index, pubkeyData -> -// pubkeyData.usePinned { pinned -> -// if (secp256k1_ec_pubkey_parse(ctx, nVssCommitment[index], toNat(pinned.get()), pubkeyData.size.convert()) == 0) { -// error("Failed to parse public key") -// } -// } -// } + nVssCommitments[0] = pubkeyArray return secp256k1_frost_share_verify( ctx = ctx, threshold = threshold.convert(), id33 = toNat(id33), share = nFrostShare.ptr, - vss_commitment = nVssCommitment + vss_commitment = nVssCommitments ) } }