in src/cg21/cg21_aux.c [408:441]
int CG21_PI_FACTOR_VERIFY_HELPER(const CG21_SSID *ssid, CG21_AUX_ROUND3 *rnd3pub, CG21_AUX_ROUND1_STORE_PUB *rnd1Pub,
CG21_AUX_ROUND1_STORE_PRIV *rnd1Priv){
char t1[HFS_4096];
octet N = {0, sizeof(t1), t1};
PEDERSEN_PRIV PedPriv;
// recover Pedersen public parameters from packed octet
int rc = CG21_PedersenPriv_from_octet(&PedPriv, rnd1Priv->PEDERSEN_PRIV);
if (rc!=CG21_OK){
return rc;
}
PAILLIER_public_key pk;
rc = CG21_PaillierPub_from_octet(&pk,rnd1Pub->PaiPub);
if (rc!=CG21_OK){
CG21_Pedersen_Private_Kill(&PedPriv); // clean up
return rc;
}
FF_4096_toOctet(&N, pk.n, HFLEN_4096); // convert N to octet
rc = CG21_PI_FACTOR_VERIFY(&rnd3pub->factorCommits,&rnd3pub->factorProof,&N,
&PedPriv,ssid, rnd1Pub->t);
// clean up
CG21_Pedersen_Private_Kill(&PedPriv);
if (rc != CG21_OK){
return rc;
}
return CG21_OK;
}