mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-22 11:05:40 +01:00
Fix theoretical compliance issue in ECDSA
The issue would happen for curves whose bitlength is not a multiple of eight (the only case is NIST P-521) with hashes that are longer than the bitlength of the curve: since the wides hash is 512 bits long, this can't happen. Fixing however as a matter of principle and readability.
This commit is contained in:
parent
18e3ec9b4d
commit
5304812b2d
@ -43,8 +43,16 @@
|
||||
static int derive_mpi( const ecp_group *grp, mpi *x,
|
||||
const unsigned char *buf, size_t blen )
|
||||
{
|
||||
int ret;
|
||||
size_t n_size = (grp->nbits + 7) / 8;
|
||||
return( mpi_read_binary( x, buf, blen > n_size ? n_size : blen ) );
|
||||
size_t use_size = blen > n_size ? n_size : blen;
|
||||
|
||||
MPI_CHK( mpi_read_binary( x, buf, use_size ) );
|
||||
if( use_size * 8 > grp->nbits )
|
||||
MPI_CHK( mpi_shift_r( x, use_size * 8 - grp->nbits ) );
|
||||
|
||||
cleanup:
|
||||
return( ret );
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user