get the filename right
[openssl.git] / crypto / ecdsa / ecs_ossl.c
index 3518bb02e12350cace57f6c6e7ad05f2f56ebaf3..8b407c5470fd371921eca09dafded7ed0d1b9856 100644 (file)
@@ -79,7 +79,7 @@ static ECDSA_METHOD openssl_ecdsa_meth = {
        NULL, /* init     */
        NULL, /* finish   */
 #endif
-       0,    /* flags    */
+       ECDSA_FLAG_FIPS_METHOD,    /* flags    */
        NULL  /* app_data */
 };
 
@@ -151,6 +151,16 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
                        }
                while (BN_is_zero(k));
 
+#ifdef ECDSA_POINT_MUL_NO_CONSTTIME
+               /* We do not want timing information to leak the length of k,
+                * so we compute G*k using an equivalent scalar of fixed
+                * bit-length. */
+
+               if (!BN_add(k, k, order)) goto err;
+               if (BN_num_bits(k) <= BN_num_bits(order))
+                       if (!BN_add(k, k, order)) goto err;
+#endif /* def(ECDSA_POINT_MUL_NO_CONSTTIME) */
+
                /* compute r the x-coordinate of generator * k */
                if (!EC_POINT_mul(group, tmp_point, k, NULL, NULL, ctx))
                {