Gilles Peskine | 9dbbc29 | 2021-06-22 18:28:13 +0200 | [diff] [blame] | 1 | Signature functions now require the hash length to match the expected value |
| 2 | --------------------------------------------------------------------------- |
Manuel Pégourié-Gonnard | e7885e5 | 2021-06-22 12:29:27 +0200 | [diff] [blame] | 3 | |
Gilles Peskine | 9dbbc29 | 2021-06-22 18:28:13 +0200 | [diff] [blame] | 4 | This affects users of the PK API as well as users of the low-level API in the RSA module. Users of the PSA API or of the ECDSA module are unaffected. |
Manuel Pégourié-Gonnard | e7885e5 | 2021-06-22 12:29:27 +0200 | [diff] [blame] | 5 | |
| 6 | All the functions in the RSA module that accept a `hashlen` parameter used to |
| 7 | ignore it unless the `md_alg` parameter was `MBEDTLS_MD_NONE`, indicating raw |
Gilles Peskine | 9dbbc29 | 2021-06-22 18:28:13 +0200 | [diff] [blame] | 8 | data was signed. The `hashlen` parameter is now always the size that is read |
| 9 | from the `hash` input buffer. This length must be equal to the output size of |
| 10 | the hash algorithm used when signing a hash. (The requirements when signing |
| 11 | raw data are unchanged.) This affects the following functions: |
| 12 | |
| 13 | * `mbedtls_rsa_pkcs1_sign`, `mbedtls_rsa_pkcs1_verify` |
| 14 | * `mbedtls_rsa_rsassa_pkcs1_v15_sign`, `mbedtls_rsa_rsassa_pkcs1_v15_verify` |
| 15 | * `mbedtls_rsa_rsassa_pss_sign`, `mbedtls_rsa_rsassa_pss_verify` |
| 16 | * `mbedtls_rsa_rsassa_pss_sign_ext`, `mbedtls_rsa_rsassa_pss_verify_ext` |
| 17 | |
| 18 | The signature functions in the PK module no longer accept 0 as the `hash_len` parameter. The `hash_len` parameter is now always the size that is read from the `hash` input buffer. This affects the following functions: |
| 19 | |
| 20 | * `mbedtls_pk_sign`, `mbedtls_pk_verify` |
| 21 | * `mbedtls_pk_sign_restartable`, `mbedtls_pk_verify_restartable` |
| 22 | * `mbedtls_pk_verify_ext` |
Manuel Pégourié-Gonnard | e7885e5 | 2021-06-22 12:29:27 +0200 | [diff] [blame] | 23 | |
| 24 | The migration path is to pass the correct value to those functions. |