Manuel Pégourié-Gonnard
2baae9ef71
Add tests for ECDSA verify with short r, s values
This is intended to test transcoding the signature to the format expected by
PSA (fixed-length encoding of r, s) when r and s have respectively:
- full length with initial null byte
- full length without initial null byte
- non-full length with initial null byte
- non-full length without initial null byte
The signatures were generated using:
programs/pkey/pk_sign tests/data_files/server5.key foo
where foo is an empty file, and with a variant of one of the following patches
applied:
diff --git a/library/ecdsa.c b/library/ecdsa.c
index abac015cebc6..e4a27b044516 100644
--- a/library/ecdsa.c
+++ b/library/ecdsa.c
@@ -305,7 +305,9 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp,
ret = MBEDTLS_ERR_ECP_RANDOM_FAILED;
goto cleanup;
}
+ printf("\ngenerating r...\n");
+gen:
MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, pk, f_rng, p_rng ) );
#if defined(MBEDTLS_ECP_RESTARTABLE)
@@ -317,6 +319,11 @@ mul:
MBEDTLS_MPI_CHK( mbedtls_ecp_mul_restartable( grp, &R, pk, &grp->G,
f_rng, p_rng, ECDSA_RS_ECP ) );
MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( pr, &R.X, &grp->N ) );
+
+ size_t bits = mbedtls_mpi_bitlen( pr );
+ printf("%zu ", bits);
+ if( bits != 255 )
+ goto gen;
}
while( mbedtls_mpi_cmp_int( pr, 0 ) == 0 );
or:
diff --git a/library/ecdsa.c b/library/ecdsa.c
index abac015cebc6..d704376e0c42 100644
--- a/library/ecdsa.c
+++ b/library/ecdsa.c
@@ -305,7 +305,9 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp,
ret = MBEDTLS_ERR_ECP_RANDOM_FAILED;
goto cleanup;
}
+ printf("\ngenerating r...\n");
+gen:
MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, pk, f_rng, p_rng ) );
#if defined(MBEDTLS_ECP_RESTARTABLE)
@@ -353,6 +355,11 @@ modn:
MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( s, pk, &grp->N ) );
MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( s, s, &e ) );
MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( s, s, &grp->N ) );
+
+ size_t bits = mbedtls_mpi_bitlen( s );
+ printf("%zu ", bits);
+ if( bits != 247 )
+ goto gen;
}
while( mbedtls_mpi_cmp_int( s, 0 ) == 0 );
with the value edited manually between each run to get the desired bit length.
2018-11-22 11:17:37 -05:00
..
2018-08-06 11:42:56 +01:00
2018-08-06 11:42:56 +01:00
2018-11-21 21:08:43 +00:00
2018-08-06 11:42:56 +01:00
2013-04-08 18:09:51 +02:00
2015-04-08 13:25:31 +02:00
2013-04-08 18:09:51 +02:00
2018-08-06 11:42:06 +01:00
2018-06-11 14:03:22 +01:00
2015-04-08 13:25:31 +02:00
2018-06-13 12:13:58 +01:00
2015-04-08 13:25:31 +02:00
2018-08-06 11:42:06 +01:00
2018-06-28 12:58:56 +02:00
2018-06-05 15:53:06 +01:00
2016-08-25 15:42:27 +01:00
2018-08-06 11:42:06 +01:00
2015-09-30 16:31:10 +02:00
2018-08-06 11:42:06 +01:00
2015-04-08 13:25:31 +02:00
2018-08-06 11:42:06 +01:00
2015-04-08 13:25:31 +02:00
2018-08-06 11:42:06 +01:00
2018-08-06 11:42:06 +01:00
2018-08-06 11:42:06 +01:00
2018-05-24 13:37:31 +02:00
2018-05-24 13:37:31 +02:00
2018-05-24 13:37:31 +02:00
2018-06-04 12:18:19 +02:00
2018-07-23 18:18:32 +01:00
2018-03-27 19:25:35 -07:00
2018-03-27 19:25:35 -07:00
2018-03-27 19:25:35 -07:00
2018-08-06 11:40:57 +01:00
2018-05-24 13:37:31 +02:00
2018-08-06 11:40:57 +01:00
2018-03-27 19:25:35 -07:00
2018-10-28 18:10:37 +00:00
2018-03-27 19:25:35 -07:00
2018-03-27 19:25:35 -07:00
2017-12-23 23:40:08 +01:00
2016-10-13 13:53:13 +01:00
2018-08-06 11:42:06 +01:00
2018-08-29 23:38:57 +03:00
2018-08-29 23:57:45 +03:00
2017-09-04 14:17:10 +02:00
2018-08-06 11:42:06 +01:00
2015-04-08 13:25:31 +02:00
2018-08-06 11:42:06 +01:00
2018-07-06 13:20:09 +01:00
2018-08-06 11:40:57 +01:00
2017-08-17 10:25:18 +02:00
2018-09-11 12:39:14 +02:00
2018-06-13 09:52:54 +02:00
2018-10-28 16:16:58 +00:00
2015-09-07 12:43:11 +02:00
2018-08-06 11:42:06 +01:00
2018-09-11 12:39:14 +02:00
2018-10-16 11:22:45 +02:00
2017-07-24 15:31:30 +01:00
2018-08-15 13:55:37 +01:00
2015-04-08 13:25:31 +02:00
2018-08-06 11:40:57 +01:00
2018-08-06 11:40:57 +01:00
2017-07-27 21:44:33 +01:00
2018-08-06 11:40:57 +01:00
2017-07-27 21:44:33 +01:00
2018-08-06 11:40:57 +01:00
2017-07-27 21:44:33 +01:00
2018-08-06 11:40:57 +01:00
2018-08-06 11:42:06 +01:00
2018-06-11 13:10:14 +01:00
2018-06-11 13:10:14 +01:00
2018-08-06 11:42:06 +01:00
2015-04-08 13:25:31 +02:00
2015-04-08 13:25:31 +02:00
2015-04-08 13:25:31 +02:00
2015-04-08 13:25:31 +02:00
2017-10-06 11:58:50 +01:00
2018-08-06 11:42:06 +01:00
2017-10-06 11:58:50 +01:00
2018-08-06 11:42:06 +01:00
2018-01-23 19:37:44 +00:00
2018-08-06 11:40:57 +01:00
2018-10-09 16:36:53 +01:00
2018-10-09 16:36:53 +01:00
2018-08-13 14:46:45 +03:00
2018-08-21 16:11:13 +03:00
2017-05-30 16:54:23 +01:00
2018-08-06 11:42:06 +01:00
2018-11-22 11:17:37 -05:00
2018-11-22 11:17:37 -05:00
2018-05-15 09:21:57 +01:00
2018-08-06 11:42:06 +01:00
2018-09-27 18:23:08 +01:00
2018-08-06 11:42:06 +01:00
2018-02-08 17:18:19 +08:00
2018-08-06 11:42:06 +01:00
2018-07-27 17:15:39 +01:00
2018-08-06 11:42:06 +01:00
2015-04-08 13:25:31 +02:00
2018-08-06 11:40:57 +01:00
2018-05-24 13:37:31 +02:00
2018-05-24 13:37:31 +02:00
2018-08-06 11:40:57 +01:00
2018-08-06 11:42:06 +01:00
2017-10-06 11:58:50 +01:00
2018-08-06 11:42:06 +01:00
2018-08-06 11:40:57 +01:00
2018-08-06 11:42:06 +01:00
2017-12-20 21:57:48 +01:00
2018-08-06 11:40:58 +01:00
2018-11-19 18:31:40 +00:00
2018-08-06 11:40:57 +01:00
2018-11-05 11:47:49 +00:00
2018-09-11 12:39:14 +02:00
2017-09-14 07:51:28 +01:00
2018-08-06 11:40:57 +01:00
2015-04-08 13:25:31 +02:00
2018-08-06 11:42:06 +01:00