Commit 07977739 authored by Emilia Kasper's avatar Emilia Kasper
Browse files

NISTZ256: use EC_POINT API and check errors.



Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
(cherry picked from commit 6038354c)
parent c7e78b6b
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -834,19 +834,26 @@ static int ecp_nistz256_mult_precompute(EC_GROUP *group, BN_CTX *ctx)
            goto err;
        for (j = 0; j < 37; j++) {
            /*
             * It would be faster to use
             * ec_GFp_simple_points_make_affine and make multiple
             * points affine at the same time.
             * It would be faster to use EC_POINTs_make_affine and
             * make multiple points affine at the same time.
             */
            ec_GFp_simple_make_affine(group, P, ctx);
            ecp_nistz256_bignum_to_field_elem(preComputedTable[j]
                                              [k].X, &P->X);
            ecp_nistz256_bignum_to_field_elem(preComputedTable[j]
                                              [k].Y, &P->Y);
            for (i = 0; i < 7; i++)
                ec_GFp_simple_dbl(group, P, P, ctx);
            if (!EC_POINT_make_affine(group, P, ctx))
                goto err;
            if (!ecp_nistz256_bignum_to_field_elem(preComputedTable[j][k].X,
                                                   &P->X) ||
                !ecp_nistz256_bignum_to_field_elem(preComputedTable[j][k].Y,
                                                   &P->Y)) {
                ECerr(EC_F_ECP_NISTZ256_MULT_PRECOMPUTE,
                      EC_R_COORDINATES_OUT_OF_RANGE);
                goto err;
            }
        ec_GFp_simple_add(group, T, T, generator, ctx);
            for (i = 0; i < 7; i++) {
                if (!EC_POINT_dbl(group, P, P, ctx))
                    goto err;
            }
        }
        if (!EC_POINT_add(group, T, T, generator, ctx))
            goto err;
    }

    pre_comp->group = group;