int CG21_PI_FACTOR_VERIFY_HELPER()

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;
}