if (mp_cmp_z(G) == 0 || mp_cmp_d(G, 1) == 0)
if (mp_cmp_d(G, 1) <= 0) { rv = SECFailure;
makeGfromH(const mp_int *P,     /* input.  */           const mp_int *Q,     /* input.  */                 mp_int *H,     /* input and output. */                 mp_int *G,     /* output. */                 PRBool *passed){    mp_int exp, pm1;    mp_err err = MP_OKAY;    *passed = PR_FALSE;    MP_DIGITS(&exp) = 0;    MP_DIGITS(&pm1) = 0;    CHECK_MPI_OK( mp_init(&exp) );    CHECK_MPI_OK( mp_init(&pm1) );    CHECK_MPI_OK( mp_sub_d(P, 1, &pm1) );        /* P - 1            */    CHECK_MPI_OK( mp_mod(H, &pm1, H) );          /* H = H mod (P-1)  */    /* Check for H = to 0 or 1.  Regen H if so.  (Regen means return error). */    if (mp_cmp_z(H) == 0 || mp_cmp_d(H, 1) == 0)	goto cleanup;    /* Compute G, according to the equation  G = (H ** ((P-1)/Q)) mod P */    CHECK_MPI_OK( mp_div(&pm1, Q, &exp, NULL) );  /* exp = (P-1)/Q      */    CHECK_MPI_OK( mp_exptmod(H, &exp, P, G) );    /* G = H ** exp mod P */    /* Check for G == 0 or G == 1, return error if so. */    if (mp_cmp_z(G) == 0 || mp_cmp_d(G, 1) == 0)	goto cleanup;    *passed = PR_TRUE;cleanup:    mp_clear(&exp);    mp_clear(&pm1);    if (err) {	MP_TO_SEC_ERROR(err);	return SECFailure;    }    return SECSuccess;}