diff --git a/docs/3.0-migration-guide.md b/docs/3.0-migration-guide.md
index 737b4ee..dd94644 100644
--- a/docs/3.0-migration-guide.md
+++ b/docs/3.0-migration-guide.md
@@ -1,5 +1,4 @@
-Migrating from Mbed TLS 2.x to Mbed TLS 3.0
-===========================================
+# Migrating from Mbed TLS 2.x to Mbed TLS 3.0
 
 This guide details the steps required to migrate from Mbed TLS version 2.x to
 Mbed TLS version 3.0 or greater. Unlike normal releases, Mbed TLS 3.0 breaks
@@ -16,8 +15,7 @@
 - Changing function signatures (e.g., adding return codes or extra parameters); introducing const to arguments.
 - Removal of functions marked as deprecated in 2.x
 
-Introduce a level of indirection and versioning in the config files
--------------------------------------------------------------------
+### Introduce a level of indirection and versioning in the config files
 
 `config.h` was split into `build_info.h` and `mbedtls_config.h`.
 
@@ -37,8 +35,7 @@
 value.
 The only value supported by Mbed TLS 3.0.0 is `0x03000000`.
 
-Remove support for TLS 1.0, 1.1 and DTLS 1.0
--------------------------------------------
+### Remove support for TLS 1.0, 1.1 and DTLS 1.0
 
 This change affects users of the TLS 1.0, 1.1 and DTLS 1.0 protocols.
 
@@ -65,8 +62,7 @@
 `mbedtls_ssl_conf_ciphersuites()` to configure ciphersuites to use with (D)TLS
 1.2; in the future a different API will be added for (D)TLS 1.3.
 
-Remove support for SSL 3.0
---------------------------
+### Remove support for SSL 3.0
 
 This doesn't affect people using the default configuration as it was already
 disabled by default.
@@ -76,8 +72,7 @@
 to date. If one of your peers is in that case, please try contacting them and
 encouraging them to upgrade their software.
 
-Strengthen default algorithm selection for X.509 and TLS
---------------------------------------------------------
+### Strengthen default algorithm selection for X.509 and TLS
 
 The default X.509 verification profile (`mbedtls_x509_crt_profile_default`) and the default curve and hash selection in TLS have changed. They are now aligned, except that the X.509 profile only lists curves that support signature verification.
 
@@ -95,8 +90,7 @@
 
 If you still need to allow hashes and curves in TLS that have been removed from the default configuration, call `mbedtls_ssl_conf_sig_hashes()` and `mbedtls_ssl_conf_curves()` with the desired lists.
 
-Deprecated functions were removed from hashing modules
-------------------------------------------------------
+### Deprecated functions were removed from hashing modules
 
 Modules: MD5, SHA1, SHA256, SHA512, MD.
 
@@ -110,8 +104,7 @@
   provide your own version of that function), please use
   `mbedtls_internal_xxx_process()` instead, and check the return value.
 
-Deprecated error codes for hardware failures were removed
----------------------------------------------------------
+### Deprecated error codes for hardware failures were removed
 
 - The macros `MBEDTLS_ERR_xxx_FEATURE_UNSUPPORTED` from various crypto modules
   were removed; `MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED` is now used
@@ -119,15 +112,13 @@
 - The macros `MBEDTLS_ERR_xxx_HW_ACCEL_FAILED` from various crypto modules
   were removed; `MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED` is now used instead.
 
-Deprecated names for PSA constants and types were removed
----------------------------------------------------------
+### Deprecated names for PSA constants and types were removed
 
 Some constants and types that were present in beta versions of the PSA Crypto
 API were removed from version 1.0 of specification. Please switch to the new
 names provided by the 1.0 specification instead.
 
-Internal / alt-focused headers were moved to a private location
-----------------------------------------------------------------
+### Internal / alt-focused headers were moved to a private location
 
 This shouldn't affect users who took care not to include headers that
 were documented as internal, despite being in the public include directory.
@@ -141,8 +132,7 @@
 function that's now in a private header, please reach out on the mailing list
 and explain your need; we'll consider adding a new API in a future version.
 
-Remove the certs module from the library
-----------------------------------------
+### Remove the certs module from the library
 
 This should not affect production use of the library, as the certificates and
 keys included there were never suitable for production use.
@@ -152,8 +142,7 @@
 `certs.c` is out of the library there is no longer any stability guaranteed
 and it may change in incompatible ways at any time.
 
-Remove the HAVEGE module
-------------------------
+### Remove the HAVEGE module
 
 This doesn't affect people using the default configuration as it was already
 disabled by default.
@@ -166,8 +155,7 @@
 <https://tls.mbed.org/kb/how-to/add-entropy-sources-to-entropy-pool> for more
 information.
 
-Remove support for parsing SSLv2 ClientHello
---------------------------------------------
+### Remove support for parsing SSLv2 ClientHello
 
 This doesn't affect people using the default configuration as it was already
 disabled by default.
@@ -177,8 +165,7 @@
 does, please try contacting them and encouraging them to upgrade their
 software.
 
-Remove support for truncated HMAC
----------------------------------
+### Remove support for truncated HMAC
 
 This affects users of truncated HMAC, that is, users who called
 `mbedtls_ssl_conf_truncated_hmac( ..., MBEDTLS_SSL_TRUNC_HMAC_ENABLED)`,
@@ -188,8 +175,7 @@
 The recommended migration path for people who want minimal overhead is to use a
 CCM-8 ciphersuite.
 
-Remove support for TLS record-level compression
------------------------------------------------
+### Remove support for TLS record-level compression
 
 This doesn't affect people using the default configuration as it was already
 disabled by default.
@@ -201,8 +187,7 @@
 own compression mechanisms and are in a better position than the TLS stack to
 avoid variants of the CRIME and BREACH attacks.
 
-Remove support for TLS RC4-based ciphersuites
----------------------------------------------
+### Remove support for TLS RC4-based ciphersuites
 
 This does not affect people who used the default `mbedtls_config.h` and the default
 list of ciphersuites, as RC4-based ciphersuites were already not negotiated in
@@ -212,8 +197,7 @@
 AES-GCM, AES-CCM or ChachaPoly for example) and if your peer doesn't support
 any, encourage them to upgrade their software.
 
-Remove support for TLS single-DES ciphersuites
-----------------------------------------------
+### Remove support for TLS single-DES ciphersuites
 
 This doesn't affect people using the default configuration as it was already
 disabled by default.
@@ -222,8 +206,7 @@
 AES-GCM, AES-CCM or ChachaPoly for example) and if your peer doesn't support
 any, encourage them to upgrade their software.
 
-Remove support for TLS record-level hardware acceleration
----------------------------------------------------------
+### Remove support for TLS record-level hardware acceleration
 
 This doesn't affect people using the default configuration as it was already
 disabled by default.
@@ -232,8 +215,7 @@
 However if you did, please reach out on the mailing list and let us know about
 your use case.
 
-Remove wrapper for libpkcs11-helper
------------------------------------
+### Remove wrapper for libpkcs11-helper
 
 This doesn't affect people using the default configuration as it was already
 disabled by default.
@@ -243,16 +225,14 @@
 PSA crypto API. If you have a use case that's not covered yet by this API,
 please reach out on the mailing list.
 
-Remove config option `MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME`
-----------------------------------------------------------
+### Remove config option `MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME`
 
 This doesn't affect people using the default configuration.
 
 This option has not had any effect for a long time. Please use the `lifetime`
 parameter of `mbedtls_ssl_ticket_setup()` instead.
 
-Remove helpers for the transition from Mbed TLS 1.3 to Mbed TLS 2.0
--------------------------------------------------------------------
+### Remove helpers for the transition from Mbed TLS 1.3 to Mbed TLS 2.0
 
 This only affects people who've been using Mbed TLS since before version 2.0
 and still relied on `compat-1.3.h` in their code.
@@ -260,8 +240,7 @@
 Please use the new names directly in your code; `scripts/rename.pl` (from any
 of the 2.x releases — no longer included in 3.0) might help you do that.
 
-Remove 3DES ciphersuites
---
+### Remove 3DES ciphersuites
 
 This change does not affect users using default settings for 3DES in `mbedtls_config.h`
 because the 3DES ciphersuites were disabled by that.
@@ -271,8 +250,7 @@
 
 The migration path here is to chose from the recommended in literature alternatives.
 
-CCM interface changes: impact for alternative implementations
--------------------------------------------------------------
+### CCM interface changes: impact for alternative implementations
 
 The CCM interface has changed with the addition of support for
 multi-part operations. Five new API functions have been defined:
@@ -281,8 +259,7 @@
 Alternative implementations of CCM (`MBEDTLS_CCM_ALT`) have now to
 implement those additional five API functions.
 
-Calling `mbedtls_cipher_finish()` is mandatory for all multi-part operations
-----------------------------------------------------------------------------
+### Calling `mbedtls_cipher_finish()` is mandatory for all multi-part operations
 
 This only affects people who use the cipher module to perform AEAD operations
 using the multi-part API.
@@ -297,8 +274,7 @@
 implementations of the underlying primitives are in use, or with future
 versions of the library.
 
-Combine the `MBEDTLS_SSL_CID_PADDING_GRANULARITY` and `MBEDTLS_SSL_TLS1_3_PADDING_GRANULARITY` options
---
+### Combine the `MBEDTLS_SSL_CID_PADDING_GRANULARITY` and `MBEDTLS_SSL_TLS1_3_PADDING_GRANULARITY` options
 
 This change affects users who modified the default `mbedtls_config.h` padding granularity
 settings, i.e. enabled at least one of the options.
@@ -312,8 +288,7 @@
 The new single option `MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY` can be used
 for both DTLS-CID and TLS 1.3.
 
-Change the API to allow adding critical extensions to CSRs
-------------------------------------------------------------------
+### Change the API to allow adding critical extensions to CSRs
 
 This affects applications that call the `mbedtls_x509write_csr_set_extension`
 function.
@@ -321,15 +296,13 @@
 The API is changed to include the parameter `critical` which allow to mark an
 extension included in a CSR as critical. To get the previous behavior pass 0.
 
-TLS now favors faster curves over larger curves
------------------------------------------------
+### TLS now favors faster curves over larger curves
 
 The default preference order for curves in TLS now favors resource usage (performance and memory consumption) over size. The exact order is unspecified and may change, but generally you can expect 256-bit curves to be preferred over larger curves.
 
 If you prefer a different order, call `mbedtls_ssl_conf_curves()` when configuring a TLS connection.
 
-GCM interface changes: impact for alternative implementations
--------------------------------------------------------------
+### GCM interface changes: impact for alternative implementations
 
 The GCM multipart interface has changed as described in [“GCM multipart interface: application changes”](#gcm-multipart-interface:-application-changes). The consequences for an alternative implementation of GCM (`MBEDTLS_GCM_ALT`) are as follows:
 
@@ -339,8 +312,7 @@
     * Buffer the data for the last partial block, to be returned in the next call to `mbedtls_gcm_update()` or `mbedtls_gcm_finish()`.
 * `mbedtls_gcm_finish()` now takes an extra output buffer for the last partial block if needed.
 
-GCM multipart interface: application changes
---------------------------------------------
+### GCM multipart interface: application changes
 
 The GCM module now supports arbitrary chunked input in the multipart interface.
 This changes the interface for applications using the GCM module directly for multipart operations.
@@ -352,8 +324,7 @@
     * If the length of the last input is not a multiple of 16, alternative implementations may return the last partial block in the call to `mbedtls_gcm_finish()` instead of returning it in the last call to `mbedtls_gcm_update()`.
 * `mbedtls_gcm_finish()` now takes an extra output buffer for the last partial block. This is needed for alternative implementations that can only process a whole block at a time.
 
-SSL key export interface change
--------------------------------
+### SSL key export interface change
 
 This affects users of the SSL key export APIs:
 ```
@@ -389,8 +360,7 @@
 Mbed TLS team on the mailing list, to let the team know about their
 use case.
 
-The RNG parameter is now mandatory for all functions that accept one
---------------------------------------------------------------------
+### The RNG parameter is now mandatory for all functions that accept one
 
 This change affects all users who called a function accepting a `f_rng`
 parameter with `NULL` as the value of this argument; this is no longer
@@ -410,8 +380,7 @@
 configuration options) may have their own internal and are free to ignore the
 `f_rng` argument but must allow users to pass one anyway.
 
-Some functions gained an RNG parameter
---------------------------------------
+### Some functions gained an RNG parameter
 
 This affects users of the following functions: `mbedtls_ecp_check_pub_priv()`,
 `mbedtls_pk_check_pair()`, `mbedtls_pk_parse_key()`, and
@@ -421,8 +390,7 @@
 calling these functions. It is used for blinding, a countermeasure against
 side-channel attacks.
 
-The configuration option `MBEDTLS_ECP_NO_INTERNAL_RNG` was removed
-------------------------------------------------------------------
+### The configuration option `MBEDTLS_ECP_NO_INTERNAL_RNG` was removed
 
 This doesn't affect users of the default configuration; it only affects people
 who were explicitly setting this option.
@@ -430,8 +398,7 @@
 This was a trade-off between code size and countermeasures; it is no longer
 relevant as the countermeasure is now always on at no cost in code size.
 
-Remove MaximumFragmentLength (MFL) query API
------------------------------------------------------------------
+### Remove MaximumFragmentLength (MFL) query API
 
 This affects users which use the MFL query APIs
 `mbedtls_ssl_get_{input,output}_max_frag_len()` to
@@ -442,8 +409,7 @@
 instead, which also provides such upper bounds but takes more factors
 than just the MFL configuration into account.
 
-Change MBEDTLS_ECP_FIXED_POINT_OPTIM behavior
-------------------------------------------------------
+### Change MBEDTLS_ECP_FIXED_POINT_OPTIM behavior
 
 The option `MBEDTLS_ECP_FIXED_POINT_OPTIM` now increase code size and it does
 not increase peak RAM usage anymore.
@@ -453,8 +419,7 @@
 enabled curves. For example, for P-256 the difference is 1KB; see the documentation
 of this option for details.
 
-Replaced MBEDTLS_SHA512_NO_SHA384 with MBEDTLS_SHA384_C
-------------------------------------------------------
+### Replaced MBEDTLS_SHA512_NO_SHA384 with MBEDTLS_SHA384_C
 
 This does not affect users who use the default `mbedtls_config.h`.
 MBEDTLS_SHA512_NO_SHA384 was disabled by default, now MBEDTLS_SHA384_C is
@@ -466,8 +431,7 @@
 MBEDTLS_SHA512_NO_SHA384 and you need the SHA-384 algorithm, then add
 `#define MBEDTLS_SHA384_C` to your config file.
 
-Move part of timing module out of the library
---
+### Move part of timing module out of the library
 
 The change affects users who use any of the following functions:
 `mbedtls_timing_self_test()`, `mbedtls_hardclock_poll()`,
@@ -476,8 +440,7 @@
 If you were relying on these functions, you'll now need to change to using your
 platform's corresponding functions directly.
 
-Extra parameter for the output buffer size
-------------------------------------------
+### Extra parameter for the output buffer size
 
 The following functions now take an extra parameter indicating the size of the output buffer:
 
@@ -486,8 +449,7 @@
 
 The requirements for the output buffer have not changed, but passing a buffer that is too small now reliably causes the functions to return an error, rather than overflowing the buffer.
 
-Relaxed semantics for PSK configuration
------------------------------------------------------------------
+### Relaxed semantics for PSK configuration
 
 This affects users which call the PSK configuration APIs
 `mbedtlsl_ssl_conf_psk()` and `mbedtls_ssl_conf_psk_opaque()`
@@ -505,8 +467,7 @@
 `mbedtls_ssl_conf_psk()` _or_ `mbedtls_ssl_conf_psk_opaque()`
 remains.
 
-Remove the configuration to enable weak ciphersuites in SSL / TLS
------------------------------------------------------------------
+### Remove the configuration to enable weak ciphersuites in SSL / TLS
 
 This does not affect users who use the default `mbedtls_config.h`, as this option was
 already off by default.
@@ -518,8 +479,7 @@
 If you were using a ciphersuite without encryption, you just have to
 enable MBEDTLS_CIPHER_NULL_CIPHER now.
 
-Remove the `MBEDTLS_SSL_MAX_CONTENT_LEN` configuration option
--------------------------------------------------------------
+### Remove the `MBEDTLS_SSL_MAX_CONTENT_LEN` configuration option
 
 This affects users who use the `MBEDTLS_SSL_MAX_CONTENT_LEN` option to
 set the maximum length of incoming and outgoing plaintext fragments,
@@ -529,8 +489,7 @@
 `MBEDTLS_SSL_IN_CONTENT_LEN` and `MBEDTLS_SSL_OUT_CONTENT_LEN` that set
 the maximum incoming and outgoing plaintext fragment lengths, respectively.
 
-Remove the option to build the library without any entropy sources
-------------------------------------------------------------------
+### Remove the `MBEDTLS_TEST_NULL_ENTROPY` configuration option
 
 This does not affect users who use the default `mbedtls_config.h`, as this option was
 already off by default.
@@ -541,8 +500,7 @@
 Alternatively, for testing purposes only, you can create and register a fake
 entropy function.
 
-Remove the mode parameter from RSA functions
---------------------------------------------
+### Remove the mode parameter from RSA functions
 
 This affects all users who use the RSA encryption, decryption, sign and
 verify APIs.
@@ -555,15 +513,13 @@
 RSA operations with the wrong mode, which rarely makes sense from a security
 perspective, this is no longer supported.
 
-Remove the RNG parameter from RSA verify functions
---------------------------------------------------
+### Remove the RNG parameter from RSA verify functions
 
 RSA verification functions also no longer take random generator arguments (this
 was only needed when using a private key). This affects all applications using
 the RSA verify functions.
 
-Remove the SSL API mbedtls_ssl_get_session_pointer()
------------------------------------------------------------------
+### Remove the SSL API mbedtls_ssl_get_session_pointer()
 
 This affects two classes of users:
 
@@ -586,8 +542,7 @@
    calls to `mbedtls_ssl_get_session()` as demonstrated in the example
    program `programs/ssl/ssl_client2.c`.
 
-Remove the config option MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
---------------------------------------------------------------------------
+### Remove the config option MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
 
 This change does not affect users of the default configuration; it only affects
 users who enable this option.
@@ -604,8 +559,7 @@
 unsupported certificate extension and additionally the "certificate policies"
 extension if it contains any unsupported certificate policies.
 
-Remove `MBEDTLS_X509_CHECK_*_KEY_USAGE` options from `mbedtls_config.h`
--------------------------------------------------------------------
+### Remove `MBEDTLS_X509_CHECK_*_KEY_USAGE` options from `mbedtls_config.h`
 
 This change affects users who have chosen the configuration options to disable the
 library's verification of the `keyUsage` and `extendedKeyUsage` fields of x509
@@ -623,8 +577,7 @@
 of the verification callback function passed to `mbedtls_x509_crt_verify()` (see
 the documentation of this function for more information).
 
-Remove MD2, MD4, RC4, Blowfish and XTEA algorithms
---
+### Remove MD2, MD4, RC4, Blowfish and XTEA algorithms
 
 This change affects users of the MD2, MD4, RC4, Blowfish and XTEA algorithms.
 
@@ -632,8 +585,7 @@
 those reasons possible users should consider switching to modern and safe
 alternatives to be found in literature.
 
-Remove MBEDTLS_SSL_DTLS_BADMAC_LIMIT option
--------------------------------------------
+### Remove MBEDTLS_SSL_DTLS_BADMAC_LIMIT option
 
 This change does not affect users who used the default `mbedtls_config.h`, as the option
 MBEDTLS_SSL_DTLS_BADMAC_LIMIT was already on by default.
@@ -644,8 +596,7 @@
 
 This option is no longer present, but its functionality is now always enabled.
 
-Deprecated functions were removed from AES
-------------------------------------------
+### Deprecated functions were removed from AES
 
 The functions `mbedtls_aes_encrypt()` and `mbedtls_aes_decrypt()` were
 removed.
@@ -658,15 +609,13 @@
 replacing the removed functions with `mbedtls_internal_aes_encrypt()` and
 `mbedtls_internal_aes_decrypt()` respectively.
 
-Deprecated functions were removed from bignum
----------------------------------------------
+### Deprecated functions were removed from bignum
 
 The function `mbedtls_mpi_is_prime()` was removed. Please use
 `mbedtls_mpi_is_prime_ext()` instead which additionally allows specifying the
 number of Miller-Rabin rounds.
 
-Deprecated functions were removed from cipher
----------------------------------------------
+### Deprecated functions were removed from cipher
 
 The functions `mbedtls_cipher_auth_encrypt()` and
 `mbedtls_cipher_auth_decrypt()` were removed. They were superseded by
@@ -674,23 +623,20 @@
 respectively which additionally support key wrapping algorithms such as
 NIST_KW.
 
-Deprecated functions were removed from DRBGs
---------------------------------------------
+### Deprecated functions were removed from DRBGs
 
 The functions `mbedtls_ctr_drbg_update()` and `mbedtls_hmac_drbg_update()`
 were removed. They were superseded by `mbedtls_ctr_drbg_update_ret()` and
 `mbedtls_hmac_drbg_update_ret()` respectively.
 
-Deprecated functions were removed from ECDSA
---------------------------------------------
+### Deprecated functions were removed from ECDSA
 
 The functions `mbedtls_ecdsa_write_signature_det()` and
 `mbedtls_ecdsa_sign_det()` were removed. They were superseded by
 `mbedtls_ecdsa_write_signature()` and `mbedtls_ecdsa_sign_det_ext()`
 respectively.
 
-Deprecated functions were removed from SSL
-------------------------------------------
+### Deprecated functions were removed from SSL
 
 The function `mbedtls_ssl_conf_dh_param()` was removed. Please use
 `mbedtls_ssl_conf_dh_param_bin()` or `mbedtls_ssl_conf_dh_param_ctx()` instead.
@@ -700,8 +646,7 @@
 `mbedtls_ssl_get_max_in_record_payload()`
 instead.
 
-Deprecated hex-encoded primes were removed from DHM
----------------------------------------------------
+### Deprecated hex-encoded primes were removed from DHM
 
 The macros `MBEDTLS_DHM_RFC5114_MODP_2048_P`, `MBEDTLS_DHM_RFC5114_MODP_2048_G`,
 `MBEDTLS_DHM_RFC3526_MODP_2048_P`, `MBEDTLS_DHM_RFC3526_MODP_2048_G`,
@@ -713,14 +658,12 @@
 library, only in binary form) or RFC 7919 (also available in the library) or
 other trusted sources instead.
 
-Deprecated net.h file was removed
----------------------------------
+### Deprecated net.h file was removed
 
 The file `include/mbedtls/net.h` was removed because its only function was to
 include `mbedtls/net_sockets.h` which now should be included directly.
 
-Remove MBEDTLS_CHECK_PARAMS option
-----------------------------------
+### Remove MBEDTLS_CHECK_PARAMS option
 
 This change does not affect users who use the default configuration; it only
 affects users who enabled that option.
@@ -753,8 +696,7 @@
 
 For more information see issue #4313.
 
-Remove MBEDTLS_SSL_RECORD_CHECKING option and enable its action by default
---------------------------------------------------------------------------
+### Remove MBEDTLS_SSL_RECORD_CHECKING option and enable its action by default
 
 This change does not affect users who use the default mbedtls_config.h, as the
 option MBEDTLS_SSL_RECORD_CHECKING was already on by default.
@@ -767,8 +709,7 @@
 Users who changed the default setting of the option need to change the config/
 build system to remove that change.
 
-Remove the `MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3` option
---
+### Remove the `MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3` option
 
 This change does not affect users who were using the default configuration, as
 this option was already disabled by default. Also, it does not affect users who
@@ -782,8 +723,7 @@
 If you are working with the pre-V3 certificates you need to switch to the
 current ones.
 
-Rename mbedtls_*_ret() cryptography functions whose deprecated variants have been removed
------------------
+### Rename mbedtls_*_ret() cryptography functions whose deprecated variants have been removed
 
 This change affects users who were using the `mbedtls_*_ret()` cryptography
 functions.
@@ -822,8 +762,7 @@
 renaming or to rename those function in their code according to the list from
 mentioned header file.
 
-Signature functions now require the hash length to match the expected value
----------------------------------------------------------------------------
+### Signature functions now require the hash length to match the expected value
 
 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.
 
@@ -847,8 +786,7 @@
 
 The migration path is to pass the correct value to those functions.
 
-Remove the padding parameters from mbedtls_rsa_init()
------------------------------------------------------
+### Remove the padding parameters from mbedtls_rsa_init()
 
 This affects all users who use the RSA encryption, decryption, sign and
 verify APIs.
@@ -877,8 +815,7 @@
     mbedtls_rsa_init(ctx);
 ```
 
-Separated MBEDTLS_SHA224_C and MBEDTLS_SHA256_C
------------------------------------------------------------------
+### Separated MBEDTLS_SHA224_C and MBEDTLS_SHA256_C
 
 This does not affect users who use the default `mbedtls_config.h`. MBEDTLS_SHA256_C
 was enabled by default. Now both MBEDTLS_SHA256_C and MBEDTLS_SHA224_C are
@@ -889,8 +826,7 @@
 Current version of the library does not support enabling MBEDTLS_SHA256_C
 without MBEDTLS_SHA224_C.
 
-Session Cache API Change
------------------------------------------------------------------
+### Session Cache API Change
 
 This affects users who use `mbedtls_ssl_conf_session_cache()`
 to configure a custom session cache implementation different
@@ -918,8 +854,7 @@
 accessing fields of `mbedtls_ssl_session` should describe their use case
 on the Mbed TLS mailing list.
 
-SHA-512 and SHA-256 output type change
---------------------------
+### SHA-512 and SHA-256 output type change
 
 The output parameter of `mbedtls_sha256_finish_ret()`, `mbedtls_sha256_ret()`, `mbedtls_sha512_finish_ret()`, `mbedtls_sha512_ret()` now has a pointer type rather than array type. This makes no difference in terms of C semantics, but removes spurious warnings in some compilers when outputting a SHA-384 hash into a 48-byte buffer or a SHA-224 hash into a 28-byte buffer.
 
@@ -927,8 +862,7 @@
 
 Alternative implementations of the SHA256 and SHA512 modules must adjust their functions' prototype accordingly.
 
-Removal of some SSL error codes
------------------------------------------------------------------
+### Removal of some SSL error codes
 
 This affects users manually checking for the following error codes:
 
@@ -959,8 +893,7 @@
 
 - all codes of the form `MBEDTLS_ERR_SSL_BAD_HS_XXX` have been replaced by various alternatives.
 
-Modified semantics of mbedtls_ssl_{get,set}_session()
------------------------------------------------------------------
+### Modified semantics of mbedtls_ssl_{get,set}_session()
 
 This affects users who call `mbedtls_ssl_get_session()` or
 `mbedtls_ssl_set_session()` multiple times on the same SSL context
@@ -990,8 +923,7 @@
   calls. Applications achieve equivalent functional behavior by
   issuing only the very last call to `mbedtls_ssl_set_session()`.
 
-Turn MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE configuration option into a runtime option
-  --
+### Turn MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE configuration option into a runtime option
 
 This change affects users who were enabling MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE
 option in the `mbedtls_config.h`
@@ -1005,8 +937,7 @@
 has the same effect as enabling the removed option. The default state is to use
 the server order of suites.
 
-Some function parameters were made const
-----------------------------------------
+### Some function parameters were made const
 
 Various functions in the PK and ASN.1 modules had a `const` qualifier added to
 some of their parameters.
