diffstat for mbedtls-3.6.4 mbedtls-3.6.5

 BRANCHES.md                                                                               |    7 
 CMakeLists.txt                                                                            |    6 
 ChangeLog                                                                                 |   43 
 README.md                                                                                 |   15 
 debian/changelog                                                                          |   11 
 debian/libmbedcrypto16.symbols                                                            |    5 
 docs/architecture/psa-crypto-implementation-structure.md                                  |    2 
 docs/proposed/psa-driver-interface.md                                                     |    2 
 docs/psa-transition.md                                                                    |   84 
 docs/requirements.txt                                                                     |   75 
 doxygen/input/doc_mainpage.h                                                              |    2 
 doxygen/mbedtls.doxyfile                                                                  |    2 
 framework/data_files/Makefile                                                             |  457 -
 framework/data_files/clusterfuzz-testcase-minimized-fuzz_x509crt-6666050834661376.crt.der |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.der                            |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem                            |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.der                            |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem                            |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.der                            |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem                            |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem                     |   18 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.der                            |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem                            |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem                     |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem                     |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.pem                     |   56 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem                     |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.der                            |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem                            |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem                     |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem                     |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.pem                     |   56 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem                     |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.der                            |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem                            |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem                     |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem                     |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem                     |   56 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem                     |   30 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.der                            |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem                            |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.der                            |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem                            |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.der                            |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem                            |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem                     |   54 
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.der                     |binary
 framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem                     |   54 
 framework/history/config-adjust-mbedtls-3.6.txt                                           |  327 
 framework/history/config-adjust-mbedtls-4.0.txt                                           |    3 
 framework/history/config-adjust-tfpsacrypto-1.0.txt                                       |  318 
 framework/history/config-options-mbedtls-3.6.txt                                          |  432 
 framework/history/config-options-mbedtls-4.0.txt                                          |   78 
 framework/history/config-options-tfpsacrypto-1.0.txt                                      |  242 
 framework/scripts/all-core.sh                                                             |   21 
 framework/scripts/all-helpers.sh                                                          |   14 
 framework/scripts/apidoc_full.sh                                                          |   28 
 framework/scripts/check-python-files.sh                                                   |   11 
 framework/scripts/check_files.py                                                          |    2 
 framework/scripts/check_names.py                                                          |   55 
 framework/scripts/doxygen.sh                                                              |    2 
 framework/scripts/generate_bignum_tests.py                                                |  248 
 framework/scripts/generate_config_tests.py                                                |   12 
 framework/scripts/generate_psa_tests.py                                                   |   27 
 framework/scripts/generate_test_keys.py                                                   |   10 
 framework/scripts/make_generated_files.py                                                 |   51 
 framework/scripts/mbedtls_framework/bignum_common.py                                      |   16 
 framework/scripts/mbedtls_framework/bignum_core.py                                        |   82 
 framework/scripts/mbedtls_framework/build_tree.py                                         |    6 
 framework/scripts/mbedtls_framework/config_checks_generator.py                            |  294 
 framework/scripts/mbedtls_framework/config_history.py                                     |   57 
 framework/scripts/mbedtls_framework/crypto_knowledge.py                                   |    2 
 framework/scripts/mbedtls_framework/ecp.py                                                |    9 
 framework/scripts/mbedtls_framework/macro_collector.py                                    |   33 
 framework/scripts/mbedtls_framework/psa_compliance.py                                     |  189 
 framework/scripts/mbedtls_framework/psa_information.py                                    |    8 
 framework/scripts/mbedtls_framework/unittest_config_checks.py                             |  195 
 framework/scripts/save_config_history.sh                                                  |   85 
 framework/scripts/test_psa_compliance.py                                                  |  141 
 framework/tests/include/test/bignum_helpers.h                                             |    4 
 framework/tests/include/test/drivers/cipher.h                                             |    4 
 framework/tests/include/test/fake_external_rng_for_test.h                                 |    4 
 framework/tests/include/test/helpers.h                                                    |    6 
 framework/tests/include/test/macros.h                                                     |    5 
 framework/tests/include/test/psa_crypto_helpers.h                                         |    5 
 framework/tests/include/test/psa_exercise_key.h                                           |    5 
 framework/tests/include/test/threading_helpers.h                                          |   17 
 framework/tests/programs/metatest.c                                                       |   17 
 framework/tests/src/bignum_helpers.c                                                      |    6 
 framework/tests/src/drivers/test_driver_asymmetric_encryption.c                           |    6 
 framework/tests/src/drivers/test_driver_cipher.c                                          |    5 
 framework/tests/src/drivers/test_driver_key_management.c                                  |    6 
 framework/tests/src/drivers/test_driver_signature.c                                       |    9 
 framework/tests/src/fake_external_rng_for_test.c                                          |   43 
 framework/tests/src/psa_crypto_helpers.c                                                  |    9 
 framework/tests/src/psa_exercise_key.c                                                    |   25 
 framework/tests/src/random.c                                                              |    4 
 framework/tests/src/threading_helpers.c                                                   |  118 
 include/mbedtls/bignum.h                                                                  |    7 
 include/mbedtls/build_info.h                                                              |    8 
 include/mbedtls/cipher.h                                                                  |  109 
 include/mbedtls/mbedtls_config.h                                                          |   14 
 include/mbedtls/threading.h                                                               |   46 
 include/psa/crypto_extra.h                                                                |   47 
 library/CMakeLists.txt                                                                    |   36 
 library/Makefile                                                                          |   14 
 library/bignum.c                                                                          |  389 
 library/bignum_core.c                                                                     |  218 
 library/bignum_core.h                                                                     |   41 
 library/bignum_core_invasive.h                                                            |   19 
 library/bignum_internal.h                                                                 |   72 
 library/cipher.c                                                                          |   55 
 library/cipher_invasive.h                                                                 |    3 
 library/dhm.c                                                                             |   18 
 library/ecdsa.c                                                                           |   23 
 library/ecp.c                                                                             |   30 
 library/psa_crypto.c                                                                      |   44 
 library/psa_crypto_cipher.c                                                               |   58 
 library/psa_crypto_core.h                                                                 |   12 
 library/rsa.c                                                                             |   60 
 library/rsa_alt_helpers.c                                                                 |   18 
 library/rsa_alt_helpers.h                                                                 |   13 
 library/ssl_msg.c                                                                         |    4 
 library/ssl_tls.c                                                                         |    2 
 library/ssl_tls12_client.c                                                                |    2 
 library/threading.c                                                                       |    2 
 library/threading_internal.h                                                              |   28 
 programs/test/udp_proxy.c                                                                 |    3 
 scripts/abi_check.py                                                                      |   36 
 scripts/ci.requirements.txt                                                               |   18 
 tests/scripts/analyze_outcomes.py                                                         |   13 
 tests/scripts/components-build-system.sh                                                  |   60 
 tests/scripts/components-compiler.sh                                                      |    3 
 tests/scripts/components-configuration-crypto.sh                                          |   62 
 tests/ssl-opt.sh                                                                          |    2 
 tests/suites/test_suite_bignum.function                                                   |  263 
 tests/suites/test_suite_bignum.generated.data                                             | 4386 ++++++++++
 tests/suites/test_suite_bignum.misc.data                                                  |  214 
 tests/suites/test_suite_bignum_core.function                                              |  306 
 tests/suites/test_suite_bignum_core.generated.data                                        |  987 ++
 tests/suites/test_suite_bignum_core.misc.data                                             |   26 
 tests/suites/test_suite_cipher.aes.data                                                   |  232 
 tests/suites/test_suite_cipher.constant_time.data                                         |  255 
 tests/suites/test_suite_cipher.function                                                   |  382 
 tests/suites/test_suite_cipher.padding.data                                               |   15 
 tests/suites/test_suite_config.crypto_combinations.data                                   |    5 
 tests/suites/test_suite_pkparse.data                                                      | 1104 ++
 tests/suites/test_suite_platform_threading.data                                           |    8 
 tests/suites/test_suite_platform_threading.function                                       |   32 
 tests/suites/test_suite_psa_crypto_constant_time.data                                     |   39 
 tests/suites/test_suite_psa_crypto_constant_time.function                                 |  310 
 tests/suites/test_suite_psa_crypto_storage_format.current.data                            |    2 
 tests/suites/test_suite_psa_crypto_storage_format.misc.data                               |    8 
 tests/suites/test_suite_psa_crypto_storage_format.v0.data                                 |    2 
 tests/suites/test_suite_version.data                                                      |    4 
 visualc/VS2017/mbedTLS.vcxproj                                                            |    1 
 212 files changed, 14830 insertions(+), 955 deletions(-)

diff -Nru mbedtls-3.6.4/BRANCHES.md mbedtls-3.6.5/BRANCHES.md
--- mbedtls-3.6.4/BRANCHES.md	2025-06-30 09:24:52.909728800 +0300
+++ mbedtls-3.6.5/BRANCHES.md	2025-10-14 19:12:36.747884800 +0300
@@ -26,8 +26,9 @@
 
 We will make regular LTS releases on an 18-month cycle, each of which will have
 a 3 year support lifetime. On this basis, 3.6 LTS (released March 2024) will be
-supported until March 2027. The next LTS release will be a 4.x release, which is
-planned for September 2025.
+supported until March 2027. The next LTS release will be a 4.x release. Due to
+the size and scope of the 4.0 release, the release date of the first 4.x LTS is
+yet to be determined.
 
 ## Backwards Compatibility for application code
 
@@ -107,7 +108,7 @@
 - [`development`](https://github.com/Mbed-TLS/mbedtls/)
 - [`mbedtls-3.6`](https://github.com/Mbed-TLS/mbedtls/tree/mbedtls-3.6)
  maintained until March 2027, see
-  <https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.6.3>.
+  <https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.6.5>.
 
 > Note: [**`mbedtls-2.28.10`**](https://github.com/Mbed-TLS/mbedtls/releases/tag/v2.28.10)
 is the last release of the 2.28 LTS and won't receive bug fixes or security fixes anymore.
diff -Nru mbedtls-3.6.4/ChangeLog mbedtls-3.6.5/ChangeLog
--- mbedtls-3.6.4/ChangeLog	2025-06-30 09:24:52.911353600 +0300
+++ mbedtls-3.6.5/ChangeLog	2025-10-14 19:12:36.753099700 +0300
@@ -1,5 +1,48 @@
 Mbed TLS ChangeLog (Sorted per branch, date)
 
+= Mbed TLS 3.6.5 branch released 2025-10-15
+
+API changes
+   * When building the library as a PSA client (MBEDTLS_PSA_CRYPTO_CLIENT
+     enabled and MBEDTLS_PSA_CRYPTO_C disabled), you need to provide the
+     function psa_can_do_cipher() in addition to psa_can_do_hash(). This
+     changed was made in Mbed TLS 3.6.0 but was not announced then.
+
+Features
+   * The new function mbedtls_cipher_finish_padded() is similar to
+     mbedtls_cipher_finish(), but makes it easier to process invalid-padding
+     conditions in constant time.
+
+Security
+   * Fix a timing side channel in CBC-PKCS7 decryption that could
+     allow an attacker who can submit chosen ciphertexts to recover
+     some plaintexts through a timing-based padding oracle attack.
+     Credits to Beat Heeb from Oberon microsystems AG. CVE-2025-59438
+   * Fix a local timing side-channel in modular inversion and GCD that was
+     exploitable in RSA key generation and other RSA operations (see the full
+     advisory for details), allowing a local attacker to fully recover the
+     private key. This can be exploited on some Arm-v9 CPUs by an unprivileged
+     attacker running code on the same core (SSBleed), or when Trustzone-M is
+     used, by the non-secure side abusing timer interrupts (M-Step), and
+     probably in other similar settings as well. Found and reported
+     independently by: SSBleed: Chang Liu (Tsinghua University) and Trevor E.
+     Carlson (National University of Singapore); M-Step: Cristiano Rodrigues
+     (University of Minho), Marton Bognar (DistriNet, KU Leuven), Sandro Pinto
+     (University of Minho), Jo Van Bulck (DistriNet, KU Leuven). CVE-2025-54764
+
+Bugfix
+    * Fix potential CMake parallel build failure when building both the static
+      and shared libraries.
+   * Fix a build error or incorrect TLS session
+     lifetime on platforms where mbedtls_time_t
+     is not time_t. Fixes #10236.
+
+Changes
+   * The function mbedtls_mpi_gcd() now always gives a non-negative output.
+     Previously the output was negative when B = 0 and A < 0, which was not
+     documented, and inconsistent as all other inputs resulted in a non-negative
+     output.
+
 = Mbed TLS 3.6.4 branch released 2025-06-30
 
 Features
diff -Nru mbedtls-3.6.4/CMakeLists.txt mbedtls-3.6.5/CMakeLists.txt
--- mbedtls-3.6.4/CMakeLists.txt	2025-06-30 09:24:52.910244000 +0300
+++ mbedtls-3.6.5/CMakeLists.txt	2025-10-14 19:12:36.749465700 +0300
@@ -40,12 +40,12 @@
 if(TEST_CPP)
     project("Mbed TLS"
         LANGUAGES C CXX
-        VERSION 3.6.4
+        VERSION 3.6.5
     )
 else()
     project("Mbed TLS"
         LANGUAGES C
-        VERSION 3.6.4
+        VERSION 3.6.5
     )
 endif()
 
@@ -476,7 +476,7 @@
     write_basic_package_version_file(
         "cmake/MbedTLSConfigVersion.cmake"
             COMPATIBILITY SameMajorVersion
-            VERSION 3.6.4)
+            VERSION 3.6.5)
 
     install(
         FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/MbedTLSConfig.cmake"
diff -Nru mbedtls-3.6.4/debian/changelog mbedtls-3.6.5/debian/changelog
--- mbedtls-3.6.4/debian/changelog	2025-07-14 16:19:49.000000000 +0300
+++ mbedtls-3.6.5/debian/changelog	2025-11-14 22:00:32.000000000 +0200
@@ -1,3 +1,14 @@
+mbedtls (3.6.5-0.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * New upstream release.
+    - CVE-2025-54764: Side channel in RSA key generation and operations
+      (Closes: #1118750)
+    - CVE-2025-59438: Padding oracle through timing of cipher error reporting
+      (Closes: #1118752)
+
+ -- Adrian Bunk <bunk@debian.org>  Fri, 14 Nov 2025 22:00:32 +0200
+
 mbedtls (3.6.4-2) unstable; urgency=medium
 
   * d/libmbedtls21.symbols: add new 3.6.4 symbols
diff -Nru mbedtls-3.6.4/debian/libmbedcrypto16.symbols mbedtls-3.6.5/debian/libmbedcrypto16.symbols
--- mbedtls-3.6.4/debian/libmbedcrypto16.symbols	2025-07-14 16:19:49.000000000 +0300
+++ mbedtls-3.6.5/debian/libmbedcrypto16.symbols	2025-11-14 22:00:32.000000000 +0200
@@ -121,6 +121,7 @@
  mbedtls_cipher_crypt@Base 3.6.0
  mbedtls_cipher_definitions@Base 3.6.0
  mbedtls_cipher_finish@Base 3.6.0
+ mbedtls_cipher_finish_padded@Base 3.6.5
  mbedtls_cipher_free@Base 3.6.0
  mbedtls_cipher_info_from_psa@Base 3.6.0
  mbedtls_cipher_info_from_string@Base 3.6.0
@@ -393,6 +394,7 @@
  mbedtls_mpi_core_exp_mod_working_limbs@Base 3.6.0
  mbedtls_mpi_core_fill_random@Base 3.6.0
  mbedtls_mpi_core_from_mont_rep@Base 3.6.0
+ mbedtls_mpi_core_gcd_modinv_odd@Base 3.6.5
  mbedtls_mpi_core_get_mont_r2_unsafe@Base 3.6.0
  mbedtls_mpi_core_lt_ct@Base 3.6.0
  mbedtls_mpi_core_mla@Base 3.6.0
@@ -417,11 +419,14 @@
  mbedtls_mpi_fill_random@Base 3.6.0
  mbedtls_mpi_free@Base 3.6.0
  mbedtls_mpi_gcd@Base 3.6.0
+ mbedtls_mpi_gcd_modinv_odd@Base 3.6.5
  mbedtls_mpi_gen_prime@Base 3.6.0
  mbedtls_mpi_get_bit@Base 3.6.0
  mbedtls_mpi_grow@Base 3.6.0
  mbedtls_mpi_init@Base 3.6.0
  mbedtls_mpi_inv_mod@Base 3.6.0
+ mbedtls_mpi_inv_mod_even_in_range@Base 3.6.5
+ mbedtls_mpi_inv_mod_odd@Base 3.6.5
  mbedtls_mpi_is_prime_ext@Base 3.6.0
  mbedtls_mpi_lsb@Base 3.6.0
  mbedtls_mpi_lset@Base 3.6.0
diff -Nru mbedtls-3.6.4/docs/architecture/psa-crypto-implementation-structure.md mbedtls-3.6.5/docs/architecture/psa-crypto-implementation-structure.md
--- mbedtls-3.6.4/docs/architecture/psa-crypto-implementation-structure.md	2025-06-30 09:24:52.924383200 +0300
+++ mbedtls-3.6.5/docs/architecture/psa-crypto-implementation-structure.md	2025-10-14 19:12:36.795683400 +0300
@@ -3,7 +3,7 @@
 
 ## Introduction
 
-The [PSA Cryptography API specification](https://armmbed.github.io/mbed-crypto/psa/#application-programming-interface) defines an interface to cryptographic operations for which the Mbed TLS library provides a reference implementation. The PSA Cryptography API specification is complemented by the PSA driver interface specification which defines an interface for cryptoprocessor drivers.
+The [PSA Cryptography API specification](https://armmbed.github.io/mbed-crypto/psa/#application-programming-interface) defines an interface to cryptographic operations for which the Mbed TLS library provides a reference implementation (in the sense that it implements most features, and it is where new features are usually tried out). The PSA Cryptography API specification is complemented by the PSA driver interface specification which defines an interface for cryptoprocessor drivers.
 
 This document describes the high level organization of the Mbed TLS PSA Cryptography API implementation which is tightly related to the PSA driver interface.
 
diff -Nru mbedtls-3.6.4/docs/proposed/psa-driver-interface.md mbedtls-3.6.5/docs/proposed/psa-driver-interface.md
--- mbedtls-3.6.4/docs/proposed/psa-driver-interface.md	2025-06-30 09:24:52.932158000 +0300
+++ mbedtls-3.6.5/docs/proposed/psa-driver-interface.md	2025-10-14 19:12:36.851801900 +0300
@@ -3,7 +3,7 @@
 
 This document describes an interface for cryptoprocessor drivers in the PSA cryptography API. This interface complements the [PSA Cryptography API specification](https://armmbed.github.io/mbed-crypto/psa/#application-programming-interface), which describes the interface between a PSA Cryptography implementation and an application.
 
-This specification is work in progress and should be considered to be in a beta stage. There is ongoing work to implement this interface in Mbed TLS, which is the reference implementation of the PSA Cryptography API. At this stage, Arm does not expect major changes, but minor changes are expected based on experience from the first implementation and on external feedback.
+This specification is work in progress and should be considered to be in a beta stage. There is ongoing work to implement this interface in Mbed TLS, which is the reference implementation of the PSA Cryptography API (although it omits a few functions and mechanisms). At this stage, Arm does not expect major changes, but minor changes are expected based on experience from the first implementation and on external feedback.
 
 For a practical guide, with a description of the current state of drivers Mbed TLS, see our [PSA Cryptoprocessor driver development examples](../psa-driver-example-and-guide.html).
 
diff -Nru mbedtls-3.6.4/docs/psa-transition.md mbedtls-3.6.5/docs/psa-transition.md
--- mbedtls-3.6.4/docs/psa-transition.md	2025-06-30 09:24:52.933045900 +0300
+++ mbedtls-3.6.5/docs/psa-transition.md	2025-10-14 19:12:36.853103000 +0300
@@ -41,7 +41,7 @@
 * Mbed TLS 2.15.0 (Nov 2018): first release with a draft implementation of the PSA API.
 * Mbed TLS 2.18.0 (Jun 2019): The PSA API is available in the default build.
 * Mbed TLS 3.1.0 (Dec 2021): TLS 1.3 support is the first major feature that requires the PSA API.
-* Mbed TLS 4.0.0 (2024?): X.509 and TLS require the PSA API. Removal of some legacy crypto APIs.
+* TF-PSA-Crypto 1.0.0 and Mbed TLS 4.0.0 (Oct 2025): Removal of most legacy crypto APIs. X.509 and TLS require the PSA API.
 * Mbed TLS 5.0.0 (??): Removal of the remaining non-PSA crypto APIs.
 
 ## General considerations
@@ -56,11 +56,13 @@
 
 ### Header files
 
-Applications only need to include a single header file:
+Applications only need to include a single header file for all cryptographic mechanisms:
 ```
 #include <psa/crypto.h>
 ```
 
+Note that you may want to keep other crypto header files for functionality that is not provided by the PSA API, such as `<mbedtls/nist_kw.h>` for NIST KW/KWP (not yet exposed through PSA), `<mbedtls/pk.h>` for key pair and public key parsing and formatting, `<mbedtls/asn1.h>` for ASN.1 parsing, etc.
+
 ### General application layout
 
 Before any cryptographic operation, call [`psa_crypto_init`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__initialization/#group__initialization_1ga2de150803fc2f7dc6101d5af7e921dd9) and check that it succeeds. (A failure indicates an abnormal system state from which most applications cannot recover.)
@@ -105,9 +107,9 @@
 | ------ | --------------- | -------------- |
 | `aes.h` | `mbedtls_aes_` | [Symmetric encryption](#symmetric-encryption) |
 | `aria.h` | `mbedtls_aria_` | [Symmetric encryption](#symmetric-encryption) |
-| `asn1.h` | `mbedtls_asn1_` | No change ([PK support interface](#pk-format-support-interfaces)) |
-| `asn1write.h` | `mbedtls_asn1_write_` | No change ([PK support interface](#pk-format-support-interfaces)) |
-| `base64.h` | `mbedtls_base64_` | No change ([PK support interface](#pk-format-support-interfaces)) |
+| `asn1.h` | `mbedtls_asn1_` | No change ([PK format support interfaces](#pk-format-support-interfaces)) |
+| `asn1write.h` | `mbedtls_asn1_write_` | No change ([PK format support interfaces](#pk-format-support-interfaces)) |
+| `base64.h` | `mbedtls_base64_` | No change ([PK format support interfaces](#pk-format-support-interfaces)) |
 | `bignum.h` | `mbedtls_mpi_` | None (no low-level arithmetic) |
 | `build_info.h` | `MBEDTLS_` | No change (not a crypto API) |
 | `camellia.h` | `mbedtls_camellia_` | [Symmetric encryption](#symmetric-encryption) |
@@ -140,8 +142,8 @@
 | `memory_buffer_alloc.h` | `mbedtls_memory_buffer_alloc_` | No change (not a crypto API) |
 | `net_sockets.h` | `mbedtls_net_` | No change (not a crypto API) |
 | `nist_kw.h` | `mbedtls_nist_kw_` | Migration path not yet defined |
-| `oid.h` | `mbedtls_oid_` | No change ([PK support interface](#pk-format-support-interfaces)) |
-| `pem.h` | `mbedtls_pem_` | No change ([PK support interface](#pk-format-support-interfaces)) |
+| `oid.h` | `mbedtls_oid_` | No change ([PK format support interfaces](#pk-format-support-interfaces)) |
+| `pem.h` | `mbedtls_pem_` | No change ([PK format support interfaces](#pk-format-support-interfaces)) |
 | `pk.h` | `mbedtls_pk_` | [Asymmetric cryptography](#asymmetric-cryptography) |
 | `pkcs5.h` | `mbedtls_pkcs5_` | [PKCS#5 module](#pkcs5-module) |
 | `pkcs7.h` | `mbedtls_pkcs7_` | No change (not a crypto API) |
@@ -151,7 +153,7 @@
 | `platform_util.h` | `mbedtls_platform_` | No change (not a crypto API) |
 | `poly1305.h` | `mbedtls_poly1305_` | None (but there is Chacha20-Poly1305 [AEAD](#symmetric-encryption)) |
 | `private_access.h` | N/A | No public APIs (internal support header) |
-| `psa_util.h` | N/A | No public APIs (internal support header) |
+| `psa_util.h` | various | No change (PSA bridge functions) |
 | `ripemd160.h` | `mbedtls_ripemd160_` | [Hashes and MAC](#hashes-and-mac) |
 | `rsa.h` | `mbedtls_rsa_` | [Asymmetric cryptography](#asymmetric-cryptography) |
 | `sha1.h` | `mbedtls_sha1_` | [Hashes and MAC](#hashes-and-mac) |
@@ -179,6 +181,8 @@
 
 When the configuration option [`MBEDTLS_PSA_CRYPTO_CONFIG`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/mbedtls__config_8h/#mbedtls__config_8h_1a5aca5ddcffb586acad82f9aef26db056) is enabled, the cryptographic mechanisms available through the PSA API are determined by the contents of the header file `"psa/crypto_config.h"`. You can override the file location with the macro [`MBEDTLS_PSA_CRYPTO_CONFIG_FILE`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/mbedtls__config_8h/#mbedtls__config_8h_1a25f7e358caa101570cb9519705c2b873), and you can set [`MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/mbedtls__config_8h/#mbedtls__config_8h_1abd1870cc0d2681183a3018a7247cb137) to the path of an additional file (similar to `MBEDTLS_CONFIG_FILE` and `MBEDTLS_USER_CONFIG_FILE` for legacy configuration symbols).
 
+#### General rules for `PSA_WANT_xxx`
+
 The availability of cryptographic mechanisms in the PSA API is based on a systematic pattern:
 
 * To make `PSA_ALG_aaa` available, enable `PSA_WANT_ALG_aaa`.
@@ -199,6 +203,8 @@
 
 Note that all `PSA_WANT_xxx` symbols must be set to a non-zero value. In particular, setting `PSA_WANT_xxx` to an empty value may not be handled consistently.
 
+#### A small `PSA_WANT` configuration example
+
 For example, the following configuration enables hashing with SHA-256, AEAD with AES-GCM, signature with deterministic ECDSA using SHA-256 on the curve secp256r1 using a randomly generated key as well as the corresponding verification, and ECDH key exchange on secp256r1 and Curve25519.
 
 ```
@@ -216,6 +222,26 @@
 #define PSA_WANT_ALG_ECDH
 ```
 
+#### Automatically translating legacy configurations
+
+If you have a working configuration file with legacy configuration options, run the program
+
+```
+programs/test/query_compile_time_config -l
+```
+
+The lines with `PSA_WANT_...=1` should constitute a PSA configuration that is similar to your legacy configuration. That is, for every line `PSA_WANT_XXX=1` in the output of `query_compile_time_config -l`, make sure the line `#define PSA_WANT_XXX 1` is enabled in `include/psa/crypto_config.h` (or alternate `TF_PSA_CRYPTO_CONFIG_FILE`). You use the following bash/Linux/macOS shell snippet to automate this translation:
+
+```
+programs/test/query_compile_time_config -l | sed -n 's/^\(PSA_WANT_.*\)=1/#define \1/p'
+```
+
+Please review the result as the configuration may not be fully equivalent in all cases. It will generally provide at least the same features, but sometimes this translation results in more than desired.
+
+Note that this only generates the new selection of cryptographic mechanisms. You will also need to remove config lines that set legacy crypto options.
+
+#### Implicit activation of crypto features
+
 If a mechanism is not enabled by `PSA_WANT_xxx`, Mbed TLS will normally not include it. This allows builds that use few features to have a small code size. However, this is not guaranteed: a mechanism that is not explicitly requested can be enabled because it is a dependency of another configuration option, because it is used internally, or because the granularity is not fine enough to distinguish between it and another mechanism that is requested.
 
 Under the hood, `PSA_WANT_xxx` enables the necessary legacy modules. Note that if a mechanism has a PSA accelerator driver, the corresponding legacy module is typically not needed. Thus applications that use a cryptographic mechanism both through the legacy API and through the PSA API need to explicitly enable both the `PSA_WANT_xxx` symbols and the `MBEDTLS_xxx` symbols.
@@ -240,7 +266,7 @@
 
 ### Error messages
 
-At the time of writing, there is no equivalent to the error messages provided by `mbedtls_strerror`. However, you can use the companion program `programs/psa/psa_constant_names` to convert various numbers (`psa_status_t`, `psa_algorithm_t`, `psa_key_type_t`, `psa_ecc_family_t`, `psa_dh_family_t`, `psa_key_usage_t`) to a programmer-friendly representation. The conversion doesn't depend on the library configuration or the target platform, so you can use a native build of this program even if you cross-compile your application.
+There is no equivalent to the error messages provided by `mbedtls_strerror`. However, you can use the companion program `programs/psa/psa_constant_names` to convert various numbers (`psa_status_t`, `psa_algorithm_t`, `psa_key_type_t`, `psa_ecc_family_t`, `psa_dh_family_t`, `psa_key_usage_t`) to a programmer-friendly representation. The conversion doesn't depend on the library configuration or the target platform, so you can use a native build of this program even if you cross-compile your application.
 
 ```
 $ programs/psa/psa_constant_names error -138
@@ -443,7 +469,8 @@
 | `MBEDTLS_MD_SHA3_384`  | `PSA_ALG_SHA3_384`  |
 | `MBEDTLS_MD_SHA3_512`  | `PSA_ALG_SHA3_512`  |
 
-The following helper functions can be used to convert between the 2 types:
+The following helper functions from `<mbedtls/psa_util.h>` can be used to convert between the two types:
+
 - `mbedtls_md_psa_alg_from_type()` converts from legacy `mbedtls_md_type_t` to PSA's `psa_algorithm_t`.
 - `mbedtls_md_type_from_psa_alg()` converts from PSA's `psa_algorithm_t` to legacy `mbedtls_md_type_t`.
 
@@ -618,7 +645,7 @@
     2. [`PSA_KEY_DERIVATION_INPUT_SECRET`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__derivation/#group__derivation_1ga0ddfbe764baba995c402b1b0ef59392e) for the password.
 5. Call [`psa_key_derivation_output_bytes`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__key__derivation/#group__key__derivation_1ga06b7eb34a2fa88965f68e3d023fa12b9) to obtain the output of the derivation. You may call this function more than once to retrieve the output in successive chunks.
   Use [`psa_key_derivation_output_key`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__key__derivation/#group__key__derivation_1gada7a6e17222ea9e7a6be6864a00316e1) instead if you want to use a chunk as a PSA key.  
-  If you want to verify the output against an expected value (for authentication, rather than to derive key material), call [`psa_key_derivation_verify_bytes`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__key__derivation/#group__key__derivation_1gaf01520beb7ba932143ffe733b0795b08) or [`psa_key_derivation_verify_key`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__key__derivation/#group__key__derivation_1gac041714e34a94742e8ee006ac7dfea5a) instead of `psa_key_derivation_output_bytes`. (Note that the `verify` functions are not yet present in the 3.5 release of Mbed TLS. They are expected to be released in version 3.6.0.)
+  If you want to verify the output against an expected value (for authentication, rather than to derive key material), call [`psa_key_derivation_verify_bytes`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__key__derivation/#group__key__derivation_1gaf01520beb7ba932143ffe733b0795b08) or [`psa_key_derivation_verify_key`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__key__derivation/#group__key__derivation_1gac041714e34a94742e8ee006ac7dfea5a) instead of `psa_key_derivation_output_bytes`. (Available since Mbed TLS 3.6.0.)
 6. Call [`psa_key_derivation_abort`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__key__derivation/#group__key__derivation_1ga90fdd2716124d0bd258826184824675f) to free the resources associated with the key derivation object.
 
 The function `mbedtls_pkcs5_pbes2` is only intended as a support function to parse encrypted private keys in the PK module. It has no PSA equivalent.
@@ -633,28 +660,28 @@
 
 The PSA subsystem has an internal random generator. As a consequence, you do not need to instantiate one manually, so most applications using PSA crypto do not need the interfaces from `entropy.h`, `ctr_drbg.h` and `hmac_drbg.h`. See the next sections for remaining use cases for [entropy](#entropy-sources) and [DRBG](#deterministic-pseudorandom-generation).
 
-The PSA API uses its internal random generator to generate keys (`psa_generate_key`), nonces for encryption (`psa_cipher_generate_iv`, `psa_cipher_encrypt`, `psa_aead_generate_nonce`, `psa_aead_encrypt`, `psa_asymmetric_encrypt`), and other random material as needed. If you need random data for some other purposes, call [`psa_generate_random`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__random/#group__random_1ga1985eae417dfbccedf50d5fff54ea8c5).
+The PSA API uses its internal random generator to generate keys (`psa_generate_key`), nonces for encryption (`psa_cipher_generate_iv`, `psa_cipher_encrypt`, `psa_aead_generate_nonce`, `psa_aead_encrypt`, `psa_asymmetric_encrypt`), and other random material as needed. If you need random data for some other purposes, call [`psa_generate_random`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__random/#group__random_1ga1985eae417dfbccedf50d5fff54ea8c5) instead of `mbedtls_ctr_drbg_random` or `mbedtls_hmac_drbg_random`.
 
 If your application mixes uses of the PSA crypto API and the mbedtls API and you need to pass an RNG argument to a legacy or X.509/TLS function, include the header file `<mbedtls/psa_util.h>` and use:
 
 * [`mbedtls_psa_get_random`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/psa__util_8h/#_CPPv422mbedtls_psa_get_randomPvPh6size_t) as the `f_rng` argument;
 * [`MBEDTLS_PSA_RANDOM_STATE`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/psa__util_8h/#c.MBEDTLS_PSA_RANDOM_STATE) as the `p_rng` argument.
 
-You can remove the Mbed TLS RNG boilerplate (`mbedtls_entropy_init`, `mbedtls_ctr_drbg_init`, `mbedtls_ctr_drbg_seed`, `mbedtls_ctr_drbg_random`, `mbedtls_ctr_drbg_free`, `mbedtls_entropy_free` — or `hmac_drbg` equivalents of the `ctr_drbg` functions) once you have finished replacing the references to `mbedtls_ctr_drbg_random` (or `mbedtls_hmac_drbg_random`) by `mbedtls_psa_get_random`.
+Once you have finished replacing the references to `mbedtls_ctr_drbg_random` (or `mbedtls_hmac_drbg_random`) by `mbedtls_psa_get_random`, you can remove the Mbed TLS RNG boilerplate: calls to `mbedtls_entropy_init`, `mbedtls_ctr_drbg_init`, `mbedtls_ctr_drbg_seed`, `mbedtls_ctr_drbg_random`, `mbedtls_ctr_drbg_free`, `mbedtls_entropy_free` (or `hmac_drbg` equivalents of the `ctr_drbg` functions).
 
 ### Entropy sources
 
 Unless explicitly configured otherwise, the PSA random generator uses the default entropy sources configured through the legacy interface (`MBEDTLS_ENTROPY_xxx` symbols). Its set of sources is equivalent to an entropy object configured with `mbedtls_entropy_init`.
 
-A future version of Mbed TLS will include a PSA interface for configuring entropy sources. This is likely to replace the legacy interface in Mbed TLS 4.0.
+Note that the interface for configuring entropy sources will be overhauled in TF-PSA-Crypto 1.0.0.
 
 ### Deterministic pseudorandom generation
 
-The PSA API does not have a dedicated interface for pseudorandom generation. The [key derivation interface](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__key__derivation/) can serve a similar purpose in some applications, but it does not offer CTR\_DRBG or HMAC\_DRBG. If you need these algorithms, keep using `ctr_drbg.h` and `hmac_drbg.h`, but note that they may be removed from the public API in Mbed TLS 4.0.
+The PSA API does not have a dedicated interface for pseudorandom generation. The [key derivation interface](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__key__derivation/) can serve a similar purpose in some applications, but it does not offer CTR\_DRBG or HMAC\_DRBG. If you need these algorithms, keep using `ctr_drbg.h` and `hmac_drbg.h`, but note that they will be removed from the public API in TF-PSA-Crypto 1.0.0 (the successor of Mbed TLS 3.x), with a plan to add a PSA API in a future TF-PSA-Crypto version.
 
 ## Asymmetric cryptography
 
-The PSA API supports RSA (see “[RSA mechanism selection](#rsa-mechanism-selection)”), elliptic curve cryptography (see “[ECC mechanism selection](#elliptic-curve-mechanism-selection)” and “[EC-JPAKE](#ec-jpake)”) and finite-field Diffie-Hellman (see “[Diffie-Hellman mechanism selection](#diffie-hellman-mechanism-selection)”).
+The PSA API supports the same algorithm families for asymmetric cryptography as the legacy API: RSA (see “[RSA mechanism selection](#rsa-mechanism-selection)”), elliptic curve cryptography (see “[ECC mechanism selection](#elliptic-curve-mechanism-selection)” and “[EC-JPAKE](#ec-jpake)”) and finite-field Diffie-Hellman (see “[Diffie-Hellman mechanism selection](#diffie-hellman-mechanism-selection)”).
 
 ### Key lifecycle for asymmetric cryptography
 
@@ -817,7 +844,7 @@
     * `PSA_KEY_USAGE_ENCRYPT` for a key pair used for encryption.
 3. Optionally, tweak the attributes (this is rarely necessary). For example:
     * Call [`psa_set_key_usage_flags`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__attributes/#group__attributes_1ga42a65b3c4522ce9b67ea5ea7720e17de), [`psa_set_key_algorithm`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__attributes/#group__attributes_1gaeb8341ca52baa0279475ea3fd3bcdc98) and/or [`psa_set_key_enrollment_algorithm`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/crypto__extra_8h/#group__attributes_1gaffa134b74aa52aa3ed9397fcab4005aa) to change the key's policy (by default, it allows what can be done through the PK module).
-    · Call [`psa_set_key_id`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__attributes/#group__attributes_1gae48fcfdc72a23e7499957d7f54ff5a64) and perhaps [`psa_set_key_lifetime`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__attributes/#group__attributes_1gac03ccf09ca6d36cc3d5b43f8303db6f7) to create a PSA persistent key.
+    · Call [`psa_set_key_id`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__attributes/#group__attributes_1gae48fcfdc72a23e7499957d7f54ff5a64) and perhaps [`psa_set_key_lifetime`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/group/group__attributes/#group__attributes_1gac03ccf09ca6d36cc3d5b43f8303db6f7) if you wish to create a PSA persistent key.
 4. Call [`mbedtls_pk_import_into_psa`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/pk_8h/#pk_8h_1ad59835d14832daf0f4b4bd0a4555abb9) to import the key into the PSA key store.
 5. You can now free the PK object with `mbedtls_pk_free`.
 
@@ -842,7 +869,7 @@
 
 You can use this, for example, to import an ECC key in the form of a compressed point by calling `mbedtls_ecp_point_read_binary` then following the process below.
 
-The following code snippet illustrates how to import a private key which is initially in an `mbedtls_ecp_keypair` object. (This includes `mbedtls_ecdsa_keypair` objects since that is just a type alias.) Error checks are omitted for simplicity. A future version of Mbed TLS [will provide a function to calculate the curve family](https://github.com/Mbed-TLS/mbedtls/issues/7764).
+The following code snippet illustrates how to import a private key which is initially in an `mbedtls_ecp_keypair` object. (This includes `mbedtls_ecdsa_keypair` objects since that is just a type alias.) Error checks are omitted for simplicity. `mbedtls_ecc_group_to_psa()` was discussed in “[Elliptic curve mechanism selection](#elliptic-curve-mechanism-selection)”.
 
 ```
 mbedtls_ecp_keypair ec;
@@ -852,7 +879,8 @@
 unsigned char buf[PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS)];
 size_t length;
 mbedtls_ecp_write_key_ext(&ec, &length, buf, sizeof(buf));
-psa_ecc_curve_t curve = ...; // need to determine the curve family manually
+size_t bits;
+psa_ecc_curve_t curve = mbedtls_ecc_group_to_psa(mbedtls_ecp_keypair_get_group_id(&ec), bits);
 psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
 psa_set_key_attributes(&attributes, PSA_KEY_TYPE_ECC_KEY_PAIR(curve));
 psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_... | ...);
@@ -955,7 +983,7 @@
 
 #### ECDSA signature
 
-**Note: in the PSA API, the format of an ECDSA signature is the raw fixed-size format. This is different from the legacy API** which uses the ASN.1 DER format for ECDSA signatures. To convert between the two formats, use [`mbedtls_ecdsa_raw_to_der`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/psa__util_8h/#group__psa__tls__helpers_1ga9295799b5437bdff8ce8abd524c5ef2e) or [`mbedtls_ecdsa_der_to_raw`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/psa__util_8h/#group__psa__tls__helpers_1ga33b3cf65d5992ccc724b7ee00186ae61).
+**Note: in the PSA API, the format of an ECDSA signature is the raw fixed-size format. This is different from the legacy API** which uses the ASN.1 DER format for ECDSA signatures. To convert between the two formats, use [`mbedtls_ecdsa_raw_to_der`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/psa__util_8h/#group__psa__tls__helpers_1ga9295799b5437bdff8ce8abd524c5ef2e) or [`mbedtls_ecdsa_der_to_raw`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/psa__util_8h/#group__psa__tls__helpers_1ga33b3cf65d5992ccc724b7ee00186ae61) from `<mbedtls/psa_util.h>`.
 
 <!-- The following are specific to the DER format and therefore have no PSA equivalent: MBEDTLS_ECDSA_MAX_SIG_LEN, MBEDTLS_ECDSA_MAX_LEN -->
 
@@ -974,7 +1002,7 @@
 
 The legacy API includes an API for “restartable” ECC operations: the operation returns after doing partial computation, and can be resumed. This is intended for highly constrained devices where long cryptographic calculations need to be broken up to poll some inputs, where interrupt-based scheduling is not desired. The legacy API consists of the functions `mbedtls_pk_sign_restartable`, `mbedtls_pk_verify_restartable`, `mbedtls_ecdsa_sign_restartable`, `mbedtls_ecdsa_verify_restartable`, `mbedtls_ecdsa_write_signature_restartable`, `mbedtls_ecdsa_read_signature_restartable`, as well as several configuration and data manipulation functions.
 
-The PSA API offers similar functionality via “interruptible” public-key operations. As of Mbed TLS 3.5, it is only implemented for ECDSA, for the same curves as the legacy API. This will likely be extended to ECDH in the short term. At the time of writing, no extension is planned to other curves or other algorithms.
+The PSA API offers similar functionality via “interruptible” public-key operations. As of Mbed TLS 3.6, it is only implemented for ECDSA, for the same curves as the legacy API. This will likely be extended to ECDH in the short term. At the time of writing, no extension is planned to other curves or other algorithms.
 
 The flow of operations for an interruptible signature operation is as follows:
 
@@ -1216,7 +1244,7 @@
 
 #### Restartable key agreement
 
-Restartable key agreement (enabled by `mbedtls_ecdh_enable_restart`) is not yet available through the PSA API. It will be added under the name “interruptible key agreement” in a future version of the library, with an interface that's similar to the interruptible signature interface described in “[Restartable ECDSA signature](#restartable-ecdsa-signature)”.
+Restartable key agreement (enabled by `mbedtls_ecdh_enable_restart`) is not yet available through the PSA API. It will be added under the name “interruptible key agreement” in TF-PSA-Crypto 1.0.0, with an interface that's similar to the interruptible signature interface described in “[Restartable ECDSA signature](#restartable-ecdsa-signature)”.
 
 ### Additional information about Elliptic-curve cryptography
 
@@ -1234,7 +1262,7 @@
 | Curve25519 | 253 | 255 | 256 | 255 |
 | Curve448 | 446 | 448 | 448 | 448 |
 
-There is no exact PSA equivalent of the type `mbedtls_ecp_curve_type` and the function `mbedtls_ecp_get_type`, but the curve family encodes the same information. `PSA_ECC_FAMILY_MONTGOMERY` is the only Montgomery family. All other families supported in Mbed TLS 3.4.0 are short Weierstrass families.
+There is no exact PSA equivalent of the type `mbedtls_ecp_curve_type` and the function `mbedtls_ecp_get_type`, but the curve family encodes the same information. `PSA_ECC_FAMILY_MONTGOMERY` is the only Montgomery family. All other families supported in Mbed TLS 3.6 are short Weierstrass families.
 
 There is no PSA equivalent for the following functionality:
 
@@ -1295,7 +1323,7 @@
 
 The PSA API does not provide direct access to the exponentiation primitive as with `mbedtls_rsa_public` and `mbedtls_rsa_private`. If you need an RSA-based mechanism that is not supported by the PSA API, please [submit an issue on GitHub](https://github.com/ARM-software/psa-api/issues) so that we can extend the API to support it.
 
-The PSA API does not support constructing RSA keys progressively from numbers with `mbedtls_rsa_import` or `mbedtls_rsa_import_raw` followed by `mbedtls_rsa_complete`. See “[Importing a PK key by wrapping](#importing-a-pk-key-by-wrapping)”.
+The PSA API does not support constructing RSA keys progressively from numbers like the legacy functions `mbedtls_rsa_import` or `mbedtls_rsa_import_raw` followed by `mbedtls_rsa_complete`. See “[Importing a PK key by wrapping](#importing-a-pk-key-by-wrapping)”.
 
 There is no direct equivalent of `mbedtls_rsa_export`, `mbedtls_rsa_export_raw` and `mbedtls_rsa_export_crt` to export some of the numbers in a key. You can export the whole key with `psa_export_key`, or with `psa_export_public_key` to export the public key from a key pair object. See also “[Exporting a public key or a key pair](#exporting-a-public-key-or-a-key-pair)”.
 
@@ -1303,17 +1331,15 @@
 
 ### LMS signatures
 
-A future version of Mbed TLS will support LMS keys and signatures through the PSA API (`psa_generate_key`, `psa_export_public_key`, `psa_import_key`, `psa_sign_hash`, `psa_verify_hash`, etc.). However, this is likely to happen after Mbed TLS 4.0, therefore the next major version of Mbed TLS will likely keep the existing `lms.h` interface.
+A future version of TF-PSA-Crypto (as a successor of Mbed TLS) will support LMS keys and signatures through the PSA API (`psa_generate_key`, `psa_export_public_key`, `psa_import_key`, `psa_sign_hash`, `psa_verify_hash`, etc.). However, the existing `lms.h` interface will be kept in TF-PSA-Crypto 1.x.
 
 ### PK format support interfaces
 
-The interfaces in `base64.h`, `asn1.h`, `asn1write.h`, `oid.h` and `pem.h` are intended to support X.509 and key file formats. They have no PSA equivalent since they are not directly about cryptography.
-
-In Mbed TLS 4.0, we are planning to keep the ASN.1 interfaces mostly unchanged. The evolution of Base64, OID and PEM as separate interfaces is still undecided at the time of writing.
+The interfaces in `base64.h`, `asn1.h`, `asn1write.h`, `oid.h` and `pem.h` are intended to support X.509 and key file formats. Since these APIs are not directly about cryptography, there is no PSA replacement in Mbed TLS 3.6 or in TF-PSA-Crypto 1.0.
 
 ## EC-JPAKE
 
-The PSA API exposes EC-JPAKE via the algorithm [`PSA_ALG_JPAKE`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/crypto__extra_8h/#c.PSA_ALG_JPAKE) and the PAKE API functions. At the time of writing, the PAKE API is still experimental, but it should offer the same functionality as the legacy `ecjpake.h`. Please consult the documentation of your version of Mbed TLS for more information.
+The PSA API exposes EC-JPAKE via the algorithm [`PSA_ALG_JPAKE`](https://mbed-tls.readthedocs.io/projects/api/en/development/api/file/crypto__extra_8h/#c.PSA_ALG_JPAKE) and the PAKE API functions. Note that Mbed TLS 3.6 implements a beta version of the PAKE API, which is not fully compatible with the final API. TF-PSA-Crypto implements the official PSA Crypto PAKE API 1.2.
 
 Please note a few differences between the two APIs: the legacy API is geared towards the use of EC-JPAKE in TLS 1.2, whereas the PSA API is protocol-agnostic.
 
diff -Nru mbedtls-3.6.4/docs/requirements.txt mbedtls-3.6.5/docs/requirements.txt
--- mbedtls-3.6.4/docs/requirements.txt	2025-06-30 09:24:52.933824500 +0300
+++ mbedtls-3.6.5/docs/requirements.txt	2025-10-01 18:16:56.969545800 +0300
@@ -1,84 +1,83 @@
 #
-# This file is autogenerated by pip-compile with Python 3.8
+# This file is autogenerated by pip-compile with Python 3.9
 # by the following command:
 #
-#    pip-compile requirements.in
+#    pip-compile docs/requirements.in
 #
-alabaster==0.7.13
+alabaster==0.7.16
     # via sphinx
-babel==2.15.0
+babel==2.17.0
     # via sphinx
-breathe==4.35.0
-    # via -r requirements.in
-certifi==2024.7.4
+breathe==4.36.0
+    # via -r docs/requirements.in
+certifi==2025.8.3
     # via requests
-charset-normalizer==3.3.2
+charset-normalizer==3.4.3
     # via requests
-click==8.1.7
+click==8.1.8
     # via readthedocs-cli
-docutils==0.20.1
+docutils==0.21.2
     # via
-    #   breathe
     #   sphinx
     #   sphinx-rtd-theme
-idna==3.7
+idna==3.10
     # via requests
 imagesize==1.4.1
     # via sphinx
-importlib-metadata==8.0.0
+importlib-metadata==8.7.0
     # via sphinx
-jinja2==3.1.4
+jinja2==3.1.6
     # via sphinx
 markdown-it-py==3.0.0
     # via rich
-markupsafe==2.1.5
+markupsafe==3.0.2
     # via jinja2
 mdurl==0.1.2
     # via markdown-it-py
-packaging==24.1
+packaging==25.0
     # via sphinx
-pygments==2.18.0
+pygments==2.19.2
     # via
     #   rich
     #   sphinx
-pytz==2024.1
-    # via babel
-pyyaml==6.0.1
+pyyaml==6.0.2
     # via readthedocs-cli
-readthedocs-cli==4
-    # via -r requirements.in
-requests==2.32.3
+readthedocs-cli==5
+    # via -r docs/requirements.in
+requests==2.32.5
     # via
     #   readthedocs-cli
     #   sphinx
-rich==13.7.1
+rich==14.1.0
     # via readthedocs-cli
-snowballstemmer==2.2.0
+snowballstemmer==3.0.1
     # via sphinx
-sphinx==7.1.2
+sphinx==7.4.7
     # via
     #   breathe
     #   sphinx-rtd-theme
     #   sphinxcontrib-jquery
-sphinx-rtd-theme==2.0.0
-    # via -r requirements.in
-sphinxcontrib-applehelp==1.0.4
+sphinx-rtd-theme==3.0.2
+    # via -r docs/requirements.in
+sphinxcontrib-applehelp==2.0.0
     # via sphinx
-sphinxcontrib-devhelp==1.0.2
+sphinxcontrib-devhelp==2.0.0
     # via sphinx
-sphinxcontrib-htmlhelp==2.0.1
+sphinxcontrib-htmlhelp==2.1.0
     # via sphinx
 sphinxcontrib-jquery==4.1
     # via sphinx-rtd-theme
 sphinxcontrib-jsmath==1.0.1
     # via sphinx
-sphinxcontrib-qthelp==1.0.3
+sphinxcontrib-qthelp==2.0.0
     # via sphinx
-sphinxcontrib-serializinghtml==1.1.5
+sphinxcontrib-serializinghtml==2.0.0
     # via sphinx
-typing-extensions==4.12.2
-    # via rich
-urllib3==2.2.2
-    # via requests
-zipp==3.19.2
+tomli==2.2.1
+    # via sphinx
+urllib3==2.5.0
+    # via
+    #   readthedocs-cli
+    #   requests
+zipp==3.23.0
     # via importlib-metadata
diff -Nru mbedtls-3.6.4/doxygen/input/doc_mainpage.h mbedtls-3.6.5/doxygen/input/doc_mainpage.h
--- mbedtls-3.6.4/doxygen/input/doc_mainpage.h	2025-06-30 09:24:52.935678000 +0300
+++ mbedtls-3.6.5/doxygen/input/doc_mainpage.h	2025-10-14 19:12:36.854489300 +0300
@@ -10,7 +10,7 @@
  */
 
 /**
- * @mainpage Mbed TLS v3.6.4 API Documentation
+ * @mainpage Mbed TLS v3.6.5 API Documentation
  *
  * This documentation describes the internal structure of Mbed TLS.  It was
  * automatically generated from specially formatted comment blocks in
diff -Nru mbedtls-3.6.4/doxygen/mbedtls.doxyfile mbedtls-3.6.5/doxygen/mbedtls.doxyfile
--- mbedtls-3.6.4/doxygen/mbedtls.doxyfile	2025-06-30 09:24:52.936766100 +0300
+++ mbedtls-3.6.5/doxygen/mbedtls.doxyfile	2025-10-14 19:12:36.855042000 +0300
@@ -1,4 +1,4 @@
-PROJECT_NAME           = "Mbed TLS v3.6.4"
+PROJECT_NAME           = "Mbed TLS v3.6.5"
 OUTPUT_DIRECTORY       = ../apidoc/
 FULL_PATH_NAMES        = NO
 OPTIMIZE_OUTPUT_FOR_C  = YES
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/clusterfuzz-testcase-minimized-fuzz_x509crt-6666050834661376.crt.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/clusterfuzz-testcase-minimized-fuzz_x509crt-6666050834661376.crt.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/Makefile mbedtls-3.6.5/framework/data_files/Makefile
--- mbedtls-3.6.4/framework/data_files/Makefile	2025-06-30 09:25:21.331652400 +0300
+++ mbedtls-3.6.5/framework/data_files/Makefile	2025-10-01 18:24:20.125367200 +0300
@@ -884,7 +884,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_1024_des.pem
 keys_rsa_enc_pkcs8_v2_1024_des: rsa_pkcs8_pbes2_pbkdf2_1024_des.der rsa_pkcs8_pbes2_pbkdf2_1024_des.pem
 
-keys_rsa_enc_pkcs8_v2_1024: keys_rsa_enc_pkcs8_v2_1024_3des keys_rsa_enc_pkcs8_v2_1024_des
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem
+keys_rsa_enc_pkcs8_v2_1024_aes128cbc: rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.der rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem
+keys_rsa_enc_pkcs8_v2_1024_aes192cbc: rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.der rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem
+keys_rsa_enc_pkcs8_v2_1024_aes256cbc: rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.der rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem
+
+keys_rsa_enc_pkcs8_v2_1024: \
+    keys_rsa_enc_pkcs8_v2_1024_3des \
+    keys_rsa_enc_pkcs8_v2_1024_des \
+    keys_rsa_enc_pkcs8_v2_1024_aes128cbc \
+    keys_rsa_enc_pkcs8_v2_1024_aes192cbc \
+    keys_rsa_enc_pkcs8_v2_1024_aes256cbc
 
 ### 2048-bit
 rsa_pkcs8_pbes2_pbkdf2_2048_3des.der: rsa_pkcs1_2048_clear.pem
@@ -903,7 +932,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_2048_des.pem
 keys_rsa_enc_pkcs8_v2_2048_des: rsa_pkcs8_pbes2_pbkdf2_2048_des.der rsa_pkcs8_pbes2_pbkdf2_2048_des.pem
 
-keys_rsa_enc_pkcs8_v2_2048: keys_rsa_enc_pkcs8_v2_2048_3des keys_rsa_enc_pkcs8_v2_2048_des
+rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem
+keys_rsa_enc_pkcs8_v2_2048_aes128cbc: rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.der rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem
+
+rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem
+keys_rsa_enc_pkcs8_v2_2048_aes192cbc: rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.der rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem
+
+rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem
+keys_rsa_enc_pkcs8_v2_2048_aes256cbc: rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.der rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem
+
+keys_rsa_enc_pkcs8_v2_2048: \
+    keys_rsa_enc_pkcs8_v2_2048_3des \
+    keys_rsa_enc_pkcs8_v2_2048_des \
+    keys_rsa_enc_pkcs8_v2_2048_aes128cbc \
+    keys_rsa_enc_pkcs8_v2_2048_aes192cbc \
+    keys_rsa_enc_pkcs8_v2_2048_aes256cbc
 
 ### 4096-bit
 rsa_pkcs8_pbes2_pbkdf2_4096_3des.der: rsa_pkcs1_4096_clear.pem
@@ -922,7 +980,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_4096_des.pem
 keys_rsa_enc_pkcs8_v2_4096_des: rsa_pkcs8_pbes2_pbkdf2_4096_des.der rsa_pkcs8_pbes2_pbkdf2_4096_des.pem
 
-keys_rsa_enc_pkcs8_v2_4096: keys_rsa_enc_pkcs8_v2_4096_3des keys_rsa_enc_pkcs8_v2_4096_des
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem
+keys_rsa_enc_pkcs8_v2_4096_aes128cbc: rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.der rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem
+keys_rsa_enc_pkcs8_v2_4096_aes192cbc: rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.der rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem
+keys_rsa_enc_pkcs8_v2_4096_aes256cbc: rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.der rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem
+
+keys_rsa_enc_pkcs8_v2_4096: \
+    keys_rsa_enc_pkcs8_v2_4096_3des \
+    keys_rsa_enc_pkcs8_v2_4096_des \
+    keys_rsa_enc_pkcs8_v2_4096_aes128cbc \
+    keys_rsa_enc_pkcs8_v2_4096_aes192cbc \
+    keys_rsa_enc_pkcs8_v2_4096_aes256cbc
 
 ###
 ### PKCS8-v2 encoded, encrypted RSA keys, PRF hmacWithSHA224
@@ -945,7 +1032,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.pem
 keys_rsa_enc_pkcs8_v2_1024_des_sha224: rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.der rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.pem
 
-keys_rsa_enc_pkcs8_v2_1024_sha224: keys_rsa_enc_pkcs8_v2_1024_3des_sha224 keys_rsa_enc_pkcs8_v2_1024_des_sha224
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem
+keys_rsa_enc_pkcs8_v2_1024_aes128cbc_sha224: rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.der rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem
+keys_rsa_enc_pkcs8_v2_1024_aes192cbc_sha224: rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.der rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem
+keys_rsa_enc_pkcs8_v2_1024_aes256cbc_sha224: rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.der rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem
+
+keys_rsa_enc_pkcs8_v2_1024_sha224: \
+    keys_rsa_enc_pkcs8_v2_1024_3des_sha224 \
+    keys_rsa_enc_pkcs8_v2_1024_des_sha224 \
+    keys_rsa_enc_pkcs8_v2_1024_aes128cbc_sha224 \
+    keys_rsa_enc_pkcs8_v2_1024_aes192cbc_sha224 \
+    keys_rsa_enc_pkcs8_v2_1024_aes256cbc_sha224
 
 ### 2048-bit
 rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.der: rsa_pkcs1_2048_clear.pem
@@ -964,7 +1080,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_2048_des_sha224.pem
 keys_rsa_enc_pkcs8_v2_2048_des_sha224: rsa_pkcs8_pbes2_pbkdf2_2048_des_sha224.der rsa_pkcs8_pbes2_pbkdf2_2048_des_sha224.pem
 
-keys_rsa_enc_pkcs8_v2_2048_sha224: keys_rsa_enc_pkcs8_v2_2048_3des_sha224 keys_rsa_enc_pkcs8_v2_2048_des_sha224
+rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem
+keys_rsa_enc_pkcs8_v2_2048_aes128cbc_sha224: rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.der rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem
+
+rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem
+keys_rsa_enc_pkcs8_v2_2048_aes192cbc_sha224: rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.der rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem
+
+rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem
+keys_rsa_enc_pkcs8_v2_2048_aes256cbc_sha224: rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.der rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem
+
+keys_rsa_enc_pkcs8_v2_2048_sha224: \
+    keys_rsa_enc_pkcs8_v2_2048_3des_sha224 \
+	keys_rsa_enc_pkcs8_v2_2048_des_sha224 \
+	keys_rsa_enc_pkcs8_v2_2048_aes128cbc_sha224 \
+    keys_rsa_enc_pkcs8_v2_2048_aes192cbc_sha224 \
+	keys_rsa_enc_pkcs8_v2_2048_aes256cbc_sha224
 
 ### 4096-bit
 rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.der: rsa_pkcs1_4096_clear.pem
@@ -983,7 +1128,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_4096_des_sha224.pem
 keys_rsa_enc_pkcs8_v2_4096_des_sha224: rsa_pkcs8_pbes2_pbkdf2_4096_des_sha224.der rsa_pkcs8_pbes2_pbkdf2_4096_des_sha224.pem
 
-keys_rsa_enc_pkcs8_v2_4096_sha224: keys_rsa_enc_pkcs8_v2_4096_3des_sha224 keys_rsa_enc_pkcs8_v2_4096_des_sha224
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem
+keys_rsa_enc_pkcs8_v2_4096_aes128cbc_sha224: rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.der rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem
+keys_rsa_enc_pkcs8_v2_4096_aes192cbc_sha224: rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.der rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA224 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem
+keys_rsa_enc_pkcs8_v2_4096_aes256cbc_sha224: rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.der rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem
+
+keys_rsa_enc_pkcs8_v2_4096_sha224: \
+    keys_rsa_enc_pkcs8_v2_4096_3des_sha224 \
+	keys_rsa_enc_pkcs8_v2_4096_des_sha224 \
+	keys_rsa_enc_pkcs8_v2_4096_aes128cbc_sha224 \
+	keys_rsa_enc_pkcs8_v2_4096_aes192cbc_sha224 \
+	keys_rsa_enc_pkcs8_v2_4096_aes256cbc_sha224
 
 ###
 ### PKCS8-v2 encoded, encrypted RSA keys, PRF hmacWithSHA256
@@ -1006,7 +1180,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.pem
 keys_rsa_enc_pkcs8_v2_1024_des_sha256: rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.der rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.pem
 
-keys_rsa_enc_pkcs8_v2_1024_sha256: keys_rsa_enc_pkcs8_v2_1024_3des_sha256 keys_rsa_enc_pkcs8_v2_1024_des_sha256
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem
+keys_rsa_enc_pkcs8_v2_1024_aes128cbc_sha256: rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.der rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem
+keys_rsa_enc_pkcs8_v2_1024_aes192cbc_sha256: rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.der rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem
+keys_rsa_enc_pkcs8_v2_1024_aes256cbc_sha256: rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.der rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem
+
+keys_rsa_enc_pkcs8_v2_1024_sha256: \
+    keys_rsa_enc_pkcs8_v2_1024_3des_sha256 \
+	keys_rsa_enc_pkcs8_v2_1024_des_sha256 \
+	keys_rsa_enc_pkcs8_v2_1024_aes128cbc_sha256 \
+	keys_rsa_enc_pkcs8_v2_1024_aes192cbc_sha256 \
+	keys_rsa_enc_pkcs8_v2_1024_aes256cbc_sha256
 
 ### 2048-bit
 rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.der: rsa_pkcs1_2048_clear.pem
@@ -1025,7 +1228,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_2048_des_sha256.pem
 keys_rsa_enc_pkcs8_v2_2048_des_sha256: rsa_pkcs8_pbes2_pbkdf2_2048_des_sha256.der rsa_pkcs8_pbes2_pbkdf2_2048_des_sha256.pem
 
-keys_rsa_enc_pkcs8_v2_2048_sha256: keys_rsa_enc_pkcs8_v2_2048_3des_sha256 keys_rsa_enc_pkcs8_v2_2048_des_sha256
+rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem
+keys_rsa_enc_pkcs8_v2_2048_aes128cbc_sha256: rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.der rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem
+
+rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem
+keys_rsa_enc_pkcs8_v2_2048_aes192cbc_sha256: rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.der rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem
+
+rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem
+keys_rsa_enc_pkcs8_v2_2048_aes256cbc_sha256: rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.der rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem
+
+keys_rsa_enc_pkcs8_v2_2048_sha256: \
+    keys_rsa_enc_pkcs8_v2_2048_3des_sha256 \
+	keys_rsa_enc_pkcs8_v2_2048_des_sha256 \
+	keys_rsa_enc_pkcs8_v2_2048_aes128cbc_sha256 \
+	keys_rsa_enc_pkcs8_v2_2048_aes192cbc_sha256 \
+	keys_rsa_enc_pkcs8_v2_2048_aes256cbc_sha256
 
 ### 4096-bit
 rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.der: rsa_pkcs1_4096_clear.pem
@@ -1044,7 +1276,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_4096_des_sha256.pem
 keys_rsa_enc_pkcs8_v2_4096_des_sha256: rsa_pkcs8_pbes2_pbkdf2_4096_des_sha256.der rsa_pkcs8_pbes2_pbkdf2_4096_des_sha256.pem
 
-keys_rsa_enc_pkcs8_v2_4096_sha256: keys_rsa_enc_pkcs8_v2_4096_3des_sha256 keys_rsa_enc_pkcs8_v2_4096_des_sha256
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem
+keys_rsa_enc_pkcs8_v2_4096_aes128cbc_sha256: rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.der rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem
+keys_rsa_enc_pkcs8_v2_4096_aes192cbc_sha256: rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.der rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem
+keys_rsa_enc_pkcs8_v2_4096_aes256cbc_sha256: rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.der rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem
+
+keys_rsa_enc_pkcs8_v2_4096_sha256: \
+    keys_rsa_enc_pkcs8_v2_4096_3des_sha256 \
+	keys_rsa_enc_pkcs8_v2_4096_des_sha256 \
+	keys_rsa_enc_pkcs8_v2_4096_aes128cbc_sha256 \
+	keys_rsa_enc_pkcs8_v2_4096_aes192cbc_sha256 \
+	keys_rsa_enc_pkcs8_v2_4096_aes256cbc_sha256
 
 ###
 ### PKCS8-v2 encoded, encrypted RSA keys, PRF hmacWithSHA384
@@ -1067,7 +1328,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.pem
 keys_rsa_enc_pkcs8_v2_1024_des_sha384: rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.der rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.pem
 
-keys_rsa_enc_pkcs8_v2_1024_sha384: keys_rsa_enc_pkcs8_v2_1024_3des_sha384 keys_rsa_enc_pkcs8_v2_1024_des_sha384
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem
+keys_rsa_enc_pkcs8_v2_1024_aes128cbc_sha384: rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.der rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem
+keys_rsa_enc_pkcs8_v2_1024_aes192cbc_sha384: rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.der rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem
+keys_rsa_enc_pkcs8_v2_1024_aes256cbc_sha384: rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.der rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem
+
+keys_rsa_enc_pkcs8_v2_1024_sha384: \
+    keys_rsa_enc_pkcs8_v2_1024_3des_sha384 \
+	keys_rsa_enc_pkcs8_v2_1024_des_sha384 \
+	keys_rsa_enc_pkcs8_v2_1024_aes128cbc_sha384 \
+	keys_rsa_enc_pkcs8_v2_1024_aes192cbc_sha384 \
+	keys_rsa_enc_pkcs8_v2_1024_aes256cbc_sha384
 
 ### 2048-bit
 rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.der: rsa_pkcs1_2048_clear.pem
@@ -1078,6 +1368,14 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem
 keys_rsa_enc_pkcs8_v2_2048_3des_sha384: rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.der rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem
 
+rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 des -v2prf hmacWithSHA384 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.der
+rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 des -v2prf hmacWithSHA384 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.pem
+keys_rsa_enc_pkcs8_v2_2048_des_sha384: rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.der rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.pem
+
 rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.der: rsa_pkcs1_2048_clear.pem
 	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
 all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.der
@@ -1102,15 +1400,12 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem
 keys_rsa_enc_pkcs8_v2_2048_aes256cbc_sha384: rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.der rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem
 
-rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.der: rsa_pkcs1_2048_clear.pem
-	$(OPENSSL) pkcs8 -topk8 -v2 des -v2prf hmacWithSHA384 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
-all_final += rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.der
-rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.pem: rsa_pkcs1_2048_clear.pem
-	$(OPENSSL) pkcs8  -topk8 -v2 des -v2prf hmacWithSHA384 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
-all_final += rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.pem
-keys_rsa_enc_pkcs8_v2_2048_des_sha384: rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.der rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.pem
-
-keys_rsa_enc_pkcs8_v2_2048_sha384: keys_rsa_enc_pkcs8_v2_2048_3des_sha384 keys_rsa_enc_pkcs8_v2_2048_des_sha384
+keys_rsa_enc_pkcs8_v2_2048_sha384: \
+    keys_rsa_enc_pkcs8_v2_2048_3des_sha384 \
+	keys_rsa_enc_pkcs8_v2_2048_des_sha384 \
+	keys_rsa_enc_pkcs8_v2_2048_aes128cbc_sha384 \
+	keys_rsa_enc_pkcs8_v2_2048_aes192cbc_sha384 \
+	keys_rsa_enc_pkcs8_v2_2048_aes256cbc_sha384
 
 ### 4096-bit
 rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.der: rsa_pkcs1_4096_clear.pem
@@ -1129,7 +1424,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_4096_des_sha384.pem
 keys_rsa_enc_pkcs8_v2_4096_des_sha384: rsa_pkcs8_pbes2_pbkdf2_4096_des_sha384.der rsa_pkcs8_pbes2_pbkdf2_4096_des_sha384.pem
 
-keys_rsa_enc_pkcs8_v2_4096_sha384: keys_rsa_enc_pkcs8_v2_4096_3des_sha384 keys_rsa_enc_pkcs8_v2_4096_des_sha384
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem
+keys_rsa_enc_pkcs8_v2_4096_aes128cbc_sha384: rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.der rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem
+keys_rsa_enc_pkcs8_v2_4096_aes192cbc_sha384: rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.der rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA384 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem
+keys_rsa_enc_pkcs8_v2_4096_aes256cbc_sha384: rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.der rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem
+
+keys_rsa_enc_pkcs8_v2_4096_sha384: \
+    keys_rsa_enc_pkcs8_v2_4096_3des_sha384 \
+	keys_rsa_enc_pkcs8_v2_4096_des_sha384 \
+	keys_rsa_enc_pkcs8_v2_4096_aes128cbc_sha384 \
+	keys_rsa_enc_pkcs8_v2_4096_aes192cbc_sha384 \
+    keys_rsa_enc_pkcs8_v2_4096_aes256cbc_sha384
 
 ###
 ### PKCS8-v2 encoded, encrypted RSA keys, PRF hmacWithSHA512
@@ -1152,7 +1476,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.pem
 keys_rsa_enc_pkcs8_v2_1024_des_sha512: rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.der rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.pem
 
-keys_rsa_enc_pkcs8_v2_1024_sha512: keys_rsa_enc_pkcs8_v2_1024_3des_sha512 keys_rsa_enc_pkcs8_v2_1024_des_sha512
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem
+keys_rsa_enc_pkcs8_v2_1024_aes128cbc_sha512: rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.der rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem
+keys_rsa_enc_pkcs8_v2_1024_aes192cbc_sha512: rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.der rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem
+
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.der: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.der
+rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem: rsa_pkcs1_1024_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem
+keys_rsa_enc_pkcs8_v2_1024_aes256cbc_sha512: rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.der rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem
+
+keys_rsa_enc_pkcs8_v2_1024_sha512: \
+    keys_rsa_enc_pkcs8_v2_1024_3des_sha512 \
+	keys_rsa_enc_pkcs8_v2_1024_des_sha512 \
+	keys_rsa_enc_pkcs8_v2_1024_aes128cbc_sha512 \
+	keys_rsa_enc_pkcs8_v2_1024_aes192cbc_sha512 \
+	keys_rsa_enc_pkcs8_v2_1024_aes256cbc_sha512
 
 ### 2048-bit
 rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.der: rsa_pkcs1_2048_clear.pem
@@ -1171,7 +1524,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_2048_des_sha512.pem
 keys_rsa_enc_pkcs8_v2_2048_des_sha512: rsa_pkcs8_pbes2_pbkdf2_2048_des_sha512.der rsa_pkcs8_pbes2_pbkdf2_2048_des_sha512.pem
 
-keys_rsa_enc_pkcs8_v2_2048_sha512: keys_rsa_enc_pkcs8_v2_2048_3des_sha512 keys_rsa_enc_pkcs8_v2_2048_des_sha512
+rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem
+keys_rsa_enc_pkcs8_v2_2048_aes128cbc_sha512: rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.der rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem
+
+rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem
+keys_rsa_enc_pkcs8_v2_2048_aes192cbc_sha512: rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.der rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem
+
+rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.der: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.der
+rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem: rsa_pkcs1_2048_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem
+keys_rsa_enc_pkcs8_v2_2048_aes256cbc_sha512: rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.der rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem
+
+keys_rsa_enc_pkcs8_v2_2048_sha512: \
+    keys_rsa_enc_pkcs8_v2_2048_3des_sha512 \
+	keys_rsa_enc_pkcs8_v2_2048_des_sha512 \
+	keys_rsa_enc_pkcs8_v2_2048_aes128cbc_sha512 \
+	keys_rsa_enc_pkcs8_v2_2048_aes192cbc_sha512 \
+	keys_rsa_enc_pkcs8_v2_2048_aes256cbc_sha512
 
 ### 4096-bit
 rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.der: rsa_pkcs1_4096_clear.pem
@@ -1190,7 +1572,36 @@
 all_final += rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.pem
 keys_rsa_enc_pkcs8_v2_4096_des_sha512: rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.der rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.pem
 
-keys_rsa_enc_pkcs8_v2_4096_sha512: keys_rsa_enc_pkcs8_v2_4096_3des_sha512 keys_rsa_enc_pkcs8_v2_4096_des_sha512
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-128-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem
+keys_rsa_enc_pkcs8_v2_4096_aes128cbc_sha512: rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.der rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-192-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem
+keys_rsa_enc_pkcs8_v2_4096_aes192cbc_sha512: rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.der rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem
+
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.der: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform DER -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.der
+rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem: rsa_pkcs1_4096_clear.pem
+	$(OPENSSL) pkcs8  -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 -inform PEM -in $< -outform PEM -out $@ -passout "pass:$(keys_rsa_pkcs8_pwd)"
+all_final += rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem
+keys_rsa_enc_pkcs8_v2_4096_aes256cbc_sha512: rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.der rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem
+
+keys_rsa_enc_pkcs8_v2_4096_sha512: \
+    keys_rsa_enc_pkcs8_v2_4096_3des_sha512 \
+	keys_rsa_enc_pkcs8_v2_4096_des_sha512 \
+	keys_rsa_enc_pkcs8_v2_4096_aes128cbc_sha512 \
+	keys_rsa_enc_pkcs8_v2_4096_aes192cbc_sha512 \
+	keys_rsa_enc_pkcs8_v2_4096_aes256cbc_sha512
 
 ###
 ### Rules to generate all RSA keys from a particular class
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem	2025-10-01 18:24:20.226545300 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIy16RtnJXiqACAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBBuKDyPydVqPtDnG1JrNqF9BIIC
+gEY/4jEj/5oEMJn8SYfWeJ9cx6Ds/I54psgLJG5yWA3CZZHVknqj7OlqzQmy8NKP
+zdIyXrJTN6W0Gw68/1uwlH/O8iUucQi/4GtcdeN1K20ujuMoIX04WvwRigXC6Sl1
+6yfykxejb6jgN/z1jfNZoPDkPTParZn8Su3dY1sFfFGP7qIkgqabxdi8Ub1a7Jos
+m6O2RAk5+A1XRWvmFtLF/kg2TxqqtmbuyQsvAr/TmqqMGAs8wu/S99UiDifucD6W
+eOHL0kgJmcwoqKuLp2yVvIbAn9FvvbiW7tfQyviPcLhXgA1UAOJ9/Df/ZXtfqY1X
+di3SK+vg1ixo5V1MT8Svcpez83Q4tYy5g34fyLgD1RsdSFwt+LlNiKQTc06N5x8b
+XQ8CIeuxgClLrKBRKMzMsLZx5FKbVGVUDH6W2uaS0Qo03FUTb5d4hEgyucF/U9xI
+f5o/JZKm++yvuwR5NVtQHMoJ/iwje3OeZ8kO5YtH+YvWmz0iH7rLEyFTn5T81UJO
+bTXF0uicVaOvsgLiKfEmYAqGjLsL8iPBtaMxlCGTjD5/CvS3SUnkmYbAtcjubxLS
+CAlNtjEgZF4Q7UxwrFwPVzy0ofW8qOuBWPr6h7CcmA+tLJzKhBez6qOodJtHrUjK
+p4E9ZulT3zn9MFjf36bK699/XDBxYY/XLksGu/Z6UQ6XCbFmxd6/0+cxNOks7/3t
+L06/GW5h8+0aNPq1X3iuszmOrGEhVPW3of/LBmL/Pd+cM46iguhRD2/6xqouEO2V
+VQHtx9ZCGpEtcYtKsCb9fFZuLaxozIGG29Bzwq+C2pIcgZuv+pxxXmlABuqXpUWZ
+olfIGlPieRrKKt9WdCpTnE0=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem	2025-10-01 18:24:20.226726300 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQISYkLMq/AfHgCAggA
+MAwGCCqGSIb3DQIIBQAwHQYJYIZIAWUDBAECBBDsDtnITmnN+PMwd8J+d4VqBIIC
+gItqdfBuAonqTuSNz7WHzdpzgcv9kRU7lKo/0TRRTDIVf+/v612d3o4idFR+E4gl
+bC8EzOvEqBOny7JCghRNTVHTD/1uilSnT2KGz9QDIyAcy3odbxCT9a2fNtdcBYJ5
+HNVR9RwgSlIj4OH1rBVjIBGS+u6lFhOvOmssQQMdYpKGg+DiIaqngyT0565wmrlR
+OaODYBgHFBXy8CnGKuBWOg7KE6Vpk4KmPP7gHFaD8h5OsFES546hfxpHs7YD6sk9
+cqGC9N0wgI9anzBotyH655d9fNOczbneYWQ6ciRo4gUadkZmztlLscGYNByTgTK9
+KsbXN0EhUVEskDB39ScqKZL8Jlk/cJ/y+9bbmKzmdLzvFi3BfDP89CcO+VD0trxP
+SgY7/veCIh/m1hK0UBUUHAIodQ8eWreSnI0Tljjvj94MrgAISGE60lcKMaq/2w9M
+nX1chSRzYp8CsiOuhhgrFq31+R7QQNbXsbG7U3Xjn5CmwjdaZCLdPA/8dcV8J22k
+WOHmIbbWM4zCXzwbS+A8HctgQOob+cDSMgfhXF1p4MWStvFFHqzpbnqFd3+GOALC
+LvHoklpllLYKyW2sxzZeFAdQO3C9DWo3m7RVhNxDZInyrxfEU1/CquXsQw13QFtV
++YYi4ZQsq3qA1iYslLPtT1sW7I0OWGiQBCY3iV06q61PQhdrJnMlzyDvMZTaKpET
+TXUuRI1ApNwtL/nGWRqFLc2J0BpB4xybY6ESUXAoGjmdRPJJxh5V1KWKsAGl5VN9
+NmGuWlqX2Gek5vybgAtJs+nDGWSOHv9YZePun9uwciG2fiS/AnBdKUj3zx4ZkDFR
+5BAOvJ8TFfPNnLCJocLApeM=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem	2025-10-01 18:24:20.226924700 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIEnXhSvi/V1gCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBBxtWIJQJv212PVKNVgjsrmBIIC
+gPYrUNvFeFrF9KaCG3iiD0wjtJeT2Gi6dvNJQCWHXU92eliJdUyHEhDbZzVGcMgW
+tmXNvmt/881ucED6Cwi2Sa6+tBZSw278qPDYBzhUyuCgx6/EI6RMlqOAksH8H3LZ
+cLrbk8QQUW1i+Akna05lAEqvWfzEI6Yen3XHERU2WUncDAMUEmHhiFpkEE8Fium0
+0WaqmrHBr4nYNUI+eH9KcwHRVuDEi0lRwebWky08ySh0CvMk7jNoFEGo3CV9eBi8
+zH0CIVCtKBbdTllFOcYpwUiOfStju+uM2MOo9SN4YP+T0qQSFPBRFeQTd9e2M3St
+Ci6cR9TPUo07AQOHqDbYYYo6V2imcfaFQRSRg9rCJVMKtsCC9lxJpGRNwhEj/9up
+VqmbgSRSu7nfmZtXMcFznOQCASdO7s1Lk8CtlBj8LDvXjmy8qA9I9wlv19iWEpJP
+rMNqxBjR0Rmd505cHjNgD5oeSLvk1K2so+YlSXynTilohKIvr4MmrFgzpQbRTo3g
+tpe3e+IgH2kuVQCxivqWcX2Lrr5YXI76OAx1Oj335q22DV2q4znjpUDECpYGIfxi
+YSHhU7RxBbcCKCU9AOJzSa+3vdt8WNt/poowmvbyTMqKWgAjB1JLjdNPzPmIZA9R
+o7nbGcDSES+FP9lm0H3lV55uI+pbqfODswex88HHFiN0kDMpHARagR6beM6x1ACN
+y08GealOGbX96bs6gX284eeGpLNiv4cGgnaD/Hw6+3sJWL0IF0ZnIAp3LEs1BM4O
+BkzuwmsK0GO5Y/wLjFtMHwhooFjhbSXepPWfOYkUn3XzhOnb+vFfxu4Ut637wxYL
+nPr97Qkw0yIV741w3vgmePA=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem	2025-10-01 18:24:20.227113700 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIS0WuIjADitACAggA
+MAwGCCqGSIb3DQIKBQAwHQYJYIZIAWUDBAECBBCQxfEiJ2lFB6Ht4ih3aUMOBIIC
+gPMHbzinnukxbDCLy12jIuDPw1BbdA+jqRkb4XH3NR4Umb8XvgyuFH4khcYEwUPL
+VilrBmjy/UgbNIpRa2ZXnWYn941B55gscWoP2NKPkERD6GVtr2qmik/nuqN+C+V6
+mcy6/eCmVgE50oIC3iyM8C5M9iEXtOBT5cDvI6xy/10kCD4/+co8Sr6Vu1fXLSpi
+VQKE9OB2MG/3FitNZPsRTjqx2lGoyQoC+pC+N4sWUDguCZyaRFuby4lpSeYDfYOb
+GdP8wml6j2FRlaN4hNhb8Lidnyvc8Y9hUdDaeyyDFQStqdwlvdEPT/HKDpwn12G2
+XV0Zv/Xm3UzHx4GvOB9BJGG5PUMtFImB5jiTuaUEe4fkhaSwJf4Zitpy074CwhuR
+eKknSeEmEBRnz61sQf8O4QasoaSi/yNZveqb1SIyDOHvYNJW5j0enQ0i2PiV8liC
+51YuxmhQMjf62+5PhioT+go4j9ncPzbkshqCAEAxCl9JQrGasGpPRGyqtmwqQY+G
+cSLJZN1OpukDJgKynM2TchM9338nPvbvaCFCZwZoDM5aPK7TCVScalrm5HdpRGs6
+OUhGfzlURnv/x+PEgLbFa8WJ5Ut2EEj+tJyNLpaRp30qSLhI/JFuZWViGFXtxRqz
+ARXhg3vgsVdev9QCafvaKS9pZI/UVrMAXt2UnC0ZUCRGROFt+04xN2YLFXDJeCiZ
+BWxfb6POIdYcRamxRJALFIwqzF6knHX+vMRUDMTph8UwEARvWidgRuahWRLSsYHP
+RE9vejPuApwRCDnVEUVyvUkqJrJWKpVdguX3i5X5GWe/v2VYWsJlku69fandfRQo
+ZBTh2xo4QYsRJSNUxOIi6x8=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem	2025-10-01 18:24:20.227339500 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIxPnXLvn3zFwCAggA
+MAwGCCqGSIb3DQILBQAwHQYJYIZIAWUDBAECBBDPnGaKOurordt2d0I+yDFdBIIC
+gE8L6gtkDZQDO4Pcwy11XqC7iABP7n+uD18DEWACB0FyGR3Xu5bRLNqam6oV5rWO
+lUEtHjj+6Z7NIL8ZEGmzXJcqnaFkmcbTRwiWyNmhZN9/+wV3dzICVdf2odrzP88r
+A9kPgf/iCIofHSQ88CZctyqpMk0DkpW6vgvPQEAsp5C2fZKZCw5H4vKdgtPyZlue
+ZIRGe/Xk0iGRoXRkc5gGghlpbvpIAMZorFsdez2B9NBKIfTMcZEB/1PBDwQtGIkl
+VEX8XXUjZoHT04QynEHNVgWVSLrp+a85S/eaQzyOIQ4DsQrrN8fGEV8fEt0MKQq7
+ZKUu8Ho/BUY2hfaiWgH0L4vrXy1Jzi1cN8I4rNUAzCQ5ITOdCfvjVJgiBwqmSbaJ
+WDdmqzXKJCj8+gyoUzaaZJOtQfQejmxrRVDpaTdBDHkSiqOpqzuYJKG7D70bpM9r
+MH0qdwQPWNtXlmFwGDMZUJZp3LVaZTfw5aZW3gmevfSzPmcF5DDemY6piybIwA5H
+Q35SAUvyEsZsy582FezExyro/AAvltyDk0NMdyVM4qvsjn8YD7Psf6D0ttNHvyts
+FNizsN6MQBmmgq0THPbthoaZEOUueoQZDExDk/htLFLPjwJlTlEWhMdefqLdtrau
+Lcsvs6dKCzit9eQRet064NOxkPIz67h7ov92Efly423b0/zn5YUHxSBAgE5zOnaL
+BaYZ6EMOore06VwzMMar4Vr/ab7PlOJ0Pn7GvaPBaHGaKq59uMBPmUH1gSs5ffDD
+k/ajSKgqabLOIX+JUwPp3VkOnEEVh/OYiJ30YYMWtuo8ETugyb0IRCD6nEKz/qn1
+eG8LOgeEB70iamH6Pa2fppM=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem	2025-10-01 18:24:20.227540300 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQINompBsWmK7wCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEWBBDh7EGeiOn+yQeEY1wNleZqBIIC
+gCyfFSm9dohxryXiDBu8BGMx0vmLHriCUQmPgdnR16utySTJsruhm/SSjqYbNxNw
+5de7fEg6qS1PbgLcZm+XEkr/qHMRTPKh4sCd5/D6oio5YOmFCBFqOG4GPJeeLv7f
+IXthfImgRHOniz6eMddXeb0DhONBJb5RYLqBoyslk24xGd88x+O2yMbCK11H7Zte
+9VaY4FtsW3Va8oaHX2i6b2k0jylthXHaHmT+zrx8f4nvqC6IEJx+5d4fjzRCI3Qx
+5PqfPHD/omydJEGyJJn/ISolob9VT58/eA9miCBnfjH0jeWa1DpMkTA15rHylFzZ
+uPKzObOUuClBvsrdlMsXVeOvvoO9Cmw+hHemA3xLI6fMBQPEXgSJrvmTF5EkamKc
+HttNEd+9Nuz5J5pI/fw55u4TMhlM5jb/uinW/vdDHGmbUyE51yOEjIPVPSYC9E+w
+7SyztJogFmov9LLg4K+xkt2/V5uz2UUgx+ZNnYR+q4w+CqjmxKXR2MSJkbw7XPPE
+UrOG0MHMwPWv2I46sXYhIIu38E/G1a6EChfZh+h18com8hXtv4Cly6taoRUSCVmK
+vQlk/gv8ruAKftrLwnIirzD48btkGsrNf12xWn72vZ/i3wTNaiShoud0qIx0UGNo
+71FnMw25trRbvjMiQSAKbqnZYOxhjo/5Im79ugFmkDCT3h8/4bA2+qAm8k7dJTVP
+bKrgAkPhcnsnOVf36cbKJHiM4TfxhCrsvSEKUqOLWLTTgqf23DWDQbhQoQEctM2N
+ig4Jr5kkfrQneC0rsgS2gh99eUzFbVRCLjkVS5vQ+ZE0l7KaExGQGGw4RZ6ZD4iw
+KFNIs6WvkF3eBdmn+eDZzr4=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem	2025-10-01 18:24:20.227718600 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIS3ry/ajN4UYCAggA
+MAwGCCqGSIb3DQIIBQAwHQYJYIZIAWUDBAEWBBD/vCPUc0pMklyWmSaSeuM3BIIC
+gJju8qZNeRmLq+4daNjNek72ghig5j4OpwafvPqLVe0n8DEqa4gXMPil9Y867mvR
+AW7UEPwmBx1VimG+JP/dSx/j34oSo6FmzQDCAGG65Ecm9uVYtTrewWLa/c3TABKu
+xBigJPxCoiY2aswHMRYbzJNAr1AZj3qYN1XsaALzdn2CsPMbBvDL7MtiohQz1gu5
+XLY9kpHR61VxyfargPXmACqd7fpnqfwAQOerN3o9HRyX4tf+AibmPw+6bRNxFSYT
+quMcRWOC3LHwokOhTCT9f7XO0wgOwl/Al9FBL/3umksfJWwzvF6NeJLZSvA2ltz2
+r6esT790nbrZeR4bKB8uLRen/o1eM6TcTpmv2CYYOMv9s5i/lGnfu3ynHqSDWZhG
++PjjN17YT7P6KGpddByG/N7Mw5NM65MiI0Mh/6jY38GLdbaQySlgmXjhESnChHaw
+lDbzsnEYusTKxD+9Gn73bGo6MVp+Jidbwks4XCrUPsjW6wUGZMzqrPlTO6gg28U1
+7T3VIJcuHOi0q3GjGnxSG1Z1JNd8Is+YoHfO7EPTyU/hcYc7aa0Ee006x1sUPOJ0
+sLs/UL/PT8BOly3OFGRMyK/cN2gpCcGhQP0S+y2ObiHtLUOLvrdppHF0TmO8M20w
+MLrMw78rqJcweQUMFAQ63cva0B/yBsBzsrtm/8zj2rXDTVnDl3yow0kU56R18GPk
+MD/BdEsuO3RZTMeHgf+2UKd39qbfAaNT7WLQ819jv1Vt3HUmo9kX1ERKbEjPA+lE
+MMgDLC1snZ9JjlebRGufihBpXS35SpdJcn2b1Hxl4F9ArXSMHf0czsb/dz6LU5lp
+Py11yCBltMF/gMSjfQ3su6A=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem	2025-10-01 18:24:20.227882400 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIlSD6v35pa/oCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEWBBCdnyVY8R1KuEkViNhQ5+wvBIIC
+gJN/Ahu9/b9hQfTdWnFDn8U7vuW3i7d7C2FrtFPPa9KxrmD/2GjguvqAc9HMLFaj
+EB2nL/SH9no+YHtodMtUrGaOkhFmQcezNJzqcGAE5b19U/wVuMcbiRAS2KQxhU/z
+FLdNbVLC0koHLb4zLt0pYer7AgyNWXzYE1ATOxwFcfnHYrfWXPfSRdRXWU0oY/7a
+W1I8UQQCxJHKtV5pDqtORudYPFVY5gfrlUkrFDTBujtioQgIUkN4DhJ/in6OWtIX
+bJQw0xnBzEOUa1vfbqMFXHvkyTq2WLQhwDhmq5JswOxK+jNYX1o6VdLbqRjUe9/s
+Jxz2E6mOpuRwNfubsvCmeDI0jQ34i56cvCD7ZZTVrAUxpt1SzpTBiy/g67a3l/Mm
+dOMlvMzk1rGuDW57P3m/R5xH3JKM/fDjYuW0e/BpNWQxEWFg3xmDJ41HP7tY+8Qg
++ZqlHe1cF4MoDmLVo2s2fzC82+ezkd18m3yKrFBqab6PaUzKbjA4zBmZF/puIgyv
+QugkXsLFVkIV7d5eFn1E8l4R4qV0xKuFmkQKvvBfCgpy28qVxGcowiWvX2mPSz36
+KqUanlqFXNxxzwEeFRivXTdL+Nuw9DZA8iDItreiOLN+JeXGw8yo7paqoVnsiI6C
+Rxv9uTwdLyRAQpCO97T2hR5GHg50BF5mGmXv0PmNyghiVrQiVhG0rWejLJ8H0hdM
+uiANKb0sdyxkMr4UTYGf6gRycfYq4MMN3+npEHzvRqwJcAHc+DdVyPLInfx1o3Ng
+Wtxfstz0deFCtrbi2nI8G9SYOyT/ehRYSAU53AIN3w3zPqXZBJv1sJ/0zjdPkOYu
+pRhoOT85pZDgy78iaBqb/2s=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem	2025-10-01 18:24:20.228156000 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQI/85gecYBZQMCAggA
+MAwGCCqGSIb3DQIKBQAwHQYJYIZIAWUDBAEWBBCqZAQcadhBnyK+lHuQTW/CBIIC
+gLkMhrmFNQOnLacyl01wUpxE9HZeYZ/CrmbhtGJ4RYdbSsy/VoXSvdGmH1fiWHfd
+td1fNd657KTTkrCpjcuGr7d4t4yAO7Gmv4jH8kOQY5700iJzs/dH2+b5BXQnJqFi
+PEmIujiK7dU1lcZ+vSfGPoDYYSfAP8mozM2RKQF2hpQaR+xxTh1n+bEigy7KWdlU
+YjifCjNnyn05CzM15kDyXAoVBbWmVllIF1dNGeYWr6n+hPnL4+u9HqRe+dz46r8B
+8QgkybS/4pCqtDF4WGOmzBJWWPX3gwk15UvQtw/tx+OEM/Rpy5c13mormodmqrcX
+gkGS12ixqIF2SjvoEYbr8vALC+qLQC4ichSCXF/DFSydvceRICceYnPINJvw9UnT
+YVOxZIPhgN/82TqhLhFdiP3mHfQDwXW0qntgNxKp6yef7Or2/Yb/RgSyjphJRjaW
+uOCAr9h3PhoU7CaXINcbYFwVivkNEcYgBhwzfk1l4Sji8C6RNrkrCaVTKmR0GqhW
+1wP/rP6zVKU3ZhLMg4txer38AqQupFoGOWEQmx/snXqrNEAbkAALPTsSFQjorBYd
+BUYrZIshFYX+ml9RdxCywnwFGX5cC8pAxb8XoO48z8VGZyLTjbfVfFuEbT0+3Vyx
+SlOkAf4BY6+FMXZrIXMC4YLT4HUseDb5jM/mY023YH0j3fXDla47VeqR/io2oIp1
+qKBtHAk6TS1KQw49KRxLcSXrsaa03coahiwhNxDfPg31lE8mcGmlEqpn43okKEKS
+O3K54CzyCJf1MbvpNOJ59hcyg7VNreUWS7k2EfenNl3zLe50JaLvEE6kyaebg7/W
+z7g070LFYp/pYay0Mee9UBY=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem	2025-10-01 18:24:20.228380700 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIPPerN5Cn0jQCAggA
+MAwGCCqGSIb3DQILBQAwHQYJYIZIAWUDBAEWBBDBZCkEA7+SAAmnx2UjbPiYBIIC
+gKCteetGhbuRxZ01AZbg7sAN9TcbeHEELnnjBeNzdt9ANq51LdfnC8XXir40K6+T
+YC8SCOFPI6Uq3SEQR/cokLfIpSBQBuhy+O8d9ZG9Iim6Q1kOR4PmaEmlCZQ9w0MH
+znS3RWgxeYhBpxNK2aS4eSTf0EmmBsMl7tAVc7Q8LdUgASOkSI3kKH+kMnabwdaU
+TFT2wHPxukO8X/KfzZGJHuOytbIs/khNzgQsiyV4jIAKOhy9+SBA3kphjERif13y
+cDYWc8thStXJoU50UA+EKx03fNAtfIAfufY6UF5NdurOJb30R3ZvigDFy4927jhy
+fYdfNtVJcBDKh7EZ5DixjhCam5MRxHsHTrejsnFReccIPClpl2FEjxJAX801zSNN
+HoBpSIaYF9FAMEJOVdby8o1VZlhC+RjHKrLIG/gdQlQF36BsKeXuBmsS8v5A+TDg
+IlLo59GyiAkDDyOncxoc3qMZJdF5NyibaOWLwPYasHJFy57H2pGa52un+y1F7Lgb
+fsHm3LKY/E/Lnh2aC9uUwI9ZRuUui5Evmmqqah12PMPJ0w8qPIyRSrpUHlMVL3TS
+s280XfuNItJSANFw/QrGbNj+Ulii3j5IhwRNDPS3pE6ZDaUij8RAGUS2SHRz++C3
+Rzu86Bt/6swXYzwlmUGvsvKBPb2Ow+46mRUCZOkEEUVoD1zd/NbSMt8EJe02VK6d
+Zj066Z7qrfjqLcTFUolXtBV2LzSAWGs6O6NU43lbHsWuVw4FdxbYBXLnMnQ3ER88
+TSaZTlYfwEVVL+p1EtpG5EfgxLICOkRdwLhprvRJ6JvlO7FMEN96MSlvnUOm2kZx
+sjnMdG7EP6X4Mbmvya+AftA=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem	2025-10-01 18:24:20.228553500 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIEZjSbC9IFIMCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBAjXF0Zr0GTlOmv1+j/UNw6BIIC
+gC3rfTfWDUZSOU0wsCt5LTlhlON5XhXUB9nFE9oi6PyGGkppTDwXtERaRlyPqVF1
+ww/GDdwlKRDFTf6pT6YWcoSLjh+f2fr/YX5LQh2CfGh8tFlO9PBrxW1QKHKakq9z
+UnG+ksfJe1NcoPiB+0Uvxo5mgEmt6McRmBfzsVC46MYX/bokztv9JmZQR+mg2cK3
+n/pmCNlO40YzmJUH0KfmZIKrt3Fy6/xVlr/CIvKWBv07qLF4ncn+xoMhv6htgtuQ
+KOAzc2XFr7eL3G25p8nzdu84jSGZt6f4WLwM/+kwUPWObp3XIHxIQbIGWw0YCOPl
+9yyACEWKFMeeFarnk3i/Sw8bpQz78uNnhoFsPtC2iZeyl7g2KEX6/qaILKY/oQdt
+UUYfBYoofOEmyUKO7tCbrahvx37QymFdXrfrcWugYvOTgWXcYeXBfc/01mDRh5Zp
+w6E+OnmWKdHsZH9UxGwLve9yt9v4/MGyHNdtmh4P1B7ZbXqij863JYX4KOwzSols
+bX3ihdq7O2TCX3GnyVNUGP4Owoqm28OIyv+cvcxxs2VkOl+0gyMYG1uRRcD0YncD
+S8A19dExDYr2E2iV+jBaKCElikgYi1oRc9Adh1jtGW56TNDIplczRQmyAM0RWJiN
+DZCLB5WyEKiTg4QyrESy8+snW/hnphb4f8J2ire+XpqNr6ye3TAwDZmLw9bhY7VW
+LzHRYT8/pX+nwf2TKcDQgL88+hINB81t/pESXBxmbE1DuQxGIWrBKzScBYDiQq/r
+YdKXpg87wFye4FicE/prNW//02eLYY++jx5kFYcEIIuLrY/6vqUaRMInaNFHzfYN
+hOLnYUNETA7TAXd+E7T0PBY=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem	2025-10-01 18:24:20.228721900 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIKZ55NGRbHW0CAggA
+MAwGCCqGSIb3DQIIBQAwHQYJYIZIAWUDBAEqBBAiQncsXk2sXJUsrljBFfbeBIIC
+gHKIVS4BHG/Gb6dbEb7e3X/ORgpImAZhd+ovOPdodDF0gGwsmkMaEKEjQRpBu56S
+aoFuvOpgv8RzY+DfOHNACmnpkXDi+soEbcC2ikXZ4xFHgFSRZpOG33TqpqWb8pm3
+UgL5Ax1KHjkx2nWGNyXWXQPFUV99T1jxEA5MmEztJhJHoNAXtcPE8tuydXk5TT2j
+buUok5F2VoN1cXRES0SdJqH6pfDSI3fNYZ4+mXQZ2wF/eX7AIzhYoEeXS/MFx5h2
+8q1XslU2Nol0gbRX7Vf2gDoCm4gfiOVU8jqQTOw3xreW98Z1HJYCYJ7uRb98LMzy
+k4oYEOg9A4eAgA5e6VPCfUqHE2qEo1YmsAuGZzLw81J0mdJeTPR/mRcQ2su4t2WI
+9QbISjz+GJjWUViibvsn1uhkBhZbYMRq0Kq0fceHN6XO+c62+xCmUFTuewj7qH0+
+AtxjXE5MOo0CLQUu8P/AzZ3WUv5Eerhq46J9HMYcDFY4O5LAUGQgBBxWyyMT1/aV
+jg3TrkabZR7V+pnsSJrqErc432X0XWgCHYAzbAXylNjXbr/m8cWql/QgSUa5vDmK
+h+pU2OgS166uCcVJq549HACDpre5sfurKISQtufnx10uilnvDP9SjAG0ISIdaoKH
+dOhd+pOmdt0GHjbw1LzxFFyDhm5P3UZ5sIA3fU6j8R4pjMSr6X6eTIbwJUxI5B2d
+Ue4fl1Wb1Rh5o6nOiCVF677hR23tGZ7YOKWMq2UUyuThVyFCcjEioG3u9m1/Pskv
+ETaN621bOF670dFOT7UaIeYUHrutTsUaay6PA1gs94HmEabPdYNMxiz5V7hoeIDJ
+gG9a3o2R3nF83BH5v4+ftQA=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem	2025-10-01 18:24:20.228914700 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIczlEHFZR9qsCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBA10bss88D+effW5xNOeZVeBIIC
+gKlvEIaEAU5wXmwDd1dGwba76A5Aeeouqxj/yWk9RzGAGRjCHzSMHR1VlDEconUW
+v2Ya70FetqfaD0RPO37xZG5YfPnkSDg81rltoK27rqWFTiWRVbT/21ZYncib0of+
+GDp0MOmMFbAYZbkEZubVk3ZCGt/qBz1cXX4GahnSRKK0UNUFd71V30MquQITy4ym
+rMidXKrEOozDI5oZZigfTm/g6E29ENafSdjujtll+ZRN2Av58NY8T30C1inoiZjl
+vHYzw4Lu74pFD1oVd4uM1aFqdDqavKEVzhNoMejZretqTyvc381yxlLm88HbTrOb
+V/8C8ePKpLUp/Xx127hesbKt7BBMNsVEWNm7Noxn1m6Nt2Lrw0+LDOxWWBsDwVZE
+9NOa+LBbewU4jYpWUzAljRfxrqzIy5nVXRg1jeetyL1f6iOiBfYPnEWvYWV108H8
+tSlA5OpjZzxPFhow5ooh0hMH2B7fdrk2tAC43FkViBxU+tjMPzixXP6vYJV1NPmV
+V5KkVAzAc/d3qcsPBX5X815bUGZRps7hidqpK/24xiOMIZY6RuvLCBN+orEmE5z6
+pHIqq2DpgHcN+UGXTzmnWxQGTzK/7rjFUnQAER1jwT1O4tlaBEwfwcygntNfleOv
+/sQC2c1ni3ETSY/g6pW7kE0H/C5axbz1cNudXL2YAzU8BQEWVu4am1zAe+yvGEcz
+3ERrQwtm2OMrQVSc5ciP5HxwAJWGuEg9+q677H/cH7N8m2EX/38sLDgiHjjoNK62
+55taYu6RxcO2FoPSKAg6cF6ULHEiMmYDlb+Sqr7rbNQ1xlkZsrwj2ppYskSCCqNE
+s5Jnlvid8SeBW/A8OWPk4G8=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem	2025-10-01 18:24:20.229105200 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQI7hjS5UClOgQCAggA
+MAwGCCqGSIb3DQIKBQAwHQYJYIZIAWUDBAEqBBCtga7Z1fSkFmdj6JGkVz50BIIC
+gIYPgp56/NrCG8xxNUnrHyyg7Vz3KvbBujnsFcE2obNkB3Jed8CsNIPzqRG6bXkm
+JWV73RYU7+NFxhoUioUpp4+vlHKTznbXbNBIJCntVPghO8Vw+x+S9ydhkGJ/MDWQ
+SWJ4YyFWlmlWFJUxeWdDJO2AescuBt0IhaNpd5TdumQa4PXxP+kj70HXffLoTv/V
+Y5IOqEoyufh4wF3I88n8HFCMdF5X8Weazl2WwqZRhp7jLjjyCCt/sQ19dM36ewl6
+vryrqOO489sI3qV8Xo5U5c968QQIoqRMCKDVZompX7+hqae5pBbMQ9seCXtVDq8v
+GpY4OAftDyRRNuUCThF/cdHASasy2ilevqZUJGvtrCyr5D5ySb3DbpHp4QwCWWwf
+0WC/bzqZWw9ZbhHL6vC+AHRx/VZsl1+lqWSZaG0q9OocQiLazc7wxaw3Np2I8gdo
+ceV2NP/jpDTHMW986Rzk1kwtVQoQZHkU9cEJlva+peA0kgLhF22CWcBSIfJsRHI2
+yL7xQ6EZgCC97vMgYlcIe7PaIavp1JM668noA/o5mqSKXYdrq8UGmP43l13whODn
+rvAnU+aIFS5fC7Zx+2q+jIVhoQLwX+mlQcAYl+oG+Hdj1CxRrxQ2gqvn9a26z8iz
+xHRh/YZttT3WhXoqKjwcgjy2wGw8qFeaEmIfc5ejKofT6oJqpZ1FnHK6bDEGZZ/8
+HiIdqtulKWsk1NKmvAWDOtzXzEwNymrjvLHWjOvZFx3F29U+dGoyANWcUMXyAX1K
+j4tW25ROhp8/Oo9gDXElh+u4Z7YRpHvKxbdcR/QYUmj7LhMSLrrKmpYzswxFRHOY
+KRZXk3CUy95tde4Aw7AVF2A=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem	2025-10-01 18:24:20.229303600 +0300
@@ -0,0 +1,18 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIC3TBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIeuvC2duAau0CAggA
+MAwGCCqGSIb3DQILBQAwHQYJYIZIAWUDBAEqBBBwwhJeVtTi2ITXPLuXNOqWBIIC
+gAqxBpI5gD+qJDr3PcTXkEm3ReVOlgVSAZjyXkKPe7t72HCKV/z0TPbM2oott6cE
+koVjHQRCcAyT6twE6NwK8DfRvOqaM/1TPeJXzo2f9wDlann4vFIVBd9bRISV9oPB
+AEFJzidqBusXHw3gMbFytIi4Qi7Tq071kNlI4Sv7g47bZWxeWWw/EFMB6NraoAn/
+h8m1T0AaKDY1CD9sEUyKoA+xqTIO4vEdt3YWFKS9Ow2LsqW1kt2yLH6NKDjVsVYV
+qmqwlMtFOPi8k90xEF/6UWThD7TqPpeob+/3TL9xbff4WiQ9pxcJLB8Wtp842uQB
+Zj0xmJ9jj+KZ6NzSQykFVo8wjHMXMOfxmMpEY/5BBlN1tOvKKizarovPX7TbryrS
+Kd3xISO9p2oqmTWR/4WedOXNQJbqrvQjgmvmTGEUNHP23BfDLDZsqa2Fe3skD8cF
+Phb7XLsb1aFrxT8QL9IuHPkIwA6oxmYp+gceafA14ZR26NLyWYceN/QkGGNvzAzx
+T9BT9elle7dK9nU6bkv9qPjbMUx8nl99aU/m9Rbz52YAyy8PJTu/urNcR2p0Oam2
+tNIxa8ub2gONWv/7/j2v7fgujkyoUizwhDPbtbj6tD9jes2FsP3zjVhA1GVI+k3E
+n6op/xgK17GXU1hZg5Cqlc1sB0UaqH2qOIUKj0nbQW4j7xva+rxsw1kxCmh+Pw+k
+1PUWcv+cw3o7hsYXb5bF6ybEQaeFIY4nMbF+lJKUXGTClQfA6Q4VfhSNIhSFGETX
+aUva6BF3BgjCfFSbHhbdBlOAsedfRT06zZsJWOJQJKilvjyrDrhZ75LjdtM+UreG
+AJLHdn5zqZgSv07simZODN8=
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem	2025-10-01 18:24:20.232215200 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIqcUvODNAkaMCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBB/tHDS++zrJJE45s6eDKRYBIIE
+0Ll4Vah7iM8prKaL1IYAtYNy9daxx9SVEZ88p/TKkRRfet2gvC3Zev2HPSZtL8iw
+64TkLnOFbSYMzHBaYT4ptgJGolDxo6RrEDXU9vlsDOC9bLKkGnJ5WNbKOiZVP+vZ
+E1GYfSU5kkruk/aydwXN4GsqBcPXjvzcB3tpUr1kvsSvZECU0zJnCQniLMtoySHM
+K0E54lsE4HSo1EKdb3NdXmWK8lg40SmKUib2J6qeQtRkspXxTZQCw1TIsRFTLPM9
+hC4XSNAChNvi+zo85WmSTrR1MHL3Y+xGqRVZk/OgkiWDfLOcSbRWfDc3qKuIp55U
+pgkjtXKnxrvSu3MYH4LB2NwNebHKrpgaw2C/ZXoMxVtBv7qZEvsmTep+iVw9HijC
+BeZAq8p1GegmZkbelSFjnAd+YTKyKRzeQYIqyW+mv3QafrLPb4PHWJChw7XtVAhu
+F6SNSR/ovnJqXepBX3t/Vo5zU0f3I0ENG+34VdR1iLEa6QcoOxZNWPdNbE1LXDRl
+p6wzhKrQ+IuEPiRQf5xNnE47e0uHHCozo4y5svEMKXiGV+nK3Z3roLlsT9nouh7d
+hYp9vqwr5ppRtUf5LvoQSMwZeq81BUUf7Erm7jsNBjzaga7xsSCsDJZ6GFvy3K7M
+9AygEaWKkAnEWDlslH0O8R3irnzAjcwfjh22cYGZUQQmYN/snXThMtxZw4DK+5Bz
+Rs6ZlZdLAY/iUNLpF6zsv7438Il9B8UIUOka7tYsCKvC9Hog+fgSAohe/lVOWWIq
++Ra390NyIeihDNjmcou44oYyewBaLGKeGxjxOgA0YsISj9ILjtVDZI+z/Fci9mO9
+Z+DgUhr/lwpL6SnFsqjzFV8jha4HuIM/2rgat3MdW1iILuBHzjN8uffTQO0fvBxf
+EZzDVd7idrIm1xAtTDbuSq/YXIdWvVVoc9tiBo42sxUcuJTMCA//Q1VjE++U1pz8
+iHsa+F8WFSKtkSNqx+yxDB7ZNZJZ8lt61rNW58e6arkcHeOAAztNPCEUIFACznSx
+vWrHLNkkK493J8/nBdqQFEpdeqC+jwjoh3CtnjCKe4Z7yzelPGmhJwL7Vo9GC2z+
+GfKN26kmQw0Q3wDvdGeDLtY4Be0I5XDZxEqDoZumSKFQrM90DYMvsZWitu/Czil0
+17jb1fE1YZpKI6zKuUN19Ok1DSuPyuxlUYI0cPRfAAWNU87FZT4K4A5ilG2re/ho
+remN2pxaYI+0gR1nfiApSkTMeJMBB/O0WX5QV48N7PfORDz5wXx6YZBqknbRT6za
+5FrIinGlMrtiv5DSoug8aaPLdIix2gwyszdCDwJQUYgnMzZwn+hYYenCVsj5RamW
+D0/Mje0ACiGsqdHSpt5ugU9j0/bi3S2z4JypCZJE6jC1mALM0amUBUjj+iJ1H4oo
+twQLQa9A0CeGXRtrSYxc4ACyxDbG38XJgxWYQo6fozih+bSyVvZXR1CoSu4jHhue
+I3J+SW/RjQy36YRoKIqTnNl8AwRLcnL7oRXRtPmM+Kc87kzpft2XVwDkZIjT//X7
+mm/w2CuFhSmTzhSlAcmx8Eu3PYJXuxBSxx6DWRCxBc8l77xUybSelWIr/7S0vhG6
+MNd4X2klWS1oGn1jbdh66UXFWdCVDVoK/ut4pIKL5VtI
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem	2025-10-01 18:24:20.232392000 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQI2OPltIfS/aECAggA
+MAwGCCqGSIb3DQIIBQAwHQYJYIZIAWUDBAECBBCP9nVLLqDR58sEyh/8dRDTBIIE
+0N2fo5At7ZXPiKGYgY9UshBUnOX6eMXLQqtxmjHbmQs1/JgXBFAU0hsnxVXaMSlt
+Fc4M3DFccNs2KRCqJ14KqOGreflPV2r6l8wUrtVLZM5mfj5JIvHCifPEObgepo4e
+BkhXw1HjvvvA5fjTgigJodHAGE33sXoYfeDU/9j3ifCddpJzQNWjbTucNG4OW5AB
+zUKciYpJ22CBdVFvqmN58cVT2ffehuV8QuKzGjGu5wZQLSonWatnDj8F+eNzRCGv
+5Or7bpy0VVxUl9S9FwrunYU90nQ+cpOdlSS5P1Rp4DT8Ng8JPeU+f8guMwMRKjh2
+ix+UR5hpcBn67yExCZPJe3mjkUtB4c/wDT5LzJZs+1jCbcivrxIuoSJ2SYkF2Jcb
+ffg7kdKCoFsloQdKht08NAO601c00kpObs+vSw8Y4NOZ0a9deBDb3BM5+7cwrSr+
+0amfgAnKeyaGQZY4hWDdmK818x7RkhriQqV3gxRBa7PgUi+QkOKK8rOJHt6iVswl
+c/GqL9dLvQqcGveZH91GQEElvrEyfZP1hKGh3ECHTSEjgy3q3ECSEiB7rh3JfpSP
+neZ3cxK/YNti66SLUXfInHH4bAavx7qU0FcU2PHiFmznfxJxAG+ktodQIy9lMhgP
+sdU4tVsmY46+SPn8zfcTKgeFf831MiHzs/VDU63WYcjEx1oPOX1/CanuyEd7qLv3
+vt3/KXSR7PnEADk8oWCq4J0ESeLu9E/Z5J9zib+tDYHChnfj3J5NOlRAdO8KaXs7
+OW2AsMhUZvs4k6RCMD8r0hL+43OOozdI+/MQhxxtsrZsAELxZMDmCWx15hLbpB0R
++KDtcgCm6OOGECyehSVx83TUuWrNhZ7N4TJZbs1+sYsQnMDiGXr1ZsULx+eBtnle
+hbWXfr8Tu0LFx5sLESTb4MydXeSGc8lLls3qtkxLIPnr+k8ONrAPYvBXaiAlJh8R
+XSOd8P8UCeO6zquML1/0e1NY4DFI8b7xZ+O12F3301G65mp/HjdlTymPDPynXp88
+pSwGHvtKfgs4c/pSJQTsd6i5aLUpRL1edIzlRPg+ic/XGTWa9cavRybhPXpFn1lv
+DajnfEHFc53Z6kFghoRtas1vCh/jDouS+dfR3+XTEPJpXVomDA8CgxMkanc7wwd9
+E2D2KV0QgEAu8XIqR8ZrA0W5/oboQqsbLl0yEhcksuI3KR02PynSkVR/GysmWRQT
+IS+d6lXcmQLTHbrTL3EZ/UrJJJEvUg8maQhrwOaEcTQqxImxe0UpuEcvxABrIBnr
++++kHNuRM0/9vU6YLvuKRStwi/+yoiDqYFpvcWdTAykLscAk4rZie6X2rN9g2poE
+6FRgcxTniJya7WldqKq1r6z0lRVYHgbtBOahEGEX+rwIqXPy0fgb67yknLn1+AYx
+uLj9w2ruQ5XLUgs+Kmu/wf6I4sgCViCULOqBBfehaoVBfmk5CeDze9c90gsmDkOe
+aai1G40x10fXDnIICCuMv5TR2xLXd+puVx8ZWcm4B7/OTKa+6h3c6XgB8BmbXSzv
+8mHnodRiy6G2GOpYNQ24YAGL76AGFtl/CAGY6Ve+mJQuZLkOFSVGK94sW5yCELHg
+D79678Zl6y5SN+gIHD1n20j/+Ou6KYiYuvldXmSMDNvP
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem	2025-10-01 18:24:20.232574000 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIh8nM8YR6EUYCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBAdRBX9FVp05Jw58EbVloa2BIIE
+0IPUx2Im9iVfZocwd8VSaL9Uti84xeRHRTbPbIWZy+iUG3R1t7u5yNzzlVU1ER9/
+NqwMXXGd5VCLWs3ehC9TOakNtz1nBV9SiA/HuLryd71s7iiJU4EOxv5ppfc9x2wB
+mwYDh3x1xpi2Hx9/ZkvTdH5RafooDUqP6iVAKSdU8K6ieFoqJWOwDw1AWzjXSiC0
+dX+IZGvyZ0B7z46WaMuWRlMdlHGp1jCl2WXXcKMOpTHObX6kcswciqrjYxJcPso3
+AkfzTrnbIXPFxSywaVufbJ1nRZZALRYJavoQHK5bVuylIRpqGu9MG4QSRxVHZKVy
+b8qDY4LyvDheubrt50IpCBikO7vlzdnS5o/AnjJUCts05ZMGBmYnVEN1IVIIq1Ug
+xGE9PfCt6E65e7zhAWqInmxOIRZmoXfw8qGU5Y+D18DtpHv3AohMSpu4jX+YmQs1
+ip/USPhVq7Aw4ieBe5YXiBuhTgQnGMf3YrhK1OORfF4fsBqX6/fmcDLB5pNDG7I1
+m/cIIke9c+kCaAtuJ5ih5jrLa6/PSZt77O98Qt0OoDu4RbX9OLmE+QLB5Amm1iCm
+dZPpMUyQnDJSx+9ppuZ3PflE2lg3k8G9pX8s1upVp7JIf1G0Y3A3WFHhNTDWR9NN
+3eK71w5BaqfAmiCX2OMLDfaqmwnuL5fa89mVXyu3VhaxlPSju7rp8gqhUbH39zex
+j2UprCJgGQYTgPvwKF8M1fHJyYzB6mpR3ThCGSQeYVE5FIkc5Yib+Tk4r6xHYsdr
+uNpwDt9bfRtfOy+NlISmAvJQS57IeH2FkaH00oW0BoMHU/RbLUPMx+6rWg8n4J/f
+bj1PiatRPf6Cm5eKdl57hkRF4Vtec+Lpend/le1VB6z8MktGJy0ZGmpcmmejzfUZ
+hKtTVqf9yp59uLmBzJMFTkhzV6b8t+Ey2Wk++uFZ0tf1pjHASU5SMtrblq6ZTJOi
+KSmL8DHhMVWkqwevI3MP7SBBbqAl9rs9yaWCsBIk2Q7+kUHDbM7kxNIU2Hf4X/4j
+NHOEMkwq70iOG/pCIfmL45QpMBWSHqIIRQ1wYcxAI1mcY13UWIQJiSU8inhj70Ea
+OXutHjhC/ECF2MAm+rwxU1KphsZSQTnW8jYePuelhwJQNJd5QOiPknXiISioYHrt
+TmgtWRpkS6u234ocksTIUcDtYPH47xkyA+h5uOvMljZw7feNg/drgqBu9q9k3z+H
+eH4Y8D6nr1Nql5NwubLT2uZpIBe/JiYjY801lFKBsydlHEF+Ivt5WY14/5awYxSw
+kPNpm3zBHKsERCy+69kh9+gUtdHise3yIFMaBA2UmLSHh1H1/fbEaDSdr9O+YMDi
+VbpNTyV1l4GFxR21Jx6fpL0p1XjnODG6zyYFFhu0U1q4DkyaVV/cKDZrS0iUU8hF
+DNmCR63AWWXLZOehwGZki5E82MYhRAGWA311WUtc0j2AQfeOLX4PbnTJghAXa37l
+mMKsOJSU1WSL5bWCjRQYRWsZcfoZiPc8flBk/1fLUsc9FIASlcJWlJ3nFxM9d2xq
+8WQVLyOlpm75TYn3wKn8GvAOz2bcnosQzyj2Vqq64gJ3FLhUWx4FfCMkSRWn7Q1R
+AgJgTDNg/QcjgG6pF36bqZeTtB/3itJZ3p5fBU0+HhTB
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.pem	2025-06-30 09:25:21.412054000 +0300
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.pem	2025-10-01 18:24:20.232842200 +0300
@@ -1,30 +1,30 @@
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-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
+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
 -----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem	2025-10-01 18:24:20.233055000 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIzBc7qIS+k9cCAggA
+MAwGCCqGSIb3DQILBQAwHQYJYIZIAWUDBAECBBBy3lVpPh7gqzQERnRYFs/LBIIE
+0NArg8jcvnCFmjnYZTSUSH8XbceXpIcz88M62oDEVMiC2va978fxc+16daAkchbH
+Kb+sXebekjsVb2JiBXmHgWqAoGZkBNws3niGrkWxcqzi03tKLyukiowdBLKdwXND
+X2GQqRxlvTHq4CUiz7oSGkmJs5NCLlEgFmAbneFkgrAmaX+vRiahLJdF2r83bZiv
+P9riMaGoCyL3wGNS37yYbryMoHv4w83EX120Js6Lvv4WprCOLhlh/RGJRq72wHIu
+4q3az7btNwFw+4lfC4su6BkA0DBHhthRjZIWKgHkJGyf6hypCO27SMCnwI1e/QWs
+DwtFhhCmQ4YC3pwiw01VAsbGYIK1M3Ogvlc9B8/WSmm9kiF8Z8NvA0C6uqDoNiyp
+wVEsvfVZV/gYP5TwOQ+hCojM+j0SqfV4DEuCLdfkU3VgJnfvR1Jk0e4qpbK/0cuW
+DG3Qb8iF6WDXO1RCKuGsmGvHnKFEl/FCmCXd1Wwolj1eKcmV7I1ELeWfUrVgacwb
+76DyzCrsTuuHPgR2UBeW79BtjDBJelgkFWZi02sGlGFJHXZC8gGOIJm5giinSRCW
+i+7pl1+35bCW+DsXtfq0jtzI+3ubCcKd98cbaVal8S5knjDL+0muIJXU5qnynSfQ
+XPqD8AHkEOJo9E8Uaexjuqu0435PjslhOVu+Q77TYdYouuwupuhaNWuiH8MkZv2M
+L1df4xUVklTsL7lkAgvlQoY6cJ2DNjoUT6K+ljutZU7k3NtHd+SP7v3CSvuzNYly
+Lw3W5EM4vMU/DS7EBs+fol/FmVO622M4CXv/xDk2YqPe/4YT8kljQ6YcrnuTj698
+/GLh1dXYOJyIA3RsyVh/TAUpWF956iuD0TN1ELlxdhQOVcx4sNgo05zOagnSzf//
+lAGlXFb0FZgksSnq+q7PXTgqoQUGYdKevi+pG7f8jIQCFvudIqc0TmeiEA+xjv0E
+ukY19C0NMElaPTOG1yqMzrQo3p3lEw8dP42+Y3u7eKBGB5Mnnrk/HY/bk8zPVQOp
+uKfXIq3fwMTJUncQILrbVzD7K//+OtavZOi5Zcb3HGfHjaWCpJoR6vFs50a+QhKS
+OE1mHVIJHTotqdKOKNnpIO6W+O3BgrOSVDZ6Gqvuq6guW+2EbCrZaYTK+QFh1i6V
+RDWOSmGm/gu4bugAIVx3LO3yWC1YW6y26jWckkGF3LQxnzS6kb942JPFlarIvRA1
+hdxTcf5i4MtqA+lm1IrmNLoOC50LELf3gGgjwycep4n6eOJkiY0APEJXMzP647zd
+Z4uUtmPejm1X/D4sgZP6fNbFc5sDR0OpM0rv4DwowgeLpdfzcnLnZZGi6bw1FMDH
+Nb19NavrRvpwSqb2+zW/mtbkjaaPTXbrtWNGeoCYtCXwYWAGqIOBhuuI3No6Vlkp
+GGDdGO1XHO6k2x5EwUMU35U5hPeFW9fO8jA/PfSZHnHAMTZVxKXBx8QEYC7RwmHn
+skTI5EmSiI8p8rb/eI5yrLR1NOhWZ6LPNrf4lR5KMaDMBMSSVXArVZHhjGbb8btx
+zkBrRwvBroKNV+o9MrkX49mK8cjlQcTNZLSoXUaDY5uZN8HJjFIBUz8xloS4WZh8
+uOibbeXZJLLRziKZX2A50VAgeUeCvJGJxTVfrQPgnFjv
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem	2025-10-01 18:24:20.233230400 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIKHaSdJFrFU8CAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEWBBCKq3r+9tBJgE05+OiQrPXOBIIE
+0NxoM2BSSGXFB5+l3EKpYg38lKrXHN4YJU8SYCHvZzag3i5Eicw9Cu8RDnNys4TD
+83wj0AtPtlMBtgVkunIf+xm207pun6C0qVqQkCBHsHqTB1QHqLdBqYOLaGoIcNY/
+TSLVUjPWg37jgoZwsOkIytEDt9CnVL7uiLFtbfkpzohuBXtviV2g/MD60hnHdb7C
+y4sg5AGojOBvokjFV7ysFY5G+QXWB6H+SdKz9/LUKZlmNudj6ROaKnr0PW8RgHvg
+1GM1WGmOBNUV7bC7F4j5UFJlU6ALcDz8qrM1mJYkfOQI0jjKKkTmnHHu3V+697/W
++RBsLFgYAawHBGMplnRklcYctRZp8S+8LgwAG+41E7yvxu/+cwXrIuLlB/VOAM9H
+5Y+PMSoDQ2TLvjMODk83RA5tkXmrc/byAuG+bMdv6whtXWe+Eab3RoUqy5U6sFri
+gTdbc5MMUyEuaV371Knd54V1/MSHNf6sSauDzQYnj0bAPdhd01qEpWvwVNOnkhLd
+fH6785R0pbKp91M+rPj7br8K1suhtxxCCBS7RrIvyRMUqzNZOtzkkwa4onqrNAXq
+HW5XoPjsccTyoqfLHbHLR3LMBpV7SpOMlIr/EgbpQ9R+C/7kjudWFsAFom6Cy6Ly
+Mre3ZLGtUlYOtw64Ro1SMmZmWno/nrXWBme7Shj7p+t2QodMMu/OrlQZpFTSjnvr
+gHUOXG4LhWtm2yZNWodtryJERCqs2BzSRfeI6GNph8G+7tXkI/aoJV/0iVECgO7K
+zUqJE519fwP3QR1TmkHXPYSBSy4A/vDnMJ3a7WrFGA8L2JsqOxtB5+k4jYQza6ys
++xWxzNckKTa2uB5Pur6eNQrZL/12egqlqKzYnynhvUgEave8EfYLEZb9TEQKyWq1
+At7QGjkW78ATvXeiUmt19FJs39gpvCJCy77MM08/Ln0JKiREIV5j4lgppAd4TbI5
+vPRyu91zauvDrVs5j9F8BWvhjRxzOvm1EFVFSLl5wWYWnJWeIBlJDu3uhGF8ng7M
+7cXrUqeb01gkPlE+47tQfa7ZcdjvgQHYtB1Gf1FuHEBVbxxfYIdupAi7857vZsjW
+YJS5GA0dREYzHcnRsbSE1nMVDkXfT4JuWQUchwCOncTtkwMhMoewhVtCxKslVq7g
+5mq3BwY54G/sroKbvoqofSeDPusI+jO9bjDzRfM+Nqm7GtqgFVWCHsIcFdUssn2T
+/yrR35mZoz04mOE7MWknhpAmX8KMwSczxg6n0HMnMslW5+iV2ze4BUnDl2KEFU0/
+k7B4K/2M+y9sNJI6pqyhAN6cvDxCjSQ7hJlSSGPZr2SsWaRI6MMFVqLc9C98WAcD
+Ex/AN1pbQlZeS4xKiNp6N8kCsxQunpquVwJcapnVSu/KH/91QQVPK67Dv79wCDJa
+OwYLp1fLLTN4Sq89L3rVyjNhgBWsTtXRNLLqg/YEPFDf1/G6BSzB+LAYsDGgeHF8
+sZ43lJrJIt6IsbcP+QE+2rYzMa5WbvxDZaeSLcNGiF+BufJ9iKEq3G32H5dC68Cd
+pQ74ZTFwdoGyuMZEZxD/zQESBuaPpm2EPPpq9Q2iq4twJZdZV0mGpgSAlojWw+dl
+JJ1WU/FNppMjXrS5Spp6XO213ODirRxAEx4IoIdMI8va
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem	2025-10-01 18:24:20.233478800 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIZpFth8klqZoCAggA
+MAwGCCqGSIb3DQIIBQAwHQYJYIZIAWUDBAEWBBDLIh4SbEBuaGNwqCuDA8ZoBIIE
+0H7TRB918jk9SQuSzyEwETR2nnVg1YQzO7u+oeYjJmxO8RsyGlvFNdHQ5cs1g7Ul
+blTh7jI4rLosin9TuRfFsqltlT5SWKez2aPfJFKQF2SjctYmLRBblPb3VPsl3GXl
+JPFcTK8iUXtAqWtSx33WAGywY2HBRtzPWiQM6t8BixqHZZ3oOH+ojjoqxXAvBZr0
+hufOPoytxqocykUzsd2x3Xrz/SUBk29x5w9yZnNOZnSknt1ltTWB7gCorGXl5kW6
+JSnY2pM08XZ3q3mZxfg8uX08P/C4fM725T6MBf8oi7DULbWuEEJ31Eq5zSJuzLFd
+vFV+smSo8ibm8MtpH4qTftc8sBhvJmdgN6OHjycq647M/mSEU2Bd6WAC22Ra9WY7
+JAeH8ORd5M63NvAgBpb6ff87d/NxjSPQ3xZyiEPyX9fH/ZM6DNcHFonM8IlUG6tD
+Q32lq9imwC1yqQBGBTp3Vx81HS/2QXk8bUzGY37WrgDbIX/46BMAxBN+Vx+9Rmu/
+PAw3F4EGEqP+1Bi/bC23wnhT5u0ZHGNI2MoFrefqnzCDp6Mnz/jHxK2I7oB9UAqA
+5l3Js/Jky9Kw0tA1w6/meupdeozQxpf/n2y7bF7KMpYeDoEHwootv4A15TNt6RRx
+Z8oXQFT6Zp2bE+ePZI7QzrSGfOj1u6RgY22S2HXDFuCGSTndp/ab/IibKJ2OoJST
+jm1Kxkqsj7zMek9wji3BMYAYXlHtETs6VwXgNw4j2R25gVMWP2bGA8tF91Rrtqkg
+IfI63rWuob7x5frwVhQuMgHL2KOX9ybfIWthdpxW/yJe0OrW52OHiJlgMfdoMPdL
+37IzkdF/NZbjSTFaAzK+WR6lL81AvMUSA3uIW8iiGK1cGrYns91bqrAyHfGaSQ44
+ERgLIrQlepOn3LHgLDIBtIP+Rj5gXxt/ZK8u83dTpklP86X748eq52qBOsXPEHFu
+AxjZ0AZqFbDBwraVJtjUkvlEnf3wxB4FFgvPst5EnEc6/HpxSXLly2BDd/YBPcHK
+LbeCWxsoVnwKX4b5ftHliW365p1m8atfSBR02Zs70zpY97jPHJtRCPmmYpdmzxDP
+Lh1kNEUwWErgiyx8hcJ8Oqh3Ucj4y5a6tWEHqluGV1z0R0KJP4WLZCFlzJvIIhV8
+Jyzin68Q10UJx/q5GYoGLUlL/S1pU0gnipGnEppVpk53yS3cT5z4peudC5BM/p4z
+rnMx5RXQTkp1u0MK1MJhLlKGhTEWpfCsxNXJNNu9YnDkZnDlSKXJ841/dt9MvZhv
+v99SMTReWV1RBItHZUOj3HicUe7auZV096XH63HVhNgYR6YoKTdOSgzNgHhKPCAo
+y7zvcJ+iVexvvNCW8uiOg+Kacf3ReuVf2Q2kwLq2Qqhn5Vlx7U/uZn1fuYTrQ+rl
+ex+u1QIY52ZkZeTz3oy+ixaEbpamToDSIDBWw5IvNXJzVMtGu68IsTZnwOFg+Hp/
+t9V+c7pyxJTDEFUyz8uYNRQ0nL7BnZWnXDXkTWaPbaXZXzjdxyVKzu6l43wZlovX
+1pP/c8cJUTQIvT6FHUBgkxnyuLxDENnkG7RfpnObn//vihV6S/n1bea9kBBw/y8D
+78W9hfX+gb4Lk28Kl96G1zD76ErxvZ0FkJdGTJ4tSXE0
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem	2025-10-01 18:24:20.233691700 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQI7gkKYknbaqACAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEWBBCebUGw+7hIwkWdDnYtL9DGBIIE
+0A49u3G9YH/VraazgsrZGhKj7zVXkhjBppPf2UOrBhyg3gX34qSrYE2gYzSXqVbV
+nlAVe75NS6C6RQB1HhG6AR4wshd9IRWoqC18r1BI57mBtSFK6uVOLAuxt7GvvOaD
+bCKoQDNiBU+hBJpAEBTwxx0FLEXo8LGZAtlahkVrUKrWvFfN/79VZR3XUlvawgop
+ht1D1okEjnxC+ik7709I7YrWgtlZG264Diqd8Dzl9PI/QljNG2JVmq54CdYVXXhr
+Ufm/RuhSJfHErdjx6vV+7QzgTx8Pc9wbuwpwBsPvwdKICPRQE7alSq6TRLZ1CcEG
+BYTZ714YZj4zEHKTEeUxgmHIBCxsuajarGgXICUtVixgjfyuZYvngr23JmNRynd8
+Qj9zXWqVlGhbofpLPkF6Iq7vbjk6em/PljtkfD4HYYDDizG2Yk0qsD/rNQUAjBDC
+enZx5eLCWr0xhIrcnB/B6fZTsYhWN+gZGapkUxJzL8v61aDsGpC5OTI2V4TmTpxK
+krNOR/PAWms8cqeK/U9PJpimEMePv81hkWJu/oOZ+vD74/o6hYLbMyQHkc9YKsO2
+HQOLTwCYxiQv1bckCgnUPTAUU7wlNvBVP3GVEIV3LESh/rmHs+YyGSEENjnK+7Se
++RJZHJBklDQL630zPVy/uFbpS45H2mbLtaMZWDZsVglT4cCO5r+xm4B3WLXNUJiO
+7Yg3sWNAXmZECslGybyPzeNgT8Rez5C4KoMjLJNhx7eW34Gr5FpagcwxY+04CC1k
+pXfYq36gErKmUk1PcGRUgTLAE9E49XtLRB982XC36csef6R3AROOuFfX+QCSsmf1
+bgZwEhpXqu8eygbC1GWp2r0nrW7ZYMdEBawy3NViuBlEP7Lg66gzqBUvOWyYeQLa
+OPJko5viWouo3efiTPZpyqz4SOsgV4Tso71mFDFd5+s2LA9QQS5gnrgrJ96adnVw
+ousoh0n0ks6rG76G8DTJY3Xvu/130c30mfeirZObYs3x+k/3Zila50Yj8gpK41Ey
+g9mViwC78SVRRhDvpFkkgVS6UdJvUcAADn1OKWEOwViu9Xv0UUNocu/TRtqNlFId
+D4K2KeuLq9EB7OzG0B1P7vfJVFudS6Ig8buuAg4ApAp1vcJluoOddA+WjQf6btO/
+Qd0OAbdZ9F3KZHWCG25GDFUBbZ8sJtA8XvJKdC/cOzLC7TH/aRX7EghHbj7s6Lpv
+4lKcS3gn6+bJ40dUMmMkTGCT+TLR9OFu8I7lsFsVuMXlk6KIZyu9MCgKKbKioCCH
+kSyS6KDzK597IagxWhpsPNDUyqw/gmVrpBLaNb1pEB6EOHGLgsI40sh8cZyk3+N3
+FiRoBBr9sJNwewOrrVkiMkB/KUW4iwseyDNkF+hGwdvj+Utl9oM7c+a5NJdTimfH
+n7aXS3lNwGeLg4td9TK1/Iz0EpMjxuUuTXrRblhXs+DY/G8glOVP8vtb4N4Capux
+2PM5uoAzLLypEt1CFnWvky5/K1IIqLOn+iN9Sa4wpi42dnorn59Xd6KtHf0cTFiY
+fSvLM3voTZr7ptarlvCvV+FqT+yVqBuGmBRLyf2k7dLX7dBo9rycZrPNJGOgtyb9
+pq5JPhH/snmCOD0HGBeJSM8vbfZg3/LmxpNhNAA6u9N7
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.pem	2025-06-30 09:25:21.412316000 +0300
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.pem	2025-10-01 18:24:20.233863800 +0300
@@ -1,30 +1,30 @@
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-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
+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
 -----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem	2025-10-01 18:24:20.234098700 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIl73ee+BkZxcCAggA
+MAwGCCqGSIb3DQILBQAwHQYJYIZIAWUDBAEWBBC4KLKvsaa6YDtKgQaV9P7rBIIE
+0KhExm+kxKJ/IwgaBXxpF2sVus9G+lvcQ4CShTlCc+L2Ogw1A50MBOSscg1tik81
+rFbnwBwyE2NSmz14Dab5IcHJ7jfAyoG+2YUv1bj2NVtFXSTjg5l9xeB/cNb0+bJy
+lXvD4av9/o8hz/agrlTFn7UNB6MVq1BXqKmuDWBo8vs6sbOyUfIq/gxoduOibrSu
+4lZ40rk4yucTZMXH51uJsY4uIRrrFiZvmXsMBJbsUhdi4YbNJ+p1PNEXvUEBWVaP
+EEz6HEtylU6XjacrpxFr6zJgcbnhSRN9aG5h7DdciVMhtZiVS+/ynn7MKWUonv/C
+mlel6/7zEJ0nawRlb8Yrt1b6B2DoCYp84QSISAQRLgib5OCFUM7bBwpf5iFSscnc
+AHr2MNn6naQWU6j9GXAgvwFgATr/EjASFiGocB5CbvDIZRySd/tXHc3BsMeLe4+w
+rMGUvoedRrNExt3z9qhw+KdDrrjaXGt/dH9MWDXRBv/jTYwZ2IaYyhPOJaz4ICgt
+5EPaqGvm29s60/ntpqxRPLl4LLL4l21LX57bf491awsA/G5mKYZhGOaDUmFGwqfL
+IIFIIWDejFAiDJzXsBFB+aPm/W9kIQWD3oWaEhGPqEUE8xQjGJ4sw1l5B5hWwxve
++02aT0IwbR70ToxtRnoVJM5y3i3Gm4FSWD32ElqzxEGERE8IyrVUzWHpbbMDrP+7
+saQoXjVwHLpoGA81yLTtYlcyZFIUsYG4+8JRCNaLDWWTvIaXqcENm01eDJ/uuTTZ
+FaOqZmrmqCtfzpoOjSYChJPQK8YiboR56vtz2yviI8Wb+uZGk3XZJzea1t2GMtmP
+BzlDiUl2a/ugClLA0oDQo6tjkGQvr7s6jyyDG73jWmk3/buOt4NRV0q9kMT04AZH
+Vz6apvpYJqkm+phucpb6GZj3GQ92zK3V8spR4zCCKM3S9iEfSISMC4oMTGxw5AhU
+wZ8s4nEAIcK58eOj6eRiGCw92oSjIzAiXS6VsoA0eAv2Ka50o+JV1Q+/JQZPADX3
+l0sZ8Z5ZyPtQRusQznXWROa0Yx3jNnCoujMSpDp20dwYo9VQWWQIIIDwDVCww3OS
+yWwJDZ4C1g/wWwqsludE70hLSGeV4ctr8rhBmEJ7QfCFC+tV+QnY9NburDoxFemB
+pi315nMrpNW07fvo2EtWUxgQanCy8RguzsLfPv6OCBO4ar4cWEZ/UOuojt5jJBOa
+m8SOBq7u526iCffXAz5f5s1+6EIv4r62nmgQIwx5IIKhsau1K5WOLYHtrM/k/gr2
+LywAZJSJVAH6Ne+zzjlK4IO32DVAD0+BDndjMlGhDurW2uHkOH7MXajMH9OavRZP
+PBv21B+MF0hwt/oN3+Tj4vOqNnSW6tfmyYlLjTRif58tFklF6un3HMaJRe0RdL6v
+tSBVuSR85WDHosFrbPFPPqir4lgVsukd+yiyg6UZC0XrNGpjUnc7VJy18GQOaicj
+Xz9Q14hkYjXd62u2feaaA5dbz/AIEFvjVxJDyZRn4k1GO7fHkJLY9+L1nSqQA4v7
+msPD0E+3O9hLmfa9zATTJv+SrD/1zri+46JTqnSZI3GLSs4ZDDYyqUBc0VOrdO8k
+W5UVjtnSOyYiRcRAbG0lVTMOjCEBzrMuQ884jfxf7XvO
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem	2025-10-01 18:24:20.234318000 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIg0mZcrC9tTkCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBCG+7ydI2qq3SonVDMaCci2BIIE
+0BEzdOJOmal5z11X8wOkZ41XcsdEkPindkBgjuIYUS6yBDJpS8t4J0TCvzrfFQ35
+AZzKJGk1hmLK44eF8dXoCbkvy+nInBceavKt2n5yFJa7x021Ty0G453JQt0/8seR
+Pei8HAYaSA1cWOBVxqNltgqVMw3IJ/2aLATGYQLkgfwlZk/+yAhVQeCjdy2UjwI/
+ePG1cwjmM974+gDzntmvPRxKtf9SEXVo9L06GP8GlYSyFRfaGZPP+vHcKsryO3h9
+OEFk8nka1h3zQY10PZ9SshFHfB2k/ehht1545v0dugKotGy5f6DF5L8dgTfmiIQi
+70bkSrW0cmipjtz/ubXp82E9EMAHWR5T+S583IEaHSxa7aSpvRxVcbZyaN650oWk
+5/h8w3Y3PzEz3pSR4AFSTxe8R9hwWvoEgIvv0rNIILLW77cky+skOZP0+ySN3Fd8
+w6vNKTk6GjcUC4dGupFNUbRe7owuMQZrPV0tRuq5WzJUee/WP1togxSMICIM/hZb
+OdPDQS+5WNXC+or39ZsHF2HmS+eUVSs15+eOBF8AKvFFpMjvlQPCUlvnEycdY5rX
+3/byLPfVlJVRjslxdRSou36t9wdWyY+i5q+/dxHuHiC7Og4aerjQFO8hBju1bAfx
+N/yyz6PmDBuMZrd7N3sbieqZYDWDoDYzHfi62iLhO7xaBy0bIHgUQjs2n/x5qD29
+z7XZx8A4UdwdGx22j9KT99c+3+NPemq5Fyex9Xr0IUhA3uYCVsR7qCIj5/T7bz0D
+hZRArzR+wSaApkIb6fP9jbYs0fUUwQHxcOeoqjFhDV7xdSOqwVxZVGfJE7PxftHF
+NcpFHJrqiLQYTtOePuWnPaX9mGdHIe5lhcvejyfwg53gH8oEBfopqiYwIi+FMJAS
+0I+4MJ6J4nWZijK+1PKUlPSiIrNlY7OrBQR4i+aKhLbBkBf8MSLilLxQKuVPhQol
+/0gOAFq/oXZZVMX0TDgQr+1mHAI0lSWNTTq6g/48lniLSEHNuxNTzas2nAcj9822
+wd+nURzmTW3HGmOyXUby+Mc0Vpt04RSe8oxwDDpzfMtD3bsfO5E8h81w+QFQk7Dy
+r5BNIbBX++7dt6bRCdhjXn47VfHEhub8VXDqRJJ4PzT/AqY2YZDTC4fQHvVxd2q0
+N/vOJRIBxtVWIS+l+Yj+APJpDKhv/5JoQ59NQkECuNIcMX9R6ftx9AzclcP3RsSf
+oUXC30Jy52lVcbUSeNpfqJ1L+OkrIROkv+zprnAXFNp0YJArS+Na84+7IcIOCPkN
+O+RQ/I7I6Hho+taVc2MX4+gDcpgxyETmRi1d1Odk52y8jUjPYuMXiSL7U08GpBPN
+P7jDM3zDTqndbChHTduDZBc7E9V+jkBJnS76Shjh1m10nRZW2sLIaFf7ZR/DyDmq
+nZHvgJS3nqUcATF+BjiBd6OvjUdPTYvCNEuWW82zMw0jrnyb29b2zMw3mrkzgpWO
+kuqiGnu0b1inUADLvZIbZ0u4Z0CkCnfQos0rsMviSTpb+8FxZI6jjfMIvbgqqEqK
+cV/2vSWOt3FHKoqk50qWQyv30iF3tQ0EpvqyQrA+ZQoec80i1eCcjctzrSWYFb9d
+GzAyhVLBnaTk+00kKlWDEJQVr4CqrS5qIk/OBil22Q8F
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem	2025-10-01 18:24:20.234488700 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIJAJEgazYSaoCAggA
+MAwGCCqGSIb3DQIIBQAwHQYJYIZIAWUDBAEqBBAHzHXZco7mEbeGkV6Nz+buBIIE
+0PknevxX7SOtx0OZ5PFo/AKuDfOxn5bEWz5cQnqkg4VvCi8oyviodXa3PAK9NOKI
+kLg2jolUAq8HQEX3hxEyESqx0hmByIXZCbwkdw0RrM90XHwc+aDh99T1YzMdxJD2
+plCGNs2JFmXN4f693EiAmMgP0Qr7ydDb/rIyouWMsebuzRelGMltrA5ScZ26FDBE
+YV22NgU85dCxPDe9/E3up5zFObueo59OVL8Sg20PatJcA43Vynph/6sLLktQ5y9K
+2Y6o1kZdHAVmTqVHh5bgW4PrWeoFagEsAHjVwLBwNcNv1t/OiV5gAVKkKCXt62r1
+yArtml2BhVG7kQR5kICYR/PQNaJ4YNThC58Yh6tYb5mreHpOKTB27PP5Lg0I9f2O
+c4+Ih8sFbzCR35eGPrq3pjzn5wiVWhnxznQhfapZuno5lRvwvzGTpFm4+cUMY0Iu
+a+jj1/TfPjWqDa8DjGKQyzvty/t0rNdx8zVick4+bkyLAmjSOsMwiZqnkjmT1SG4
+up1G0HIVd1EeZ8ZO46NM9sEoNs4iOXjErY3CxzWWnbQDBnrGZy5lkSvQoIHgfchO
+34TG23SvdE9/AoQBvrLqEAawnHMMNbpIZ5wR4mlNdWiReq0mbeCNP2RDcSk2KQ5R
+4ZXlQQMmYcQsoDg0Ohm1TEXi5JdSzB4QAeSYWRpvRhc5MBrL4nXz040CdQLjGO8z
+Hu8ZAiJt5yu2qGKS4OExMYfEqziX0jTrcWFPB0EYZJQNuqD8naw7VsyiYFF61wU0
+MGNuTHGLmxF8kWXoyW6IDTDcU+7hKYNla9/+A1lGYq7qjAW5DazQddhVIZ3YNJ+k
+r1RDuxmpBI8RC2RO3N9I0x4oNZpGGhZbduI/Qd+f4ZMcU79YEpXSzyvf5sU52mnp
+T60Vn7mmqDkLh1YX49pDYlYmaNchi/Z9RDbYzbfFPeECNNnLW4XGy3JG/bqKEUmV
+5YOr1oWqrDkY6P282kZYi3iLyrPAAaVGq3WXp88pcDasGyvDV8hbxvzqW/wLqeh5
+l4AdHH3MlthvjRywRFHBsIMeMptSprexQFftesyDCvHKcwuECMUHZo1034xacmJP
+4oFgl9aGLAMZbo2fkFOIIjROXZhaoDeEAsQrwSv1b60QM6n90PcKlQmMd1XPwnsz
+yxW61UXiCk78SR9YT9aWN+Vz5daLLSsj/0z1Lc1CAnvQXdX0w1Q8olXwWokBA4sx
+l0M3iAOXC0K4VEAUxdLBwqlgSa2UZHFZxziogfqFg//oextTmU0vGCmD6kKnI5aA
+u2FEtf5uzh/xj0Foa3CosCe3OXLp+stewD5+FitmKbWM9ajTevVVVtc0sRN4biEp
+aN3GxtZlv4Qgr3ZrZynsadGia/P78qbGEvaybsCTpRZdck7S1lfcLCoSMLjbAXzE
+Z9MxHKF9mpQJdE4unOB4n1alcJAdzp5hDTI+Fvc5+Xxm3TrNOtbdBnXwJf5M7NBm
+w3/VEVF7o8abhvHN2spZeeRsQ//QjWuNcv7rGYrXYe7CQlj6pexkps21sNcj9xEQ
+FkSBzzEN/97d/NZ8D8k1NmtdRVUxzrc1x9L1VhGb0HMBMlBqbArF3NgDwQXOdifA
+vDvLxEtdV8l/9Rgpj7AmtYs4N/1Ugqwl+qi3Zvwlz/HY
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem	2025-10-01 18:24:20.235173000 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIDzxsyaDdVI4CAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBBjOtMoiHCbVmVxwCh7YgPjBIIE
+0JOwCzeZgEuSbXfkdaJ+INZ2jYurRIIVHwjaZ3NaQiQITkG3GWQcMfxVDWdXwlzX
+3EwUy1+au9FY0hClcrnwwfb9k2YJJxUz+/CfU+EM6ykhvsWXEXKe7VY+B7pbaCAj
+acd49mxrRbTZt1ZhoNaK8IHS86rphsWBZDeG2zaZ1SiG4O8nU2PeZSvt5uPNpX/4
+ODVOklbHQzmzBgC9Ss2ozCAn0YAOXXqpQrsqgksPV8AnWkjDcoM3C8OVCMAIfdlu
+Pgk90fs/qH1Gk5xN63E9wAAmHWnTRs6HVMmTdFbxNA6nqzI/41EuVJjFqdMgzHdU
+V8xB0UdWN5C0hXBe9+gAGLuypS92GeOg/JsPr67RNFp5FDdHiFYBsrMnbI/46RbH
+ZaWq5QxrBJb5ANghJ0E2SmlSPbe+Lub3boJt2LolVH8/Sm7JtS8VQD8QJtzXeI3I
+YYWKo3ZxfwzviU+V1VgX1XwAHkI+MyJipMwCg8IDoUhslPdJuvIp0OfB6Z/O5Z94
+uDiaSvwhXdeK3k2rg4XWDQv9q6uZbAN2dtV1ceI8bfX+16PgJ4r+ishEcnybhgwi
+tXVWfGDXZHgMcuSO+1bgbVcX5Hkv9f8DGNKq0ZagVR/SWT+didy+20Z4rE3Oc4Vt
+zZc2rsyWvIeqQinrQVtB/yAjXFlxKzy55/IdgPpzKBuugUuKPH4g6AH4/p7G56wI
+a+g99R/LuXCu1O3UwK6XjM/ow8AaOwTRFJD17pU7tz9cBN9tdSEJKxUvkwL6PuRa
+7/L3+AmvmhnT2QWbzAA9/smFlQWE+C6UFJKaDW0YYijLS6/QT3P8N4dVH9YcrQJ+
+nAZ2an8/AcehQ1pwktlNbbeFThJSxg8oRoHRbjD5EPMhCv6ikUsZXBymUjYMNVBo
++usEEaJLGk9yj0mqOt1CeQxkfOfxmvYtaw9Ijtt7CZ+xqhXI6vT3yoEC1g9LGdRr
+f2wW+RuxEZaDGaX2XXHS27IcXY7p0R2Z/o/I9pTHI9Hf6hmTly+5X/F1K73wH33q
+3GVGx2x6EWCWKEyLXIDuHhZKo6O9sYU0bebTcfJoI3jIQqH/4SzgM7rAktmjmhWR
+2eiDxgoURezH20WqKVGAdRQdoiXi9O1rfz9oz+/WqFQy4VRLjCXhAohsdrYOv+1x
+kY5u3yXbJLx1MzRlCHM6BRcKFFe/cFY1oZAAErYtKeH2C5r1qjBLoLczCCKiNBgd
+JHmJyvZIS5o0fyoAQu6dy5A9tMCwG4EPb+EXarx6RZeCu+EOnXtltFCTUK9yvsBe
+z2jdhc3vetox0kZeeDvwidXD03YKpwTXls3T7K4UBDcnvbk9+orH5r2e0IyoSeCN
+qCDss8tuIsye0osjyN2f1XgKQlHMzR7ZBEyNSR/ai2ROQVyqkRLkFmhOm1/7o5wg
+K+Nula9tIDL5YhrFjHhPnoAahm5nqKJ8uAVc7BO1muVR+rW5mFXEiISARoJtzZTv
+P6/Xm3RoOHXOE5GUm/nswPyJN1rNYkS7RMxI3ur7vRYdblRATfxBLqmeQ0vmmeXQ
+LCFATY/x2oN+2wvaMwtU8263EdzIP+oacIkeYREM0cEiZDzd5CoJDKD4nRfi65ZD
+mm9EOPtWE8ETbXIQlwkZ4UsQOXxr8rO+IArrzAzbrluv
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem	2025-06-30 09:25:21.412532800 +0300
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem	2025-10-01 18:24:20.235427400 +0300
@@ -1,30 +1,30 @@
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-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
+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
 -----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem	2025-10-01 18:24:20.235675300 +0300
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQI/2ehaksR+acCAggA
+MAwGCCqGSIb3DQILBQAwHQYJYIZIAWUDBAEqBBAUkJwsv5R13KWnk8zFJ03sBIIE
+0F1IUg8RhS7JF/RJCB1nriSijIJEO4Q4De+D8ch3CRqOQoDDAQ1EQQChfkNa5nIL
+SdYL0/+m2k7Lkzh84EfYBVu+2d1g/tCdGX5gR/A15dLR+wgjLWgjzeO2Vu+vDuWz
+N31zu2DKMslmeuMMr4ZQEQFPTwsJ/FTfwe99CVzRcsHXsBf+VKPZturPKdV80r2f
+BQ/vorfgMuNwM10U8NfJwSvrNbrB2FFmpHy+HUVEGqWf7tTNRiGRCCpfyK8vqe0t
+zLQdoXfsKpOtpNaD4z+2whSwBY3cILxsnQW5T/4QzKRPgSx+kMzmtsLy6PwHpSW3
+g/qCVmULMj9rU2s9I/8YfuKx76lI6L8mT/8DpMiT2/4XDv1pH7BlMAbew+8j7kE8
+RseF0fWP01pQyO/m3a0IT+nsUAfRqYt8yUKGHyUEBoTko32NerT0e++OqmM+aW0a
+fWstHyrzFQiZWDdrGp43bo6XZqGmy4ifSHyImvB/U4mKnH1j9G0KdfyxWqWcxHCZ
+mbz+Xw5ZgJZ4fJt0XfFjH1BFD/dDXKIRYq7AIMtUJaRvZEcfKW5WeVuJo0Pk/9jL
+OabSxnQ/t7nkUc8qIyjrGX9CoQCNBWLihiMIJCKqFowtYTuasBIEUAYk1zTyigDk
+HhirU45Dxk7eQCzuToZopBnHzHfuNlZJ4fH78SPIn3R+LkevHHLUMpYNR2p3Wf+e
+Ff9ZRnre/eh+QlL7hioIuKGl0SfLq2g54+FXNvIsZlz5lfxmeiK6qhCg9rNwcgMa
+/BnN86cF05GkNPj9WpcBpUtumXiYz4ep/IZs1m8bDsltze+X8cKbkbZ2fcYrzR1n
+aQ0uPO2qQEj2G/WCCU8e3s1meCWXOelCc+gSeMN1CybqgmgDMrX15vW683Ma0wEP
+HAnPolAD54UNuPZfEko1zKHafLs/DO/QvjyxyXngUBdYQs+Nu6ZWZ/kgE+SsNd/v
+Z29Jh84n6FqoTKmMDwanwNcDfC+qJjI90fGx91zcZD/kK0AjE3DrEPfGsznEBxmu
+OFK+NgcKqtfj9NU3LUtBJ5FDn8HG09x5MYAyWk4wSJWb/yIS1PaQAuYXPpa6sA9C
+VqKpvg7ukYnDOAs1+fCLMsBmeERPlti2qBjdQR7ZvF00W2I5ahKjjm/WAUleUNPX
+CvD+NCgl5cKn0J47pJrpJawsMv99UTRSEetBLZ1nHGP3CULHIH/P0rFPduasvH+J
+Zv/HB9iWlzqemBR2vawEWuKnqeMIEhK2mWFvoltH7M/H5l4YYv7vlxtZ5O0o6u1U
+xv/OmdyTRFj4V6uEVmu2SPLleo+ppsSSYqWuBtBfuoZNP4lBUiPOu1HnJo6nadCc
+QUkcCt4n7XhFGaLDJxypNJPd+P4tszJ8Ow+S2zmdAh3g2wCqtkGVUnHCNJllqpEe
+I/p/ALp7P1s7HhiMUFSn5yVB4CHRWV3lL5akEx9VoRLFqH7wpVx7NXqSNoOvyMtX
+yuCpFc1LscRIeAW9ERnSMxYtCZvwAE41KE/iXYLKA+Z93qoQFDx9s1SMWF/Qss2M
+tk5YXYpSbaDo+UgOdRZ5oaaPZvYbwE69b2g1RcLq3j7iNQ6zUdpQE+CecEf4M29s
+sF6z4yaRIKt8hc9+lKaLvT/04P7RaqrXsFmvXwOrxcYv
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem	2025-10-01 18:24:20.238428400 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIJrTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIj6oDmw67DkECAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBAiC65zQGAyy+m9gnV8iauRBIIJ
+UKME3gwXzwldVRKBFdIJRgfmfKvnDn8T2NjsjHswX5F2rcWFE5jA7ogU6xjRfAZ+
+7CK9GATDd92IXxRW7+yYgrpSFXwdWdEsRSD2V0zqfLt6YWG82Z164+vN29916C+p
+mvXq0MU+u6k8LXmq7sZiFyWWyDj31rQZGX7AbnkGJhy8lYmE78hir6liZEehCS+N
+7IP+4ADjzZ0GxeiOkNl8OzaF9cgQgGBK4P8OGa+4VEwDYry7DjUgnnv8q0ZuZnxV
+Hdn+O5RVnVvl6oiKOw+fOwZlLIkO4PXWeDRX1khnAnWFxVkuMGynZ4QPFLRhoxFl
+6hWh+er+qqMcX/iwQvjIWvlaZ08G+XJxC5zqANsKl+GsnN6F6rgZVEQmof0XUJtX
+VYa6lYRhFMJA0+ZAWs8P/VhdsOE2MifL6uCXTAxGNePaMWfSc798L24MpvFluX70
+ULqkesgoYlGecTtqASvfwYfpi278j7n+v1AlCBo7ykEYKUsHPdkiDoELv/nwCA5v
+UUoE8hjZgFUw+bgIfvl2dmlviyoLZSrusrDNtlJKgj22i8Z1UkQFHxItO6FrlRCS
++EO0UWLV1HJlINfVETMdFhkOe0WYxu03kooeMeOf+zbZrDaj3CVgcir86HLsR+1F
+KbtRKDdS0hYbaBB0yQjZ4KG6HSBG8wI/wH81tF3As+7EpA6+OgS6XFOfl7BxtOWF
+2cXOoSPi3XcbUGtuJgJsKT1zb/KYWUpBsOs4Qn6xgNDxXBUvdbW4GqwnfsvgP8Ph
+KBpEk2lB44hsAnAtvzS8jVl5x+qXw3FACc3GaAj8werYYjNN8Ddstu6SRtbY8r8K
+O2/iOuvldEIjhUHqmIaC+6R6/V1E+gwPyZ77dZEdd/Brl7kuBzdj77dKD0t7doc5
+Uxrdj4PR64ZzSkUGtsOgwFwe5VtaDocCaiaP0prWQCa76BimPy0YwhUZsDXKOVb/
+ICgRkpJELQnZrwzOv/4mFqX1kJf5Ksr1Is7O9JMQ6sKaLic5ewh/2pCK6r6i1qZd
+lJKBzf48Ey6NOQUkyDcRDao99aJ1D3egrBDdTQpvfGlnd3SjcmCyxX1BiTgoldwE
+hQQtdx6m+4aW2vC6kvEj67BufoyGnLDCTmG6tkSYraSH7RZD7eZl1lE//yIZpOZ/
+4qsU5W+h1keAdAKWA0sz3AliyRZViuA6biU5CBWinJlyk/pBQd7cNc3IzYNrs1B0
+8HbcUYVVai27Z37Vzh368mCGq/z7AUN+F16E1EKEvqadgQCp1KBcDt+wHUaXRZe3
+21g+7RgROmarGNRlNPZviClKOauhO56T+pOJoBWXiBqAWtzseaaJD3UQ9CWIA5Yi
+5Zcg+UJNXvXij/gjClQGL6W/7SSn/D0IufhmifXgYrBB/+O/AlwKpCTPLrBtmOd1
+cYpS14rGganEaVlmqFV6iGrhpkirdsBNBP11yREqUObZguEDtNq3wILx6PmiJdW9
+bW00NvJp2Ngzqi0VGXIWBzh/eLpEtHK0Pd8z+iaPp0nfd3WosDW14aXuqXjvgOGB
+mhRlRpNIY3zyMb3oXs7X0EFwipBxBYWaM0eHejcVrScYk6MOJjQZvyf0yW5trBEd
+YM8xVH7rIuDJnkc+tX5q3pXIlEurc1HJW61G+lbzuv/DQZRn/txg1HU6TBMcKPWB
+H4Hj4Aak8AUYBlz5cPfBKAcGCu64EgqtuF2m8800P10ErE3uljiHh1p/hErNeLJw
+M2hzOnfg+tWL2ADt4TOHvtfrGnnXOTf+eSdSPrAa9J5+C2MV3zSVzERdlVu6jx8L
+uBylJMflaaYs7FSd5tVoQpm0rUwHSbt3PJR8RLToHnqeGdCC6WvQklual+cHZuDy
+uOIyWacUS9YB5T0jFz68bZozH8IIEikenMX6vHexyNXU7lNxeG7L0+YNCf07SMSv
+HNgl0V9ZCPs9WKq8IAsf4I87d0w/k84Ik/Rm2Q2jcplWKlIIL1eW6vrBkJOZrDag
+2CYFL/WJihRjxmw7cKmf4Xq+gvkiYa4IUgdc9bjEmBZalsc1Ilr4F7GCfITYRdPL
+xmfyWcTXmReIOU7WHB3PXujAuI0+rxWVol25iomxy5X1BG9neOjNjFc01fUvYi8u
+fJDk3o5/rAOZ5jUbZ1EuIg9vE5jcQK5cyRa7ubU2AE+yHgfOY7DV9l3PrFkQgOFG
+YCpUJYX6vNi8Aeon7samsL6c5gvKW3yQIR2EueVnyZd1CL0d3XU+kOvuklQIlG/B
+4F3O1Yza3iOAEkn75bdC0iP5LleazBm6H/fo5kWohP4sOu4gg3lmjZ40hsZdo9eG
+Hgp4UwsvuLJSLe2kuqOQ+8sZJVFJiHHntDurWEf8QYIR91g7YUvT2g/j4eT0ygEh
+ScUV1MM9+UtnyACOqDQZAwL38/9mFLAbeVg5QNTnkuChYMvkOWFu8LIIAClQ5le9
+6s8t+VzWedtLrTqWo3sfdUor4OaXdJGrH0918vG+qUn0dvztLzFF44zW9dnQszYg
+cUgtR8nPycHf3sXFRO+J397iTir68rMnhYJELx2rrdRJ1Poiu2C8b3a/8BcCgnN6
+zRGUgwU0XWpLfQFErKV0zVQssmBDI6ZsXqsgK5Vw6LSNG5gsLT4oEkJ6qucYMcLS
+ugmllfzrebKn3+JapRBZp92YJJDSQkf9bmwpV2m/OpOiKrzpnPKQf5LQXPSXDnO6
+andn7uRe1gfAmVtLI1WTrCtuCWZBK2PA5yuufIhJvqYC5h45vz/hU4/v/q9h8dC6
+ITzGyQWIAiHLprlmjTRUbMbKJ0NirobAsthhdKRy0piGb4NVBd48YmIASgXStoVU
+aWLohEB0Ecb1BJjRFtmbfPoe2NytBxL24fVqsUC/hgQF3ufXHcszUogiv1XWkCXN
+7pLksaBH4OsKI2YUTlGD9oY4yeWV3EhXuRRVDZptjB/AhZC5AOfnJdQj8qZUOilz
+k+547STlz582teEG0MDLrq0QRJTV4Vbbts9Yl09xJJCc/ItYc/RBmu1ZXg+lwyWr
+rd/lSamxe1sgjXFStva8IQMhFPxderBUkyFdG0ceWWNnfsW4qFMg2xG2joQqWOPB
+jrzjy2/9HAQA8SbKwSD2HfxxUsmBEas698xcGJcjhcIkyOdzuDN7kC+JI9JpK+Hs
+g2/9ru29A/gwFISC1ecprqSEahsNIJxhVMEZD6XPd/pX
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem	2025-10-01 18:24:20.238654400 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem	2025-10-01 18:24:20.238870400 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIJrTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQImpt4nI+VO8wCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBA4RF7MvVHwfwHIaRxOo719BIIJ
+UK9bLvXi0LkT4IdwjC1JXpiXxrkvEPl+/Xl9NYwPKHrXReQv5/6wkmxyjEpHeaXm
+WbEeZHsz87Q4jaAaK8CLFSSnQ1Njtft625G93UxUW5q7sBNHKTQ3UajrMTUPh8wh
+ATCov1Dr88UPwyqb33hXlxuIY00SpGsemD6FxL7l1qrK4ahFRPi/wnEddsM+JPUl
+dG/WiUMAHhXphwgfp00NinCgfgL2h7MiEqhF1PW8NL7ZGXGTdkmEGWOx4ZOqy6DW
+FFG7NOkSUW3izpUhnUEJ+lUCE96KOPk7mv/OmbRm18Xpjl41D2XYZlCEm07VQunn
+Mbiom9jLQAYshOYi5BXHMssi1wXjNd65zzj0MWCfhVdW01LBaQ51LojMC+3Aqoxc
+t/glv3zkr8vKP9QF1WJcZ+J5+nboNGpE9ga5NOqTfE1dd0yELa43mOXRCb/8QQue
+sj+aU3Juumj0ruoTYO9o8i51oYMUz9oWO9MuCC1F+6zFvaaXq85kiqxjsqx2TccK
+N1YUOGclwqSoNKkXZTr1YXJmtKhHFbqO1ds0fWgOfIq86HXDEE7goZtrbHtpDNgT
+a7bV5ZYXtIQB8v+EcFkEFnPn+rb0pZFXcEgQCSPtc9klxwvoCtK5zim1V6vradQ2
+YpQwpOwrRvJutBEHORcRafKHZs2mjsXLdpk7s/nsjZtTIoBjApZ3RUhu28cLIggt
+/CyAu0GJ6NQLfhpVYoIEPar11U2+FCUriVRLCOT7LWCa3i0+gxL5nv8Vh0ChEIVK
+Zvi1ZjvprQ4IJg/lmObO36gM6ddAeXyoFKqrhtc7Tkqr1SGTtQQPwKvYDQOXvrwO
+AgkEvaWQTBAu6QFkiC7KEB4FxIqE50+06jZzc4QJc7Cq/4t9DM0ZkvfpxPZO40X+
+nGvZZ8La9I8/o5A7nYC4GiVUNbD/NgvI28aA2vCd1faw3d0bANu14aWCTuct9KLW
+GKjeSXL71ehYRBqJ+GgWJNph/jMRy6DbL7sK/s4Vz372bZm5Ax93UX5m6/3Yc6oy
+5MNVl2mjwMvZPz7rkXQ1tlyjKlzT/jOhh/b/Gh22ZxzF8YfEsf0BsKXCZM2zczE0
++/W7nq+QUvn1pU3vd6a2vfdkfY7Dz9AzLolGa/1c4MGkqzna4Ue7TZFCHxo2gPz8
+Bg4GWa05ozzoW2d904O6FB0SvWCNBDlbUx6d/+n5NJykIOnUsI9YWXNBYasjepKH
+gZJc4nNUGA9lB3m0cw1z2Vy4HS105JUGGmzcisxTbt2ARY6pHuUflu4b7iTqolr0
+5xSs8vm72ESg8xv3AqBbICWYn9ovpZnO5UyugJ+4OdyQwbzJn8oHQFsopPv2M3sy
+UCAMfNklWHgUuGpWjgorQgpBytvADgEEflXyCvqB8k8wpjkzoLja+H5ZZW255l9L
+TtpghtJZHuokBXPCBL1Ot5bskEqS1bCeBGrNzRJfzRjDVDdyKOCgLPu36C/q1DZf
+BzMLA+H5B9RCG35fWrY9clXQh3NnNln+/y66/R0yqvSKaarczbRAt8uNpNUez+pW
+ukWuVoYE1pFA8iBcfqOC5DVvH6KYrn+V+g9T7m5015OZP8/3M1L0jGo81Q3FYu/z
+HhWWGZ9kHE1t4LT/W0HVNYODi85mQrfpbWpicWVYUQb1jBrXqNfmYSLpP+XQ657i
+3OQYHaDEzzxy2T3ZzfYA8Qi9l1L2S/3RivQaWJnMn7H00JYGZXV3XNrVtZodxo4z
+3HntG/1LCrU1wGXZGjzcIIt71l6RM0Bd56W2ntKCagF4Q5U9Lqki/k5XxzdpfeGB
+X3rb+GEEAB8SvCaZTiriWVph9nGIC3mSDZQ6KKSxeqd8JGERctAO5NFqmo2namkC
+dlsSfHnnU3fZ0JdIwOR1Ptxr0tnzfKk3ZpU59niiEdBtbwTXcqOd+2IVBqxccemj
+hE+SvrLIegWnTD0UCFR2W+oYF+Avdvym3IlZidaQPv70H1GRvvprphlVv6lcZKZS
+ZWckocfECNukuN2tuPM5PY60aKTpFnADN6GmEzGivuSjhdrzhX9BhIoi/AOV8xEN
+LegLWaxveLkk3y5UoVv+e2jHZypEoNafHw3i4ZemSYlnQjmETM4w9XYHIHrjgfu4
+h9CSTg+713jnx1Lf5WzxoIF94MzG5PuuXXqX3rW8gErjq2/Sxbhp1GBRiqor1hec
+RekHjOOSMQwiiPDQ++LzTHS62530t32jDgsaCysjEiL1a6GwGGXBuqbOQN9F9xsk
+j3xD84UVTNso+HPmooarmQGDOnaCu379U1+oCytPis7ryDR3k9GV5yczKg1CJI+z
+ZUEOt9ti/ebZqvDAmd09fNPIJSDs3MBzxVCpEmMNBOaPHqyRpQ7jjAMRtKZRQI0G
+2HyrvgpbntaMsx6WFfrSS8iYMQvz890a4BjHP0hozhA7UQ4zg47dZya59vIS03SZ
+z4sbB613BtqLP75OBWbiUceCr0G2Ci6+Zua3SHtNGdgFxI0lYp7OnqrO+LUgkr5W
+/1ffyQo4+4q2hfDNCpL0vYCAlr0jajI6spnV2J/jONzR+oRCNWadNB+1nFj1l3Su
+6UaJwaDycz4GYsYxgWFYLcsNzhwsWiEdhafSMLJ/MbY0dl60ZOT6YNyGJOgkusq+
+dK/Urk47Y7k311/BzJ7lQMBWe5VnPACBAMuHP7vE3bRufKAty5Xhx/M9FVKrv5up
+vdCOxyd7VAex37UyTheapqnyNC1UMDgI8nG9imhMT7FLLpSkRIDJgs2ciFs4NZJr
+Z5yRbQgacpqzMk+rBM23/hxjSjZ0yFjs5xqO6wgtQxbSPspB9mNXpImwIIq5qxC9
+8Bldjb+Cxqv++g6rbrN64kYT+0TFEKrqL2wlyOE3FGzOAbmsgJnIahTCJtmYdA8D
+xpY4IggtMo13g+va9/bjsp4iPxvulgXs+ZuqYJrnZAzILEBLrSemGt8pSERC5i9V
+TaSx/42WUGoGGHJGExAA6P1cwZL/gEIiP2NmwALMn8Xp/VDxx6pcQRoSR3bYQPgV
+6Hooz3QiCi6Uf0koLVkkhdGOlz8UIIKkqnRd94wn+RFVVBJ6jnUjpXXwP2m4Uql8
+qkQ5hvxtVQglr+GSdRJqrUT8QAo0DiYVaHS6luK3hB7wcgBCGEVKu5MqIxx4pNiY
+hn7hWtszwoAWmd5jLXLbB5z31wmLGq/3XXcQ2Q4CXrz0
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem	2025-10-01 18:24:20.239092000 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem	2025-10-01 18:24:20.239322700 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem	2025-10-01 18:24:20.239593500 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem	2025-10-01 18:24:20.239809300 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem	2025-10-01 18:24:20.240020000 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem	2025-10-01 18:24:20.240315200 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem	2025-10-01 18:24:20.240567700 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem	2025-10-01 18:24:20.240800100 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem	2025-10-01 18:24:20.240991000 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem	2025-10-01 18:24:20.241220700 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem	2025-10-01 18:24:20.241468400 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
Binary files /tmp/aB0_jWcNn2/mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.der and /tmp/va2yz3VPRx/mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.der differ
diff -Nru mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem
--- mbedtls-3.6.4/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem	2025-10-01 18:24:20.241680400 +0300
@@ -0,0 +1,54 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+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
+-----END ENCRYPTED PRIVATE KEY-----
diff -Nru mbedtls-3.6.4/framework/history/config-adjust-mbedtls-3.6.txt mbedtls-3.6.5/framework/history/config-adjust-mbedtls-3.6.txt
--- mbedtls-3.6.4/framework/history/config-adjust-mbedtls-3.6.txt	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/history/config-adjust-mbedtls-3.6.txt	2025-10-01 18:29:09.506838600 +0300
@@ -0,0 +1,327 @@
+MBEDTLS_AES_C
+MBEDTLS_ARIA_C
+MBEDTLS_ASN1_PARSE_C
+MBEDTLS_ASN1_WRITE_C
+MBEDTLS_BIGNUM_C
+MBEDTLS_BLOCK_CIPHER_AES_VIA_LEGACY
+MBEDTLS_BLOCK_CIPHER_AES_VIA_PSA
+MBEDTLS_BLOCK_CIPHER_ARIA_VIA_LEGACY
+MBEDTLS_BLOCK_CIPHER_ARIA_VIA_PSA
+MBEDTLS_BLOCK_CIPHER_C
+MBEDTLS_BLOCK_CIPHER_CAMELLIA_VIA_LEGACY
+MBEDTLS_BLOCK_CIPHER_CAMELLIA_VIA_PSA
+MBEDTLS_BLOCK_CIPHER_CAN_AES
+MBEDTLS_BLOCK_CIPHER_CAN_ARIA
+MBEDTLS_BLOCK_CIPHER_CAN_CAMELLIA
+MBEDTLS_BLOCK_CIPHER_SOME_PSA
+MBEDTLS_CAMELLIA_C
+MBEDTLS_CAN_ECDH
+MBEDTLS_CCM_C
+MBEDTLS_CCM_GCM_CAN_AES
+MBEDTLS_CCM_GCM_CAN_ARIA
+MBEDTLS_CCM_GCM_CAN_CAMELLIA
+MBEDTLS_CHACHA20_C
+MBEDTLS_CHACHAPOLY_C
+MBEDTLS_CIPHER_C
+MBEDTLS_CIPHER_MODE_CBC
+MBEDTLS_CIPHER_MODE_CFB
+MBEDTLS_CIPHER_MODE_CTR
+MBEDTLS_CIPHER_MODE_OFB
+MBEDTLS_CIPHER_PADDING_PKCS7
+MBEDTLS_CMAC_C
+MBEDTLS_CONFIG_ADJUST_LEGACY_CRYPTO_H
+MBEDTLS_CONFIG_ADJUST_LEGACY_FROM_PSA_H
+MBEDTLS_CONFIG_ADJUST_PSA_FROM_LEGACY_H
+MBEDTLS_CONFIG_ADJUST_PSA_SUPERSET_LEGACY_H
+MBEDTLS_CONFIG_ADJUST_SSL_H
+MBEDTLS_CONFIG_ADJUST_X509_H
+MBEDTLS_DES_C
+MBEDTLS_ECDH_C
+MBEDTLS_ECDSA_C
+MBEDTLS_ECDSA_DETERMINISTIC
+MBEDTLS_ECJPAKE_C
+MBEDTLS_ECP_C
+MBEDTLS_ECP_DP_BP256R1_ENABLED
+MBEDTLS_ECP_DP_BP384R1_ENABLED
+MBEDTLS_ECP_DP_BP512R1_ENABLED
+MBEDTLS_ECP_DP_CURVE25519_ENABLED
+MBEDTLS_ECP_DP_CURVE448_ENABLED
+MBEDTLS_ECP_DP_SECP192K1_ENABLED
+MBEDTLS_ECP_DP_SECP192R1_ENABLED
+MBEDTLS_ECP_DP_SECP224R1_ENABLED
+MBEDTLS_ECP_DP_SECP256K1_ENABLED
+MBEDTLS_ECP_DP_SECP256R1_ENABLED
+MBEDTLS_ECP_DP_SECP384R1_ENABLED
+MBEDTLS_ECP_DP_SECP521R1_ENABLED
+MBEDTLS_ECP_HAVE_BP256R1
+MBEDTLS_ECP_HAVE_BP384R1
+MBEDTLS_ECP_HAVE_BP512R1
+MBEDTLS_ECP_HAVE_CURVE25519
+MBEDTLS_ECP_HAVE_CURVE448
+MBEDTLS_ECP_HAVE_SECP192K1
+MBEDTLS_ECP_HAVE_SECP192R1
+MBEDTLS_ECP_HAVE_SECP224K1
+MBEDTLS_ECP_HAVE_SECP224R1
+MBEDTLS_ECP_HAVE_SECP256K1
+MBEDTLS_ECP_HAVE_SECP256R1
+MBEDTLS_ECP_HAVE_SECP384R1
+MBEDTLS_ECP_HAVE_SECP521R1
+MBEDTLS_ECP_LIGHT
+MBEDTLS_GCM_C
+MBEDTLS_GENPRIME
+MBEDTLS_HMAC_DRBG_C
+MBEDTLS_MD5_C
+MBEDTLS_MD_C
+MBEDTLS_MD_CAN_MD5
+MBEDTLS_MD_CAN_RIPEMD160
+MBEDTLS_MD_CAN_SHA1
+MBEDTLS_MD_CAN_SHA224
+MBEDTLS_MD_CAN_SHA256
+MBEDTLS_MD_CAN_SHA384
+MBEDTLS_MD_CAN_SHA3_224
+MBEDTLS_MD_CAN_SHA3_256
+MBEDTLS_MD_CAN_SHA3_384
+MBEDTLS_MD_CAN_SHA3_512
+MBEDTLS_MD_CAN_SHA512
+MBEDTLS_MD_LIGHT
+MBEDTLS_MD_MD5_VIA_PSA
+MBEDTLS_MD_RIPEMD160_VIA_PSA
+MBEDTLS_MD_SHA1_VIA_PSA
+MBEDTLS_MD_SHA224_VIA_PSA
+MBEDTLS_MD_SHA256_VIA_PSA
+MBEDTLS_MD_SHA384_VIA_PSA
+MBEDTLS_MD_SHA3_224_VIA_PSA
+MBEDTLS_MD_SHA3_256_VIA_PSA
+MBEDTLS_MD_SHA3_384_VIA_PSA
+MBEDTLS_MD_SHA3_512_VIA_PSA
+MBEDTLS_MD_SHA512_VIA_PSA
+MBEDTLS_MD_SOME_LEGACY
+MBEDTLS_MD_SOME_PSA
+MBEDTLS_OID_C
+MBEDTLS_PKCS1_V15
+MBEDTLS_PKCS1_V21
+MBEDTLS_PK_CAN_ECDSA_SIGN
+MBEDTLS_PK_CAN_ECDSA_SOME
+MBEDTLS_PK_CAN_ECDSA_VERIFY
+MBEDTLS_PK_HAVE_ECC_KEYS
+MBEDTLS_PK_PARSE_EC_COMPRESSED
+MBEDTLS_PLATFORM_SNPRINTF_ALT
+MBEDTLS_PLATFORM_VSNPRINTF_ALT
+MBEDTLS_POLY1305_C
+MBEDTLS_PSA_ACCEL_ALG_ECDH
+MBEDTLS_PSA_ACCEL_ALG_ECDSA
+MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_EXPORT
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_GENERATE
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_IMPORT
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY
+MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING
+MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7
+MBEDTLS_PSA_BUILTIN_ALG_CCM
+MBEDTLS_PSA_BUILTIN_ALG_CCM_STAR_NO_TAG
+MBEDTLS_PSA_BUILTIN_ALG_CFB
+MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305
+MBEDTLS_PSA_BUILTIN_ALG_CMAC
+MBEDTLS_PSA_BUILTIN_ALG_CTR
+MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA
+MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING
+MBEDTLS_PSA_BUILTIN_ALG_ECDH
+MBEDTLS_PSA_BUILTIN_ALG_ECDSA
+MBEDTLS_PSA_BUILTIN_ALG_FFDH
+MBEDTLS_PSA_BUILTIN_ALG_GCM
+MBEDTLS_PSA_BUILTIN_ALG_HKDF
+MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXPAND
+MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXTRACT
+MBEDTLS_PSA_BUILTIN_ALG_HMAC
+MBEDTLS_PSA_BUILTIN_ALG_JPAKE
+MBEDTLS_PSA_BUILTIN_ALG_MD5
+MBEDTLS_PSA_BUILTIN_ALG_OFB
+MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_AES_CMAC_PRF_128
+MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_HMAC
+MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160
+MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP
+MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT
+MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN
+MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS
+MBEDTLS_PSA_BUILTIN_ALG_SHA3_224
+MBEDTLS_PSA_BUILTIN_ALG_SHA3_256
+MBEDTLS_PSA_BUILTIN_ALG_SHA3_384
+MBEDTLS_PSA_BUILTIN_ALG_SHA3_512
+MBEDTLS_PSA_BUILTIN_ALG_SHA_1
+MBEDTLS_PSA_BUILTIN_ALG_SHA_224
+MBEDTLS_PSA_BUILTIN_ALG_SHA_256
+MBEDTLS_PSA_BUILTIN_ALG_SHA_384
+MBEDTLS_PSA_BUILTIN_ALG_SHA_512
+MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER
+MBEDTLS_PSA_BUILTIN_ALG_TLS12_ECJPAKE_TO_PMS
+MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF
+MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192
+MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256
+MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384
+MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512
+MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255
+MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448
+MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192
+MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_224
+MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256
+MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192
+MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_224
+MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256
+MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384
+MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARIA
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_BASIC
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_EXPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_GENERATE
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_IMPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_BASIC
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_DERIVE
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_EXPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_GENERATE
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_IMPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_BASIC
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_EXPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_GENERATE
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_IMPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY
+MBEDTLS_PSA_BUILTIN_PAKE
+MBEDTLS_PSA_CRYPTO_CLIENT
+MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS
+MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS
+MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_WEIERSTRASS_CURVES
+MBEDTLS_PSA_UTIL_HAVE_ECDSA
+MBEDTLS_RIPEMD160_C
+MBEDTLS_RSA_C
+MBEDTLS_SHA1_C
+MBEDTLS_SHA224_C
+MBEDTLS_SHA256_C
+MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
+MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
+MBEDTLS_SHA384_C
+MBEDTLS_SHA3_C
+MBEDTLS_SHA512_C
+MBEDTLS_SSL_HAVE_AEAD
+MBEDTLS_SSL_HAVE_AES
+MBEDTLS_SSL_HAVE_ARIA
+MBEDTLS_SSL_HAVE_CAMELLIA
+MBEDTLS_SSL_HAVE_CBC
+MBEDTLS_SSL_HAVE_CCM
+MBEDTLS_SSL_HAVE_CHACHAPOLY
+MBEDTLS_SSL_HAVE_GCM
+MBEDTLS_SSL_TLS1_2_SOME_ECC
+PSA_CRYPTO_ADJUST_AUTO_ENABLED_H
+PSA_CRYPTO_ADJUST_CONFIG_DEPENDENCIES_H
+PSA_CRYPTO_ADJUST_CONFIG_SYNONYMS_H
+PSA_CRYPTO_ADJUST_KEYPAIR_TYPES_H
+PSA_HAVE_SOFT_BLOCK_CIPHER
+PSA_HAVE_SOFT_BLOCK_MODE
+PSA_HAVE_SOFT_KEY_TYPE_AES
+PSA_HAVE_SOFT_KEY_TYPE_ARIA
+PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA
+PSA_HAVE_SOFT_KEY_TYPE_DES
+PSA_HAVE_SOFT_PBKDF2
+PSA_HAVE_SOFT_PBKDF2_CMAC
+PSA_HAVE_SOFT_PBKDF2_HMAC
+PSA_WANT_ALG_CBC_NO_PADDING
+PSA_WANT_ALG_CBC_PKCS7
+PSA_WANT_ALG_CCM
+PSA_WANT_ALG_CCM_STAR_NO_TAG
+PSA_WANT_ALG_CFB
+PSA_WANT_ALG_CHACHA20_POLY1305
+PSA_WANT_ALG_CMAC
+PSA_WANT_ALG_CTR
+PSA_WANT_ALG_DETERMINISTIC_ECDSA
+PSA_WANT_ALG_ECB_NO_PADDING
+PSA_WANT_ALG_ECDH
+PSA_WANT_ALG_ECDSA
+PSA_WANT_ALG_ECDSA_ANY
+PSA_WANT_ALG_FFDH
+PSA_WANT_ALG_GCM
+PSA_WANT_ALG_HKDF
+PSA_WANT_ALG_HKDF_EXPAND
+PSA_WANT_ALG_HKDF_EXTRACT
+PSA_WANT_ALG_HMAC
+PSA_WANT_ALG_JPAKE
+PSA_WANT_ALG_MD5
+PSA_WANT_ALG_OFB
+PSA_WANT_ALG_RIPEMD160
+PSA_WANT_ALG_RSA_OAEP
+PSA_WANT_ALG_RSA_PKCS1V15_CRYPT
+PSA_WANT_ALG_RSA_PKCS1V15_SIGN
+PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW
+PSA_WANT_ALG_RSA_PSS
+PSA_WANT_ALG_RSA_PSS_ANY_SALT
+PSA_WANT_ALG_SHA3_224
+PSA_WANT_ALG_SHA3_256
+PSA_WANT_ALG_SHA3_384
+PSA_WANT_ALG_SHA3_512
+PSA_WANT_ALG_SHA_1
+PSA_WANT_ALG_SHA_224
+PSA_WANT_ALG_SHA_256
+PSA_WANT_ALG_SHA_384
+PSA_WANT_ALG_SHA_512
+PSA_WANT_ALG_STREAM_CIPHER
+PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS
+PSA_WANT_ALG_TLS12_PRF
+PSA_WANT_ALG_TLS12_PSK_TO_MS
+PSA_WANT_DH_RFC7919_2048
+PSA_WANT_DH_RFC7919_3072
+PSA_WANT_DH_RFC7919_4096
+PSA_WANT_DH_RFC7919_6144
+PSA_WANT_DH_RFC7919_8192
+PSA_WANT_ECC_BRAINPOOL_P_R1_256
+PSA_WANT_ECC_BRAINPOOL_P_R1_384
+PSA_WANT_ECC_BRAINPOOL_P_R1_512
+PSA_WANT_ECC_MONTGOMERY_255
+PSA_WANT_ECC_MONTGOMERY_448
+PSA_WANT_ECC_SECP_K1_192
+PSA_WANT_ECC_SECP_K1_224
+PSA_WANT_ECC_SECP_K1_256
+PSA_WANT_ECC_SECP_R1_192
+PSA_WANT_ECC_SECP_R1_224
+PSA_WANT_ECC_SECP_R1_256
+PSA_WANT_ECC_SECP_R1_384
+PSA_WANT_ECC_SECP_R1_521
+PSA_WANT_KEY_TYPE_AES
+PSA_WANT_KEY_TYPE_ARIA
+PSA_WANT_KEY_TYPE_CAMELLIA
+PSA_WANT_KEY_TYPE_CHACHA20
+PSA_WANT_KEY_TYPE_DERIVE
+PSA_WANT_KEY_TYPE_DES
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY
+PSA_WANT_KEY_TYPE_HMAC
+PSA_WANT_KEY_TYPE_PASSWORD
+PSA_WANT_KEY_TYPE_PASSWORD_HASH
+PSA_WANT_KEY_TYPE_RAW_DATA
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY
diff -Nru mbedtls-3.6.4/framework/history/config-adjust-mbedtls-4.0.txt mbedtls-3.6.5/framework/history/config-adjust-mbedtls-4.0.txt
--- mbedtls-3.6.4/framework/history/config-adjust-mbedtls-4.0.txt	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/history/config-adjust-mbedtls-4.0.txt	2025-10-01 18:29:09.507232400 +0300
@@ -0,0 +1,3 @@
+MBEDTLS_CONFIG_ADJUST_SSL_H
+MBEDTLS_CONFIG_ADJUST_X509_H
+MBEDTLS_SSL_TLS1_2_SOME_ECC
diff -Nru mbedtls-3.6.4/framework/history/config-adjust-tfpsacrypto-1.0.txt mbedtls-3.6.5/framework/history/config-adjust-tfpsacrypto-1.0.txt
--- mbedtls-3.6.4/framework/history/config-adjust-tfpsacrypto-1.0.txt	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/history/config-adjust-tfpsacrypto-1.0.txt	2025-10-01 18:29:09.507637300 +0300
@@ -0,0 +1,318 @@
+MBEDTLS_AES_C
+MBEDTLS_ARIA_C
+MBEDTLS_ASN1_PARSE_C
+MBEDTLS_ASN1_WRITE_C
+MBEDTLS_BIGNUM_C
+MBEDTLS_BLOCK_CIPHER_AES_VIA_LEGACY
+MBEDTLS_BLOCK_CIPHER_AES_VIA_PSA
+MBEDTLS_BLOCK_CIPHER_ARIA_VIA_LEGACY
+MBEDTLS_BLOCK_CIPHER_ARIA_VIA_PSA
+MBEDTLS_BLOCK_CIPHER_C
+MBEDTLS_BLOCK_CIPHER_CAMELLIA_VIA_LEGACY
+MBEDTLS_BLOCK_CIPHER_CAMELLIA_VIA_PSA
+MBEDTLS_BLOCK_CIPHER_CAN_AES
+MBEDTLS_BLOCK_CIPHER_CAN_ARIA
+MBEDTLS_BLOCK_CIPHER_CAN_CAMELLIA
+MBEDTLS_BLOCK_CIPHER_SOME_PSA
+MBEDTLS_CAMELLIA_C
+MBEDTLS_CAN_ECDH
+MBEDTLS_CCM_C
+MBEDTLS_CCM_GCM_CAN_AES
+MBEDTLS_CCM_GCM_CAN_ARIA
+MBEDTLS_CCM_GCM_CAN_CAMELLIA
+MBEDTLS_CHACHA20_C
+MBEDTLS_CHACHAPOLY_C
+MBEDTLS_CIPHER_C
+MBEDTLS_CIPHER_MODE_CBC
+MBEDTLS_CIPHER_MODE_CFB
+MBEDTLS_CIPHER_MODE_CTR
+MBEDTLS_CIPHER_MODE_OFB
+MBEDTLS_CIPHER_MODE_XTS
+MBEDTLS_CIPHER_PADDING_PKCS7
+MBEDTLS_CMAC_C
+MBEDTLS_CONFIG_ADJUST_LEGACY_CRYPTO_H
+MBEDTLS_CONFIG_ADJUST_LEGACY_FROM_PSA_H
+MBEDTLS_CONFIG_ADJUST_PSA_SUPERSET_LEGACY_H
+MBEDTLS_CONFIG_ADJUST_TEST_ACCELERATORS_H
+MBEDTLS_DES_C
+MBEDTLS_ECDH_C
+MBEDTLS_ECDSA_C
+MBEDTLS_ECDSA_DETERMINISTIC
+MBEDTLS_ECJPAKE_C
+MBEDTLS_ECP_C
+MBEDTLS_ECP_DP_BP256R1_ENABLED
+MBEDTLS_ECP_DP_BP384R1_ENABLED
+MBEDTLS_ECP_DP_BP512R1_ENABLED
+MBEDTLS_ECP_DP_CURVE25519_ENABLED
+MBEDTLS_ECP_DP_CURVE448_ENABLED
+MBEDTLS_ECP_DP_SECP192K1_ENABLED
+MBEDTLS_ECP_DP_SECP192R1_ENABLED
+MBEDTLS_ECP_DP_SECP256K1_ENABLED
+MBEDTLS_ECP_DP_SECP256R1_ENABLED
+MBEDTLS_ECP_DP_SECP384R1_ENABLED
+MBEDTLS_ECP_DP_SECP521R1_ENABLED
+MBEDTLS_ECP_LIGHT
+MBEDTLS_ENTROPY_C
+MBEDTLS_ENTROPY_HAVE_SOURCES
+MBEDTLS_ENTROPY_TRUE_SOURCES
+MBEDTLS_GCM_C
+MBEDTLS_GENPRIME
+MBEDTLS_HMAC_DRBG_C
+MBEDTLS_MD5_C
+MBEDTLS_MD_C
+MBEDTLS_MD_LIGHT
+MBEDTLS_MD_MD5_VIA_PSA
+MBEDTLS_MD_RIPEMD160_VIA_PSA
+MBEDTLS_MD_SHA1_VIA_PSA
+MBEDTLS_MD_SHA224_VIA_PSA
+MBEDTLS_MD_SHA256_VIA_PSA
+MBEDTLS_MD_SHA384_VIA_PSA
+MBEDTLS_MD_SHA3_224_VIA_PSA
+MBEDTLS_MD_SHA3_256_VIA_PSA
+MBEDTLS_MD_SHA3_384_VIA_PSA
+MBEDTLS_MD_SHA3_512_VIA_PSA
+MBEDTLS_MD_SHA512_VIA_PSA
+MBEDTLS_MD_SOME_LEGACY
+MBEDTLS_MD_SOME_PSA
+MBEDTLS_PKCS1_V15
+MBEDTLS_PKCS1_V21
+MBEDTLS_PK_PARSE_EC_COMPRESSED
+MBEDTLS_PLATFORM_SNPRINTF_ALT
+MBEDTLS_PLATFORM_VSNPRINTF_ALT
+MBEDTLS_POLY1305_C
+MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING
+MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7
+MBEDTLS_PSA_ACCEL_ALG_CCM
+MBEDTLS_PSA_ACCEL_ALG_CCM_STAR_NO_TAG
+MBEDTLS_PSA_ACCEL_ALG_CFB
+MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305
+MBEDTLS_PSA_ACCEL_ALG_CMAC
+MBEDTLS_PSA_ACCEL_ALG_CTR
+MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA
+MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING
+MBEDTLS_PSA_ACCEL_ALG_ECDH
+MBEDTLS_PSA_ACCEL_ALG_ECDSA
+MBEDTLS_PSA_ACCEL_ALG_FFDH
+MBEDTLS_PSA_ACCEL_ALG_GCM
+MBEDTLS_PSA_ACCEL_ALG_HKDF
+MBEDTLS_PSA_ACCEL_ALG_HKDF_EXPAND
+MBEDTLS_PSA_ACCEL_ALG_HKDF_EXTRACT
+MBEDTLS_PSA_ACCEL_ALG_HMAC
+MBEDTLS_PSA_ACCEL_ALG_JPAKE
+MBEDTLS_PSA_ACCEL_ALG_MD5
+MBEDTLS_PSA_ACCEL_ALG_OFB
+MBEDTLS_PSA_ACCEL_ALG_PBKDF2_AES_CMAC_PRF_128
+MBEDTLS_PSA_ACCEL_ALG_PBKDF2_HMAC
+MBEDTLS_PSA_ACCEL_ALG_RIPEMD160
+MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP
+MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT
+MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN
+MBEDTLS_PSA_ACCEL_ALG_RSA_PSS
+MBEDTLS_PSA_ACCEL_ALG_SHA3_224
+MBEDTLS_PSA_ACCEL_ALG_SHA3_256
+MBEDTLS_PSA_ACCEL_ALG_SHA3_384
+MBEDTLS_PSA_ACCEL_ALG_SHA3_512
+MBEDTLS_PSA_ACCEL_ALG_SHA_1
+MBEDTLS_PSA_ACCEL_ALG_SHA_224
+MBEDTLS_PSA_ACCEL_ALG_SHA_256
+MBEDTLS_PSA_ACCEL_ALG_SHA_384
+MBEDTLS_PSA_ACCEL_ALG_SHA_512
+MBEDTLS_PSA_ACCEL_ALG_STREAM_CIPHER
+MBEDTLS_PSA_ACCEL_ALG_TLS12_ECJPAKE_TO_PMS
+MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF
+MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS
+MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256
+MBEDTLS_PSA_ACCEL_KEY_TYPE_AES
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ARIA
+MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA
+MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20
+MBEDTLS_PSA_ACCEL_KEY_TYPE_DERIVE
+MBEDTLS_PSA_ACCEL_KEY_TYPE_DES
+MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_BASIC
+MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_EXPORT
+MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_GENERATE
+MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_IMPORT
+MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_PUBLIC_KEY
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_EXPORT
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_GENERATE
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_IMPORT
+MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY
+MBEDTLS_PSA_ACCEL_KEY_TYPE_HMAC
+MBEDTLS_PSA_ACCEL_KEY_TYPE_PASSWORD
+MBEDTLS_PSA_ACCEL_KEY_TYPE_PASSWORD_HASH
+MBEDTLS_PSA_ACCEL_KEY_TYPE_RAW_DATA
+MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_BASIC
+MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_EXPORT
+MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_GENERATE
+MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_IMPORT
+MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY
+MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING
+MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7
+MBEDTLS_PSA_BUILTIN_ALG_CCM
+MBEDTLS_PSA_BUILTIN_ALG_CCM_STAR_NO_TAG
+MBEDTLS_PSA_BUILTIN_ALG_CFB
+MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305
+MBEDTLS_PSA_BUILTIN_ALG_CMAC
+MBEDTLS_PSA_BUILTIN_ALG_CTR
+MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA
+MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING
+MBEDTLS_PSA_BUILTIN_ALG_ECDH
+MBEDTLS_PSA_BUILTIN_ALG_ECDSA
+MBEDTLS_PSA_BUILTIN_ALG_FFDH
+MBEDTLS_PSA_BUILTIN_ALG_GCM
+MBEDTLS_PSA_BUILTIN_ALG_HKDF
+MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXPAND
+MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXTRACT
+MBEDTLS_PSA_BUILTIN_ALG_HMAC
+MBEDTLS_PSA_BUILTIN_ALG_JPAKE
+MBEDTLS_PSA_BUILTIN_ALG_MD5
+MBEDTLS_PSA_BUILTIN_ALG_OFB
+MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_AES_CMAC_PRF_128
+MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_HMAC
+MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160
+MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP
+MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT
+MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN
+MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS
+MBEDTLS_PSA_BUILTIN_ALG_SHA3_224
+MBEDTLS_PSA_BUILTIN_ALG_SHA3_256
+MBEDTLS_PSA_BUILTIN_ALG_SHA3_384
+MBEDTLS_PSA_BUILTIN_ALG_SHA3_512
+MBEDTLS_PSA_BUILTIN_ALG_SHA_1
+MBEDTLS_PSA_BUILTIN_ALG_SHA_224
+MBEDTLS_PSA_BUILTIN_ALG_SHA_256
+MBEDTLS_PSA_BUILTIN_ALG_SHA_384
+MBEDTLS_PSA_BUILTIN_ALG_SHA_512
+MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER
+MBEDTLS_PSA_BUILTIN_ALG_TLS12_ECJPAKE_TO_PMS
+MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF
+MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS
+MBEDTLS_PSA_BUILTIN_ALG_XTS
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144
+MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192
+MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256
+MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384
+MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512
+MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255
+MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448
+MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192
+MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256
+MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192
+MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256
+MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384
+MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521
+MBEDTLS_PSA_BUILTIN_GET_ENTROPY_DEFINED
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARIA
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_BASIC
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_EXPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_GENERATE
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_IMPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_BASIC
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_DERIVE
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_EXPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_GENERATE
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_IMPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_BASIC
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_EXPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_GENERATE
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_IMPORT
+MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY
+MBEDTLS_PSA_BUILTIN_PAKE
+MBEDTLS_PSA_CRYPTO_CLIENT
+MBEDTLS_PSA_CRYPTO_RNG_HASH
+MBEDTLS_PSA_CRYPTO_RNG_STRENGTH
+MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS
+MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS
+MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES
+MBEDTLS_PSA_DRIVER_GET_ENTROPY
+MBEDTLS_PSA_DRIVER_GET_ENTROPY_DEFINED
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC
+MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_WEIERSTRASS_CURVES
+MBEDTLS_RIPEMD160_C
+MBEDTLS_RSA_C
+MBEDTLS_SHA1_C
+MBEDTLS_SHA224_C
+MBEDTLS_SHA256_C
+MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
+MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
+MBEDTLS_SHA384_C
+MBEDTLS_SHA512_C
+MBEDTLS_SSL_HAVE_AEAD
+MBEDTLS_USE_PSA_CRYPTO
+PSA_CRYPTO_ADJUST_AUTO_ENABLED_H
+PSA_CRYPTO_ADJUST_CONFIG_DEPENDENCIES_H
+PSA_CRYPTO_ADJUST_CONFIG_DERIVED_H
+PSA_CRYPTO_ADJUST_CONFIG_SYNONYMS_H
+PSA_CRYPTO_ADJUST_KEYPAIR_TYPES_H
+PSA_HAVE_ALG_ECDSA_SIGN
+PSA_HAVE_ALG_ECDSA_VERIFY
+PSA_HAVE_ALG_SOME_ECDSA
+PSA_HAVE_SOFT_BLOCK_CIPHER
+PSA_HAVE_SOFT_BLOCK_MODE
+PSA_HAVE_SOFT_KEY_TYPE_AES
+PSA_HAVE_SOFT_KEY_TYPE_ARIA
+PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA
+PSA_HAVE_SOFT_KEY_TYPE_DES
+PSA_HAVE_SOFT_PBKDF2
+PSA_HAVE_SOFT_PBKDF2_CMAC
+PSA_HAVE_SOFT_PBKDF2_HMAC
+PSA_WANT_ALG_CMAC
+PSA_WANT_ALG_ECB_NO_PADDING
+PSA_WANT_ALG_ECDSA
+PSA_WANT_ALG_ECDSA_ANY
+PSA_WANT_ALG_HMAC
+PSA_WANT_ALG_MD5
+PSA_WANT_ALG_RIPEMD160
+PSA_WANT_ALG_RSA_PKCS1V15_SIGN
+PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW
+PSA_WANT_ALG_RSA_PSS
+PSA_WANT_ALG_RSA_PSS_ANY_SALT
+PSA_WANT_ALG_SHA_1
+PSA_WANT_ALG_SHA_224
+PSA_WANT_ALG_SHA_256
+PSA_WANT_ALG_SHA_384
+PSA_WANT_ALG_SHA_512
+PSA_WANT_ALG_SOME_PAKE
+PSA_WANT_ECC_BRAINPOOL_P_R1_256
+PSA_WANT_ECC_BRAINPOOL_P_R1_384
+PSA_WANT_ECC_BRAINPOOL_P_R1_512
+PSA_WANT_ECC_MONTGOMERY_255
+PSA_WANT_ECC_MONTGOMERY_448
+PSA_WANT_ECC_SECP_K1_192
+PSA_WANT_ECC_SECP_K1_256
+PSA_WANT_ECC_SECP_R1_192
+PSA_WANT_ECC_SECP_R1_256
+PSA_WANT_ECC_SECP_R1_384
+PSA_WANT_ECC_SECP_R1_521
+PSA_WANT_KEY_TYPE_AES
+PSA_WANT_KEY_TYPE_DERIVE
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY
+PSA_WANT_KEY_TYPE_HMAC
+PSA_WANT_KEY_TYPE_PASSWORD
+PSA_WANT_KEY_TYPE_PASSWORD_HASH
+PSA_WANT_KEY_TYPE_RAW_DATA
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY
diff -Nru mbedtls-3.6.4/framework/history/config-options-mbedtls-3.6.txt mbedtls-3.6.5/framework/history/config-options-mbedtls-3.6.txt
--- mbedtls-3.6.4/framework/history/config-options-mbedtls-3.6.txt	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/history/config-options-mbedtls-3.6.txt	2025-10-01 18:29:09.508172500 +0300
@@ -0,0 +1,432 @@
+MBEDTLS_AESCE_C
+MBEDTLS_AESNI_C
+MBEDTLS_AES_ALT
+MBEDTLS_AES_C
+MBEDTLS_AES_DECRYPT_ALT
+MBEDTLS_AES_ENCRYPT_ALT
+MBEDTLS_AES_FEWER_TABLES
+MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+MBEDTLS_AES_ROM_TABLES
+MBEDTLS_AES_SETKEY_DEC_ALT
+MBEDTLS_AES_SETKEY_ENC_ALT
+MBEDTLS_AES_USE_HARDWARE_ONLY
+MBEDTLS_ARIA_ALT
+MBEDTLS_ARIA_C
+MBEDTLS_ASN1_PARSE_C
+MBEDTLS_ASN1_WRITE_C
+MBEDTLS_BASE64_C
+MBEDTLS_BIGNUM_C
+MBEDTLS_BLOCK_CIPHER_NO_DECRYPT
+MBEDTLS_CAMELLIA_ALT
+MBEDTLS_CAMELLIA_C
+MBEDTLS_CAMELLIA_SMALL_MEMORY
+MBEDTLS_CCM_ALT
+MBEDTLS_CCM_C
+MBEDTLS_CHACHA20_ALT
+MBEDTLS_CHACHA20_C
+MBEDTLS_CHACHAPOLY_ALT
+MBEDTLS_CHACHAPOLY_C
+MBEDTLS_CHECK_RETURN
+MBEDTLS_CHECK_RETURN_WARNING
+MBEDTLS_CIPHER_C
+MBEDTLS_CIPHER_MODE_CBC
+MBEDTLS_CIPHER_MODE_CFB
+MBEDTLS_CIPHER_MODE_CTR
+MBEDTLS_CIPHER_MODE_OFB
+MBEDTLS_CIPHER_MODE_XTS
+MBEDTLS_CIPHER_NULL_CIPHER
+MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS
+MBEDTLS_CIPHER_PADDING_PKCS7
+MBEDTLS_CIPHER_PADDING_ZEROS
+MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN
+MBEDTLS_CMAC_ALT
+MBEDTLS_CMAC_C
+MBEDTLS_CONFIG_FILE
+MBEDTLS_CONFIG_VERSION
+MBEDTLS_CTR_DRBG_C
+MBEDTLS_CTR_DRBG_ENTROPY_LEN
+MBEDTLS_CTR_DRBG_MAX_INPUT
+MBEDTLS_CTR_DRBG_MAX_REQUEST
+MBEDTLS_CTR_DRBG_MAX_SEED_INPUT
+MBEDTLS_CTR_DRBG_RESEED_INTERVAL
+MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
+MBEDTLS_DEBUG_C
+MBEDTLS_DEPRECATED_REMOVED
+MBEDTLS_DEPRECATED_WARNING
+MBEDTLS_DES3_CRYPT_ECB_ALT
+MBEDTLS_DES_ALT
+MBEDTLS_DES_C
+MBEDTLS_DES_CRYPT_ECB_ALT
+MBEDTLS_DES_SETKEY_ALT
+MBEDTLS_DHM_ALT
+MBEDTLS_DHM_C
+MBEDTLS_ECDH_C
+MBEDTLS_ECDH_COMPUTE_SHARED_ALT
+MBEDTLS_ECDH_GEN_PUBLIC_ALT
+MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED
+MBEDTLS_ECDSA_C
+MBEDTLS_ECDSA_DETERMINISTIC
+MBEDTLS_ECDSA_GENKEY_ALT
+MBEDTLS_ECDSA_SIGN_ALT
+MBEDTLS_ECDSA_VERIFY_ALT
+MBEDTLS_ECJPAKE_ALT
+MBEDTLS_ECJPAKE_C
+MBEDTLS_ECP_ADD_MIXED_ALT
+MBEDTLS_ECP_ALT
+MBEDTLS_ECP_C
+MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT
+MBEDTLS_ECP_DOUBLE_JAC_ALT
+MBEDTLS_ECP_DP_BP256R1_ENABLED
+MBEDTLS_ECP_DP_BP384R1_ENABLED
+MBEDTLS_ECP_DP_BP512R1_ENABLED
+MBEDTLS_ECP_DP_CURVE25519_ENABLED
+MBEDTLS_ECP_DP_CURVE448_ENABLED
+MBEDTLS_ECP_DP_SECP192K1_ENABLED
+MBEDTLS_ECP_DP_SECP192R1_ENABLED
+MBEDTLS_ECP_DP_SECP224K1_ENABLED
+MBEDTLS_ECP_DP_SECP224R1_ENABLED
+MBEDTLS_ECP_DP_SECP256K1_ENABLED
+MBEDTLS_ECP_DP_SECP256R1_ENABLED
+MBEDTLS_ECP_DP_SECP384R1_ENABLED
+MBEDTLS_ECP_DP_SECP521R1_ENABLED
+MBEDTLS_ECP_FIXED_POINT_OPTIM
+MBEDTLS_ECP_INTERNAL_ALT
+MBEDTLS_ECP_NIST_OPTIM
+MBEDTLS_ECP_NORMALIZE_JAC_ALT
+MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
+MBEDTLS_ECP_NORMALIZE_MXZ_ALT
+MBEDTLS_ECP_NO_FALLBACK
+MBEDTLS_ECP_RANDOMIZE_JAC_ALT
+MBEDTLS_ECP_RANDOMIZE_MXZ_ALT
+MBEDTLS_ECP_RESTARTABLE
+MBEDTLS_ECP_WINDOW_SIZE
+MBEDTLS_ECP_WITH_MPI_UINT
+MBEDTLS_ENTROPY_C
+MBEDTLS_ENTROPY_FORCE_SHA256
+MBEDTLS_ENTROPY_HARDWARE_ALT
+MBEDTLS_ENTROPY_MAX_GATHER
+MBEDTLS_ENTROPY_MAX_SOURCES
+MBEDTLS_ENTROPY_MIN_HARDWARE
+MBEDTLS_ENTROPY_NV_SEED
+MBEDTLS_ERROR_C
+MBEDTLS_ERROR_STRERROR_DUMMY
+MBEDTLS_FS_IO
+MBEDTLS_GCM_ALT
+MBEDTLS_GCM_C
+MBEDTLS_GCM_LARGE_TABLE
+MBEDTLS_GENPRIME
+MBEDTLS_HAVE_ASM
+MBEDTLS_HAVE_SSE2
+MBEDTLS_HAVE_TIME
+MBEDTLS_HAVE_TIME_DATE
+MBEDTLS_HKDF_C
+MBEDTLS_HMAC_DRBG_C
+MBEDTLS_HMAC_DRBG_MAX_INPUT
+MBEDTLS_HMAC_DRBG_MAX_REQUEST
+MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT
+MBEDTLS_HMAC_DRBG_RESEED_INTERVAL
+MBEDTLS_IGNORE_RETURN
+MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
+MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
+MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
+MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
+MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
+MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
+MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
+MBEDTLS_LMS_C
+MBEDTLS_LMS_PRIVATE
+MBEDTLS_MD5_ALT
+MBEDTLS_MD5_C
+MBEDTLS_MD5_PROCESS_ALT
+MBEDTLS_MD_C
+MBEDTLS_MEMORY_ALIGN_MULTIPLE
+MBEDTLS_MEMORY_BACKTRACE
+MBEDTLS_MEMORY_BUFFER_ALLOC_C
+MBEDTLS_MEMORY_DEBUG
+MBEDTLS_MPI_MAX_SIZE
+MBEDTLS_MPI_WINDOW_SIZE
+MBEDTLS_NET_C
+MBEDTLS_NIST_KW_ALT
+MBEDTLS_NIST_KW_C
+MBEDTLS_NO_64BIT_MULTIPLICATION
+MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
+MBEDTLS_NO_PLATFORM_ENTROPY
+MBEDTLS_NO_UDBL_DIVISION
+MBEDTLS_OID_C
+MBEDTLS_PADLOCK_C
+MBEDTLS_PEM_PARSE_C
+MBEDTLS_PEM_WRITE_C
+MBEDTLS_PKCS12_C
+MBEDTLS_PKCS1_V15
+MBEDTLS_PKCS1_V21
+MBEDTLS_PKCS5_C
+MBEDTLS_PKCS7_C
+MBEDTLS_PK_C
+MBEDTLS_PK_PARSE_C
+MBEDTLS_PK_PARSE_EC_COMPRESSED
+MBEDTLS_PK_PARSE_EC_EXTENDED
+MBEDTLS_PK_RSA_ALT_SUPPORT
+MBEDTLS_PK_WRITE_C
+MBEDTLS_PLATFORM_C
+MBEDTLS_PLATFORM_CALLOC_MACRO
+MBEDTLS_PLATFORM_EXIT_ALT
+MBEDTLS_PLATFORM_EXIT_MACRO
+MBEDTLS_PLATFORM_FPRINTF_ALT
+MBEDTLS_PLATFORM_FPRINTF_MACRO
+MBEDTLS_PLATFORM_FREE_MACRO
+MBEDTLS_PLATFORM_GMTIME_R_ALT
+MBEDTLS_PLATFORM_MEMORY
+MBEDTLS_PLATFORM_MS_TIME_ALT
+MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO
+MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
+MBEDTLS_PLATFORM_NV_SEED_ALT
+MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
+MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
+MBEDTLS_PLATFORM_PRINTF_ALT
+MBEDTLS_PLATFORM_PRINTF_MACRO
+MBEDTLS_PLATFORM_SETBUF_ALT
+MBEDTLS_PLATFORM_SETBUF_MACRO
+MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
+MBEDTLS_PLATFORM_SNPRINTF_ALT
+MBEDTLS_PLATFORM_SNPRINTF_MACRO
+MBEDTLS_PLATFORM_STD_CALLOC
+MBEDTLS_PLATFORM_STD_EXIT
+MBEDTLS_PLATFORM_STD_EXIT_FAILURE
+MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
+MBEDTLS_PLATFORM_STD_FPRINTF
+MBEDTLS_PLATFORM_STD_FREE
+MBEDTLS_PLATFORM_STD_MEM_HDR
+MBEDTLS_PLATFORM_STD_NV_SEED_FILE
+MBEDTLS_PLATFORM_STD_NV_SEED_READ
+MBEDTLS_PLATFORM_STD_NV_SEED_WRITE
+MBEDTLS_PLATFORM_STD_PRINTF
+MBEDTLS_PLATFORM_STD_SETBUF
+MBEDTLS_PLATFORM_STD_SNPRINTF
+MBEDTLS_PLATFORM_STD_TIME
+MBEDTLS_PLATFORM_TIME_ALT
+MBEDTLS_PLATFORM_TIME_MACRO
+MBEDTLS_PLATFORM_TIME_TYPE_MACRO
+MBEDTLS_PLATFORM_VSNPRINTF_ALT
+MBEDTLS_PLATFORM_VSNPRINTF_MACRO
+MBEDTLS_PLATFORM_ZEROIZE_ALT
+MBEDTLS_POLY1305_ALT
+MBEDTLS_POLY1305_C
+MBEDTLS_PRINTF_MS_TIME
+MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS
+MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS
+MBEDTLS_PSA_CRYPTO_C
+MBEDTLS_PSA_CRYPTO_CLIENT
+MBEDTLS_PSA_CRYPTO_CONFIG
+MBEDTLS_PSA_CRYPTO_CONFIG_FILE
+MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG
+MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
+MBEDTLS_PSA_CRYPTO_PLATFORM_FILE
+MBEDTLS_PSA_CRYPTO_SE_C
+MBEDTLS_PSA_CRYPTO_SPM
+MBEDTLS_PSA_CRYPTO_STORAGE_C
+MBEDTLS_PSA_CRYPTO_STRUCT_FILE
+MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE
+MBEDTLS_PSA_HMAC_DRBG_MD_TYPE
+MBEDTLS_PSA_INJECT_ENTROPY
+MBEDTLS_PSA_ITS_FILE_C
+MBEDTLS_PSA_KEY_SLOT_COUNT
+MBEDTLS_PSA_KEY_STORE_DYNAMIC
+MBEDTLS_PSA_P256M_DRIVER_ENABLED
+MBEDTLS_PSA_STATIC_KEY_SLOTS
+MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE
+MBEDTLS_PSK_MAX_LEN
+MBEDTLS_RIPEMD160_ALT
+MBEDTLS_RIPEMD160_C
+MBEDTLS_RIPEMD160_PROCESS_ALT
+MBEDTLS_RSA_ALT
+MBEDTLS_RSA_C
+MBEDTLS_RSA_GEN_KEY_MIN_BITS
+MBEDTLS_RSA_NO_CRT
+MBEDTLS_SELF_TEST
+MBEDTLS_SHA1_ALT
+MBEDTLS_SHA1_C
+MBEDTLS_SHA1_PROCESS_ALT
+MBEDTLS_SHA224_C
+MBEDTLS_SHA256_ALT
+MBEDTLS_SHA256_C
+MBEDTLS_SHA256_PROCESS_ALT
+MBEDTLS_SHA256_SMALLER
+MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
+MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
+MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
+MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
+MBEDTLS_SHA384_C
+MBEDTLS_SHA3_C
+MBEDTLS_SHA512_ALT
+MBEDTLS_SHA512_C
+MBEDTLS_SHA512_PROCESS_ALT
+MBEDTLS_SHA512_SMALLER
+MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT
+MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY
+MBEDTLS_SSL_ALL_ALERT_MESSAGES
+MBEDTLS_SSL_ALPN
+MBEDTLS_SSL_ASYNC_PRIVATE
+MBEDTLS_SSL_CACHE_C
+MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES
+MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT
+MBEDTLS_SSL_CID_IN_LEN_MAX
+MBEDTLS_SSL_CID_OUT_LEN_MAX
+MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY
+MBEDTLS_SSL_CIPHERSUITES
+MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
+MBEDTLS_SSL_CLI_C
+MBEDTLS_SSL_CONTEXT_SERIALIZATION
+MBEDTLS_SSL_COOKIE_C
+MBEDTLS_SSL_COOKIE_TIMEOUT
+MBEDTLS_SSL_DEBUG_ALL
+MBEDTLS_SSL_DTLS_ANTI_REPLAY
+MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
+MBEDTLS_SSL_DTLS_CONNECTION_ID
+MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT
+MBEDTLS_SSL_DTLS_HELLO_VERIFY
+MBEDTLS_SSL_DTLS_MAX_BUFFERING
+MBEDTLS_SSL_DTLS_SRTP
+MBEDTLS_SSL_EARLY_DATA
+MBEDTLS_SSL_ENCRYPT_THEN_MAC
+MBEDTLS_SSL_EXTENDED_MASTER_SECRET
+MBEDTLS_SSL_IN_CONTENT_LEN
+MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
+MBEDTLS_SSL_KEYING_MATERIAL_EXPORT
+MBEDTLS_SSL_MAX_EARLY_DATA_SIZE
+MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+MBEDTLS_SSL_OUT_CONTENT_LEN
+MBEDTLS_SSL_PROTO_DTLS
+MBEDTLS_SSL_PROTO_TLS1_2
+MBEDTLS_SSL_PROTO_TLS1_3
+MBEDTLS_SSL_RECORD_SIZE_LIMIT
+MBEDTLS_SSL_RENEGOTIATION
+MBEDTLS_SSL_SERVER_NAME_INDICATION
+MBEDTLS_SSL_SESSION_TICKETS
+MBEDTLS_SSL_SRV_C
+MBEDTLS_SSL_TICKET_C
+MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
+MBEDTLS_SSL_TLS1_3_DEFAULT_NEW_SESSION_TICKETS
+MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
+MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
+MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
+MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE
+MBEDTLS_SSL_TLS1_3_TICKET_NONCE_LENGTH
+MBEDTLS_SSL_TLS_C
+MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
+MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
+MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
+MBEDTLS_TEST_HOOKS
+MBEDTLS_THREADING_ALT
+MBEDTLS_THREADING_C
+MBEDTLS_THREADING_PTHREAD
+MBEDTLS_TIMING_ALT
+MBEDTLS_TIMING_C
+MBEDTLS_USER_CONFIG_FILE
+MBEDTLS_USE_PSA_CRYPTO
+MBEDTLS_VERSION_C
+MBEDTLS_VERSION_FEATURES
+MBEDTLS_X509_CREATE_C
+MBEDTLS_X509_CRL_PARSE_C
+MBEDTLS_X509_CRT_PARSE_C
+MBEDTLS_X509_CRT_WRITE_C
+MBEDTLS_X509_CSR_PARSE_C
+MBEDTLS_X509_CSR_WRITE_C
+MBEDTLS_X509_MAX_FILE_PATH_LEN
+MBEDTLS_X509_MAX_INTERMEDIATE_CA
+MBEDTLS_X509_REMOVE_INFO
+MBEDTLS_X509_RSASSA_PSS_SUPPORT
+MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
+MBEDTLS_X509_USE_C
+PSA_CRYPTO_CONFIG_H
+PSA_WANT_ALG_CBC_NO_PADDING
+PSA_WANT_ALG_CBC_PKCS7
+PSA_WANT_ALG_CCM
+PSA_WANT_ALG_CCM_STAR_NO_TAG
+PSA_WANT_ALG_CFB
+PSA_WANT_ALG_CHACHA20_POLY1305
+PSA_WANT_ALG_CMAC
+PSA_WANT_ALG_CTR
+PSA_WANT_ALG_DETERMINISTIC_ECDSA
+PSA_WANT_ALG_ECB_NO_PADDING
+PSA_WANT_ALG_ECDH
+PSA_WANT_ALG_ECDSA
+PSA_WANT_ALG_FFDH
+PSA_WANT_ALG_GCM
+PSA_WANT_ALG_HKDF
+PSA_WANT_ALG_HKDF_EXPAND
+PSA_WANT_ALG_HKDF_EXTRACT
+PSA_WANT_ALG_HMAC
+PSA_WANT_ALG_JPAKE
+PSA_WANT_ALG_MD5
+PSA_WANT_ALG_OFB
+PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128
+PSA_WANT_ALG_PBKDF2_HMAC
+PSA_WANT_ALG_RIPEMD160
+PSA_WANT_ALG_RSA_OAEP
+PSA_WANT_ALG_RSA_PKCS1V15_CRYPT
+PSA_WANT_ALG_RSA_PKCS1V15_SIGN
+PSA_WANT_ALG_RSA_PSS
+PSA_WANT_ALG_SHA3_224
+PSA_WANT_ALG_SHA3_256
+PSA_WANT_ALG_SHA3_384
+PSA_WANT_ALG_SHA3_512
+PSA_WANT_ALG_SHA_1
+PSA_WANT_ALG_SHA_224
+PSA_WANT_ALG_SHA_256
+PSA_WANT_ALG_SHA_384
+PSA_WANT_ALG_SHA_512
+PSA_WANT_ALG_STREAM_CIPHER
+PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS
+PSA_WANT_ALG_TLS12_PRF
+PSA_WANT_ALG_TLS12_PSK_TO_MS
+PSA_WANT_DH_RFC7919_2048
+PSA_WANT_DH_RFC7919_3072
+PSA_WANT_DH_RFC7919_4096
+PSA_WANT_DH_RFC7919_6144
+PSA_WANT_DH_RFC7919_8192
+PSA_WANT_ECC_BRAINPOOL_P_R1_256
+PSA_WANT_ECC_BRAINPOOL_P_R1_384
+PSA_WANT_ECC_BRAINPOOL_P_R1_512
+PSA_WANT_ECC_MONTGOMERY_255
+PSA_WANT_ECC_MONTGOMERY_448
+PSA_WANT_ECC_SECP_K1_192
+PSA_WANT_ECC_SECP_K1_256
+PSA_WANT_ECC_SECP_R1_192
+PSA_WANT_ECC_SECP_R1_224
+PSA_WANT_ECC_SECP_R1_256
+PSA_WANT_ECC_SECP_R1_384
+PSA_WANT_ECC_SECP_R1_521
+PSA_WANT_KEY_TYPE_AES
+PSA_WANT_KEY_TYPE_ARIA
+PSA_WANT_KEY_TYPE_CAMELLIA
+PSA_WANT_KEY_TYPE_CHACHA20
+PSA_WANT_KEY_TYPE_DERIVE
+PSA_WANT_KEY_TYPE_DES
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY
+PSA_WANT_KEY_TYPE_HMAC
+PSA_WANT_KEY_TYPE_PASSWORD
+PSA_WANT_KEY_TYPE_PASSWORD_HASH
+PSA_WANT_KEY_TYPE_RAW_DATA
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY
diff -Nru mbedtls-3.6.4/framework/history/config-options-mbedtls-4.0.txt mbedtls-3.6.5/framework/history/config-options-mbedtls-4.0.txt
--- mbedtls-3.6.4/framework/history/config-options-mbedtls-4.0.txt	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/history/config-options-mbedtls-4.0.txt	2025-10-01 18:29:09.508531000 +0300
@@ -0,0 +1,78 @@
+MBEDTLS_CONFIG_FILE
+MBEDTLS_CONFIG_VERSION
+MBEDTLS_DEBUG_C
+MBEDTLS_ERROR_C
+MBEDTLS_ERROR_STRERROR_DUMMY
+MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
+MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
+MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+MBEDTLS_NET_C
+MBEDTLS_PKCS7_C
+MBEDTLS_PSK_MAX_LEN
+MBEDTLS_SSL_ALL_ALERT_MESSAGES
+MBEDTLS_SSL_ALPN
+MBEDTLS_SSL_ASYNC_PRIVATE
+MBEDTLS_SSL_CACHE_C
+MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES
+MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT
+MBEDTLS_SSL_CID_IN_LEN_MAX
+MBEDTLS_SSL_CID_OUT_LEN_MAX
+MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY
+MBEDTLS_SSL_CIPHERSUITES
+MBEDTLS_SSL_CLI_C
+MBEDTLS_SSL_CONTEXT_SERIALIZATION
+MBEDTLS_SSL_COOKIE_C
+MBEDTLS_SSL_COOKIE_TIMEOUT
+MBEDTLS_SSL_DEBUG_ALL
+MBEDTLS_SSL_DTLS_ANTI_REPLAY
+MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
+MBEDTLS_SSL_DTLS_CONNECTION_ID
+MBEDTLS_SSL_DTLS_HELLO_VERIFY
+MBEDTLS_SSL_DTLS_MAX_BUFFERING
+MBEDTLS_SSL_DTLS_SRTP
+MBEDTLS_SSL_EARLY_DATA
+MBEDTLS_SSL_ENCRYPT_THEN_MAC
+MBEDTLS_SSL_EXTENDED_MASTER_SECRET
+MBEDTLS_SSL_IN_CONTENT_LEN
+MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
+MBEDTLS_SSL_KEYING_MATERIAL_EXPORT
+MBEDTLS_SSL_MAX_EARLY_DATA_SIZE
+MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+MBEDTLS_SSL_OUT_CONTENT_LEN
+MBEDTLS_SSL_PROTO_DTLS
+MBEDTLS_SSL_PROTO_TLS1_2
+MBEDTLS_SSL_PROTO_TLS1_3
+MBEDTLS_SSL_RECORD_SIZE_LIMIT
+MBEDTLS_SSL_RENEGOTIATION
+MBEDTLS_SSL_SERVER_NAME_INDICATION
+MBEDTLS_SSL_SESSION_TICKETS
+MBEDTLS_SSL_SRV_C
+MBEDTLS_SSL_TICKET_C
+MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
+MBEDTLS_SSL_TLS1_3_DEFAULT_NEW_SESSION_TICKETS
+MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
+MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
+MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
+MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE
+MBEDTLS_SSL_TLS1_3_TICKET_NONCE_LENGTH
+MBEDTLS_SSL_TLS_C
+MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
+MBEDTLS_TIMING_ALT
+MBEDTLS_TIMING_C
+MBEDTLS_USER_CONFIG_FILE
+MBEDTLS_VERSION_C
+MBEDTLS_VERSION_FEATURES
+MBEDTLS_X509_CREATE_C
+MBEDTLS_X509_CRL_PARSE_C
+MBEDTLS_X509_CRT_PARSE_C
+MBEDTLS_X509_CRT_WRITE_C
+MBEDTLS_X509_CSR_PARSE_C
+MBEDTLS_X509_CSR_WRITE_C
+MBEDTLS_X509_MAX_FILE_PATH_LEN
+MBEDTLS_X509_MAX_INTERMEDIATE_CA
+MBEDTLS_X509_REMOVE_INFO
+MBEDTLS_X509_RSASSA_PSS_SUPPORT
+MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
+MBEDTLS_X509_USE_C
diff -Nru mbedtls-3.6.4/framework/history/config-options-tfpsacrypto-1.0.txt mbedtls-3.6.5/framework/history/config-options-tfpsacrypto-1.0.txt
--- mbedtls-3.6.4/framework/history/config-options-tfpsacrypto-1.0.txt	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/history/config-options-tfpsacrypto-1.0.txt	2025-10-01 18:29:09.509018000 +0300
@@ -0,0 +1,242 @@
+MBEDTLS_AESCE_C
+MBEDTLS_AESNI_C
+MBEDTLS_AES_FEWER_TABLES
+MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+MBEDTLS_AES_ROM_TABLES
+MBEDTLS_AES_USE_HARDWARE_ONLY
+MBEDTLS_ASN1_PARSE_C
+MBEDTLS_ASN1_WRITE_C
+MBEDTLS_BASE64_C
+MBEDTLS_BIGNUM_C
+MBEDTLS_BLOCK_CIPHER_NO_DECRYPT
+MBEDTLS_CAMELLIA_SMALL_MEMORY
+MBEDTLS_CHECK_RETURN
+MBEDTLS_CHECK_RETURN_WARNING
+MBEDTLS_CIPHER_NULL_CIPHER
+MBEDTLS_CTR_DRBG_C
+MBEDTLS_DEPRECATED_REMOVED
+MBEDTLS_DEPRECATED_WARNING
+MBEDTLS_ECDH_C
+MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED
+MBEDTLS_ECDSA_C
+MBEDTLS_ECJPAKE_C
+MBEDTLS_ECP_C
+MBEDTLS_ECP_DP_BP256R1_ENABLED
+MBEDTLS_ECP_DP_BP384R1_ENABLED
+MBEDTLS_ECP_DP_BP512R1_ENABLED
+MBEDTLS_ECP_DP_CURVE25519_ENABLED
+MBEDTLS_ECP_DP_CURVE448_ENABLED
+MBEDTLS_ECP_DP_SECP192K1_ENABLED
+MBEDTLS_ECP_DP_SECP192R1_ENABLED
+MBEDTLS_ECP_DP_SECP256K1_ENABLED
+MBEDTLS_ECP_DP_SECP256R1_ENABLED
+MBEDTLS_ECP_DP_SECP384R1_ENABLED
+MBEDTLS_ECP_DP_SECP521R1_ENABLED
+MBEDTLS_ECP_FIXED_POINT_OPTIM
+MBEDTLS_ECP_NIST_OPTIM
+MBEDTLS_ECP_RESTARTABLE
+MBEDTLS_ECP_WINDOW_SIZE
+MBEDTLS_ECP_WITH_MPI_UINT
+MBEDTLS_ENTROPY_NO_SOURCES_OK
+MBEDTLS_ENTROPY_NV_SEED
+MBEDTLS_FS_IO
+MBEDTLS_GCM_LARGE_TABLE
+MBEDTLS_HAVE_ASM
+MBEDTLS_HAVE_SSE2
+MBEDTLS_HAVE_TIME
+MBEDTLS_HAVE_TIME_DATE
+MBEDTLS_HMAC_DRBG_C
+MBEDTLS_IGNORE_RETURN
+MBEDTLS_LMS_C
+MBEDTLS_LMS_PRIVATE
+MBEDTLS_MD_C
+MBEDTLS_MEMORY_ALIGN_MULTIPLE
+MBEDTLS_MEMORY_BACKTRACE
+MBEDTLS_MEMORY_BUFFER_ALLOC_C
+MBEDTLS_MEMORY_DEBUG
+MBEDTLS_MPI_MAX_SIZE
+MBEDTLS_MPI_WINDOW_SIZE
+MBEDTLS_NIST_KW_C
+MBEDTLS_NO_64BIT_MULTIPLICATION
+MBEDTLS_NO_UDBL_DIVISION
+MBEDTLS_PEM_PARSE_C
+MBEDTLS_PEM_WRITE_C
+MBEDTLS_PKCS5_C
+MBEDTLS_PK_C
+MBEDTLS_PK_PARSE_C
+MBEDTLS_PK_PARSE_EC_COMPRESSED
+MBEDTLS_PK_PARSE_EC_EXTENDED
+MBEDTLS_PK_WRITE_C
+MBEDTLS_PLATFORM_C
+MBEDTLS_PLATFORM_CALLOC_MACRO
+MBEDTLS_PLATFORM_EXIT_ALT
+MBEDTLS_PLATFORM_EXIT_MACRO
+MBEDTLS_PLATFORM_FPRINTF_ALT
+MBEDTLS_PLATFORM_FPRINTF_MACRO
+MBEDTLS_PLATFORM_FREE_MACRO
+MBEDTLS_PLATFORM_GET_ENTROPY_ALT
+MBEDTLS_PLATFORM_GMTIME_R_ALT
+MBEDTLS_PLATFORM_MEMORY
+MBEDTLS_PLATFORM_MS_TIME_ALT
+MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO
+MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
+MBEDTLS_PLATFORM_NV_SEED_ALT
+MBEDTLS_PLATFORM_NV_SEED_READ_MACRO
+MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO
+MBEDTLS_PLATFORM_PRINTF_ALT
+MBEDTLS_PLATFORM_PRINTF_MACRO
+MBEDTLS_PLATFORM_SETBUF_ALT
+MBEDTLS_PLATFORM_SETBUF_MACRO
+MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
+MBEDTLS_PLATFORM_SNPRINTF_ALT
+MBEDTLS_PLATFORM_SNPRINTF_MACRO
+MBEDTLS_PLATFORM_STD_CALLOC
+MBEDTLS_PLATFORM_STD_EXIT
+MBEDTLS_PLATFORM_STD_EXIT_FAILURE
+MBEDTLS_PLATFORM_STD_EXIT_SUCCESS
+MBEDTLS_PLATFORM_STD_FPRINTF
+MBEDTLS_PLATFORM_STD_FREE
+MBEDTLS_PLATFORM_STD_MEM_HDR
+MBEDTLS_PLATFORM_STD_NV_SEED_FILE
+MBEDTLS_PLATFORM_STD_NV_SEED_READ
+MBEDTLS_PLATFORM_STD_NV_SEED_WRITE
+MBEDTLS_PLATFORM_STD_PRINTF
+MBEDTLS_PLATFORM_STD_SETBUF
+MBEDTLS_PLATFORM_STD_SNPRINTF
+MBEDTLS_PLATFORM_STD_TIME
+MBEDTLS_PLATFORM_TIME_ALT
+MBEDTLS_PLATFORM_TIME_MACRO
+MBEDTLS_PLATFORM_TIME_TYPE_MACRO
+MBEDTLS_PLATFORM_VSNPRINTF_ALT
+MBEDTLS_PLATFORM_VSNPRINTF_MACRO
+MBEDTLS_PLATFORM_ZEROIZE_ALT
+MBEDTLS_PRINTF_MS_TIME
+MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS
+MBEDTLS_PSA_BUILTIN_GET_ENTROPY
+MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS
+MBEDTLS_PSA_CRYPTO_C
+MBEDTLS_PSA_CRYPTO_CLIENT
+MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG
+MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
+MBEDTLS_PSA_CRYPTO_PLATFORM_FILE
+MBEDTLS_PSA_CRYPTO_RNG_HASH
+MBEDTLS_PSA_CRYPTO_RNG_STRENGTH
+MBEDTLS_PSA_CRYPTO_SPM
+MBEDTLS_PSA_CRYPTO_STORAGE_C
+MBEDTLS_PSA_CRYPTO_STRUCT_FILE
+MBEDTLS_PSA_DRIVER_GET_ENTROPY
+MBEDTLS_PSA_ITS_FILE_C
+MBEDTLS_PSA_KEY_SLOT_COUNT
+MBEDTLS_PSA_KEY_STORE_DYNAMIC
+MBEDTLS_PSA_P256M_DRIVER_ENABLED
+MBEDTLS_PSA_RNG_RESEED_INTERVAL
+MBEDTLS_PSA_STATIC_KEY_SLOTS
+MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE
+MBEDTLS_RSA_GEN_KEY_MIN_BITS
+MBEDTLS_RSA_NO_CRT
+MBEDTLS_SELF_TEST
+MBEDTLS_SHA256_SMALLER
+MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
+MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
+MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
+MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
+MBEDTLS_SHA512_SMALLER
+MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT
+MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY
+MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
+MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
+MBEDTLS_TEST_HOOKS
+MBEDTLS_THREADING_ALT
+MBEDTLS_THREADING_C
+MBEDTLS_THREADING_PTHREAD
+PSA_CRYPTO_CONFIG_H
+PSA_WANT_ALG_CBC_NO_PADDING
+PSA_WANT_ALG_CBC_PKCS7
+PSA_WANT_ALG_CCM
+PSA_WANT_ALG_CCM_STAR_NO_TAG
+PSA_WANT_ALG_CFB
+PSA_WANT_ALG_CHACHA20_POLY1305
+PSA_WANT_ALG_CMAC
+PSA_WANT_ALG_CTR
+PSA_WANT_ALG_DETERMINISTIC_ECDSA
+PSA_WANT_ALG_ECB_NO_PADDING
+PSA_WANT_ALG_ECDH
+PSA_WANT_ALG_ECDSA
+PSA_WANT_ALG_FFDH
+PSA_WANT_ALG_GCM
+PSA_WANT_ALG_HKDF
+PSA_WANT_ALG_HKDF_EXPAND
+PSA_WANT_ALG_HKDF_EXTRACT
+PSA_WANT_ALG_HMAC
+PSA_WANT_ALG_JPAKE
+PSA_WANT_ALG_MD5
+PSA_WANT_ALG_OFB
+PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128
+PSA_WANT_ALG_PBKDF2_HMAC
+PSA_WANT_ALG_RIPEMD160
+PSA_WANT_ALG_RSA_OAEP
+PSA_WANT_ALG_RSA_PKCS1V15_CRYPT
+PSA_WANT_ALG_RSA_PKCS1V15_SIGN
+PSA_WANT_ALG_RSA_PSS
+PSA_WANT_ALG_SHA3_224
+PSA_WANT_ALG_SHA3_256
+PSA_WANT_ALG_SHA3_384
+PSA_WANT_ALG_SHA3_512
+PSA_WANT_ALG_SHA_1
+PSA_WANT_ALG_SHA_224
+PSA_WANT_ALG_SHA_256
+PSA_WANT_ALG_SHA_384
+PSA_WANT_ALG_SHA_512
+PSA_WANT_ALG_STREAM_CIPHER
+PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS
+PSA_WANT_ALG_TLS12_PRF
+PSA_WANT_ALG_TLS12_PSK_TO_MS
+PSA_WANT_DH_RFC7919_2048
+PSA_WANT_DH_RFC7919_3072
+PSA_WANT_DH_RFC7919_4096
+PSA_WANT_DH_RFC7919_6144
+PSA_WANT_DH_RFC7919_8192
+PSA_WANT_ECC_BRAINPOOL_P_R1_256
+PSA_WANT_ECC_BRAINPOOL_P_R1_384
+PSA_WANT_ECC_BRAINPOOL_P_R1_512
+PSA_WANT_ECC_MONTGOMERY_255
+PSA_WANT_ECC_MONTGOMERY_448
+PSA_WANT_ECC_SECP_K1_192
+PSA_WANT_ECC_SECP_K1_256
+PSA_WANT_ECC_SECP_R1_192
+PSA_WANT_ECC_SECP_R1_256
+PSA_WANT_ECC_SECP_R1_384
+PSA_WANT_ECC_SECP_R1_521
+PSA_WANT_KEY_TYPE_AES
+PSA_WANT_KEY_TYPE_ARIA
+PSA_WANT_KEY_TYPE_CAMELLIA
+PSA_WANT_KEY_TYPE_CHACHA20
+PSA_WANT_KEY_TYPE_DERIVE
+PSA_WANT_KEY_TYPE_DES
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE
+PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE
+PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY
+PSA_WANT_KEY_TYPE_HMAC
+PSA_WANT_KEY_TYPE_PASSWORD
+PSA_WANT_KEY_TYPE_PASSWORD_HASH
+PSA_WANT_KEY_TYPE_RAW_DATA
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
+PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT
+PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY
+TF_PSA_CRYPTO_CONFIG_FILE
+TF_PSA_CRYPTO_USER_CONFIG_FILE
+TF_PSA_CRYPTO_VERSION
diff -Nru mbedtls-3.6.4/framework/scripts/all-core.sh mbedtls-3.6.5/framework/scripts/all-core.sh
--- mbedtls-3.6.4/framework/scripts/all-core.sh	2025-06-30 09:25:21.447646000 +0300
+++ mbedtls-3.6.5/framework/scripts/all-core.sh	2025-10-01 18:24:20.268384500 +0300
@@ -188,7 +188,10 @@
     files_to_back_up="$config_files"
     if in_mbedtls_repo; then
         # Files clobbered by in-tree cmake
-        files_to_back_up="$files_to_back_up Makefile library/Makefile programs/Makefile tests/Makefile programs/fuzz/Makefile"
+        if [ -e Makefile ]; then
+            files_to_back_up="$files_to_back_up Makefile"
+        fi
+        files_to_back_up="$files_to_back_up library/Makefile programs/Makefile tests/Makefile programs/fuzz/Makefile"
     fi
 
     append_outcome=0
@@ -228,6 +231,12 @@
     : ${CLANG_EARLIEST:="clang-earliest"}
     : ${GCC_LATEST:="gcc-latest"}
     : ${GCC_EARLIEST:="gcc-earliest"}
+    : ${MAKE_COMMAND:="make"}
+
+    if [ -e "scripts/legacy.make" ]; then
+        MAKE_COMMAND="${MAKE_COMMAND} -f ./scripts/legacy.make"
+    fi
+
     # if MAKEFLAGS is not set add the -j option to speed up invocations of make
     if [ -z "${MAKEFLAGS+set}" ]; then
         export MAKEFLAGS="-j$(all_sh_nproc)"
@@ -366,7 +375,7 @@
 cleanup()
 {
     if in_mbedtls_repo; then
-        command make clean
+        command $MAKE_COMMAND clean
     fi
 
     # Remove CMake artefacts
@@ -877,11 +886,11 @@
 pre_generate_files() {
     # since make doesn't have proper dependencies, remove any possibly outdate
     # file that might be around before generating fresh ones
-    make neat
+    $MAKE_COMMAND neat
     if [ $QUIET -eq 1 ]; then
-        make generated_files >/dev/null
+        $MAKE_COMMAND generated_files >/dev/null
     else
-        make generated_files
+        $MAKE_COMMAND generated_files
     fi
 }
 
@@ -920,7 +929,7 @@
     # Expected error: '! grep -q . tests/scripts/all.sh -> 1'
     not grep -q . "$0"
     # Expected error: 'make unknown_target -> 2'
-    make unknown_target
+    $MAKE_COMMAND unknown_target
     false "this should not be executed"
 }
 
diff -Nru mbedtls-3.6.4/framework/scripts/all-helpers.sh mbedtls-3.6.5/framework/scripts/all-helpers.sh
--- mbedtls-3.6.4/framework/scripts/all-helpers.sh	2025-06-30 09:25:21.447829700 +0300
+++ mbedtls-3.6.5/framework/scripts/all-helpers.sh	2025-10-01 18:24:20.268568300 +0300
@@ -122,7 +122,7 @@
     # we need flags both with and without the LIBTESTDRIVER1_ prefix
     loc_accel_flags=$( echo "$loc_accel_list" | sed 's/[^ ]* */-DLIBTESTDRIVER1_MBEDTLS_PSA_ACCEL_&/g' )
     loc_accel_flags="$loc_accel_flags $( echo "$loc_accel_list" | sed 's/[^ ]* */-DMBEDTLS_PSA_ACCEL_&/g' )"
-    make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS -I../tests/include -I../framework/tests/include -I../tests -I../../tests -DPSA_CRYPTO_DRIVER_TEST -DMBEDTLS_TEST_LIBTESTDRIVER1 $loc_accel_flags" LDFLAGS="-ltestdriver1 $ASAN_CFLAGS" "$@"
+    $MAKE_COMMAND CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS -I../tests/include -I../framework/tests/include -I../tests -I../../tests -DPSA_CRYPTO_DRIVER_TEST -DMBEDTLS_TEST_LIBTESTDRIVER1 $loc_accel_flags" LDFLAGS="-ltestdriver1 $ASAN_CFLAGS" "$@"
 }
 
 ################################################################
@@ -139,6 +139,8 @@
         scripts/config.py full
         scripts/config.py unset MBEDTLS_PSA_CRYPTO_C
         scripts/config.py unset MBEDTLS_PSA_CRYPTO_STORAGE_C
+        scripts/config.py unset MBEDTLS_ENTROPY_NV_SEED
+        scripts/config.py unset MBEDTLS_PLATFORM_NV_SEED_ALT
         if in_mbedtls_repo && in_3_6_branch; then
             # Dynamic secure element support is a deprecated feature and it is not
             # available when CRYPTO_C and PSA_CRYPTO_STORAGE_C are disabled.
@@ -147,9 +149,13 @@
         # Disable potentially problematic features
         scripts/config.py unset MBEDTLS_X509_RSASSA_PSS_SUPPORT
         scripts/config.py unset MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
-        scripts/config.py unset MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
         scripts/config.py unset MBEDTLS_ECP_RESTARTABLE
         scripts/config.py unset MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
+        scripts/config.py unset MBEDTLS_PK_PARSE_EC_EXTENDED
+        scripts/config.py unset MBEDTLS_PK_PARSE_EC_COMPRESSED
+
+        scripts/config.py unset-all MBEDTLS_SHA256_USE_.*_CRYPTO_
+        scripts/config.py unset-all MBEDTLS_SHA512_USE_.*_CRYPTO_
     else
         scripts/config.py crypto_full
         scripts/config.py unset MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS
@@ -259,9 +265,9 @@
 
     msg "build: ARM Compiler 6 ($FLAGS)"
 
-    make clean
+    $MAKE_COMMAND clean
     ARM_TOOL_VARIANT="ult" CC="$ARMC6_CC" AR="$ARMC6_AR" CFLAGS="$FLAGS" \
-                        WARNING_CFLAGS='-Werror -xc -std=c99' make lib
+                        WARNING_CFLAGS='-Werror -xc -std=c99' $MAKE_COMMAND lib
 
     msg "size: ARM Compiler 6 ($FLAGS)"
     "$ARMC6_FROMELF" -z library/*.o
diff -Nru mbedtls-3.6.4/framework/scripts/apidoc_full.sh mbedtls-3.6.5/framework/scripts/apidoc_full.sh
--- mbedtls-3.6.4/framework/scripts/apidoc_full.sh	2025-06-30 09:25:21.447934200 +0300
+++ mbedtls-3.6.5/framework/scripts/apidoc_full.sh	2025-10-01 18:24:20.268676000 +0300
@@ -22,6 +22,8 @@
     if ! in_3_6_branch; then
         CRYPTO_CONFIG_H='tf-psa-crypto/include/psa/crypto_config.h'
     fi
+    CONFIG_BAK=${CONFIG_H}.bak
+    cp -p $CONFIG_H $CONFIG_BAK
 fi
 
 if in_tf_psa_crypto_repo; then
@@ -37,21 +39,29 @@
     cp -p $CRYPTO_CONFIG_H $CRYPTO_CONFIG_BAK
 fi
 
-if in_mbedtls_repo; then
-    CONFIG_BAK=${CONFIG_H}.bak
-    cp -p $CONFIG_H $CONFIG_BAK
+if in_mbedtls_repo && in_3_6_branch; then
     scripts/config.py realfull
     make apidoc
-    mv $CONFIG_BAK $CONFIG_H
-elif in_tf_psa_crypto_repo; then
+else
     scripts/config.py realfull
-    TF_PSA_CRYPTO_ROOT_DIR=$PWD
+    ROOT_DIR=$PWD
     rm -rf doxygen/build-apidoc-full
     mkdir doxygen/build-apidoc-full
     cd doxygen/build-apidoc-full
-    cmake -DCMAKE_BUILD_TYPE:String=Check -DGEN_FILES=ON $TF_PSA_CRYPTO_ROOT_DIR
-    make tfpsacrypto-apidoc
-    cd $TF_PSA_CRYPTO_ROOT_DIR
+    cmake -DCMAKE_BUILD_TYPE:String=Check -DGEN_FILES=ON $ROOT_DIR
+    if in_mbedtls_repo; then
+        cmake --build . --target mbedtls-apidoc
+    else
+        cmake --build . --target tfpsacrypto-apidoc
+    fi
+    cd $ROOT_DIR
+    # The documentation is built in the source tree thus we can delete the
+    # build tree.
+    rm -rf doxygen/build-apidoc-full
+fi
+
+if in_mbedtls_repo; then
+    mv $CONFIG_BAK $CONFIG_H
 fi
 
 if in_tf_psa_crypto_repo || (in_mbedtls_repo && ! in_3_6_branch); then
diff -Nru mbedtls-3.6.4/framework/scripts/check_files.py mbedtls-3.6.5/framework/scripts/check_files.py
--- mbedtls-3.6.4/framework/scripts/check_files.py	2025-06-30 09:25:21.448475100 +0300
+++ mbedtls-3.6.5/framework/scripts/check_files.py	2025-10-01 18:30:17.254963600 +0300
@@ -310,7 +310,7 @@
     """Track lines with trailing whitespace."""
 
     heading = "Trailing whitespace:"
-    suffix_exemptions = frozenset([".dsp", ".md"])
+    suffix_exemptions = frozenset([".diff", ".dsp", ".md", ".patch"])
 
     def issue_with_line(self, line, _filepath, _line_number):
         return line.rstrip(b"\r\n") != line.rstrip()
diff -Nru mbedtls-3.6.4/framework/scripts/check_names.py mbedtls-3.6.5/framework/scripts/check_names.py
--- mbedtls-3.6.4/framework/scripts/check_names.py	2025-06-30 09:25:21.448639000 +0300
+++ mbedtls-3.6.5/framework/scripts/check_names.py	2025-10-01 18:24:20.269275400 +0300
@@ -53,10 +53,10 @@
 
 # Naming patterns to check against. These are defined outside the NameCheck
 # class for ease of modification.
-PUBLIC_MACRO_PATTERN = r"^(MBEDTLS|PSA|TF_PSA)_[0-9A-Z_]*[0-9A-Z]$"
+PUBLIC_MACRO_PATTERN = r"^(MBEDTLS|PSA|TF_PSA_CRYPTO)_[0-9A-Z_]*[0-9A-Z]$"
 INTERNAL_MACRO_PATTERN = r"^[0-9A-Za-z_]*[0-9A-Z]$"
 CONSTANTS_PATTERN = PUBLIC_MACRO_PATTERN
-IDENTIFIER_PATTERN = r"^(mbedtls|psa)_[0-9a-z_]*[0-9a-z]$"
+IDENTIFIER_PATTERN = r"^(mbedtls|psa|tf_psa_crypto)_[0-9a-z_]*[0-9a-z]$"
 
 class Match(): # pylint: disable=too-few-public-methods
     """
@@ -703,6 +703,8 @@
             "include/tf-psa-crypto/*.h",
             "include/mbedtls/*.h",
             "drivers/builtin/include/mbedtls/*.h",
+            "include/mbedtls/private/*.h",
+            "drivers/builtin/include/mbedtls/private/*.h",
             "drivers/everest/include/everest/everest.h",
             "drivers/everest/include/everest/x25519.h",
             "drivers/everest/include/tf-psa-crypto/private/everest/everest.h",
@@ -722,6 +724,8 @@
             "include/tf-psa-crypto/*.h",
             "include/mbedtls/*.h",
             "drivers/builtin/include/mbedtls/*.h",
+            "include/mbedtls/private/*.h",
+            "drivers/builtin/include/mbedtls/private/*.h",
             "core/*.h",
             "drivers/builtin/src/*.h",
             "core/*.c",
@@ -736,6 +740,8 @@
             "include/tf-psa-crypto/*.h",
             "include/mbedtls/*.h",
             "drivers/builtin/include/mbedtls/*.h",
+            "include/mbedtls/private/*.h",
+            "drivers/builtin/include/mbedtls/private/*.h",
             "core/*.h",
             "drivers/builtin/src/*.h",
             "drivers/everest/include/everest/everest.h",
@@ -748,6 +754,8 @@
             "include/tf-psa-crypto/*.h",
             "include/mbedtls/*.h",
             "drivers/builtin/include/mbedtls/*.h",
+            "include/mbedtls/private/*.h",
+            "drivers/builtin/include/mbedtls/private/*.h",
             "core/*.h",
             "drivers/builtin/src/*.h",
             "drivers/everest/include/everest/everest.h",
@@ -802,7 +810,7 @@
                 check=True
             )
             subprocess.run(
-                ["make"],
+                ["cmake", "--build", "."],
                 env=my_environment,
                 universal_newlines=True,
                 stdout=subprocess.PIPE,
@@ -812,9 +820,6 @@
 
             # Perform object file analysis using nm
             symbols = self.parse_symbols_from_nm([
-                build_dir + "/drivers/builtin/libbuiltin.a",
-                build_dir + "/drivers/p256-m/libp256m.a",
-                build_dir + "/drivers/everest/libeverest.a",
                 build_dir + "/core/libtfpsacrypto.a"
             ])
 
@@ -898,6 +903,7 @@
             all_macros = {"public": [], "internal": [], "private":[]}
             all_macros["public"] = self.parse_macros([
                 "include/mbedtls/*.h",
+                "include/mbedtls/private/*.h",
             ])
             all_macros["internal"] = self.parse_macros([
                 "library/*.h",
@@ -908,15 +914,18 @@
             ])
             enum_consts = self.parse_enum_consts([
                 "include/mbedtls/*.h",
+                "include/mbedtls/private/*.h",
                 "library/*.h",
                 "library/*.c",
             ])
             identifiers, excluded_identifiers = self.parse_identifiers([
                 "include/mbedtls/*.h",
+                "include/mbedtls/private/*.h",
                 "library/*.h",
             ])
             mbed_psa_words = self.parse_mbed_psa_words([
                 "include/mbedtls/*.h",
+                "include/mbedtls/private/*.h",
                 "library/*.h",
                 "library/*.c",
             ])
@@ -962,15 +971,17 @@
             )
             my_environment = os.environ.copy()
             my_environment["CFLAGS"] = "-fno-asynchronous-unwind-tables"
-            # Run make clean separately to lib to prevent unwanted behavior when
-            # make is invoked with parallelism.
+
+            source_dir = os.getcwd()
+            build_dir = tempfile.mkdtemp()
+            os.chdir(build_dir)
             subprocess.run(
-                ["make", "clean"],
+                ["cmake", "-DGEN_FILES=ON", source_dir],
                 universal_newlines=True,
                 check=True
             )
             subprocess.run(
-                ["make", "lib"],
+                ["cmake", "--build", "."],
                 env=my_environment,
                 universal_newlines=True,
                 stdout=subprocess.PIPE,
@@ -979,17 +990,21 @@
             )
 
             # Perform object file analysis using nm
-            symbols = self.parse_symbols_from_nm([
-                "library/libmbedcrypto.a",
-                "library/libmbedtls.a",
-                "library/libmbedx509.a"
-            ])
+            if build_tree.is_mbedtls_3_6():
+                symbols = self.parse_symbols_from_nm([
+                    "library/libmbedcrypto.a",
+                    "library/libmbedtls.a",
+                    "library/libmbedx509.a"
+                ])
+            else:
+                symbols = self.parse_symbols_from_nm([
+                    "library/libtfpsacrypto.a",
+                    "library/libmbedtls.a",
+                    "library/libmbedx509.a"
+                ])
 
-            subprocess.run(
-                ["make", "clean"],
-                universal_newlines=True,
-                check=True
-            )
+            os.chdir(source_dir)
+            shutil.rmtree(build_dir)
         except subprocess.CalledProcessError as error:
             self.log.debug(error.output)
             raise error
diff -Nru mbedtls-3.6.4/framework/scripts/check-python-files.sh mbedtls-3.6.5/framework/scripts/check-python-files.sh
--- mbedtls-3.6.4/framework/scripts/check-python-files.sh	2025-06-30 09:25:21.448300600 +0300
+++ mbedtls-3.6.5/framework/scripts/check-python-files.sh	2025-10-01 18:30:17.253482800 +0300
@@ -62,7 +62,14 @@
 
 echo
 echo 'Running mypy ...'
-$PYTHON -m mypy framework/scripts/*.py framework/scripts/mbedtls_framework/*.py scripts/*.py tests/scripts/*.py ||
-  ret=1
+$PYTHON -m mypy framework/scripts/*.py framework/scripts/mbedtls_framework/*.py || {
+    echo >&2 "mypy reported errors in the framework"
+    ret=1
+}
+
+$PYTHON -m mypy scripts/*.py tests/scripts/*.py || {
+    echo >&2 "pylint reported errors in the parent repository"
+    ret=1
+}
 
 exit $ret
diff -Nru mbedtls-3.6.4/framework/scripts/doxygen.sh mbedtls-3.6.5/framework/scripts/doxygen.sh
--- mbedtls-3.6.4/framework/scripts/doxygen.sh	2025-06-30 09:25:21.449310000 +0300
+++ mbedtls-3.6.5/framework/scripts/doxygen.sh	2025-10-01 18:24:20.269796000 +0300
@@ -30,7 +30,7 @@
     exit 1;
 fi
 
-if in_mbedtls_repo; then
+if in_mbedtls_repo && in_3_6_branch; then
     make apidoc_clean
 fi
 
diff -Nru mbedtls-3.6.4/framework/scripts/generate_bignum_tests.py mbedtls-3.6.5/framework/scripts/generate_bignum_tests.py
--- mbedtls-3.6.4/framework/scripts/generate_bignum_tests.py	2025-06-30 09:25:21.449444500 +0300
+++ mbedtls-3.6.5/framework/scripts/generate_bignum_tests.py	2025-10-11 23:43:14.511340000 +0300
@@ -43,6 +43,7 @@
 # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
 
 import sys
+import math
 
 from abc import ABCMeta
 from typing import List
@@ -121,6 +122,71 @@
         return tmp
 
 
+class BignumGCDInvModOperation(BignumOperation):
+    #pylint: disable=abstract-method
+    """Common features for testing GCD and Invmod functions."""
+    def __init__(self, val_a: str, val_b: str) -> None:
+        super().__init__(val_a=val_a, val_b=val_b)
+
+    def description_suffix(self) -> str:
+        comparison_symbol = '='
+        if abs(self.int_a) > abs(self.int_b):
+            comparison_symbol = '>'
+        elif abs(self.int_a) < abs(self.int_b):
+            comparison_symbol = '<'
+        suffix_parts = [
+            f"|A|{comparison_symbol}|N|",
+            *(["A<0"] if self.int_a < 0 else []),
+            *(["N<0"] if self.int_b < 0 else []),
+            "A=0" if self.int_a == 0 else f"A {'even' if self.int_a % 2 == 0 else 'odd'}",
+            "N=0" if self.int_b == 0 else f"B {'even' if self.int_b % 2 == 0 else 'odd'}"
+        ]
+        return ": " + ", ".join(suffix_parts)
+
+    # The default values from BignumOperation are not useful, so overwrite them.
+    input_values = [
+        "c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8",
+        "299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75",
+        "-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed",
+        "7da9ec44f42e6311c56a",
+        "cdbcce3f763819345cfb",
+        "100000000", "300000000", "500000000",
+        "50000", "30000",
+        "1", "2", "3", "", "00", "-1"
+    ]
+    input_cases = [
+        ("bc7fa9fb389618302e8b", "d49730e586607d42269f"),
+        ("28bcc01a2d54b174532e", "d1915057d829a934c25d"),
+        ("d56b50834719280dfa1d", "f007b78f6278ebcccd57"),
+        ("8c327d1d8743c89d4483", "aa20b0c1f97a428311b5"),
+        ("e905382f38", "c844b4f9bdaa5ed0002df3dbd2991cd9b9d"),
+        ("e4623ef13d", "f2a4894ede013e354e481fe8974e67"),
+        ("9f6afa8bdb", "b50aa03a7066df6f27bd6267b"),
+        ("95f99b7122", "e8c74031ec75839f7539"),
+        ("32", "948fbec067"),
+        ("7445", "948fbec067"),
+        ("31850e", "948fbec067"),
+        ("421c2cc8", "948fbec067"),
+        ("32a69", "71e107"),
+        ("36d4e9", "3e05d1"),
+        ("babf01", "1bf699d1"),
+        ("7", "31"),
+    ]
+
+    def get_return_code_gcd_modinv_odd_gcd_only(self) -> str:
+        code = "0"
+        if (self.int_a > self.int_b) or \
+           (self.int_a < 0) or \
+           (self.int_b % 2 == 0):
+            code = "MBEDTLS_ERR_MPI_BAD_INPUT_DATA"
+        return code
+
+    def get_return_code_gcd_modinv_odd(self) -> str:
+        if self.int_b < 2:
+            return "MBEDTLS_ERR_MPI_BAD_INPUT_DATA"
+        return self.get_return_code_gcd_modinv_odd_gcd_only()
+
+
 class BignumCmp(BignumOperation):
     """Test cases for bignum value comparison."""
     count = 0
@@ -152,6 +218,188 @@
         super().__init__(val_a.strip("-"), val_b.strip("-"))
 
 
+class BignumInvMod(BignumOperation):
+    """Test cases for bignum modular inverse."""
+    count = 0
+    symbol = "^-1 mod"
+    test_function = "mpi_inv_mod"
+    test_name = "MPI inv_mod"
+    # The default values are not very useful here, so clear them.
+    input_values = [] # type: List[str]
+    input_cases = bignum_common.combination_two_lists(
+        # Input values for A
+        bignum_common.expand_list_negative([
+            "aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c",
+            "f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b",
+            "2ec0888f",
+            "22fbdf4c",
+            "32cf9a75",
+        ]),
+        # Input values for N - must be positive.
+        [
+            "fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d",
+            "2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84",
+            "2ec0888f",
+            "22fbdf4c",
+            "34d0830",
+            "364b6729",
+            "14419cd",
+        ],
+    )
+
+    def __init__(self, val_a: str, val_b: str) -> None:
+        super().__init__(val_a, val_b)
+        if math.gcd(self.int_a, self.int_b) == 1:
+            self._result = bignum_common.invmod_positive(self.int_a, self.int_b)
+        else:
+            self._result = -1 # No modular inverse.
+
+    def description_suffix(self) -> str:
+        suffix = ": "
+        # Assuming N (int_b) is always positive, compare absolute values,
+        # but only print the absolute value bars when A is negative.
+        a_str = "A" if (self.int_a >= 0) else "|A|"
+        if abs(self.int_a) > self.int_b:
+            suffix += f"{a_str}>N"
+        elif abs(self.int_a) < self.int_b:
+            suffix += f"{a_str}<N"
+        else:
+            suffix += f"{a_str}=N"
+        if self.int_a < 0:
+            suffix += ", A<0"
+        if self._result == -1:
+            suffix += ", no inverse"
+        return suffix
+
+    def result(self) -> List[str]:
+        if self._result == -1: # No modular inverse.
+            return [bignum_common.quote_str("0"), "MBEDTLS_ERR_MPI_NOT_ACCEPTABLE"]
+        return [bignum_common.quote_str("{:x}".format(self._result)), "0"]
+
+
+class BignumGCD(BignumOperation):
+    """Test cases for greatest common divisor."""
+    count = 0
+    symbol = "GCD"
+    test_function = "mpi_gcd"
+    test_name = "GCD"
+    # The default values are not very useful here, so overwrite them.
+    input_values = bignum_common.expand_list_negative([
+        "3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361",
+        "b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e",
+        "203265b387",
+        "9bc8e63852",
+        "100000000",
+        "300000000",
+        "500000000",
+        "50000",
+        "30000",
+        "1",
+        "2",
+        "3",
+        ])
+
+    def __init__(self, val_a: str, val_b: str) -> None:
+        super().__init__(val_a, val_b)
+        # We always expect a positive result as the test data
+        # does not contain zero.
+        self._result = math.gcd(self.int_a, self.int_b)
+
+    def description_suffix(self) -> str:
+        suffix = ": "
+        if abs(self.int_a) > abs(self.int_b):
+            suffix += "|A|>|B|"
+        elif abs(self.int_a) < abs(self.int_b):
+            suffix += "|A|<|B|"
+        else:
+            suffix += "|A|=|B|"
+        if self.int_a < 0:
+            suffix += ", A<0"
+        if self.int_b < 0:
+            suffix += ", B<0"
+        suffix += ", A even" if (self.int_a % 2 == 0) else ", A odd"
+        suffix += ", B even" if (self.int_b % 2 == 0) else ", B odd"
+        return suffix
+
+    def result(self) -> List[str]:
+        return [bignum_common.quote_str("{:x}".format(self._result))]
+
+
+class BignumGCDModInvOdd(BignumGCDInvModOperation):
+    """Test cases for both modular inverse and greatest common divisor."""
+    count = 0
+    symbol = "GCD & ^-1 mod"
+    test_function = "mpi_gcd_modinv_odd_both"
+    test_name = "GCD & mod inv"
+
+    def __init__(self, val_a: str, val_b: str) -> None:
+        super().__init__(val_a, val_b)
+        self._result_code = self.get_return_code_gcd_modinv_odd()
+        self._result_gcd = math.gcd(self.int_a, self.int_b)
+        # Only compute the modular inverse if we will get a result - negative
+        # and zero Ns are also present in the test data so skip them too.
+        if self._result_gcd == 1 and self.int_b > 1:
+            self._result_invmod = \
+            bignum_common.invmod_positive(self.int_a, self.int_b) # type: int | None
+        else:
+            self._result_invmod = None # No inverse
+
+    def result(self) -> List[str]:
+        # The test requires us to tell it if there is no modular inverse.
+        if self._result_invmod is None:
+            result_invmod = "no_inverse"
+        else:
+            result_invmod = "{:x}".format(self._result_invmod)
+        return [
+            self.format_result(self._result_gcd),
+            bignum_common.quote_str(result_invmod),
+            self._result_code,
+        ]
+
+
+class BignumGCDModInvOddOnlyGCD(BignumGCDInvModOperation):
+    """Test cases for greatest common divisor only."""
+    count = 0
+    symbol = "GCD"
+    test_function = "mpi_gcd_modinv_odd_only_gcd"
+    test_name = "GCD only"
+
+    def __init__(self, val_a: str, val_b: str) -> None:
+        super().__init__(val_a, val_b)
+        self._result_code = self.get_return_code_gcd_modinv_odd_gcd_only()
+        # We always expect a positive result as the function should reject
+        # negative inputs.
+        self._result_gcd = math.gcd(self.int_a, self.int_b)
+
+    def result(self) -> List[str]:
+        return [self.format_result(self._result_gcd), self._result_code]
+
+
+class BignumGCDModInvOddOnlyModInv(BignumGCDInvModOperation):
+    """Test cases for modular inverse only."""
+    count = 0
+    symbol = "^-1 mod"
+    test_function = "mpi_gcd_modinv_odd_only_modinv"
+    test_name = "Mod inv only"
+
+    def __init__(self, val_a: str, val_b: str) -> None:
+        super().__init__(val_a, val_b)
+        self._result_code = self.get_return_code_gcd_modinv_odd()
+        # Only compute the modular inverse if we will get a result - negative
+        # and zero Ns are also present in the test data so skip them too.
+        if math.gcd(self.int_a, self.int_b) == 1 and self.int_b > 1:
+            self._result_invmod = \
+            bignum_common.invmod_positive(self.int_a, self.int_b) # type: int | None
+        else:
+            self._result_invmod = None # No inverse
+
+    def result(self) -> List[str]:
+        # The test requires us to tell it if there is no modular inverse.
+        if self._result_invmod is None:
+            return [bignum_common.quote_str("no_inverse"), self._result_code]
+        return [self.format_result(self._result_invmod), self._result_code]
+
+
 class BignumAdd(BignumOperation):
     """Test cases for bignum value addition."""
     count = 0
diff -Nru mbedtls-3.6.4/framework/scripts/generate_config_tests.py mbedtls-3.6.5/framework/scripts/generate_config_tests.py
--- mbedtls-3.6.4/framework/scripts/generate_config_tests.py	2025-06-30 09:25:21.449560000 +0300
+++ mbedtls-3.6.5/framework/scripts/generate_config_tests.py	2025-10-01 18:24:20.270137800 +0300
@@ -68,6 +68,13 @@
 if build_tree.is_mbedtls_3_6():
     SIMPLE_DEPENDENCIES['MBEDTLS_NO_PLATFORM_ENTROPY'] = 'MBEDTLS_ENTROPY_C'
 
+BUILTIN_MODULE_ENABLEMENT_MACROS = [
+    'MBEDTLS_AES_C', 'MBEDTLS_CAMELLIA_C', 'MBEDTLS_CIPHER_C', 'MBEDTLS_GCM_C',
+    'MBEDTLS_ECDH_C', 'MBEDTLS_ECDSA_C', 'MBEDTLS_ECP_C',
+    'MBEDTLS_RSA_C',
+    'MBEDTLS_SHA256_C', 'MBEDTLS_SHA512_C',
+]
+
 def dependencies_of_setting(cfg: config_common.Config,
                             setting: config_common.Setting) -> Optional[str]:
     """Return dependencies without which a setting is not meaningful.
@@ -113,6 +120,11 @@
             super_name = name[:pos.start()] + '_C'
             if cfg.known(super_name):
                 return super_name
+            # If super_name refers to a macro that still enables a
+            # cryptographic module, but is no longer exposed as a configuration
+            # option in 4.0/1.0, return it as a dependency.
+            if super_name in BUILTIN_MODULE_ENABLEMENT_MACROS:
+                return super_name
     if name.startswith('PSA_WANT_'):
         deps = 'MBEDTLS_PSA_CRYPTO_CLIENT'
         m = PSA_WANT_KEY_TYPE_KEY_PAIR_RE.match(name)
diff -Nru mbedtls-3.6.4/framework/scripts/generate_psa_tests.py mbedtls-3.6.5/framework/scripts/generate_psa_tests.py
--- mbedtls-3.6.4/framework/scripts/generate_psa_tests.py	2025-06-30 09:25:21.449929200 +0300
+++ mbedtls-3.6.5/framework/scripts/generate_psa_tests.py	2025-10-01 18:30:17.256609400 +0300
@@ -561,19 +561,34 @@
             key1.description += short
         return key1
 
+    USAGE_FLAGS_NOT_VALID_IN_POLICIES = frozenset([
+        # Only for psa_check_key_usage() (upcoming) and
+        # mbedtls_pk_can_do_psa() (since TF-PSA-Crypto 1.0),
+        # not allowed in key policies as of TF-PSA-Crypto 1.0.
+        # Note that this may become dependent on the TF-PSA-Crypto version
+        # in the future; if so this code will require some refactoring.
+        'PSA_KEY_USAGE_DERIVE_PUBLIC',
+    ])
+
+    def all_policy_flags(self) -> List[str]:
+        """Return the list of all usage flags that are valid in key policies."""
+        known_flags = frozenset(self.constructors.key_usage_flags)
+        policy_flags = known_flags - self.USAGE_FLAGS_NOT_VALID_IN_POLICIES
+        return sorted(policy_flags)
+
     def generate_keys_for_usage_flags(self, **kwargs) -> Iterator[StorageTestData]:
         """Generate test keys covering usage flags."""
-        known_flags = sorted(self.constructors.key_usage_flags)
+        policy_flags = self.all_policy_flags()
         yield self.key_for_usage_flags(['0'], **kwargs)
-        for usage_flag in known_flags:
+        for usage_flag in policy_flags:
             yield self.key_for_usage_flags([usage_flag], **kwargs)
-        for flag1, flag2 in zip(known_flags,
-                                known_flags[1:] + [known_flags[0]]):
+        for flag1, flag2 in zip(policy_flags,
+                                policy_flags[1:] + [policy_flags[0]]):
             yield self.key_for_usage_flags([flag1, flag2], **kwargs)
 
     def generate_key_for_all_usage_flags(self) -> Iterator[StorageTestData]:
-        known_flags = sorted(self.constructors.key_usage_flags)
-        yield self.key_for_usage_flags(known_flags, short='all known')
+        policy_flags = self.all_policy_flags()
+        yield self.key_for_usage_flags(policy_flags, short='all valid')
 
     def all_keys_for_usage_flags(self) -> Iterator[StorageTestData]:
         yield from self.generate_keys_for_usage_flags()
diff -Nru mbedtls-3.6.4/framework/scripts/generate_test_keys.py mbedtls-3.6.5/framework/scripts/generate_test_keys.py
--- mbedtls-3.6.4/framework/scripts/generate_test_keys.py	2025-06-30 09:25:21.450621600 +0300
+++ mbedtls-3.6.5/framework/scripts/generate_test_keys.py	2025-10-01 18:24:20.271312200 +0300
@@ -10,7 +10,7 @@
 import re
 import argparse
 from mbedtls_framework.asymmetric_key_data import ASYMMETRIC_KEY_DATA
-from mbedtls_framework.build_tree import guess_project_root
+from mbedtls_framework import build_tree
 
 BYTES_PER_LINE = 16
 
@@ -49,7 +49,6 @@
 EC_NAME_CONVERSION = {
     'PSA_ECC_FAMILY_SECP_K1': {
         192: ('secp', 'k1'),
-        224: ('secp', 'k1'),
         256: ('secp', 'k1')
     },
     'PSA_ECC_FAMILY_SECP_R1': {
@@ -168,7 +167,7 @@
     return ''.join(arrays), '\n'.join(look_up_table)
 
 def main() -> None:
-    default_output_path = guess_project_root() + "/tests/include/test/test_keys.h"
+    default_output_path = build_tree.guess_project_root() + "/tests/include/test/test_keys.h"
 
     argparser = argparse.ArgumentParser()
     argparser.add_argument("--output", help="Output file", default=default_output_path)
@@ -176,6 +175,11 @@
 
     output_file = args.output
 
+    # Support for 224 bit EC curves (secp224r1 and secp224k1) was removed from
+    # tf-psa-crypto. It only remains available for 3.6 LTS branch.
+    if not build_tree.is_mbedtls_3_6():
+        del EC_NAME_CONVERSION['PSA_ECC_FAMILY_SECP_R1'][224]
+
     arrays, look_up_table = collect_keys()
 
     write_output_file(output_file, arrays, look_up_table)
diff -Nru mbedtls-3.6.4/framework/scripts/make_generated_files.py mbedtls-3.6.5/framework/scripts/make_generated_files.py
--- mbedtls-3.6.4/framework/scripts/make_generated_files.py	2025-06-30 09:25:21.451104000 +0300
+++ mbedtls-3.6.5/framework/scripts/make_generated_files.py	2025-10-01 18:29:09.511101700 +0300
@@ -10,6 +10,7 @@
 """
 import argparse
 import filecmp
+import os
 import shutil
 import subprocess
 import sys
@@ -23,10 +24,11 @@
     """
     Representation of a script generating a configuration independent file.
     """
-    # pylint: disable=too-few-public-methods
+    # pylint: disable=too-few-public-methods,too-many-arguments
     def __init__(self, script: Path, files: List[Path],
                  output_dir_option: Optional[str] = None,
-                 output_file_option: Optional[str] = None):
+                 output_file_option: Optional[str] = None,
+                 optional: bool = False):
         # Path from the root of Mbed TLS or TF-PSA-Crypto of the generation script
         self.script = script
 
@@ -48,6 +50,12 @@
         # positional argument.
         self.output_file_option = output_file_option
 
+        # Optional files are skipped in --check mode if they don't exist.
+        # This normally shouldn't happen, but it can happen during transition
+        # periods where we're adding a new script or a new file, and a
+        # consuming repository hasn't been updated yet.
+        self.optional = optional
+
 def get_generation_script_files(generation_script: str):
     """
     Get the list of the default paths of the files that a given script
@@ -66,6 +74,19 @@
 
     return files
 
+COMMON_GENERATION_SCRIPTS = [
+]
+
+# Once the script has been added to both Mbed TLS and TF-PSA-Crypto,
+# we can include this unconditionally.
+# https://github.com/Mbed-TLS/mbedtls/issues/10305
+if os.path.exists("scripts/generate_config_checks.py"):
+    COMMON_GENERATION_SCRIPTS.append(GenerationScript(
+        Path("scripts/generate_config_checks.py"),
+        get_generation_script_files("scripts/generate_config_checks.py"),
+        output_dir_option="",
+        optional=True))
+
 if build_tree.looks_like_tf_psa_crypto_root("."):
     TF_PSA_CRYPTO_GENERATION_SCRIPTS = [
         GenerationScript(
@@ -158,13 +179,15 @@
             [Path("tests/opt-testcases/handshake-generated.sh")],
             None, "--output"
         ),
-        GenerationScript(
-            Path("scripts/generate_visualc_files.pl"),
-            get_generation_script_files("scripts/generate_visualc_files.pl"),
-            "--directory", None
-        ),
     ]
 
+    if Path("scripts/generate_visualc_files.pl").is_file():
+        MBEDTLS_GENERATION_SCRIPTS.append(
+            GenerationScript(
+                Path("scripts/generate_visualc_files.pl"),
+                get_generation_script_files("scripts/generate_visualc_files.pl"),
+                "--directory", None))
+
 def get_generated_files(generation_scripts: List[GenerationScript]):
     """
     List the generated files in Mbed TLS or TF-PSA-Crypto. The path from root
@@ -192,6 +215,15 @@
     for generation_script in generation_scripts:
         for file in generation_script.files:
             file = root / file
+            if not file.exists():
+                # If the script is just being added, allow its files not
+                # to exist. This can happen, at least, when adding a new
+                # generation script in crypto: until mbedtls is updated,
+                # the files from that script won't be present when
+                # the updated crypto is built from mbedtls development.
+                if generation_script.optional:
+                    continue
+                raise Exception(f"Expected generated file does not exist: {file}")
             bak_file = file.with_name(file.name + ".bak")
             if bak_file.exists():
                 bak_file.unlink()
@@ -209,6 +241,10 @@
         for file in generation_script.files:
             file = root / file
             bak_file = file.with_name(file.name + ".bak")
+            if generation_script.optional and not bak_file.exists():
+                # This file is optional and didn't exist before, so
+                # there's nothing to compare to, or clean up.
+                continue
             if not filecmp.cmp(file, bak_file):
                 ref_file = file.with_name(file.name + ".ref")
                 ref_file = root / ref_file
@@ -244,6 +280,7 @@
         generation_scripts = MBEDTLS_GENERATION_SCRIPTS
     else:
         raise Exception("No support for Mbed TLS 3.6")
+    generation_scripts += COMMON_GENERATION_SCRIPTS
 
     if args.list:
         files = get_generated_files(generation_scripts)
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/bignum_common.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/bignum_common.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/bignum_common.py	2025-06-30 09:25:21.451581500 +0300
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/bignum_common.py	2025-10-11 23:43:14.512726000 +0300
@@ -19,8 +19,7 @@
 def invmod(a: int, n: int) -> int:
     """Return inverse of a to modulo n.
 
-    Equivalent to pow(a, -1, n) in Python 3.8+. Implementation is equivalent
-    to long_invmod() in CPython.
+    Warning: the output might be negative! See invmod_positive().
     """
     b, c = 1, 0
     while n:
@@ -32,7 +31,10 @@
     raise ValueError("Not invertible")
 
 def invmod_positive(a: int, n: int) -> int:
-    """Return a non-negative inverse of a to modulo n."""
+    """Return a non-negative inverse of a to modulo n.
+
+    Equivalent to pow(a, -1, n) in Python 3.8+.
+    """
     inv = invmod(a, n)
     return inv if inv >= 0 else inv + n
 
@@ -66,6 +68,14 @@
     """Return all pair combinations from input values."""
     return [(x, y) for x in values for y in values]
 
+def combination_two_lists(first_vals: List[T], second_vals: List[T]) -> List[Tuple[T, T]]:
+    """Return all pair combinations from two input lists"""
+    return [(x, y) for x in first_vals for y in second_vals]
+
+def expand_list_negative(values: List[str]) -> List[str]:
+    """Adds the negative of every element in the list to the list"""
+    return values + [f"-{value}" for value in values]
+
 def bits_to_limbs(bits: int, bits_in_limb: int) -> int:
     """ Return the appropriate ammount of limbs needed to store
         a number contained in input bits"""
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/bignum_core.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/bignum_core.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/bignum_core.py	2025-06-30 09:25:21.451751000 +0300
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/bignum_core.py	2025-10-11 23:43:14.513775600 +0300
@@ -3,6 +3,7 @@
 # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
 #
 
+import math
 import random
 
 from typing import Dict, Iterator, List, Tuple
@@ -10,7 +11,7 @@
 from . import test_case
 from . import test_data_generation
 from . import bignum_common
-from .bignum_data import ADD_SUB_DATA
+from . import bignum_data
 
 class BignumCoreTarget(test_data_generation.BaseTarget):
     #pylint: disable=abstract-method, too-few-public-methods
@@ -166,7 +167,7 @@
     test_function = "mpi_core_add_and_add_if"
     test_name = "mpi_core_add_and_add_if"
     input_style = "arch_split"
-    input_values = ADD_SUB_DATA
+    input_values = bignum_data.ADD_SUB_DATA
     unique_combinations_only = True
 
     def result(self) -> List[str]:
@@ -187,7 +188,7 @@
     symbol = "-"
     test_function = "mpi_core_sub"
     test_name = "mbedtls_mpi_core_sub"
-    input_values = ADD_SUB_DATA
+    input_values = bignum_data.ADD_SUB_DATA
 
     def result(self) -> List[str]:
         if self.int_a >= self.int_b:
@@ -894,3 +895,78 @@
     def result(self) -> List[str]:
         result = 1 if self.int_a == 0 else 0
         return [str(result)]
+
+class BignumCoreGcdModinvOdd(BignumCoreTarget, test_data_generation.BaseTest):
+    """Test cases for bignum core GCD+modinv (odd modulus)"""
+
+    test_function = "mpi_core_gcd_modinv_odd"
+    test_name = "mpi_core_gcd_modinv_odd"
+
+    # - All small integers because that naturally covers a lot of cases.
+    # - (Close to) powers of 2 because that looks like interesting values.
+    #   Also covers the cases where N, N+1 or N-1 is a multiple of A (with
+    #   multiple limbs).
+    # - X * 2, X * 3 is so that we get GCD(X*2, X*3) = X where the GCD has a
+    #   the same order of magnitude as the inputs.
+    # - Random values of cryptographic size for good measure.
+    DATA = (
+        ("0", 0),
+        ("1", 1),
+        ("2", 2),
+        ("3", 3),
+        ("4", 4),
+        ("5", 5),
+        ("6", 6),
+        ("7", 7),
+        ("2^64 - 1", 2**64 - 1),
+        ("2^64", 2**64),
+        ("2^64 + 1", 2**64 + 1),
+        ("2^128 - 1", 2**128 - 1),
+        ("2^128", 2**128),
+        ("2^128 + 1", 2**128 + 1),
+        ("prime192[1]", int(bignum_data.SAFE_PRIME_192_BIT_SEED_1, 16)),
+        ("prime192[1] * 2", int(bignum_data.SAFE_PRIME_192_BIT_SEED_1, 16) * 2),
+        ("prime192[1] * 3", int(bignum_data.SAFE_PRIME_192_BIT_SEED_1, 16) * 3),
+        ("rand192[2.1]", int(bignum_data.RANDOM_192_BIT_SEED_2_NO1, 16)),
+        ("rand192[2.2]", int(bignum_data.RANDOM_192_BIT_SEED_2_NO2, 16)),
+        ("rand192[2.3]", int(bignum_data.RANDOM_192_BIT_SEED_2_NO3, 16)),
+        ("rand192[2.4]", int(bignum_data.RANDOM_192_BIT_SEED_2_NO4, 16)),
+        ("rand192[2.9]", int(bignum_data.RANDOM_192_BIT_SEED_2_NO9, 16)),
+        ("prime1024[3]", int(bignum_data.SAFE_PRIME_1024_BIT_SEED_3, 16)),
+        ("rand1024[4.1]", int(bignum_data.RANDOM_1024_BIT_SEED_4_NO1, 16)),
+        ("rand1024[4.2]", int(bignum_data.RANDOM_1024_BIT_SEED_4_NO2, 16)),
+        ("rand1024[4.3]", int(bignum_data.RANDOM_1024_BIT_SEED_4_NO3, 16)),
+        ("rand1024[4.4]", int(bignum_data.RANDOM_1024_BIT_SEED_4_NO4, 16)),
+        ("rand1024[4.5]", int(bignum_data.RANDOM_1024_BIT_SEED_4_NO5, 16)),
+        ("rand1024[4.5] * 2", int(bignum_data.RANDOM_1024_BIT_SEED_4_NO5, 16) * 2),
+        ("rand1024[4.5] * 3", int(bignum_data.RANDOM_1024_BIT_SEED_4_NO5, 16) * 3),
+    )
+
+    def __init__(self, a: int, a_desc: str, n: int, n_desc: str) -> None:
+        self.a_val = a
+        self.a_desc = a_desc
+        self.n_val = n
+        self.n_desc = n_desc
+        self.g_val = math.gcd(a, n)
+        test_i = self.g_val == 1 and self.n_val != 1
+        self.i_val = bignum_common.invmod_positive(a, n) if test_i else None
+
+    def arguments(self) -> List[str]:
+        a_str = f"{self.a_val:x}"
+        n_str = f"{self.n_val:x}"
+        g_str = f"{self.g_val:x}"
+        i_str = f"{self.i_val:x}" if self.i_val is not None else ""
+        return [bignum_common.quote_str(s) for s in (a_str, n_str, g_str, i_str)]
+
+    def description(self) -> str:
+        return f"GCD-modinv, A = {self.a_desc}, N = {self.n_desc}"
+
+    @classmethod
+    def generate_function_tests(cls) -> Iterator[test_case.TestCase]:
+        for n_desc, n in cls.DATA:
+            if n % 2 == 0:
+                continue
+            for a_desc, a in cls.DATA:
+                if a > n:
+                    continue
+                yield cls(a, a_desc, n, n_desc).create_test_case()
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/build_tree.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/build_tree.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/build_tree.py	2025-06-30 09:25:21.452380000 +0300
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/build_tree.py	2025-10-01 18:29:09.514632200 +0300
@@ -130,6 +130,12 @@
     else:
         raise Exception('TF-PSA-Crypto source tree not found')
 
+def framework_root(root: Optional[str] = None) -> str:
+    """Return the path to the framework directory for this project."""
+    if root is None:
+        root = guess_project_root()
+    return os.path.join(root, 'framework')
+
 def is_mbedtls_3_6() -> bool:
     """Whether the working tree is an Mbed TLS 3.6 one or not
 
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/config_checks_generator.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/config_checks_generator.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/config_checks_generator.py	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/config_checks_generator.py	2025-10-01 18:29:09.515177500 +0300
@@ -0,0 +1,294 @@
+"""Generate C preprocessor code to check for bad configurations.
+
+The headers are meant to be included in a specific way in PROJECT_config.c.
+See framework/docs/architecture/config-check-framework.md for information.
+"""
+
+## Copyright The Mbed TLS Contributors
+## SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+
+import argparse
+import enum
+import os
+import re
+import sys
+import textwrap
+import typing
+from typing import Iterator, List, Optional
+
+from . import build_tree
+from . import typing_util
+
+
+class Position(enum.Enum):
+    BEFORE = 0 # Before build_info.h
+    USER = 1 # Just after reading PROJECT_CONFIG_FILE (*config.h) and PROJECT_USER_CONFIG_FILE
+    FINAL = 2 # After *adjust*.h and the rest of build_info.h
+
+
+class Checker:
+    """Description of checks for one option.
+
+    By default, this class triggers an error if the option is set after
+    reading the user configuration. To change the behavior, override
+    the methods `before`, `user` and `final` as needed.
+    """
+
+    def __init__(self, name: str, suggestion: str = '') -> None:
+        """Construct a checker for the given preprocessor macro name.
+
+        If suggestion is given, it is appended to the error message.
+        It should be a short sentence intended for human readers.
+        This sentence follows a sentence like "<macro_name> is not
+        a valid configuration option".
+        """
+        self.name = name
+        self.suggestion = suggestion
+
+    def _basic_message(self) -> str:
+        """The first sentence of the message to display on error.
+
+        It should end with a full stop or other sentence-ending punctuation.
+        """
+        return f'{self.name} is not a valid configuration option.'
+
+    def message(self) -> str:
+        """The message to display on error."""
+        message = self._basic_message()
+        if self.suggestion:
+            message += ' Suggestion: ' + self.suggestion
+        return message
+
+    def _quoted_message(self) -> str:
+        """Quote message() in double quotes. Useful for #error directives."""
+        return ('"' +
+                str.replace(str.replace(self.message(),
+                                        '\\', '\\\\'),
+                            '"', '\\"') +
+                '"')
+
+    def before(self, _prefix: str) -> str:
+        """C code to inject before including the config."""
+        #pylint: disable=no-self-use
+        # Derived classes will add content where needed.
+        return ''
+
+    def user(self, _prefix: str) -> str:
+        """C code to inject immediately after including the user config."""
+        return f'''
+        #if defined({self.name})
+        #  error {self._quoted_message()}
+        #endif
+        '''
+
+    def final(self, _prefix: str) -> str:
+        """C code to inject after finalizing the config."""
+        #pylint: disable=no-self-use
+        # Derived classes will add content where needed.
+        return ''
+
+    def code(self, position: Position, prefix: str) -> str:
+        """C code to inject at the given position.
+
+        Use the given prefix for auxiliary macro names.
+        """
+        methods = {
+            Position.BEFORE: self.before,
+            Position.USER: self.user,
+            Position.FINAL: self.final,
+        }
+        method = methods[position]
+        snippet = method(prefix)
+        return textwrap.dedent(snippet)
+
+
+class Internal(Checker):
+    """Checker for an internal-only option."""
+
+
+class SubprojectInternal(Checker):
+    """Checker for an internal macro of a subproject."""
+
+    # must be overridden in child classes
+    SUBPROJECT = None #type: Optional[str]
+
+    def __init__(self, name: str, suggestion: str = '') -> None:
+        super().__init__(name, suggestion)
+        if self.SUBPROJECT is None:
+            raise ValueError('No subproject specified for ' + name)
+        self.subproject = self.SUBPROJECT #type: str
+
+    def _basic_message(self) -> str:
+        return f'{self.name} is an internal macro of {self.subproject} and may not be configured.'
+
+    def before(self, prefix: str) -> str:
+        return f'''
+        #if defined({self.name})
+        #  define {prefix}_WASSET_{self.name} 1
+        #else
+        #  define {prefix}_WASSET_{self.name} 0
+        #endif
+        #undef {self.name}
+        '''
+
+    def user(self, prefix: str) -> str:
+        return f'''
+        #if defined({self.name})
+        #  error {self._quoted_message()}
+        #endif
+        #if {prefix}_WASSET_{self.name}
+        #  define {self.name}
+        #endif
+        #undef {prefix}_WASSET_{self.name}
+        '''
+
+
+class SubprojectOption(SubprojectInternal):
+    """Checker for a configuration option of a subproject."""
+
+    def _basic_message(self) -> str:
+        return f'{self.name} must be configured in {self.subproject}.'
+
+    def user(self, prefix: str) -> str:
+        return f'''
+        #if defined({self.name}) && !{prefix}_WASSET_{self.name}
+        #  error {self._quoted_message()}
+        #endif
+        #if {prefix}_WASSET_{self.name}
+        #  define {self.name}
+        #endif
+        #undef {prefix}_WASSET_{self.name}
+        '''
+
+
+class Removed(Checker):
+    """Checker for an option that has been removed."""
+
+    def __init__(self, name: str, version: str, suggestion: str = '') -> None:
+        super().__init__(name, suggestion)
+        self.version = version
+
+    def _basic_message(self) -> str:
+        """The first sentence of the message to display on error.
+
+        It should end with a full stop or other sentence-ending punctuation.
+        """
+        return f'{self.name} was removed in {self.version}.'
+
+    def user(self, prefix: str) -> str:
+        """C code to inject immediately after including the user config."""
+        # A removed option is forbidden, just like an internal option.
+        # But since we're checking a macro that is not defined anywhere,
+        # we need to tell check_names.py that this is a false positive.
+        code = super().user(prefix)
+        return re.sub(rf'^ *# *\w+.*\b{self.name}\b.*$',
+                      lambda m: m.group(0) + ' //no-check-names',
+                      code, flags=re.M)
+
+
+class BranchData(typing.NamedTuple):
+    """The relevant aspects of the configuration on a branch."""
+
+    # Subdirectory where the generated headers will be located.
+    header_directory: str
+
+    # Prefix used for the generated headers' basename.
+    header_prefix: str
+
+    # Prefix used for C preprocessor macros.
+    project_cpp_prefix: str
+
+    # Options to check
+    checkers: List[Checker]
+
+
+class HeaderGenerator:
+    """Generate a header to include before or after the user config."""
+
+    def __init__(self, branch_data: BranchData, position: Position) -> None:
+        self.branch_data = branch_data
+        self.position = position
+        self.prefix = branch_data.project_cpp_prefix + '_CONFIG_CHECK'
+        self.bypass_checks = self.prefix + '_BYPASS'
+
+    def write_stanza(self, out: typing_util.Writable, checker: Checker) -> None:
+        """Write the part of the output corresponding to one config option."""
+        code = checker.code(self.position, self.prefix)
+        out.write(code)
+
+    def write_content(self, out: typing_util.Writable) -> None:
+        """Write the output for all config options to be processed."""
+        for checker in self.branch_data.checkers:
+            self.write_stanza(out, checker)
+
+    def output_file_name(self) -> str:
+        """The base name of the output file."""
+        return ''.join([self.branch_data.header_prefix,
+                        'config_check_',
+                        self.position.name.lower(),
+                        '.h'])
+
+    def write(self, directory: str) -> None:
+        """Write the whole output file."""
+        basename = self.output_file_name()
+        with open(os.path.join(directory, basename), 'w') as out:
+            out.write(f'''\
+/* {basename} (generated part of {self.branch_data.header_prefix}config.c). */
+/* Automatically generated by {os.path.basename(sys.argv[0])}. Do not edit! */
+
+#if !defined({self.bypass_checks}) //no-check-names
+
+/* *INDENT-OFF* */
+''')
+            self.write_content(out)
+            out.write(f'''
+/* *INDENT-ON* */
+
+#endif /* !defined({self.bypass_checks}) */ //no-check-names
+
+/* End of automatically generated {basename} */
+''')
+
+
+def generate_header_files(branch_data: BranchData,
+                          directory: str,
+                          list_only: bool = False) -> Iterator[str]:
+    """Generate the header files to include before and after *config.h."""
+    for position in Position:
+        generator = HeaderGenerator(branch_data, position)
+        yield os.path.join(directory, generator.output_file_name())
+        if not list_only:
+            generator.write(directory)
+
+
+def main(branch_data: BranchData) -> None:
+    root = build_tree.guess_project_root()
+    # Is root the current directory? The safe default is no, so compare
+    # the paths, rather than calling `os.samefile()` which can have false
+    # positives and can fail in edge cases.
+    if root == os.getcwd():
+        # Be nice and use a relative path when it's simple to do so.
+        # (build_tree.guess_project_root() should probably do this, actually.)
+        # This is not only nice to humans, but also necessary for
+        # `make_generated_files.py --root DIR --check`: it calls
+        # this script with `--list` and expects a path that is relative
+        # to DIR, not an absolute path that is under the project root.
+        root = os.curdir
+    parser = argparse.ArgumentParser(description=__doc__)
+    parser.add_argument('--list', action='store_true',
+                        help='List generated files and exit')
+    parser.add_argument('--list-for-cmake', action='store_true',
+                        help='List generated files in CMake-friendly format and exit')
+    parser.add_argument('output_directory', metavar='DIR', nargs='?',
+                        default=os.path.join(root, branch_data.header_directory),
+                        help='output file location (default: %(default)s)')
+    options = parser.parse_args()
+    list_only = options.list or options.list_for_cmake
+    output_files = list(generate_header_files(branch_data,
+                                              options.output_directory,
+                                              list_only=list_only))
+    if options.list_for_cmake:
+        sys.stdout.write(';'.join(output_files))
+    elif options.list:
+        for filename in output_files:
+            print(filename)
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/config_history.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/config_history.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/config_history.py	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/config_history.py	2025-10-01 18:29:09.515414700 +0300
@@ -0,0 +1,57 @@
+"""Historical information about the library configuration.
+"""
+
+## Copyright The Mbed TLS Contributors
+## SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+
+import glob
+import os
+import re
+from typing import Dict, FrozenSet
+
+from . import build_tree
+
+class ConfigHistory:
+    """Historical information about the library configuration.
+    """
+
+    @staticmethod
+    def load_options(filename: str) -> FrozenSet[str]:
+        """Load the options from the given file.
+
+        The file must contain one option name per line, with no whitespace.
+        """
+        with open(filename) as inp:
+            return frozenset(inp.read().splitlines())
+
+    def load_history_files(self,
+                           variety: str,
+                           exclude_dict: Dict[str, Dict[str, FrozenSet[str]]]
+                           ) -> Dict[str, Dict[str, FrozenSet[str]]]:
+        """Load all files containing macro lists of the given variety"""
+        data = {} #type: Dict[str, Dict[str, FrozenSet[str]]]
+        glob_pattern = os.path.join(self._history_dir,
+                                    f'config-{variety}-*-*.txt')
+        for filename in sorted(glob.glob(glob_pattern)):
+            basename = os.path.splitext(os.path.basename(filename))[0]
+            m = re.match(r'config-\w+-(.*?)-(.*)', basename)
+            assert m is not None
+            (product, version) = m.groups()
+            options = self.load_options(filename)
+            exclude = exclude_dict.get(product, {}).get(version, frozenset())
+            data.setdefault(product, {})[version] = options - exclude
+        return data
+
+    def __init__(self) -> None:
+        """Load all files containing historical option lists."""
+        self._history_dir = os.path.join(build_tree.framework_root(), 'history')
+        self._options = self.load_history_files('options', {})
+        self._internal = self.load_history_files('adjust', self._options)
+
+    def options(self, product: str, version: str) -> FrozenSet[str]:
+        """The set of options in the given product version."""
+        return self._options[product][version]
+
+    def internal(self, product: str, version: str) -> FrozenSet[str]:
+        """The set of internal option-like macros in the given product version."""
+        return self._internal[product][version]
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/crypto_knowledge.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/crypto_knowledge.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/crypto_knowledge.py	2025-06-30 09:25:21.453894100 +0300
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/crypto_knowledge.py	2025-10-01 18:30:17.257858500 +0300
@@ -355,12 +355,14 @@
         'TLS12_PRF': AlgorithmCategory.KEY_DERIVATION,
         'TLS12_PSK_TO_MS': AlgorithmCategory.KEY_DERIVATION,
         'TLS12_ECJPAKE_TO_PMS': AlgorithmCategory.KEY_DERIVATION,
+        'SP800_108': AlgorithmCategory.KEY_DERIVATION,
         'PBKDF': AlgorithmCategory.KEY_DERIVATION,
         'ECDH': AlgorithmCategory.KEY_AGREEMENT,
         'FFDH': AlgorithmCategory.KEY_AGREEMENT,
         # KEY_AGREEMENT(...) is a key derivation with a key agreement component
         'KEY_AGREEMENT': AlgorithmCategory.KEY_DERIVATION,
         'JPAKE': AlgorithmCategory.PAKE,
+        'SPAKE2P': AlgorithmCategory.PAKE,
     }
     for x in BLOCK_MAC_MODES:
         CATEGORY_FROM_HEAD[x] = AlgorithmCategory.MAC
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/ecp.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/ecp.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/ecp.py	2025-06-30 09:25:21.454038600 +0300
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/ecp.py	2025-10-01 18:24:20.275170000 +0300
@@ -7,6 +7,7 @@
 
 from . import test_data_generation
 from . import bignum_common
+from . import build_tree
 
 
 class EcpTarget(test_data_generation.BaseTarget):
@@ -164,7 +165,9 @@
 
     @property
     def is_valid(self) -> bool:
-        return True
+        # secp224r1 support has been removed from development, but it's stil
+        # available in 3.6 branch.
+        return build_tree.is_mbedtls_3_6()
 
     def arguments(self)-> List[str]:
         args = super().arguments()
@@ -624,7 +627,9 @@
 
     @property
     def is_valid(self) -> bool:
-        return True
+        # secp224k1 support has been removed from development, but it's stil
+        # available in 3.6 branch.
+        return build_tree.is_mbedtls_3_6()
 
     def arguments(self):
         args = super().arguments()
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/macro_collector.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/macro_collector.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/macro_collector.py	2025-06-30 09:25:21.454408400 +0300
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/macro_collector.py	2025-10-01 18:30:17.259058500 +0300
@@ -279,12 +279,27 @@
                                       r'(.+)')
     _deprecated_definition_re = re.compile(r'\s*MBEDTLS_DEPRECATED')
 
+    # Macro that is a destructor, not a constructor (i.e. takes a thing as
+    # an argument and analyzes it, rather than constructing a thing).
+    _destructor_name_re = re.compile(r'.*(_GET_|_HAS_|_IS_)|.*_LENGTH\Z')
+
+    # Macro that converts between things, rather than building a thing from
+    # scratch.
+    _conversion_macro_names = frozenset([
+        'PSA_KEY_TYPE_KEY_PAIR_OF_PUBLIC_KEY',
+        'PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR',
+        'PSA_ALG_FULL_LENGTH_MAC',
+        'PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG',
+        'PSA_JPAKE_EXPECTED_INPUTS',
+        'PSA_JPAKE_EXPECTED_OUTPUTS',
+    ])
+
     def read_line(self, line):
         """Parse a C header line and record the PSA identifier it defines if any.
         This function analyzes lines that start with "#define PSA_"
         (up to non-significant whitespace) and skips all non-matching lines.
         """
-        # pylint: disable=too-many-branches
+        # pylint: disable=too-many-branches,too-many-return-statements
         m = re.match(self._define_directive_re, line)
         if not m:
             return
@@ -297,6 +312,12 @@
             # backward compatibility aliases that share
             # numerical values with non-deprecated values.
             return
+        if re.match(self._destructor_name_re, name):
+            # Not a constructor
+            return
+        if name in self._conversion_macro_names:
+            # Not a constructor
+            return
         if self.is_internal_name(name):
             # Macro only to build actual values
             return
@@ -324,9 +345,13 @@
             self.algorithms_from_hash[name] = self.algorithm_tester(name)
         elif name.startswith('PSA_KEY_USAGE_') and not parameter:
             self.key_usage_flags.add(name)
-        else:
-            # Other macro without parameter
+        elif parameter is None:
+            # Macro with no parameter, whose name does not start with one
+            # of the prefixes we look for. Just ignore it.
             return
+        else:
+            raise Exception("Unsupported macro and parameter name: {}({})"
+                            .format(name, parameter))
 
     _nonascii_re = re.compile(rb'[^\x00-\x7f]+')
     _continued_line_re = re.compile(rb'\\\r?\n\Z')
@@ -451,7 +476,7 @@
                    r'(PSA_((?:(?:DH|ECC|KEY)_)?[A-Z]+)_\w+)' +
                    r'(?:\(([^\n()]*)\))?')
     # Regex of macro names to exclude.
-    _excluded_name_re = re.compile(r'_(?:GET|IS|OF)_|_(?:BASE|FLAG|MASK)\Z')
+    _excluded_name_re = re.compile(r'_(?:GET|HAS|IS|OF)_|_(?:BASE|FLAG|MASK)\Z')
     # Additional excluded macros.
     _excluded_names = set([
         # Macros that provide an alternative way to build the same
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/psa_compliance.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/psa_compliance.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/psa_compliance.py	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/psa_compliance.py	2025-10-01 18:30:17.260195700 +0300
@@ -0,0 +1,189 @@
+"""Run the PSA Crypto API compliance test suite.
+Clone the repo and check out the commit specified by PSA_ARCH_TEST_REPO and PSA_ARCH_TEST_REF,
+then compile and run the test suite. The clone is stored at <repository root>/psa-arch-tests.
+Known defects in either the test suite or mbedtls / TF-PSA-Crypto - identified by their test
+number - are ignored, while unexpected failures AND successes are reported as errors, to help
+keep the list of known defects as up to date as possible.
+"""
+
+# Copyright The Mbed TLS Contributors
+# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+
+import argparse
+import glob
+import os
+import re
+import shutil
+import subprocess
+import sys
+from typing import List, Optional
+from pathlib import Path
+
+from . import build_tree
+
+PSA_ARCH_TESTS_REPO = 'https://github.com/ARM-software/psa-arch-tests.git'
+
+#pylint: disable=too-many-branches,too-many-statements,too-many-locals
+def test_compliance(library_build_dir: str,
+                    psa_arch_tests_ref: str,
+                    patch_files: List[str],
+                    expected_failures: List[int]) -> int:
+    """Check out and run compliance tests.
+
+    library_build_dir: path where our library will be built.
+    psa_arch_tests_ref: tag or sha to use for the arch-tests.
+    patch: patch to apply to the arch-tests with ``patch -p1``.
+    expected_failures: default list of expected failures.
+    """
+    root_dir = os.getcwd()
+    install_dir = Path(library_build_dir + "/install_dir").resolve()
+    tmp_env = os.environ
+    tmp_env['CC'] = 'gcc'
+    subprocess.check_call(['cmake', '.', '-GUnix Makefiles',
+                           '-B' + library_build_dir,
+                           '-DCMAKE_INSTALL_PREFIX=' + str(install_dir)],
+                          env=tmp_env)
+    subprocess.check_call(['cmake', '--build', library_build_dir, '--target', 'install'])
+
+    if build_tree.is_mbedtls_3_6():
+        crypto_library_path = install_dir.joinpath("lib/libmbedcrypto.a")
+    else:
+        crypto_library_path = install_dir.joinpath("lib/libtfpsacrypto.a")
+
+    psa_arch_tests_dir = 'psa-arch-tests'
+    os.makedirs(psa_arch_tests_dir, exist_ok=True)
+    try:
+        os.chdir(psa_arch_tests_dir)
+
+        # Reuse existing local clone
+        subprocess.check_call(['git', 'init'])
+        subprocess.check_call(['git', 'fetch', PSA_ARCH_TESTS_REPO, psa_arch_tests_ref])
+        subprocess.check_call(['git', 'checkout', '--force', 'FETCH_HEAD'])
+
+        if patch_files:
+            subprocess.check_call(['git', 'reset', '--hard'])
+        for patch_file in patch_files:
+            with open(os.path.join(root_dir, patch_file), 'rb') as patch:
+                subprocess.check_call(['patch', '-p1'],
+                                      stdin=patch)
+
+        build_dir = 'api-tests/build'
+        try:
+            shutil.rmtree(build_dir)
+        except FileNotFoundError:
+            pass
+        os.mkdir(build_dir)
+        os.chdir(build_dir)
+
+        #pylint: disable=bad-continuation
+        subprocess.check_call([
+            'cmake', '..',
+                     '-GUnix Makefiles',
+                     '-DTARGET=tgt_dev_apis_stdc',
+                     '-DTOOLCHAIN=HOST_GCC',
+                     '-DSUITE=CRYPTO',
+                     '-DPSA_CRYPTO_LIB_FILENAME={}'.format(str(crypto_library_path)),
+                     '-DPSA_INCLUDE_PATHS=' + str(install_dir.joinpath("include"))
+        ])
+
+        subprocess.check_call(['cmake', '--build', '.'])
+
+        proc = subprocess.Popen(['./psa-arch-tests-crypto'],
+                                bufsize=1, stdout=subprocess.PIPE, universal_newlines=True)
+
+        test_re = re.compile(
+            '^TEST: (?P<test_num>[0-9]*)|'
+            '^TEST RESULT: (?P<test_result>FAILED|PASSED)'
+        )
+        test = -1
+        unexpected_successes = expected_failures.copy()
+        expected_failures.clear()
+        unexpected_failures = [] # type: List[int]
+        if proc.stdout is None:
+            return 1
+
+        for line in proc.stdout:
+            print(line, end='')
+            match = test_re.match(line)
+            if match is not None:
+                groupdict = match.groupdict()
+                test_num = groupdict['test_num']
+                if test_num is not None:
+                    test = int(test_num)
+                elif groupdict['test_result'] == 'FAILED':
+                    try:
+                        unexpected_successes.remove(test)
+                        expected_failures.append(test)
+                        print('Expected failure, ignoring')
+                    except KeyError:
+                        unexpected_failures.append(test)
+                        print('ERROR: Unexpected failure')
+                elif test in unexpected_successes:
+                    print('ERROR: Unexpected success')
+        proc.wait()
+
+        print()
+        print('***** test_psa_compliance.py report ******')
+        print()
+        print('Expected failures:', ', '.join(str(i) for i in expected_failures))
+        print('Unexpected failures:', ', '.join(str(i) for i in unexpected_failures))
+        print('Unexpected successes:', ', '.join(str(i) for i in sorted(unexpected_successes)))
+        print()
+        if unexpected_successes or unexpected_failures:
+            if unexpected_successes:
+                print('Unexpected successes encountered.')
+                print('Please remove the corresponding tests from '
+                      'EXPECTED_FAILURES in tests/scripts/compliance_test.py')
+                print()
+            print('FAILED')
+            return 1
+        else:
+            print('SUCCESS')
+            return 0
+    finally:
+        os.chdir(root_dir)
+
+def main(psa_arch_tests_ref: str,
+         expected_failures: Optional[List[int]] = None) -> None:
+    """Command line entry point.
+
+    psa_arch_tests_ref: tag or sha to use for the arch-tests.
+    expected_failures: default list of expected failures.
+    """
+    build_dir = 'out_of_source_build'
+    default_patch_directory = os.path.join(build_tree.guess_project_root(),
+                                           'scripts/data_files/psa-arch-tests')
+
+    # pylint: disable=invalid-name
+    parser = argparse.ArgumentParser()
+    parser.add_argument('--build-dir', nargs=1,
+                        help='path to Mbed TLS / TF-PSA-Crypto build directory')
+    parser.add_argument('--expected-failures', nargs='+',
+                        help='''set the list of test codes which are expected to fail
+                                from the command line. If omitted the list given by
+                                EXPECTED_FAILURES (inside the script) is used.''')
+    parser.add_argument('--patch-directory', nargs=1,
+                        default=default_patch_directory,
+                        help='Directory containing patches (*.patch) to apply to psa-arch-tests')
+    args = parser.parse_args()
+
+    if args.build_dir is not None:
+        build_dir = args.build_dir[0]
+
+    if expected_failures is None:
+        expected_failures = []
+    if args.expected_failures is not None:
+        expected_failures_list = [int(i) for i in args.expected_failures]
+    else:
+        expected_failures_list = expected_failures
+
+    if args.patch_directory:
+        patch_file_glob = os.path.join(args.patch_directory, '*.patch')
+        patch_files = sorted(glob.glob(patch_file_glob))
+    else:
+        patch_files = []
+
+    sys.exit(test_compliance(build_dir,
+                             psa_arch_tests_ref,
+                             patch_files,
+                             expected_failures_list))
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/psa_information.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/psa_information.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/psa_information.py	2025-06-30 09:25:21.454900700 +0300
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/psa_information.py	2025-10-01 18:30:17.261779800 +0300
@@ -26,12 +26,18 @@
         """Remove constructors that should be exckuded from systematic testing."""
         # Mbed TLS does not support finite-field DSA, but 3.6 defines DSA
         # identifiers for historical reasons.
+        # Mbed TLS and TF-PSA-Crypto 1.0 do not support SPAKE2+, although
+        # TF-PSA-Crypto 1.0 defines SPAKE2+ identifiers to be able to build
+        # the psa-arch-tests compliance test suite.
+        #
         # Don't attempt to generate any related test case.
         # The corresponding test cases would be commented out anyway,
-        # but for DSA, we don't have enough support in the test scripts
+        # but for these types, we don't have enough support in the test scripts
         # to generate these test cases.
         constructors.key_types.discard('PSA_KEY_TYPE_DSA_KEY_PAIR')
         constructors.key_types.discard('PSA_KEY_TYPE_DSA_PUBLIC_KEY')
+        constructors.key_types.discard('PSA_KEY_TYPE_SPAKE2P_KEY_PAIR')
+        constructors.key_types.discard('PSA_KEY_TYPE_SPAKE2P_PUBLIC_KEY')
 
     def read_psa_interface(self) -> macro_collector.PSAMacroEnumerator:
         """Return the list of known key types, algorithms, etc."""
diff -Nru mbedtls-3.6.4/framework/scripts/mbedtls_framework/unittest_config_checks.py mbedtls-3.6.5/framework/scripts/mbedtls_framework/unittest_config_checks.py
--- mbedtls-3.6.4/framework/scripts/mbedtls_framework/unittest_config_checks.py	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/scripts/mbedtls_framework/unittest_config_checks.py	2025-10-01 18:29:09.515890000 +0300
@@ -0,0 +1,195 @@
+"""Test the configuration checks that reject some bad compile-time configs.
+
+This tests the output of ``generate_config_checks.py``.
+This can also let us verify what we enforce in the manually written
+checks in ``<PROJECT>_check_config.h`` and ``<PROJECT>_config.c``.
+"""
+
+## Copyright The Mbed TLS Contributors
+## SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+
+import os
+import subprocess
+import sys
+import unittest
+from typing import List, Optional, Pattern, Union
+
+
+class TestConfigChecks(unittest.TestCase):
+    """Unit tests for checks performed via ``<PROJECT>_config.c``.
+
+    This can test the code generated by `config_checks_generator`,
+    as well as manually written checks in `check_config.h`.
+    """
+
+    # Set this to the path to the source file containing the config checks.
+    PROJECT_CONFIG_C = None #type: Optional[str]
+
+    # Project-specific include directories (in addition to /include)
+    PROJECT_SPECIFIC_INCLUDE_DIRECTORIES = [] #type: List[str]
+
+    # Increase the length of strings that assertion failures are willing to
+    # print. This is useful for failures where the compiler has a lot
+    # to say.
+    maxDiff = 9999
+
+    def setUp(self) -> None:
+        self.cc_output = None #type: Optional[str]
+
+    def tearDown(self) -> None:
+        """Log the compiler output to a file, if available and desired.
+
+        This is intended for debugging. It only happens if the environment
+        variable UNITTEST_CONFIG_CHECKS_DEBUG is non-empty.
+        """
+        if os.getenv('UNITTEST_CONFIG_CHECKS_DEBUG'):
+            # We set self.cc_output to the compiler output before
+            # asserting, and set it to None if all the assertions pass.
+            if self.cc_output is not None:
+                basename = os.path.splitext(os.path.basename(sys.argv[0]))[0]
+                filename = f'{basename}.{self._testMethodName}.out.txt'
+                with open(filename, 'w') as out:
+                    out.write(self.cc_output)
+
+    def user_config_file_name(self, variant: str) -> str:
+        """Construct a unique temporary file name for a user config header."""
+        name = os.path.splitext(os.path.basename(sys.argv[0]))[0]
+        pid = str(os.getpid())
+        oid = str(id(self))
+        return f'tmp-user_config_{variant}-{name}-{pid}-{oid}.h'
+
+    def write_user_config(self, variant: str, content: Optional[str]) -> Optional[str]:
+        """Write a user configuration file with the given content.
+
+        If content is None, ensure the file does not exist.
+
+        Return None if content is none, otherwise return the file name.
+        """
+        file_name = self.user_config_file_name(variant)
+        if content is None:
+            if os.path.exists(file_name):
+                os.remove(file_name)
+            return None
+        if content and not content.endswith('\n'):
+            content += '\n'
+        with open(file_name, 'w', encoding='utf-8') as out:
+            out.write(content)
+        return file_name
+
+    def run_with_config_files(self,
+                              crypto_user_config_file: Optional[str],
+                              mbedtls_user_config_file: Optional[str],
+                              extra_options: List[str],
+                              ) -> subprocess.CompletedProcess:
+        """Run cc with the given user configuration files.
+
+        Return the CompletedProcess object capturing the return code,
+        stdout and stderr.
+        """
+        cmd = [os.getenv('CC', 'cc')]
+        if os.getenv('UNITTEST_CONFIG_CHECKS_DEBUG'):
+            cmd += ['-dD']
+        if crypto_user_config_file is not None:
+            cmd.append(f'-DTF_PSA_CRYPTO_USER_CONFIG_FILE="{crypto_user_config_file}"')
+        if mbedtls_user_config_file is not None:
+            cmd.append(f'-DMBEDTLS_USER_CONFIG_FILE="{mbedtls_user_config_file}"')
+        cmd += extra_options
+        assert self.PROJECT_CONFIG_C is not None
+        cmd += ['-I' + dir for dir in self.PROJECT_SPECIFIC_INCLUDE_DIRECTORIES]
+        cmd += ['-Iinclude',
+                '-I.',
+                '-I' + os.path.dirname(self.PROJECT_CONFIG_C)]
+        cmd += ['-o', os.devnull, '-c', self.PROJECT_CONFIG_C]
+        return subprocess.run(cmd,
+                              check=False,
+                              encoding='utf-8',
+                              stdout=subprocess.PIPE,
+                              stderr=subprocess.PIPE)
+
+    def run_with_config(self,
+                        crypto_user_config: Optional[str],
+                        mbedtls_user_config: Optional[str] = None,
+                        extra_options: Optional[List[str]] = None,
+                        ) -> subprocess.CompletedProcess:
+        """Run cc with the given content for user configuration files.
+
+        Return the CompletedProcess object capturing the return code,
+        stdout and stderr.
+        """
+        if extra_options is None:
+            extra_options = []
+        crypto_user_config_file = None
+        mbedtls_user_config_file = None
+        try:
+            # Create temporary files without using tempfile because:
+            # 1. Before Python 3.12, tempfile.NamedTemporaryFile does
+            #    not have good support for allowing an external program
+            #    to access the file on Windows.
+            # 2. With a tempfile-provided context, it's awkward to not
+            #    create a file optionally (we only do it when xxx_user_config
+            #    is not None).
+            crypto_user_config_file = \
+                self.write_user_config('crypto', crypto_user_config)
+            mbedtls_user_config_file = \
+                self.write_user_config('mbedtls', mbedtls_user_config)
+            cp = self.run_with_config_files(crypto_user_config_file,
+                                            mbedtls_user_config_file,
+                                            extra_options)
+            return cp
+        finally:
+            if crypto_user_config_file is not None and \
+               os.path.exists(crypto_user_config_file):
+                os.remove(crypto_user_config_file)
+            if mbedtls_user_config_file is not None and \
+               os.path.exists(mbedtls_user_config_file):
+                os.remove(mbedtls_user_config_file)
+
+    def good_case(self,
+                  crypto_user_config: Optional[str],
+                  mbedtls_user_config: Optional[str] = None,
+                  extra_options: Optional[List[str]] = None,
+                  ) -> None:
+        """Run cc with the given user config(s). Expect no error.
+
+        Pass extra_options on the command line of cc.
+        """
+        cp = self.run_with_config(crypto_user_config, mbedtls_user_config,
+                                  extra_options=extra_options)
+        # Assert the error text before the status. That way, if it fails,
+        # we see the unexpected error messages in the test log.
+        self.cc_output = cp.stdout
+        self.assertEqual(cp.stderr, '')
+        self.assertEqual(cp.returncode, 0)
+        self.cc_output = None
+
+    def bad_case(self,
+                 crypto_user_config: Optional[str],
+                 mbedtls_user_config: Optional[str] = None,
+                 error: Optional[Union[str, Pattern]] = None,
+                 extra_options: Optional[List[str]] = None,
+                 ) -> None:
+        """Run cc with the given user config(s). Expect errors.
+
+        Pass extra_options on the command line of cc.
+
+        If error is given, the standard error from cc must match this regex.
+        """
+        cp = self.run_with_config(crypto_user_config, mbedtls_user_config,
+                                  extra_options=extra_options)
+        self.cc_output = cp.stdout
+        if error is not None:
+            # Assert the error text before the status. That way, if it fails,
+            # we see the unexpected error messages in the test log.
+            self.assertRegex(cp.stderr, error)
+        self.assertGreater(cp.returncode, 0)
+        self.assertLess(cp.returncode, 126)
+        self.cc_output = None
+
+    # Nominal case, run first
+    def test_01_nominal(self) -> None:
+        self.good_case(None)
+
+    # Trivial error case, run second
+    def test_02_error(self) -> None:
+        self.bad_case('#error "Bad crypto configuration"',
+                      error='"Bad crypto configuration"')
diff -Nru mbedtls-3.6.4/framework/scripts/save_config_history.sh mbedtls-3.6.5/framework/scripts/save_config_history.sh
--- mbedtls-3.6.4/framework/scripts/save_config_history.sh	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/framework/scripts/save_config_history.sh	2025-10-01 18:29:09.516205800 +0300
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+usage () {
+    cat <<EOF
+Usage: $0 [OPTION]... COMMIT VERSION
+Save historical information about config options.
+
+Record information for the git commit COMMIT (tag, sha or any other refspec).
+Store the list of config options and internal macros in file names indicating
+the version VERSION.
+
+  -C DIR    Top-level directory where the git commit can be found.
+            Default: $project_root
+  -o DIR    Directory for the output files. It must exist.
+            Default: $history_dir
+EOF
+}
+
+# Copyright The Mbed TLS Contributors
+# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+
+set -eu
+
+framework_root=$(cd "$(dirname "$0")"/.. && pwd)
+
+project_root=${framework_root%/*}
+history_dir=$framework_root/history
+
+if [ $# -ne 0 ] && [ "$1" = "--help" ]; then
+    usage
+    exit 0
+fi
+
+while getopts C:o: OPTLET; do
+    case $OPTLET in
+        C) project_root=$OPTARG;;
+        o) history_dir=$OPTARG;;
+        *) usage >&2; exit 120;;
+    esac
+done
+shift $((OPTIND - 1))
+
+if [ $# -ne 2 ]; then
+    echo >&2 "This script requires exactly two non-option arguments: COMMIT VERSION"
+    usage >&2
+    exit 120
+fi
+commit=$1
+version=$2
+
+# Assert that the git commit exists
+git -C "$project_root" cat-file -e "${commit}^{commit}"
+
+if git -C "$project_root" merge-base --is-ancestor 0679e3a841c3317dc1f4a0faacc350bc91662b04 "$commit"; then
+    product=tfpsacrypto
+else
+    product=mbedtls
+fi
+
+temp_file=$(mktemp)
+trap 'rm -f "$temp_file"' EXIT INT TERM
+
+## collect_macros VARIANT FILENAME...
+## Find the macros defined in the given files. Save the result in
+## $history_dir/config-VARIANT-*.txt.
+collect_macros () {
+    output_file="$history_dir/config-$1-$product-$version.txt"
+    shift
+    : >"$temp_file"
+    for header in "$@"; do
+        git -C "$project_root" show "$commit:$header" >>"$temp_file"
+    done
+    sed -n 's![/ ]*# *define  *\([A-Z_a-z][0-9A-Z_a-z]*\).*!\1!p' <"$temp_file" |
+        sort -u >"$output_file"
+    if [ ! -s "$output_file" ]; then
+        echo >&2 "$0: Failed to find any config option"
+        exit 1
+    fi
+}
+
+
+collect_macros options $(git -C "$project_root" ls-tree -r --name-only "$commit" \
+                             include/mbedtls/mbedtls_config.h include/psa/crypto_config.h)
+collect_macros adjust $(git -C "$project_root" ls-tree -r --name-only "$commit" |
+                        grep '_adjust.*\.h$')
diff -Nru mbedtls-3.6.4/framework/scripts/test_psa_compliance.py mbedtls-3.6.5/framework/scripts/test_psa_compliance.py
--- mbedtls-3.6.4/framework/scripts/test_psa_compliance.py	2025-06-30 09:25:21.456988000 +0300
+++ mbedtls-3.6.5/framework/scripts/test_psa_compliance.py	2025-10-01 18:30:17.263094700 +0300
@@ -1,151 +1,24 @@
 #!/usr/bin/env python3
 """Run the PSA Crypto API compliance test suite.
-Clone the repo and check out the commit specified by PSA_ARCH_TEST_REPO and PSA_ARCH_TEST_REF,
-then compile and run the test suite. The clone is stored at <repository root>/psa-arch-tests.
-Known defects in either the test suite or mbedtls / TF-PSA-Crypto - identified by their test
-number - are ignored, while unexpected failures AND successes are reported as errors, to help
-keep the list of known defects as up to date as possible.
+
+Transitional wrapper to facilitate the migration of consuming branches.
 """
 
 # Copyright The Mbed TLS Contributors
 # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
 
-import argparse
-import os
-import re
-import shutil
-import subprocess
-import sys
 from typing import List
-from pathlib import Path
 
-from mbedtls_framework import build_tree
+from mbedtls_framework import psa_compliance
+
+PSA_ARCH_TESTS_REF = 'v23.06_API1.5_ADAC_EAC'
 
 # PSA Compliance tests we expect to fail due to known defects in Mbed TLS /
 # TF-PSA-Crypto (or the test suite).
 # The test numbers correspond to the numbers used by the console output of the test suite.
 # Test number 2xx corresponds to the files in the folder
 # psa-arch-tests/api-tests/dev_apis/crypto/test_c0xx
-EXPECTED_FAILURES = {} # type: dict
-
-PSA_ARCH_TESTS_REPO = 'https://github.com/ARM-software/psa-arch-tests.git'
-PSA_ARCH_TESTS_REF = 'v23.06_API1.5_ADAC_EAC'
-
-#pylint: disable=too-many-branches,too-many-statements,too-many-locals
-def main(library_build_dir: str):
-    root_dir = os.getcwd()
-    install_dir = Path(library_build_dir + "/install_dir").resolve()
-    tmp_env = os.environ
-    tmp_env['CC'] = 'gcc'
-    subprocess.check_call(['cmake', '.', '-GUnix Makefiles',
-                           '-B' + library_build_dir,
-                           '-DCMAKE_INSTALL_PREFIX=' + str(install_dir)],
-                          env=tmp_env)
-    subprocess.check_call(['cmake', '--build', library_build_dir, '--target', 'install'])
-
-    if build_tree.is_mbedtls_3_6():
-        libraries_to_link = [str(install_dir.joinpath("lib/libmbedcrypto.a"))]
-    else:
-        libraries_to_link = [str(install_dir.joinpath("lib/" + lib))
-                             for lib in ["libtfpsacrypto.a", "libbuiltin.a",
-                                         "libp256m.a", "libeverest.a"]]
-
-    psa_arch_tests_dir = 'psa-arch-tests'
-    os.makedirs(psa_arch_tests_dir, exist_ok=True)
-    try:
-        os.chdir(psa_arch_tests_dir)
-
-        # Reuse existing local clone
-        subprocess.check_call(['git', 'init'])
-        subprocess.check_call(['git', 'fetch', PSA_ARCH_TESTS_REPO, PSA_ARCH_TESTS_REF])
-        subprocess.check_call(['git', 'checkout', 'FETCH_HEAD'])
-
-        build_dir = 'api-tests/build'
-        try:
-            shutil.rmtree(build_dir)
-        except FileNotFoundError:
-            pass
-        os.mkdir(build_dir)
-        os.chdir(build_dir)
-
-        #pylint: disable=bad-continuation
-        subprocess.check_call([
-            'cmake', '..',
-                     '-GUnix Makefiles',
-                     '-DTARGET=tgt_dev_apis_stdc',
-                     '-DTOOLCHAIN=HOST_GCC',
-                     '-DSUITE=CRYPTO',
-                     '-DPSA_CRYPTO_LIB_FILENAME={}'.format(';'.join(libraries_to_link)),
-                     '-DPSA_INCLUDE_PATHS=' + str(install_dir.joinpath("include"))
-        ])
-
-        subprocess.check_call(['cmake', '--build', '.'])
-
-        proc = subprocess.Popen(['./psa-arch-tests-crypto'],
-                                bufsize=1, stdout=subprocess.PIPE, universal_newlines=True)
-
-        test_re = re.compile(
-            '^TEST: (?P<test_num>[0-9]*)|'
-            '^TEST RESULT: (?P<test_result>FAILED|PASSED)'
-        )
-        test = -1
-        unexpected_successes = set(EXPECTED_FAILURES)
-        expected_failures = [] # type: List[int]
-        unexpected_failures = [] # type: List[int]
-        if proc.stdout is None:
-            return 1
-
-        for line in proc.stdout:
-            print(line, end='')
-            match = test_re.match(line)
-            if match is not None:
-                groupdict = match.groupdict()
-                test_num = groupdict['test_num']
-                if test_num is not None:
-                    test = int(test_num)
-                elif groupdict['test_result'] == 'FAILED':
-                    try:
-                        unexpected_successes.remove(test)
-                        expected_failures.append(test)
-                        print('Expected failure, ignoring')
-                    except KeyError:
-                        unexpected_failures.append(test)
-                        print('ERROR: Unexpected failure')
-                elif test in unexpected_successes:
-                    print('ERROR: Unexpected success')
-        proc.wait()
-
-        print()
-        print('***** test_psa_compliance.py report ******')
-        print()
-        print('Expected failures:', ', '.join(str(i) for i in expected_failures))
-        print('Unexpected failures:', ', '.join(str(i) for i in unexpected_failures))
-        print('Unexpected successes:', ', '.join(str(i) for i in sorted(unexpected_successes)))
-        print()
-        if unexpected_successes or unexpected_failures:
-            if unexpected_successes:
-                print('Unexpected successes encountered.')
-                print('Please remove the corresponding tests from '
-                      'EXPECTED_FAILURES in tests/scripts/compliance_test.py')
-                print()
-            print('FAILED')
-            return 1
-        else:
-            print('SUCCESS')
-            return 0
-    finally:
-        os.chdir(root_dir)
+EXPECTED_FAILURES = [] # type: List[int]
 
 if __name__ == '__main__':
-    BUILD_DIR = 'out_of_source_build'
-
-    # pylint: disable=invalid-name
-    parser = argparse.ArgumentParser()
-    parser.add_argument('--build-dir', nargs=1,
-                        help='path to Mbed TLS / TF-PSA-Crypto build directory')
-    args = parser.parse_args()
-
-    if args.build_dir is not None:
-        BUILD_DIR = args.build_dir[0]
-
-    sys.exit(main(BUILD_DIR))
+    psa_compliance.main(PSA_ARCH_TESTS_REF, expected_failures=EXPECTED_FAILURES)
diff -Nru mbedtls-3.6.4/framework/tests/include/test/bignum_helpers.h mbedtls-3.6.5/framework/tests/include/test/bignum_helpers.h
--- mbedtls-3.6.4/framework/tests/include/test/bignum_helpers.h	2025-06-30 09:25:21.459305500 +0300
+++ mbedtls-3.6.5/framework/tests/include/test/bignum_helpers.h	2025-10-01 18:24:20.280368300 +0300
@@ -17,7 +17,11 @@
 
 #if defined(MBEDTLS_BIGNUM_C)
 
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include <mbedtls/private/bignum.h>
+#else
 #include <mbedtls/bignum.h>
+#endif
 #include <bignum_mod.h>
 
 /** Allocate and populate a core MPI from a test case argument.
diff -Nru mbedtls-3.6.4/framework/tests/include/test/drivers/cipher.h mbedtls-3.6.5/framework/tests/include/test/drivers/cipher.h
--- mbedtls-3.6.4/framework/tests/include/test/drivers/cipher.h	2025-06-30 09:25:21.460130200 +0300
+++ mbedtls-3.6.5/framework/tests/include/test/drivers/cipher.h	2025-10-01 18:24:20.281021600 +0300
@@ -16,7 +16,11 @@
 #include <psa/crypto_driver_common.h>
 #include <psa/crypto.h>
 
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include "mbedtls/private/cipher.h"
+#else
 #include "mbedtls/cipher.h"
+#endif
 
 typedef struct {
     /* If non-null, on success, copy this to the output. */
diff -Nru mbedtls-3.6.4/framework/tests/include/test/fake_external_rng_for_test.h mbedtls-3.6.5/framework/tests/include/test/fake_external_rng_for_test.h
--- mbedtls-3.6.4/framework/tests/include/test/fake_external_rng_for_test.h	2025-06-30 09:25:21.461302000 +0300
+++ mbedtls-3.6.5/framework/tests/include/test/fake_external_rng_for_test.h	2025-10-01 18:24:20.282156500 +0300
@@ -37,7 +37,7 @@
 void mbedtls_test_disable_insecure_external_rng(void);
 #endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
 
-#if defined(MBEDTLS_PLATFORM_GET_ENTROPY_ALT)
+#if defined(MBEDTLS_PSA_DRIVER_GET_ENTROPY)
 
 #include <mbedtls/platform.h>
 
@@ -73,6 +73,6 @@
 /* Return the number of times mbedtls_platform_get_entropy() was called. */
 size_t mbedtls_test_platform_get_entropy_get_call_count(void);
 
-#endif /* MBEDTLS_PLATFORM_GET_ENTROPY_ALT */
+#endif /* MBEDTLS_PSA_DRIVER_GET_ENTROPY */
 
 #endif /* FAKE_EXTERNAL_RNG_FOR_TEST_H */
diff -Nru mbedtls-3.6.4/framework/tests/include/test/helpers.h mbedtls-3.6.5/framework/tests/include/test/helpers.h
--- mbedtls-3.6.4/framework/tests/include/test/helpers.h	2025-06-30 09:25:21.461468500 +0300
+++ mbedtls-3.6.5/framework/tests/include/test/helpers.h	2025-10-01 18:24:20.282310500 +0300
@@ -51,9 +51,15 @@
 #include <stdint.h>
 
 #if defined(MBEDTLS_BIGNUM_C)
+
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include "mbedtls/private/bignum.h"
+#else
 #include "mbedtls/bignum.h"
 #endif
 
+#endif
+
 /** The type of test case arguments that contain binary data. */
 typedef struct data_tag {
     uint8_t *x;
diff -Nru mbedtls-3.6.4/framework/tests/include/test/macros.h mbedtls-3.6.5/framework/tests/include/test/macros.h
--- mbedtls-3.6.4/framework/tests/include/test/macros.h	2025-06-30 09:25:21.461610000 +0300
+++ mbedtls-3.6.5/framework/tests/include/test/macros.h	2025-10-01 18:24:20.282423000 +0300
@@ -21,7 +21,12 @@
 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
 #include "mbedtls/memory_buffer_alloc.h"
 #endif
+
+#if defined(TF_PSA_CRYPTO_VERSION_NUMBER)
+#include "tf_psa_crypto_common.h"
+#else
 #include "common.h"
+#endif
 
 /**
  * \brief   This macro tests the expression passed to it as a test step or
diff -Nru mbedtls-3.6.4/framework/tests/include/test/psa_crypto_helpers.h mbedtls-3.6.5/framework/tests/include/test/psa_crypto_helpers.h
--- mbedtls-3.6.4/framework/tests/include/test/psa_crypto_helpers.h	2025-06-30 09:25:21.461862800 +0300
+++ mbedtls-3.6.5/framework/tests/include/test/psa_crypto_helpers.h	2025-10-01 18:24:20.282641200 +0300
@@ -17,7 +17,12 @@
 #endif
 
 #include <psa/crypto.h>
+
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include <mbedtls/private/ctr_drbg.h>
+#else
 #include <mbedtls/ctr_drbg.h>
+#endif
 
 #if defined(MBEDTLS_PSA_CRYPTO_C)
 /** Initialize the PSA Crypto subsystem. */
diff -Nru mbedtls-3.6.4/framework/tests/include/test/psa_exercise_key.h mbedtls-3.6.5/framework/tests/include/test/psa_exercise_key.h
--- mbedtls-3.6.4/framework/tests/include/test/psa_exercise_key.h	2025-06-30 09:25:21.461980800 +0300
+++ mbedtls-3.6.5/framework/tests/include/test/psa_exercise_key.h	2025-10-01 18:24:20.282785700 +0300
@@ -16,7 +16,10 @@
 
 #if defined(MBEDTLS_PK_C)
 #include <mbedtls/pk.h>
-#endif
+#if defined(MBEDTLS_PK_HAVE_PRIVATE_HEADER)
+#include <mbedtls/private/pk_private.h>
+#endif /* MBEDTLS_PK_HAVE_PRIVATE_HEADER */
+#endif /* MBEDTLS_PK_C */
 
 /** \def KNOWN_SUPPORTED_HASH_ALG
  *
diff -Nru mbedtls-3.6.4/framework/tests/include/test/threading_helpers.h mbedtls-3.6.5/framework/tests/include/test/threading_helpers.h
--- mbedtls-3.6.4/framework/tests/include/test/threading_helpers.h	2025-06-30 09:25:21.462451200 +0300
+++ mbedtls-3.6.5/framework/tests/include/test/threading_helpers.h	2025-10-01 18:24:20.283232500 +0300
@@ -13,18 +13,31 @@
 #ifndef THREADING_HELPERS_H
 #define THREADING_HELPERS_H
 
-#if defined MBEDTLS_THREADING_C
-
 #include "mbedtls/private_access.h"
 #include "mbedtls/build_info.h"
 
+#if defined MBEDTLS_THREADING_C
+
+#include <mbedtls/threading.h>
+
 /* Most fields of publicly available structs are private and are wrapped with
  * MBEDTLS_PRIVATE macro. This define allows tests to access the private fields
  * directly (without using the MBEDTLS_PRIVATE wrapper). */
 #define MBEDTLS_ALLOW_PRIVATE_ACCESS
 
+/* Error in thread management */
 #define MBEDTLS_ERR_THREADING_THREAD_ERROR                 -0x001F
 
+/* Error in mutex usage (used in Mbed TLS up to 3.6, no longer used
+ * outside the test framework since TF-PSA-Crypto 1.0).
+ *
+ * In Mbed TLS 3.5, this is a redefinition of the macro to the same
+ * value (down to the exact sequence of tokens and presence/absence of
+ * whitespace between tokens), which is valid C.
+ */
+#define MBEDTLS_ERR_THREADING_BAD_INPUT_DATA              -0x001C
+
+
 #if defined(MBEDTLS_THREADING_PTHREAD)
 #include <pthread.h>
 #endif /* MBEDTLS_THREADING_PTHREAD */
diff -Nru mbedtls-3.6.4/framework/tests/programs/metatest.c mbedtls-3.6.5/framework/tests/programs/metatest.c
--- mbedtls-3.6.4/framework/tests/programs/metatest.c	2025-06-30 09:25:21.462756400 +0300
+++ mbedtls-3.6.5/framework/tests/programs/metatest.c	2025-10-01 18:24:20.283528000 +0300
@@ -34,13 +34,12 @@
 #include "test/threading_helpers.h"
 #include "test/macros.h"
 #include "test/memory.h"
-#include "common.h"
 
 #include <stdio.h>
 #include <string.h>
 
 #if defined(MBEDTLS_THREADING_C)
-#include <mbedtls/threading.h>
+#include "threading_internal.h"
 #endif
 
 
@@ -286,6 +285,10 @@
 #endif
 }
 
+/* Since TF-PSA-Crypto 1.0, mbedtls_mutex_free() on an all-bits-zero
+ * mutex is defined to be a no-op. In earlier library versions,
+ * it had undefined behavior. */
+#if MBEDTLS_THREADING_INTERNAL_VERSION <= 0x04000000
 static void mutex_free_not_initialized(const char *name)
 {
     (void) name;
@@ -299,6 +302,7 @@
     mbedtls_mutex_free(&mutex);
 #endif
 }
+#endif
 
 static void mutex_double_init(const char *name)
 {
@@ -315,6 +319,10 @@
 #endif
 }
 
+/* Since TF-PSA-Crypto 1.0, mbedtls_mutex_free() on an all-bits-zero
+ * mutex is defined to be a no-op. In earlier library versions,
+ * it had undefined behavior. */
+#if MBEDTLS_THREADING_INTERNAL_VERSION <= 0x04000000
 static void mutex_double_free(const char *name)
 {
     (void) name;
@@ -329,6 +337,7 @@
     mbedtls_mutex_free(&mutex);
 #endif
 }
+#endif
 
 static void mutex_leak(const char *name)
 {
@@ -418,9 +427,13 @@
     { "test_memory_poison_7_1_2_w", "poison", test_memory_poison },
     { "mutex_lock_not_initialized", "pthread", mutex_lock_not_initialized },
     { "mutex_unlock_not_initialized", "pthread", mutex_unlock_not_initialized },
+#if MBEDTLS_THREADING_INTERNAL_VERSION <= 0x04000000
     { "mutex_free_not_initialized", "pthread", mutex_free_not_initialized },
+#endif
     { "mutex_double_init", "pthread", mutex_double_init },
+#if MBEDTLS_THREADING_INTERNAL_VERSION <= 0x04000000
     { "mutex_double_free", "pthread", mutex_double_free },
+#endif
     { "mutex_leak", "pthread", mutex_leak },
     { NULL, NULL, NULL }
 };
diff -Nru mbedtls-3.6.4/framework/tests/src/bignum_helpers.c mbedtls-3.6.5/framework/tests/src/bignum_helpers.c
--- mbedtls-3.6.4/framework/tests/src/bignum_helpers.c	2025-06-30 09:25:21.463824300 +0300
+++ mbedtls-3.6.5/framework/tests/src/bignum_helpers.c	2025-10-11 23:43:14.514709700 +0300
@@ -18,7 +18,12 @@
 #include <stdlib.h>
 #include <string.h>
 
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include <mbedtls/private/bignum.h>
+#else
 #include <mbedtls/bignum.h>
+#endif
+
 #include <bignum_core.h>
 #include <bignum_mod.h>
 #include <bignum_mod_raw.h>
@@ -71,6 +76,7 @@
 
 exit:
     mbedtls_free(*pX);
+    *pX = NULL;
     return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
 }
 
diff -Nru mbedtls-3.6.4/framework/tests/src/drivers/test_driver_asymmetric_encryption.c mbedtls-3.6.5/framework/tests/src/drivers/test_driver_asymmetric_encryption.c
--- mbedtls-3.6.4/framework/tests/src/drivers/test_driver_asymmetric_encryption.c	2025-06-30 09:25:21.464532600 +0300
+++ mbedtls-3.6.5/framework/tests/src/drivers/test_driver_asymmetric_encryption.c	2025-10-01 18:24:20.285180800 +0300
@@ -9,7 +9,13 @@
 
 #if defined(PSA_CRYPTO_DRIVER_TEST)
 #include "psa/crypto.h"
+
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include "mbedtls/private/rsa.h"
+#else
 #include "mbedtls/rsa.h"
+#endif
+
 #include "psa_crypto_rsa.h"
 #include "string.h"
 #include "test/drivers/asymmetric_encryption.h"
diff -Nru mbedtls-3.6.4/framework/tests/src/drivers/test_driver_cipher.c mbedtls-3.6.5/framework/tests/src/drivers/test_driver_cipher.c
--- mbedtls-3.6.4/framework/tests/src/drivers/test_driver_cipher.c	2025-06-30 09:25:21.464656000 +0300
+++ mbedtls-3.6.5/framework/tests/src/drivers/test_driver_cipher.c	2025-10-01 18:24:20.285319600 +0300
@@ -12,7 +12,12 @@
 #include "psa/crypto.h"
 #include "psa_crypto_cipher.h"
 #include "psa_crypto_core.h"
+
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include "mbedtls/private/cipher.h"
+#else
 #include "mbedtls/cipher.h"
+#endif
 
 #include "test/drivers/cipher.h"
 
diff -Nru mbedtls-3.6.4/framework/tests/src/drivers/test_driver_key_management.c mbedtls-3.6.5/framework/tests/src/drivers/test_driver_key_management.c
--- mbedtls-3.6.4/framework/tests/src/drivers/test_driver_key_management.c	2025-06-30 09:25:21.464938200 +0300
+++ mbedtls-3.6.5/framework/tests/src/drivers/test_driver_key_management.c	2025-10-01 18:24:20.285535000 +0300
@@ -14,7 +14,13 @@
 #include "psa_crypto_ecp.h"
 #include "psa_crypto_rsa.h"
 #include "psa_crypto_ffdh.h"
+
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include "mbedtls/private/ecp.h"
+#else
 #include "mbedtls/ecp.h"
+#endif
+
 #include "mbedtls/error.h"
 
 #include "test/drivers/key_management.h"
diff -Nru mbedtls-3.6.4/framework/tests/src/drivers/test_driver_signature.c mbedtls-3.6.5/framework/tests/src/drivers/test_driver_signature.c
--- mbedtls-3.6.4/framework/tests/src/drivers/test_driver_signature.c	2025-06-30 09:25:21.465627000 +0300
+++ mbedtls-3.6.5/framework/tests/src/drivers/test_driver_signature.c	2025-10-01 18:24:20.286036300 +0300
@@ -15,13 +15,22 @@
 #include "psa_crypto_ecp.h"
 #include "psa_crypto_hash.h"
 #include "psa_crypto_rsa.h"
+
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include "mbedtls/private/ecp.h"
+#else
 #include "mbedtls/ecp.h"
+#endif
 
 #include "test/drivers/hash.h"
 #include "test/drivers/signature.h"
 #include "test/drivers/hash.h"
 
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include "mbedtls/private/ecdsa.h"
+#else
 #include "mbedtls/ecdsa.h"
+#endif
 
 #include "test/random.h"
 
diff -Nru mbedtls-3.6.4/framework/tests/src/fake_external_rng_for_test.c mbedtls-3.6.5/framework/tests/src/fake_external_rng_for_test.c
--- mbedtls-3.6.4/framework/tests/src/fake_external_rng_for_test.c	2025-06-30 09:25:21.465757600 +0300
+++ mbedtls-3.6.5/framework/tests/src/fake_external_rng_for_test.c	2025-10-01 18:29:09.517337300 +0300
@@ -15,6 +15,10 @@
 
 #include <test/fake_external_rng_for_test.h>
 
+#if defined(MBEDTLS_PSA_DRIVER_GET_ENTROPY)
+#include <psa/crypto_driver_random.h>
+#endif
+
 #if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
 
 #include <test/random.h>
@@ -51,17 +55,22 @@
 
 #endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
 
-#if defined(MBEDTLS_PLATFORM_GET_ENTROPY_ALT)
+#if defined(MBEDTLS_PSA_DRIVER_GET_ENTROPY)
 
 #include <test/random.h>
+
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include <mbedtls/private/entropy.h>
+#else
 #include <mbedtls/entropy.h>
+#endif
 
 static int platform_get_entropy_force_failure;
 static size_t platform_get_entropy_forced_entropy_content = SIZE_MAX;
 static size_t platform_get_entropy_forced_output_len = SIZE_MAX;
 static size_t platform_get_entropy_call_count;
 
-void mbedtls_test_platform_get_entropy_reset()
+void mbedtls_test_platform_get_entropy_reset(void)
 {
     platform_get_entropy_call_count = 0;
     platform_get_entropy_force_failure = 0;
@@ -84,13 +93,13 @@
     platform_get_entropy_forced_entropy_content = val;
 }
 
-size_t mbedtls_test_platform_get_entropy_get_call_count()
+size_t mbedtls_test_platform_get_entropy_get_call_count(void)
 {
     return platform_get_entropy_call_count;
 }
 
-int mbedtls_platform_get_entropy(unsigned char *output, size_t output_size,
-                                 size_t *output_len, size_t *entropy_content)
+static int fake_get_entropy(unsigned char *output, size_t output_size,
+                            size_t *estimate_bits)
 {
     platform_get_entropy_call_count++;
 
@@ -110,16 +119,30 @@
 
     mbedtls_test_rnd_std_rand(NULL, output, output_size);
 
-    *output_len = output_size;
-    if (entropy_content != NULL) {
+    if (estimate_bits != NULL) {
         if (platform_get_entropy_forced_entropy_content < SIZE_MAX) {
-            *entropy_content = platform_get_entropy_forced_entropy_content;
+            *estimate_bits = platform_get_entropy_forced_entropy_content;
         } else {
-            *entropy_content = output_size * 8;
+            *estimate_bits = output_size * 8;
         }
     }
 
     return 0;
 }
 
-#endif /* MBEDTLS_PLATFORM_GET_ENTROPY_ALT */
+#endif /* MBEDTLS_PSA_DRIVER_GET_ENTROPY */
+
+#if defined(MBEDTLS_PSA_DRIVER_GET_ENTROPY)
+int mbedtls_platform_get_entropy(psa_driver_get_entropy_flags_t flags,
+                                 size_t *estimate_bits,
+                                 unsigned char *output, size_t output_size)
+{
+    /* We don't implement any flags yet. */
+    if (flags != 0) {
+        return PSA_ERROR_NOT_SUPPORTED;
+    }
+
+    int ret = fake_get_entropy(output, output_size, estimate_bits);
+    return ret;
+}
+#endif /* MBEDTLS_PSA_DRIVER_GET_ENTROPY */
diff -Nru mbedtls-3.6.4/framework/tests/src/psa_crypto_helpers.c mbedtls-3.6.5/framework/tests/src/psa_crypto_helpers.c
--- mbedtls-3.6.4/framework/tests/src/psa_crypto_helpers.c	2025-06-30 09:25:21.466151700 +0300
+++ mbedtls-3.6.5/framework/tests/src/psa_crypto_helpers.c	2025-10-01 18:24:20.286515000 +0300
@@ -14,8 +14,12 @@
 #include <test/psa_crypto_helpers.h>
 
 #if defined(MBEDTLS_CTR_DRBG_C)
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include <mbedtls/private/ctr_drbg.h>
+#else
 #include <mbedtls/ctr_drbg.h>
 #endif
+#endif
 
 #if defined(MBEDTLS_PSA_CRYPTO_C)
 
@@ -249,7 +253,12 @@
 
 #if defined(MBEDTLS_PSA_INJECT_ENTROPY)
 
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include <mbedtls/private/entropy.h>
+#else
 #include <mbedtls/entropy.h>
+#endif
+
 #include <psa_crypto_its.h>
 
 int mbedtls_test_inject_entropy_seed_read(unsigned char *buf, size_t len)
diff -Nru mbedtls-3.6.4/framework/tests/src/psa_exercise_key.c mbedtls-3.6.5/framework/tests/src/psa_exercise_key.c
--- mbedtls-3.6.4/framework/tests/src/psa_exercise_key.c	2025-06-30 09:25:21.466431400 +0300
+++ mbedtls-3.6.5/framework/tests/src/psa_exercise_key.c	2025-10-01 18:24:20.286774900 +0300
@@ -25,8 +25,14 @@
 #include <pk_internal.h>
 #endif
 #if defined(MBEDTLS_ECP_C)
+
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include <mbedtls/private/ecp.h>
+#else
 #include <mbedtls/ecp.h>
 #endif
+
+#endif
 #if defined(MBEDTLS_RSA_C)
 #include <rsa_internal.h>
 #endif
@@ -1395,8 +1401,14 @@
     size_t pk_public_length = 0;
 
     switch (pk_type) {
-#if defined(MBEDTLS_RSA_C)
+#if defined(MBEDTLS_RSA_C) || defined(MBEDTLS_PK_USE_PSA_RSA_DATA)
         case MBEDTLS_PK_RSA:
+#if defined(MBEDTLS_PK_USE_PSA_RSA_DATA)
+            TEST_ASSERT(PSA_KEY_TYPE_IS_RSA(psa_type));
+            pk_public = pk->pub_raw;
+            pk_public_length = pk->pub_raw_len;
+            break;
+#else /* MBEDTLS_PK_USE_PSA_RSA_DATA */
             TEST_ASSERT(PSA_KEY_TYPE_IS_RSA(psa_type));
             const mbedtls_rsa_context *rsa = mbedtls_pk_rsa(*pk);
             uint8_t *const end = pk_public_buffer + sizeof(pk_public_buffer);
@@ -1406,8 +1418,10 @@
             pk_public = cursor;
             pk_public_length = end - pk_public;
             break;
-#endif
+#endif /* MBEDTLS_PK_USE_PSA_RSA_DATA */
+#endif /* MBEDTLS_RSA_C || MBEDTLS_PK_USE_PSA_RSA_DATA */
 
+#if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
 #if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
         case MBEDTLS_PK_ECKEY:
         case MBEDTLS_PK_ECKEY_DH:
@@ -1417,9 +1431,7 @@
             pk_public = pk->pub_raw;
             pk_public_length = pk->pub_raw_len;
             break;
-#endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
-
-#if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) && !defined(MBEDTLS_PK_USE_PSA_EC_DATA)
+#else /* MBEDTLS_PK_USE_PSA_EC_DATA */
         case MBEDTLS_PK_ECKEY:
         case MBEDTLS_PK_ECKEY_DH:
         case MBEDTLS_PK_ECDSA:
@@ -1430,7 +1442,8 @@
                            pk_public_buffer, sizeof(pk_public_buffer)), 0);
             pk_public = pk_public_buffer;
             break;
-#endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY && !MBEDTLS_PK_USE_PSA_EC_DATA */
+#endif /* MBEDTLS_PK_USE_PSA_EC_DATA */
+#endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */
 
 #if defined(MBEDTLS_USE_PSA_CRYPTO)
         case MBEDTLS_PK_OPAQUE:
diff -Nru mbedtls-3.6.4/framework/tests/src/random.c mbedtls-3.6.5/framework/tests/src/random.c
--- mbedtls-3.6.4/framework/tests/src/random.c	2025-06-30 09:25:21.466682200 +0300
+++ mbedtls-3.6.5/framework/tests/src/random.c	2025-10-01 18:24:20.287027600 +0300
@@ -23,7 +23,11 @@
 #include <test/random.h>
 #include <string.h>
 
+#if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4
+#include <mbedtls/private/entropy.h>
+#else
 #include <mbedtls/entropy.h>
+#endif
 #include <alignment.h>
 
 int mbedtls_test_rnd_std_rand(void *rng_state,
diff -Nru mbedtls-3.6.4/framework/tests/src/threading_helpers.c mbedtls-3.6.5/framework/tests/src/threading_helpers.c
--- mbedtls-3.6.4/framework/tests/src/threading_helpers.c	2025-06-30 09:25:21.466979300 +0300
+++ mbedtls-3.6.5/framework/tests/src/threading_helpers.c	2025-10-01 18:24:20.287305000 +0300
@@ -9,7 +9,7 @@
 #include <test/threading_helpers.h>
 #include <test/macros.h>
 
-#include "mbedtls/threading.h"
+#include "threading_internal.h"
 
 #if defined(MBEDTLS_THREADING_C)
 
@@ -135,11 +135,54 @@
     MUTEX_LOCKED = 2, //! < Set by mbedtls_test_wrap_mutex_lock
 };
 
+#if MBEDTLS_THREADING_INTERNAL_VERSION < 0x04000000
+/* Historically, the mutex functions in the API were function pointers.
+ * Since TF-PSA-Crypto 1.0.0 (paired with Mbed TLS 4.0.0), the API
+ * functions have the historical names but the pointers have different
+ * names. When building against Mbed TLS 3.6.x, define the pointer name
+ * as aliases. */
+#define mbedtls_mutex_init_ptr mbedtls_mutex_init
+#define mbedtls_mutex_free_ptr mbedtls_mutex_free
+#define mbedtls_mutex_lock_ptr mbedtls_mutex_lock
+#define mbedtls_mutex_unlock_ptr mbedtls_mutex_unlock
+
+typedef mbedtls_threading_mutex_t mbedtls_platform_mutex_t;
+#define mutex_container(platform_mutex) (platform_mutex)
+
+#else /* MBEDTLS_THREADING_INTERNAL_VERSION >= 0x04000000 */
+
+/* Historically, the mutex platform functions received a pointer to the
+ * mbedtls_threading_mutex_t object, and the pthread implementation of
+ * that type had a state field. Now the platform functions receive a pointer
+ * to the mbedtls_platform_mutex_t object which is a field of the
+ * mbedtls_threading_mutex_t object. Get a pointer to the containing
+ * object which holds the state field.
+ *
+ * This weird arrangement was done to minimize changes when switching the
+ * mutex usage framework to the separated platform/API types. In the future
+ * we should clean up how the usage framework fits into the library.
+ */
+static mbedtls_threading_mutex_t *mutex_container(
+    mbedtls_platform_mutex_t *platform_mutex)
+{
+    unsigned char *field_address = (unsigned char *) platform_mutex;
+    size_t offset = offsetof(mbedtls_threading_mutex_t, mutex);
+    return (mbedtls_threading_mutex_t *) (field_address - offset);
+}
+
+#endif /* MBEDTLS_THREADING_INTERNAL_VERSION */
+
+#if MBEDTLS_THREADING_INTERNAL_VERSION >= 0x04000001
+typedef int mutex_init_return_t;
+#else
+typedef void mutex_init_return_t;
+#endif
+
 typedef struct {
-    void (*init)(mbedtls_threading_mutex_t *);
-    void (*free)(mbedtls_threading_mutex_t *);
-    int (*lock)(mbedtls_threading_mutex_t *);
-    int (*unlock)(mbedtls_threading_mutex_t *);
+    mutex_init_return_t (*init)(mbedtls_platform_mutex_t *);
+    void (*free)(mbedtls_platform_mutex_t *);
+    int (*lock)(mbedtls_platform_mutex_t *);
+    int (*unlock)(mbedtls_platform_mutex_t *);
 } mutex_functions_t;
 static mutex_functions_t mutex_functions;
 
@@ -159,7 +202,7 @@
  *  testing. This is not a situation that is likely to happen with normal
  *  testing and we still have TSan to fall back on should this happen.
  */
-mbedtls_threading_mutex_t mbedtls_test_mutex_mutex;
+mbedtls_platform_mutex_t mbedtls_test_mutex_mutex;
 
 /**
  *  The total number of calls to mbedtls_mutex_init(), minus the total number
@@ -170,7 +213,7 @@
  */
 static int live_mutexes;
 
-static void mbedtls_test_mutex_usage_error(mbedtls_threading_mutex_t *mutex,
+static void mbedtls_test_mutex_usage_error(mbedtls_platform_mutex_t *mutex,
                                            const char *msg)
 {
     (void) mutex;
@@ -183,7 +226,7 @@
      * mbedtls_test_mutex_usage_check() will mark it as failed. */
 }
 
-static int mbedtls_test_mutex_can_test(mbedtls_threading_mutex_t *mutex)
+static int mbedtls_test_mutex_can_test(mbedtls_platform_mutex_t *mutex)
 {
     /* If we attempt to run tests on this mutex then we are going to run into a
      * couple of problems:
@@ -191,38 +234,49 @@
      * reporting that failure, as we already hold the mutex at that point.
      * 2. Given the 'global' position of the initialization and free of this
      * mutex, it will be shown as leaked on the first test run. */
-    if (mutex == mbedtls_test_get_info_mutex()) {
+    if (mutex_container(mutex) == mbedtls_test_get_info_mutex()) {
         return 0;
     }
 
     return 1;
 }
 
-static void mbedtls_test_wrap_mutex_init(mbedtls_threading_mutex_t *mutex)
+static mutex_init_return_t mbedtls_test_wrap_mutex_init(mbedtls_platform_mutex_t *mutex)
 {
+#if MBEDTLS_THREADING_INTERNAL_VERSION >= 0x04000001
+    int ret = mutex_functions.init(mutex);
+    if (ret != 0) {
+        return ret;
+    }
+#else
     mutex_functions.init(mutex);
+#endif
 
     if (mbedtls_test_mutex_can_test(mutex)) {
         if (mutex_functions.lock(&mbedtls_test_mutex_mutex) == 0) {
-            mutex->state = MUTEX_IDLE;
+            mutex_container(mutex)->state = MUTEX_IDLE;
             ++live_mutexes;
 
             mutex_functions.unlock(&mbedtls_test_mutex_mutex);
         }
     }
+
+#if MBEDTLS_THREADING_INTERNAL_VERSION >= 0x04000001
+    return 0;
+#endif
 }
 
-static void mbedtls_test_wrap_mutex_free(mbedtls_threading_mutex_t *mutex)
+static void mbedtls_test_wrap_mutex_free(mbedtls_platform_mutex_t *mutex)
 {
     if (mbedtls_test_mutex_can_test(mutex)) {
         if (mutex_functions.lock(&mbedtls_test_mutex_mutex) == 0) {
 
-            switch (mutex->state) {
+            switch (mutex_container(mutex)->state) {
                 case MUTEX_FREED:
                     mbedtls_test_mutex_usage_error(mutex, "free without init or double free");
                     break;
                 case MUTEX_IDLE:
-                    mutex->state = MUTEX_FREED;
+                    mutex_container(mutex)->state = MUTEX_FREED;
                     --live_mutexes;
                     break;
                 case MUTEX_LOCKED:
@@ -240,7 +294,7 @@
     mutex_functions.free(mutex);
 }
 
-static int mbedtls_test_wrap_mutex_lock(mbedtls_threading_mutex_t *mutex)
+static int mbedtls_test_wrap_mutex_lock(mbedtls_platform_mutex_t *mutex)
 {
     /* Lock the passed in mutex first, so that the only way to change the state
      * is to hold the passed in and internal mutex - otherwise we create a race
@@ -249,13 +303,13 @@
 
     if (mbedtls_test_mutex_can_test(mutex)) {
         if (mutex_functions.lock(&mbedtls_test_mutex_mutex) == 0) {
-            switch (mutex->state) {
+            switch (mutex_container(mutex)->state) {
                 case MUTEX_FREED:
                     mbedtls_test_mutex_usage_error(mutex, "lock without init");
                     break;
                 case MUTEX_IDLE:
                     if (ret == 0) {
-                        mutex->state = MUTEX_LOCKED;
+                        mutex_container(mutex)->state = MUTEX_LOCKED;
                     }
                     break;
                 case MUTEX_LOCKED:
@@ -273,14 +327,14 @@
     return ret;
 }
 
-static int mbedtls_test_wrap_mutex_unlock(mbedtls_threading_mutex_t *mutex)
+static int mbedtls_test_wrap_mutex_unlock(mbedtls_platform_mutex_t *mutex)
 {
     /* Lock the internal mutex first and change state, so that the only way to
      * change the state is to hold the passed in and internal mutex - otherwise
      * we create a race condition. */
     if (mbedtls_test_mutex_can_test(mutex)) {
         if (mutex_functions.lock(&mbedtls_test_mutex_mutex) == 0) {
-            switch (mutex->state) {
+            switch (mutex_container(mutex)->state) {
                 case MUTEX_FREED:
                     mbedtls_test_mutex_usage_error(mutex, "unlock without init");
                     break;
@@ -288,7 +342,7 @@
                     mbedtls_test_mutex_usage_error(mutex, "unlock without lock");
                     break;
                 case MUTEX_LOCKED:
-                    mutex->state = MUTEX_IDLE;
+                    mutex_container(mutex)->state = MUTEX_IDLE;
                     break;
                 default:
                     mbedtls_test_mutex_usage_error(mutex, "corrupted state");
@@ -303,14 +357,14 @@
 
 void mbedtls_test_mutex_usage_init(void)
 {
-    mutex_functions.init = mbedtls_mutex_init;
-    mutex_functions.free = mbedtls_mutex_free;
-    mutex_functions.lock = mbedtls_mutex_lock;
-    mutex_functions.unlock = mbedtls_mutex_unlock;
-    mbedtls_mutex_init = &mbedtls_test_wrap_mutex_init;
-    mbedtls_mutex_free = &mbedtls_test_wrap_mutex_free;
-    mbedtls_mutex_lock = &mbedtls_test_wrap_mutex_lock;
-    mbedtls_mutex_unlock = &mbedtls_test_wrap_mutex_unlock;
+    mutex_functions.init = *mbedtls_mutex_init_ptr;
+    mutex_functions.free = *mbedtls_mutex_free_ptr;
+    mutex_functions.lock = *mbedtls_mutex_lock_ptr;
+    mutex_functions.unlock = *mbedtls_mutex_unlock_ptr;
+    mbedtls_mutex_init_ptr = &mbedtls_test_wrap_mutex_init;
+    mbedtls_mutex_free_ptr = &mbedtls_test_wrap_mutex_free;
+    mbedtls_mutex_lock_ptr = &mbedtls_test_wrap_mutex_lock;
+    mbedtls_mutex_unlock_ptr = &mbedtls_test_wrap_mutex_unlock;
 
     mutex_functions.init(&mbedtls_test_mutex_mutex);
 }
@@ -341,10 +395,10 @@
 
 void mbedtls_test_mutex_usage_end(void)
 {
-    mbedtls_mutex_init = mutex_functions.init;
-    mbedtls_mutex_free = mutex_functions.free;
-    mbedtls_mutex_lock = mutex_functions.lock;
-    mbedtls_mutex_unlock = mutex_functions.unlock;
+    mbedtls_mutex_init_ptr = mutex_functions.init;
+    mbedtls_mutex_free_ptr = mutex_functions.free;
+    mbedtls_mutex_lock_ptr = mutex_functions.lock;
+    mbedtls_mutex_unlock_ptr = mutex_functions.unlock;
 
     mutex_functions.free(&mbedtls_test_mutex_mutex);
 }
diff -Nru mbedtls-3.6.4/include/mbedtls/bignum.h mbedtls-3.6.5/include/mbedtls/bignum.h
--- mbedtls-3.6.4/include/mbedtls/bignum.h	2025-06-30 09:24:52.939337700 +0300
+++ mbedtls-3.6.5/include/mbedtls/bignum.h	2025-10-14 19:12:36.858954700 +0300
@@ -974,6 +974,7 @@
  * \brief          Compute the greatest common divisor: G = gcd(A, B)
  *
  * \param G        The destination MPI. This must point to an initialized MPI.
+ *                 This will always be positive or 0.
  * \param A        The first operand. This must point to an initialized MPI.
  * \param B        The second operand. This must point to an initialized MPI.
  *
@@ -988,10 +989,12 @@
  * \brief          Compute the modular inverse: X = A^-1 mod N
  *
  * \param X        The destination MPI. This must point to an initialized MPI.
+ *                 The value returned on success will be between [1, N-1].
  * \param A        The MPI to calculate the modular inverse of. This must point
- *                 to an initialized MPI.
+ *                 to an initialized MPI. This value can be negative, in which
+ *                 case a positive answer will still be returned in \p X.
  * \param N        The base of the modular inversion. This must point to an
- *                 initialized MPI.
+ *                 initialized MPI and be greater than one.
  *
  * \return         \c 0 if successful.
  * \return         #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed.
diff -Nru mbedtls-3.6.4/include/mbedtls/build_info.h mbedtls-3.6.5/include/mbedtls/build_info.h
--- mbedtls-3.6.4/include/mbedtls/build_info.h	2025-06-30 09:24:52.939850300 +0300
+++ mbedtls-3.6.5/include/mbedtls/build_info.h	2025-10-14 19:12:36.859993200 +0300
@@ -26,16 +26,16 @@
  */
 #define MBEDTLS_VERSION_MAJOR  3
 #define MBEDTLS_VERSION_MINOR  6
-#define MBEDTLS_VERSION_PATCH  4
+#define MBEDTLS_VERSION_PATCH  5
 
 /**
  * The single version number has the following structure:
  *    MMNNPP00
  *    Major version | Minor version | Patch version
  */
-#define MBEDTLS_VERSION_NUMBER         0x03060400
-#define MBEDTLS_VERSION_STRING         "3.6.4"
-#define MBEDTLS_VERSION_STRING_FULL    "Mbed TLS 3.6.4"
+#define MBEDTLS_VERSION_NUMBER         0x03060500
+#define MBEDTLS_VERSION_STRING         "3.6.5"
+#define MBEDTLS_VERSION_STRING_FULL    "Mbed TLS 3.6.5"
 
 /* Macros for build-time platform detection */
 
diff -Nru mbedtls-3.6.4/include/mbedtls/cipher.h mbedtls-3.6.5/include/mbedtls/cipher.h
--- mbedtls-3.6.4/include/mbedtls/cipher.h	2025-06-30 09:24:52.941265000 +0300
+++ mbedtls-3.6.5/include/mbedtls/cipher.h	2025-10-14 19:12:36.861427800 +0300
@@ -329,8 +329,15 @@
     /** Padding functions to use, if relevant for
      * the specific cipher mode.
      */
-    void(*MBEDTLS_PRIVATE(add_padding))(unsigned char *output, size_t olen, size_t data_len);
-    int(*MBEDTLS_PRIVATE(get_padding))(unsigned char *input, size_t ilen, size_t *data_len);
+    void(*MBEDTLS_PRIVATE(add_padding))(unsigned char *output, size_t olen,
+                                        size_t data_len);
+    /* Report invalid-padding condition through the output parameter
+     * invalid_padding. To minimize changes in Mbed TLS 3.6, where this
+     * declaration is in a public header, use the public type size_t
+     * rather than the internal type mbedtls_ct_condition_t. */
+    int(*MBEDTLS_PRIVATE(get_padding))(unsigned char *input, size_t ilen,
+                                       size_t *data_len,
+                                       size_t *invalid_padding);
 #endif
 
     /** Buffer for input that has not been processed yet. */
@@ -878,23 +885,24 @@
  *
  * \note          With non-AEAD ciphers, the order of calls for each message
  *                is as follows:
- *                1. mbedtls_cipher_set_iv() if the mode uses an IV/nonce.
- *                2. mbedtls_cipher_reset()
- *                3. mbedtls_cipher_update() one or more times
- *                4. mbedtls_cipher_finish()
+ *                1. mbedtls_cipher_set_iv() if the mode uses an IV/nonce;
+ *                2. mbedtls_cipher_reset();
+ *                3. mbedtls_cipher_update() zero, one or more times;
+ *                4. mbedtls_cipher_finish_padded() (recommended for decryption
+ *                   if the mode uses padding) or mbedtls_cipher_finish().
  *                .
  *                This sequence can be repeated to encrypt or decrypt multiple
  *                messages with the same key.
  *
  * \note          With AEAD ciphers, the order of calls for each message
  *                is as follows:
- *                1. mbedtls_cipher_set_iv() if the mode uses an IV/nonce.
- *                2. mbedtls_cipher_reset()
- *                3. mbedtls_cipher_update_ad()
- *                4. mbedtls_cipher_update() one or more times
- *                5. mbedtls_cipher_finish()
+ *                1. mbedtls_cipher_set_iv() if the mode uses an IV/nonce;
+ *                2. mbedtls_cipher_reset();
+ *                3. mbedtls_cipher_update_ad();
+ *                4. mbedtls_cipher_update() zero, one or more times;
+ *                5. mbedtls_cipher_finish() (or mbedtls_cipher_finish_padded());
  *                6. mbedtls_cipher_check_tag() (for decryption) or
- *                mbedtls_cipher_write_tag() (for encryption).
+ *                   mbedtls_cipher_write_tag() (for encryption).
  *                .
  *                This sequence can be repeated to encrypt or decrypt multiple
  *                messages with the same key.
@@ -930,7 +938,8 @@
  *                      many block-sized blocks of data as possible to output.
  *                      Any data that cannot be written immediately is either
  *                      added to the next block, or flushed when
- *                      mbedtls_cipher_finish() is called.
+ *                      mbedtls_cipher_finish() or mbedtls_cipher_finish_padded()
+ *                      is called.
  *                      Exception: For MBEDTLS_MODE_ECB, expects a single block
  *                      in size. For example, 16 Bytes for AES.
  *
@@ -964,12 +973,30 @@
  *                      contained in it is padded to the size of
  *                      the last block, and written to the \p output buffer.
  *
+ * \warning             This function reports invalid padding through an error
+ *                      code. Adversaries may be able to decrypt encrypted
+ *                      data if they can submit chosen ciphertexts and
+ *                      detect whether it has valid padding or not,
+ *                      either through direct observation or through a side
+ *                      channel such as timing. This is known as a
+ *                      padding oracle attack.
+ *                      Therefore applications that call this function for
+ *                      decryption with a cipher that involves padding
+ *                      should take care around error handling. Preferably,
+ *                      such applications should use
+ *                      mbedtls_cipher_finish_padded() instead of this function.
+ *
  * \param ctx           The generic cipher context. This must be initialized and
  *                      bound to a key.
  * \param output        The buffer to write data to. This needs to be a writable
  *                      buffer of at least block_size Bytes.
  * \param olen          The length of the data written to the \p output buffer.
  *                      This may not be \c NULL.
+ *                      Note that when decrypting in a mode with padding,
+ *                      the actual output length is sensitive and may be
+ *                      used to mount a padding oracle attack (see warning
+ *                      above), although less efficiently than through
+ *                      the invalid-padding condition.
  *
  * \return              \c 0 on success.
  * \return              #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
@@ -977,17 +1004,66 @@
  * \return              #MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED on decryption
  *                      expecting a full block but not receiving one.
  * \return              #MBEDTLS_ERR_CIPHER_INVALID_PADDING on invalid padding
- *                      while decrypting.
+ *                      while decrypting. Note that invalid-padding errors
+ *                      should be handled carefully; see the warning above.
  * \return              A cipher-specific error code on failure.
  */
 int mbedtls_cipher_finish(mbedtls_cipher_context_t *ctx,
                           unsigned char *output, size_t *olen);
 
+/**
+ * \brief               The generic cipher finalization function. If data still
+ *                      needs to be flushed from an incomplete block, the data
+ *                      contained in it is padded to the size of
+ *                      the last block, and written to the \p output buffer.
+ *
+ * \note                This function is similar to mbedtls_cipher_finish().
+ *                      The only difference is that it reports invalid padding
+ *                      decryption differently, through the \p invalid_padding
+ *                      parameter rather than an error code.
+ *                      For encryption, and in modes without padding (including
+ *                      all authenticated modes), this function is identical
+ *                      to mbedtls_cipher_finish().
+ *
+ * \param[in,out] ctx   The generic cipher context. This must be initialized and
+ *                      bound to a key.
+ * \param[out] output   The buffer to write data to. This needs to be a writable
+ *                      buffer of at least block_size Bytes.
+ * \param[out] olen     The length of the data written to the \p output buffer.
+ *                      This may not be \c NULL.
+ *                      Note that when decrypting in a mode with padding,
+ *                      the actual output length is sensitive and may be
+ *                      used to mount a padding oracle attack (see warning
+ *                      on mbedtls_cipher_finish()).
+ * \param[out] invalid_padding
+ *                      If this function returns \c 0 on decryption,
+ *                      \p *invalid_padding is \c 0 if the ciphertext was
+ *                      valid, and all-bits-one if the ciphertext had invalid
+ *                      padding.
+ *                      On encryption, or in a mode without padding (including
+ *                      all authenticated modes), \p *invalid_padding is \c 0
+ *                      on success.
+ *                      The value in \p *invalid_padding is unspecified if
+ *                      this function returns a nonzero status.
+ *
+ * \return              \c 0 on success.
+ *                      Also \c 0 for decryption with invalid padding.
+ * \return              #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
+ *                      parameter-verification failure.
+ * \return              #MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED on decryption
+ *                      expecting a full block but not receiving one.
+ * \return              A cipher-specific error code on failure.
+ */
+int mbedtls_cipher_finish_padded(mbedtls_cipher_context_t *ctx,
+                                 unsigned char *output, size_t *olen,
+                                 size_t *invalid_padding);
+
 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
 /**
  * \brief               This function writes a tag for AEAD ciphers.
  *                      Currently supported with GCM and ChaCha20+Poly1305.
- *                      This must be called after mbedtls_cipher_finish().
+ *                      This must be called after mbedtls_cipher_finish()
+ *                      or mbedtls_cipher_finish_padded().
  *
  * \param ctx           The generic cipher context. This must be initialized,
  *                      bound to a key, and have just completed a cipher
@@ -1006,7 +1082,8 @@
 /**
  * \brief               This function checks the tag for AEAD ciphers.
  *                      Currently supported with GCM and ChaCha20+Poly1305.
- *                      This must be called after mbedtls_cipher_finish().
+ *                      This must be called after mbedtls_cipher_finish()
+ *                      or mbedtls_cipher_finish_padded().
  *
  * \param ctx           The generic cipher context. This must be initialized.
  * \param tag           The buffer holding the tag. This must be a readable
diff -Nru mbedtls-3.6.4/include/mbedtls/mbedtls_config.h mbedtls-3.6.5/include/mbedtls/mbedtls_config.h
--- mbedtls-3.6.4/include/mbedtls/mbedtls_config.h	2025-06-30 09:24:52.948094600 +0300
+++ mbedtls-3.6.5/include/mbedtls/mbedtls_config.h	2025-10-14 19:12:36.868876500 +0300
@@ -2150,7 +2150,19 @@
 /**
  * \def MBEDTLS_THREADING_ALT
  *
- * Provide your own alternate threading implementation.
+ * Provide your own alternate implementation of threading primitives
+ * for mutexes. If you enable this option:
+ *
+ * - Provide a header file `"threading_alt.h"`, defining the
+ *   type `mbedtls_threading_mutex_t` of mutex objects.
+ *
+ * - Call the function mbedtls_threading_set_alt() in your application
+ *   before calling any other library function (in particular before
+ *   calling psa_crypto_init(), performing an asymmetric cryptography
+ *   operation, or starting a TLS connection).
+ *
+ * See mbedtls/threading.h for more details, especially the documentation
+ * of mbedtls_threading_set_alt().
  *
  * Requires: MBEDTLS_THREADING_C
  *
diff -Nru mbedtls-3.6.4/include/mbedtls/threading.h mbedtls-3.6.5/include/mbedtls/threading.h
--- mbedtls-3.6.4/include/mbedtls/threading.h	2025-06-30 09:24:52.955819400 +0300
+++ mbedtls-3.6.5/include/mbedtls/threading.h	2025-10-14 19:12:36.878534600 +0300
@@ -51,15 +51,45 @@
  *                  mbedtls_threading_free_alt() must be called once in the main
  *                  thread after all other Mbed TLS functions.
  *
- * \note            mutex_init() and mutex_free() don't return a status code.
- *                  If mutex_init() fails, it should leave its argument (the
- *                  mutex) in a state such that mutex_lock() will fail when
- *                  called with this argument.
+ * \warning         \p mutex_init and \p mutex_free don't return a status code.
+ *                  If \p mutex_init fails, it should leave the mutex in
+ *                  a state such that \p mutex_lock will reliably return
+ *                  #MBEDTLS_ERR_THREADING_MUTEX_ERROR called on this mutex,
+ *                  and \p mutex_free will do nothing.
  *
- * \param mutex_init    the init function implementation
- * \param mutex_free    the free function implementation
- * \param mutex_lock    the lock function implementation
- * \param mutex_unlock  the unlock function implementation
+ * \param mutex_init    The init function implementation. <br>
+ *                      The behavior is undefined if the mutex is already
+ *                      initialized and has not been destroyed.
+ *                      On platforms where mutex initialization can fail,
+ *                      since this function does not return a status code,
+ *                      it must leave the mutex object in a safe state where
+ *                      subsequent function calls will not cause undefined
+ *                      behavior: after a call to \p mutex_init, the
+ *                      function \p mutex_lock must either succeed or
+ *                      fail with a nonzero status code, and the function
+ *                      \p mutex_free must free any resources associated
+ *                      with the mutex..
+ * \param mutex_free    The destroy function implementation. <br>
+ *                      This function must free any resources associated
+ *                      with the mutex object. <br>
+ *                      This function must work reliably if \p mutex_init
+ *                      has been called on the mutex and \p mutex_free
+ *                      has not yet been called. <br>
+ *                      The behavior is undefined if the mutex was not
+ *                      initialized, if it has already been destroyed,
+ *                      if it is currently locked, or if this function
+ *                      is called concurrently from multiple threads.
+ * \param mutex_lock    The lock function implementation. <br>
+ *                      This function must work reliably on any mutex
+ *                      which is not currently locked and on which
+ *                      \p mutex_init has already been called but
+ *                      \p mutex_free has not been called yet. <br>
+ *                      The behavior is undefined if the mutex was not
+ *                      initialized, if it has already been destroyed, or if
+ *                      it is currently locked by the calling thread.
+ * \param mutex_unlock  The unlock function implementation. <br>
+ *                      The behavior is undefined if the mutex is not
+ *                      currently locked by the calling thread.
  */
 void mbedtls_threading_set_alt(void (*mutex_init)(mbedtls_threading_mutex_t *),
                                void (*mutex_free)(mbedtls_threading_mutex_t *),
diff -Nru mbedtls-3.6.4/include/psa/crypto_extra.h mbedtls-3.6.5/include/psa/crypto_extra.h
--- mbedtls-3.6.4/include/psa/crypto_extra.h	2025-06-30 09:24:52.961263400 +0300
+++ mbedtls-3.6.5/include/psa/crypto_extra.h	2025-10-14 19:12:36.886370700 +0300
@@ -600,9 +600,10 @@
  * This means that PSA core was built with the corresponding PSA_WANT_ALG_xxx
  * set and that psa_crypto_init has already been called.
  *
- * \note When using Mbed TLS version of PSA core (i.e. MBEDTLS_PSA_CRYPTO_C is
- *       set) for now this function only checks the state of the driver
- *       subsystem, not the algorithm. This might be improved in the future.
+ * \note When using the built-in version of the PSA core (i.e.
+ *       #MBEDTLS_PSA_CRYPTO_C is set), for now, this function only checks
+ *       the state of the driver subsystem, not the algorithm.
+ *       This might be improved in the future.
  *
  * \param hash_alg  The hash algorithm.
  *
@@ -610,6 +611,21 @@
  */
 int psa_can_do_hash(psa_algorithm_t hash_alg);
 
+/**
+ * Tell if PSA is ready for this cipher.
+ *
+ * \note When using the built-in version of the PSA core (i.e.
+ *       #MBEDTLS_PSA_CRYPTO_C is set), for now, this function only checks
+ *       the state of the driver subsystem, not the key type and algorithm.
+ *       This might be improved in the future.
+ *
+ * \param key_type    The key type.
+ * \param cipher_alg  The cipher algorithm.
+ *
+ * \return 1 if the PSA can handle \p cipher_alg, 0 otherwise.
+ */
+int psa_can_do_cipher(psa_key_type_t key_type, psa_algorithm_t cipher_alg);
+
 /**@}*/
 
 /** \addtogroup crypto_types
@@ -744,6 +760,17 @@
  * To make the authentication explicit there are various methods, see Section 5
  * of RFC 8236 for two examples.
  *
+ * \note The JPAKE implementation has the following limitations:
+ *       - The only supported primitive is ECC on the curve secp256r1, i.e.
+ *         `PSA_PAKE_PRIMITIVE(PSA_PAKE_PRIMITIVE_TYPE_ECC,
+ *          PSA_ECC_FAMILY_SECP_R1, 256)`.
+ *       - The only supported hash algorithm is SHA-256, i.e.
+ *         `PSA_ALG_SHA_256`.
+ *       - When using the built-in implementation, the user ID and the peer ID
+ *         must be `"client"` (6-byte string) and `"server"` (6-byte string),
+ *         or the other way round.
+ *         Third-party drivers may or may not have this limitation.
+ *
  */
 #define PSA_ALG_JPAKE                   ((psa_algorithm_t) 0x0a000100)
 
@@ -1180,6 +1207,8 @@
  * This function overwrites any PAKE algorithm
  * previously set in \p cipher_suite.
  *
+ * \note For #PSA_ALG_JPAKE, the only supported hash algorithm is SHA-256.
+ *
  * \param[out] cipher_suite    The cipher suite structure to write to.
  * \param algorithm            The PAKE algorithm to write.
  *                             (`PSA_ALG_XXX` values of type ::psa_algorithm_t
@@ -1203,6 +1232,10 @@
  *
  * This function overwrites any primitive previously set in \p cipher_suite.
  *
+ * \note For #PSA_ALG_JPAKE, the only supported primitive is ECC on the curve
+ *       secp256r1, i.e. `PSA_PAKE_PRIMITIVE(PSA_PAKE_PRIMITIVE_TYPE_ECC,
+ *       PSA_ECC_FAMILY_SECP_R1, 256)`.
+ *
  * \param[out] cipher_suite    The cipher suite structure to write to.
  * \param primitive            The primitive to write. If this is 0, the
  *                             primitive type in \p cipher_suite becomes
@@ -1539,6 +1572,10 @@
  * values of type ::psa_algorithm_t such that #PSA_ALG_IS_PAKE(\c alg) is true)
  * for more information.
  *
+ * \note When using the built-in implementation of #PSA_ALG_JPAKE, the user ID
+ *       must be `"client"` (6-byte string) or `"server"` (6-byte string).
+ *       Third-party drivers may or may not have this limitation.
+ *
  * \param[in,out] operation     The operation object to set the user ID for. It
  *                              must have been set up by psa_pake_setup() and
  *                              not yet in use (neither psa_pake_output() nor
@@ -1580,6 +1617,10 @@
  * values of type ::psa_algorithm_t such that #PSA_ALG_IS_PAKE(\c alg) is true)
  * for more information.
  *
+ * \note When using the built-in implementation of #PSA_ALG_JPAKE, the peer ID
+ *       must be `"client"` (6-byte string) or `"server"` (6-byte string).
+ *       Third-party drivers may or may not have this limitation.
+ *
  * \param[in,out] operation     The operation object to set the peer ID for. It
  *                              must have been set up by psa_pake_setup() and
  *                              not yet in use (neither psa_pake_output() nor
diff -Nru mbedtls-3.6.4/library/bignum.c mbedtls-3.6.5/library/bignum.c
--- mbedtls-3.6.4/library/bignum.c	2025-06-30 09:24:52.966019000 +0300
+++ mbedtls-3.6.5/library/bignum.c	2025-10-14 19:12:36.895748400 +0300
@@ -430,13 +430,6 @@
     return ret;
 }
 
-/*
- * Return the number of less significant zero-bits
- */
-size_t mbedtls_mpi_lsb(const mbedtls_mpi *X)
-{
-    size_t i;
-
 #if defined(__has_builtin)
 #if (MBEDTLS_MPI_UINT_MAX == UINT_MAX) && __has_builtin(__builtin_ctz)
     #define mbedtls_mpi_uint_ctz __builtin_ctz
@@ -447,22 +440,34 @@
 #endif
 #endif
 
-#if defined(mbedtls_mpi_uint_ctz)
+#if !defined(mbedtls_mpi_uint_ctz)
+static size_t mbedtls_mpi_uint_ctz(mbedtls_mpi_uint x)
+{
+    size_t count = 0;
+    mbedtls_ct_condition_t done = MBEDTLS_CT_FALSE;
+
+    for (size_t i = 0; i < biL; i++) {
+        mbedtls_ct_condition_t non_zero = mbedtls_ct_bool((x >> i) & 1);
+        done = mbedtls_ct_bool_or(done, non_zero);
+        count = mbedtls_ct_size_if(done, count, i + 1);
+    }
+
+    return count;
+}
+#endif
+
+/*
+ * Return the number of less significant zero-bits
+ */
+size_t mbedtls_mpi_lsb(const mbedtls_mpi *X)
+{
+    size_t i;
+
     for (i = 0; i < X->n; i++) {
         if (X->p[i] != 0) {
             return i * biL + mbedtls_mpi_uint_ctz(X->p[i]);
         }
     }
-#else
-    size_t count = 0;
-    for (i = 0; i < X->n; i++) {
-        for (size_t j = 0; j < biL; j++, count++) {
-            if (((X->p[i] >> j) & 1) != 0) {
-                return count;
-            }
-        }
-    }
-#endif
 
     return 0;
 }
@@ -1743,104 +1748,122 @@
     return mbedtls_mpi_exp_mod_optionally_safe(X, A, E, MBEDTLS_MPI_IS_PUBLIC, N, prec_RR);
 }
 
+/* Constant-time GCD and/or modinv with odd modulus and A <= N */
+int mbedtls_mpi_gcd_modinv_odd(mbedtls_mpi *G,
+                               mbedtls_mpi *I,
+                               const mbedtls_mpi *A,
+                               const mbedtls_mpi *N)
+{
+    int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
+    mbedtls_mpi local_g;
+    mbedtls_mpi_uint *T = NULL;
+    const size_t T_factor = I != NULL ? 5 : 4;
+    const mbedtls_mpi_uint zero = 0;
+
+    /* Check requirements on A and N */
+    if (mbedtls_mpi_cmp_int(A, 0) < 0 ||
+        mbedtls_mpi_cmp_mpi(A, N) > 0 ||
+        mbedtls_mpi_get_bit(N, 0) != 1 ||
+        (I != NULL && mbedtls_mpi_cmp_int(N, 1) == 0)) {
+        return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
+    }
+
+    /* Check aliasing requirements */
+    if (A == N || (I != NULL && (I == N || G == N))) {
+        return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
+    }
+
+    mbedtls_mpi_init(&local_g);
+
+    if (G == NULL) {
+        G = &local_g;
+    }
+
+    /* We can't modify the values of G or I before use in the main function,
+     * as they could be aliased to A or N. */
+    MBEDTLS_MPI_CHK(mbedtls_mpi_grow(G, N->n));
+    if (I != NULL) {
+        MBEDTLS_MPI_CHK(mbedtls_mpi_grow(I, N->n));
+    }
+
+    T = mbedtls_calloc(sizeof(mbedtls_mpi_uint) * N->n, T_factor);
+    if (T == NULL) {
+        ret = MBEDTLS_ERR_MPI_ALLOC_FAILED;
+        goto cleanup;
+    }
+
+    mbedtls_mpi_uint *Ip = I != NULL ? I->p : NULL;
+    /* If A is 0 (null), then A->p would be null, and A->n would be 0,
+     * which would be an issue if A->p and A->n were passed to
+     * mbedtls_mpi_core_gcd_modinv_odd below. */
+    const mbedtls_mpi_uint *Ap = A->p != NULL ? A->p : &zero;
+    size_t An = A->n >= N->n ? N->n : A->p != NULL ? A->n : 1;
+    mbedtls_mpi_core_gcd_modinv_odd(G->p, Ip, Ap, An, N->p, N->n, T);
+
+    G->s = 1;
+    if (I != NULL) {
+        I->s = 1;
+    }
+
+    if (G->n > N->n) {
+        memset(G->p + N->n, 0, ciL * (G->n - N->n));
+    }
+    if (I != NULL && I->n > N->n) {
+        memset(I->p + N->n, 0, ciL * (I->n - N->n));
+    }
+
+cleanup:
+    mbedtls_mpi_free(&local_g);
+    mbedtls_free(T);
+    return ret;
+}
+
 /*
- * Greatest common divisor: G = gcd(A, B)  (HAC 14.54)
+ * Greatest common divisor: G = gcd(A, B)
+ * Wrapper around mbedtls_mpi_gcd_modinv() that removes its restrictions.
  */
 int mbedtls_mpi_gcd(mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B)
 {
     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
-    size_t lz, lzt;
     mbedtls_mpi TA, TB;
 
     mbedtls_mpi_init(&TA); mbedtls_mpi_init(&TB);
 
+    /* Make copies and take absolute values */
     MBEDTLS_MPI_CHK(mbedtls_mpi_copy(&TA, A));
     MBEDTLS_MPI_CHK(mbedtls_mpi_copy(&TB, B));
+    TA.s = TB.s = 1;
 
-    lz = mbedtls_mpi_lsb(&TA);
-    lzt = mbedtls_mpi_lsb(&TB);
-
-    /* The loop below gives the correct result when A==0 but not when B==0.
-     * So have a special case for B==0. Leverage the fact that we just
-     * calculated the lsb and lsb(B)==0 iff B is odd or 0 to make the test
-     * slightly more efficient than cmp_int(). */
-    if (lzt == 0 && mbedtls_mpi_get_bit(&TB, 0) == 0) {
-        ret = mbedtls_mpi_copy(G, A);
+    /* Make the two values the same (non-zero) number of limbs.
+     * This is needed to use mbedtls_mpi_core functions below. */
+    MBEDTLS_MPI_CHK(mbedtls_mpi_grow(&TA, TB.n != 0 ? TB.n : 1));
+    MBEDTLS_MPI_CHK(mbedtls_mpi_grow(&TB, TA.n)); // non-zero from above
+
+    /* Handle special cases (that don't happen in crypto usage) */
+    if (mbedtls_mpi_core_check_zero_ct(TA.p, TA.n) == MBEDTLS_CT_FALSE) {
+        MBEDTLS_MPI_CHK(mbedtls_mpi_copy(G, &TB)); // GCD(0, B) = abs(B)
         goto cleanup;
     }
-
-    if (lzt < lz) {
-        lz = lzt;
-    }
-
-    TA.s = TB.s = 1;
-
-    /* We mostly follow the procedure described in HAC 14.54, but with some
-     * minor differences:
-     * - Sequences of multiplications or divisions by 2 are grouped into a
-     *   single shift operation.
-     * - The procedure in HAC assumes that 0 < TB <= TA.
-     *     - The condition TB <= TA is not actually necessary for correctness.
-     *       TA and TB have symmetric roles except for the loop termination
-     *       condition, and the shifts at the beginning of the loop body
-     *       remove any significance from the ordering of TA vs TB before
-     *       the shifts.
-     *     - If TA = 0, the loop goes through 0 iterations and the result is
-     *       correctly TB.
-     *     - The case TB = 0 was short-circuited above.
-     *
-     * For the correctness proof below, decompose the original values of
-     * A and B as
-     *   A = sa * 2^a * A' with A'=0 or A' odd, and sa = +-1
-     *   B = sb * 2^b * B' with B'=0 or B' odd, and sb = +-1
-     * Then gcd(A, B) = 2^{min(a,b)} * gcd(A',B'),
-     * and gcd(A',B') is odd or 0.
-     *
-     * At the beginning, we have TA = |A| and TB = |B| so gcd(A,B) = gcd(TA,TB).
-     * The code maintains the following invariant:
-     *     gcd(A,B) = 2^k * gcd(TA,TB) for some k   (I)
-     */
-
-    /* Proof that the loop terminates:
-     * At each iteration, either the right-shift by 1 is made on a nonzero
-     * value and the nonnegative integer bitlen(TA) + bitlen(TB) decreases
-     * by at least 1, or the right-shift by 1 is made on zero and then
-     * TA becomes 0 which ends the loop (TB cannot be 0 if it is right-shifted
-     * since in that case TB is calculated from TB-TA with the condition TB>TA).
-     */
-    while (mbedtls_mpi_cmp_int(&TA, 0) != 0) {
-        /* Divisions by 2 preserve the invariant (I). */
-        MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&TA, mbedtls_mpi_lsb(&TA)));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&TB, mbedtls_mpi_lsb(&TB)));
-
-        /* Set either TA or TB to |TA-TB|/2. Since TA and TB are both odd,
-         * TA-TB is even so the division by 2 has an integer result.
-         * Invariant (I) is preserved since any odd divisor of both TA and TB
-         * also divides |TA-TB|/2, and any odd divisor of both TA and |TA-TB|/2
-         * also divides TB, and any odd divisor of both TB and |TA-TB|/2 also
-         * divides TA.
-         */
-        if (mbedtls_mpi_cmp_mpi(&TA, &TB) >= 0) {
-            MBEDTLS_MPI_CHK(mbedtls_mpi_sub_abs(&TA, &TA, &TB));
-            MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&TA, 1));
-        } else {
-            MBEDTLS_MPI_CHK(mbedtls_mpi_sub_abs(&TB, &TB, &TA));
-            MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&TB, 1));
-        }
-        /* Note that one of TA or TB is still odd. */
+    if (mbedtls_mpi_core_check_zero_ct(TB.p, TB.n) == MBEDTLS_CT_FALSE) {
+        MBEDTLS_MPI_CHK(mbedtls_mpi_copy(G, &TA)); // GCD(A, 0) = abs(A)
+        goto cleanup;
     }
 
-    /* By invariant (I), gcd(A,B) = 2^k * gcd(TA,TB) for some k.
-     * At the loop exit, TA = 0, so gcd(TA,TB) = TB.
-     * - If there was at least one loop iteration, then one of TA or TB is odd,
-     *   and TA = 0, so TB is odd and gcd(TA,TB) = gcd(A',B'). In this case,
-     *   lz = min(a,b) so gcd(A,B) = 2^lz * TB.
-     * - If there was no loop iteration, then A was 0, and gcd(A,B) = B.
-     *   In this case, lz = 0 and B = TB so gcd(A,B) = B = 2^lz * TB as well.
-     */
-
-    MBEDTLS_MPI_CHK(mbedtls_mpi_shift_l(&TB, lz));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_copy(G, &TB));
+    /* Make boths inputs odd by putting powers of 2 on the side */
+    const size_t za = mbedtls_mpi_lsb(&TA);
+    const size_t zb = mbedtls_mpi_lsb(&TB);
+    MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&TA, za));
+    MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&TB, zb));
+
+    /* Ensure A <= B: if B < A, swap them */
+    mbedtls_ct_condition_t swap = mbedtls_mpi_core_lt_ct(TB.p, TA.p, TA.n);
+    mbedtls_mpi_core_cond_swap(TA.p, TB.p, TA.n, swap);
+
+    MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(G, NULL, &TA, &TB));
+
+    /* Re-inject the power of 2 we had previously put aside */
+    size_t zg = za > zb ? zb : za; // zg = min(za, zb)
+    MBEDTLS_MPI_CHK(mbedtls_mpi_shift_l(G, zg));
 
 cleanup:
 
@@ -1899,91 +1922,139 @@
 }
 
 /*
- * Modular inverse: X = A^-1 mod N  (HAC 14.61 / 14.64)
+ * Modular inverse: X = A^-1 mod N with N odd (and A any range)
  */
-int mbedtls_mpi_inv_mod(mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N)
+int mbedtls_mpi_inv_mod_odd(mbedtls_mpi *X,
+                            const mbedtls_mpi *A,
+                            const mbedtls_mpi *N)
 {
     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
-    mbedtls_mpi G, TA, TU, U1, U2, TB, TV, V1, V2;
+    mbedtls_mpi T, G;
 
-    if (mbedtls_mpi_cmp_int(N, 1) <= 0) {
-        return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
+    mbedtls_mpi_init(&T);
+    mbedtls_mpi_init(&G);
+
+    MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&T, A, N));
+    MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(&G, &T, &T, N));
+    if (mbedtls_mpi_cmp_int(&G, 1) != 0) {
+        ret = MBEDTLS_ERR_MPI_NOT_ACCEPTABLE;
+        goto cleanup;
     }
 
-    mbedtls_mpi_init(&TA); mbedtls_mpi_init(&TU); mbedtls_mpi_init(&U1); mbedtls_mpi_init(&U2);
-    mbedtls_mpi_init(&G); mbedtls_mpi_init(&TB); mbedtls_mpi_init(&TV);
-    mbedtls_mpi_init(&V1); mbedtls_mpi_init(&V2);
+    MBEDTLS_MPI_CHK(mbedtls_mpi_copy(X, &T));
+
+cleanup:
+    mbedtls_mpi_free(&T);
+    mbedtls_mpi_free(&G);
+
+    return ret;
+}
+
+/*
+ * Compute X = A^-1 mod N with N even, A odd and 1 < A < N.
+ *
+ * This is not obvious because our constant-time modinv function only works with
+ * an odd modulus, and here the modulus is even. The idea is that computing a
+ * a^-1 mod b is really just computing the u coefficient in the Bézout relation
+ * a*u + b*v = 1 (assuming gcd(a,b) = 1, i.e. the inverse exists). But if we know
+ * one of u, v in this relation then the other is easy to find. So we can
+ * actually start by computing N^-1 mod A with gives us "the wrong half" of the
+ * Bézout relation, from which we'll deduce the interesting half A^-1 mod N.
+ *
+ * Return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if the inverse doesn't exist.
+ */
+int mbedtls_mpi_inv_mod_even_in_range(mbedtls_mpi *X,
+                                      mbedtls_mpi const *A,
+                                      mbedtls_mpi const *N)
+{
+    int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
+    mbedtls_mpi I, G;
 
-    MBEDTLS_MPI_CHK(mbedtls_mpi_gcd(&G, A, N));
+    mbedtls_mpi_init(&I);
+    mbedtls_mpi_init(&G);
 
+    /* Set I = N^-1 mod A */
+    MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&I, N, A));
+    MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(&G, &I, &I, A));
     if (mbedtls_mpi_cmp_int(&G, 1) != 0) {
         ret = MBEDTLS_ERR_MPI_NOT_ACCEPTABLE;
         goto cleanup;
     }
 
-    MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&TA, A, N));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_copy(&TU, &TA));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_copy(&TB, N));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_copy(&TV, N));
-
-    MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&U1, 1));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&U2, 0));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&V1, 0));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&V2, 1));
+    /* We know N * I = 1 + k * A for some k, which we can easily compute
+     * as k = (N*I - 1) / A (we know there will be no remainder). */
+    MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&I, &I, N));
+    MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&I, &I, 1));
+    MBEDTLS_MPI_CHK(mbedtls_mpi_div_mpi(&G, NULL, &I, A));
+
+    /* Now we have a Bézout relation N * (previous value of I) - G * A = 1,
+     * so A^-1 mod N is -G mod N, which is N - G.
+     * Note that 0 < k < N since 0 < I < A, so G (k) is already in range. */
+    MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(X, N, &G));
 
-    do {
-        while ((TU.p[0] & 1) == 0) {
-            MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&TU, 1));
+cleanup:
+    mbedtls_mpi_free(&I);
+    mbedtls_mpi_free(&G);
+    return ret;
+}
 
-            if ((U1.p[0] & 1) != 0 || (U2.p[0] & 1) != 0) {
-                MBEDTLS_MPI_CHK(mbedtls_mpi_add_mpi(&U1, &U1, &TB));
-                MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&U2, &U2, &TA));
-            }
+/*
+ * Compute X = A^-1 mod N with N even and A odd (but in any range).
+ *
+ * Return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if the inverse doesn't exist.
+ */
+static int mbedtls_mpi_inv_mod_even(mbedtls_mpi *X,
+                                    mbedtls_mpi const *A,
+                                    mbedtls_mpi const *N)
+{
+    int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
+    mbedtls_mpi AA;
 
-            MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&U1, 1));
-            MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&U2, 1));
-        }
+    mbedtls_mpi_init(&AA);
 
-        while ((TV.p[0] & 1) == 0) {
-            MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&TV, 1));
+    /* Bring A in the range [0, N). */
+    MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&AA, A, N));
 
-            if ((V1.p[0] & 1) != 0 || (V2.p[0] & 1) != 0) {
-                MBEDTLS_MPI_CHK(mbedtls_mpi_add_mpi(&V1, &V1, &TB));
-                MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&V2, &V2, &TA));
-            }
+    /* We know A >= 0 but the next function wants A > 1 */
+    int cmp = mbedtls_mpi_cmp_int(&AA, 1);
+    if (cmp < 0) { // AA == 0
+        ret = MBEDTLS_ERR_MPI_NOT_ACCEPTABLE;
+        goto cleanup;
+    }
+    if (cmp == 0) { // AA = 1
+        MBEDTLS_MPI_CHK(mbedtls_mpi_lset(X, 1));
+        goto cleanup;
+    }
 
-            MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&V1, 1));
-            MBEDTLS_MPI_CHK(mbedtls_mpi_shift_r(&V2, 1));
-        }
+    /* Now we know 1 < A < N, N is even and AA is still odd */
+    MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod_even_in_range(X, &AA, N));
 
-        if (mbedtls_mpi_cmp_mpi(&TU, &TV) >= 0) {
-            MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&TU, &TU, &TV));
-            MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&U1, &U1, &V1));
-            MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&U2, &U2, &V2));
-        } else {
-            MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&TV, &TV, &TU));
-            MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&V1, &V1, &U1));
-            MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&V2, &V2, &U2));
-        }
-    } while (mbedtls_mpi_cmp_int(&TU, 0) != 0);
+cleanup:
+    mbedtls_mpi_free(&AA);
+    return ret;
+}
 
-    while (mbedtls_mpi_cmp_int(&V1, 0) < 0) {
-        MBEDTLS_MPI_CHK(mbedtls_mpi_add_mpi(&V1, &V1, N));
+/*
+ * Modular inverse: X = A^-1 mod N
+ *
+ * Wrapper around mbedtls_mpi_gcd_modinv_odd() that lifts its limitations.
+ */
+int mbedtls_mpi_inv_mod(mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N)
+{
+    if (mbedtls_mpi_cmp_int(N, 1) <= 0) {
+        return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
     }
 
-    while (mbedtls_mpi_cmp_mpi(&V1, N) >= 0) {
-        MBEDTLS_MPI_CHK(mbedtls_mpi_sub_mpi(&V1, &V1, N));
+    if (mbedtls_mpi_get_bit(N, 0) == 1) {
+        return mbedtls_mpi_inv_mod_odd(X, A, N);
     }
 
-    MBEDTLS_MPI_CHK(mbedtls_mpi_copy(X, &V1));
-
-cleanup:
-
-    mbedtls_mpi_free(&TA); mbedtls_mpi_free(&TU); mbedtls_mpi_free(&U1); mbedtls_mpi_free(&U2);
-    mbedtls_mpi_free(&G); mbedtls_mpi_free(&TB); mbedtls_mpi_free(&TV);
-    mbedtls_mpi_free(&V1); mbedtls_mpi_free(&V2);
+    if (mbedtls_mpi_get_bit(A, 0) == 1) {
+        return mbedtls_mpi_inv_mod_even(X, A, N);
+    }
 
-    return ret;
+    /* If A and N are both even, 2 divides their GCD, so no inverse. */
+    return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE;
 }
 
 #if defined(MBEDTLS_GENPRIME)
diff -Nru mbedtls-3.6.4/library/bignum_core.c mbedtls-3.6.5/library/bignum_core.c
--- mbedtls-3.6.4/library/bignum_core.c	2025-06-30 09:24:52.966330300 +0300
+++ mbedtls-3.6.5/library/bignum_core.c	2025-10-14 19:12:36.895990600 +0300
@@ -18,6 +18,7 @@
 #include "mbedtls/platform.h"
 
 #include "bignum_core.h"
+#include "bignum_core_invasive.h"
 #include "bn_mul.h"
 #include "constant_time_internal.h"
 
@@ -1019,4 +1020,221 @@
     mbedtls_mpi_core_montmul(X, A, &Rinv, 1, N, AN_limbs, mm, T);
 }
 
+/*
+ * Compute X = A - B mod N.
+ * Both A and B must be in [0, N) and so will the output.
+ */
+static void mpi_core_sub_mod(mbedtls_mpi_uint *X,
+                             const mbedtls_mpi_uint *A,
+                             const mbedtls_mpi_uint *B,
+                             const mbedtls_mpi_uint *N,
+                             size_t limbs)
+{
+    mbedtls_mpi_uint c = mbedtls_mpi_core_sub(X, A, B, limbs);
+    (void) mbedtls_mpi_core_add_if(X, N, limbs, (unsigned) c);
+}
+
+/*
+ * Divide X by 2 mod N in place, assuming N is odd.
+ * The input must be in [0, N) and so will the output.
+ */
+MBEDTLS_STATIC_TESTABLE
+void mbedtls_mpi_core_div2_mod_odd(mbedtls_mpi_uint *X,
+                                   const mbedtls_mpi_uint *N,
+                                   size_t limbs)
+{
+    /* If X is odd, add N to make it even before shifting. */
+    unsigned odd = (unsigned) X[0] & 1;
+    mbedtls_mpi_uint c = mbedtls_mpi_core_add_if(X, N, limbs, odd);
+    mbedtls_mpi_core_shift_r(X, limbs, 1);
+    X[limbs - 1] |= c << (biL - 1);
+}
+
+/*
+ * Constant-time GCD and modular inversion - odd modulus.
+ *
+ * Pre-conditions: see public documentation.
+ *
+ * See https://www.jstage.jst.go.jp/article/transinf/E106.D/9/E106.D_2022ICP0009/_pdf
+ *
+ * The paper gives two computationally equivalent algorithms: Alg 7 (readable)
+ * and Alg 8 (constant-time). We use a third version that's hopefully both:
+ *
+ *  u, v = A, N  # N is called p in the paper but doesn't have to be prime
+ *  q, r = 0, 1
+ *  repeat bits(A_limbs + N_limbs) times:
+ *      d = v - u  # t1 in Alg 7
+ *      t1 = (u and v both odd) ? u : d  # t1 in Alg 8
+ *      t2 = (u and v both odd) ? d : (u odd) ? v : u  # t2 in Alg 8
+ *      t2 >>= 1
+ *      swap = t1 > t2  # similar to s, z in Alg 8
+ *      u, v = (swap) ? t2, t1 : t1, t2
+ *
+ *      d = r - q mod N  # t2 in Alg 7
+ *      t1 = (u and v both odd) ? q : d  # t3 in Alg 8
+ *      t2 = (u and v both odd) ? d : (u odd) ? r : q  # t4 Alg 8
+ *      t2 /= 2 mod N  # see below (pre_com)
+ *      q, r = (swap) ? t2, t1 : t1, t2
+ *  return v, q  # v: GCD, see Alg 6; q: no mult by pre_com, see below
+ *
+ * The ternary operators in the above pseudo-code need to be realised in a
+ * constant-time fashion. We use conditional assign for t1, t2 and conditional
+ * swap for the final update. (Note: the similarity between branches of Alg 7
+ * are highlighted in tables 2 and 3 and the surrounding text.)
+ *
+ * Also, we re-order operations, grouping things related to the inverse, which
+ * facilitates making its computation optional, and requires fewer temporaries.
+ *
+ * The only actual change from the paper is dropping the trick with pre_com,
+ * which I think complicates things for no benefit.
+ * See the comment on the big I != NULL block below for details.
+ */
+void mbedtls_mpi_core_gcd_modinv_odd(mbedtls_mpi_uint *G,
+                                     mbedtls_mpi_uint *I,
+                                     const mbedtls_mpi_uint *A,
+                                     size_t A_limbs,
+                                     const mbedtls_mpi_uint *N,
+                                     size_t N_limbs,
+                                     mbedtls_mpi_uint *T)
+{
+    /* GCD and modinv, names common to Alg 7 and Alg 8 */
+    mbedtls_mpi_uint *u = T + 0 * N_limbs;
+    mbedtls_mpi_uint *v = G;
+
+    /* GCD and modinv, my name (t1, t2 from Alg 7) */
+    mbedtls_mpi_uint *d = T + 1 * N_limbs;
+
+    /* GCD and modinv, names from Alg 8 (note: t1, t2 from Alg 7 are d above) */
+    mbedtls_mpi_uint *t1 = T + 2 * N_limbs;
+    mbedtls_mpi_uint *t2 = T + 3 * N_limbs;
+
+    /* modinv only, names common to Alg 7 and Alg 8 */
+    mbedtls_mpi_uint *q = I;
+    mbedtls_mpi_uint *r = I != NULL ? T + 4 * N_limbs : NULL;
+
+    /*
+     * Initial values:
+     * u, v = A, N
+     * q, r = 0, 1
+     *
+     * We only write to G (aka v) after reading from inputs (A and N), which
+     * allows aliasing, except with N when I != NULL, as then we'll be operating
+     * mod N on q and r later - see the public documentation.
+     */
+    if (A_limbs > N_limbs) {
+        /* Violating this precondition should not result in memory errors. */
+        A_limbs = N_limbs;
+    }
+    memcpy(u, A, A_limbs * ciL);
+    memset((char *) u + A_limbs * ciL, 0, (N_limbs - A_limbs) * ciL);
+
+    /* Avoid possible UB with memcpy when src == dst. */
+    if (v != N) {
+        memcpy(v, N, N_limbs * ciL);
+    }
+
+    if (I != NULL) {
+        memset(q, 0, N_limbs * ciL);
+
+        memset(r, 0, N_limbs * ciL);
+        r[0] = 1;
+    }
+
+    /*
+     * At each step, out of u, v, v - u we keep one, shift another, and discard
+     * the third, then update (u, v) with the ordered result.
+     * Then we mirror those actions with q, r, r - q mod N.
+     *
+     * Loop invariants:
+     *  u <= v                  (on entry: A <= N)
+     *  GCD(u, v) == GCD(A, N)  (on entry: trivial)
+     *  v = A * q mod N         (on entry: N = A * 0 mod N)
+     *  u = A * r mod N         (on entry: A = A * 1 mod N)
+     *  q, r in [0, N)          (on entry: 0, 1)
+     *
+     * On exit:
+     *  u = 0
+     *  v = GCD(A, N) = A * q mod N
+     *  if v == 1 then 1 = A * q mod N ie q is A's inverse mod N
+     *  r = 0
+     *
+     * The exit state is a fixed point of the loop's body.
+     * Alg 7 and Alg 8 use 2 * bitlen(N) iterations but Theorem 2 (above in the
+     * paper) says bitlen(A) + bitlen(N) is actually enough.
+     */
+    for (size_t i = 0; i < (A_limbs + N_limbs) * biL; i++) {
+        /* s, z in Alg 8 - use meaningful names instead */
+        mbedtls_ct_condition_t u_odd = mbedtls_ct_bool(u[0] & 1);
+        mbedtls_ct_condition_t v_odd = mbedtls_ct_bool(v[0] & 1);
+
+        /* Other conditions that will be useful below */
+        mbedtls_ct_condition_t u_odd_v_odd = mbedtls_ct_bool_and(u_odd, v_odd);
+        mbedtls_ct_condition_t v_even = mbedtls_ct_bool_not(v_odd);
+        mbedtls_ct_condition_t u_odd_v_even = mbedtls_ct_bool_and(u_odd, v_even);
+
+        /* This is called t1 in Alg 7 (no name in Alg 8).
+         * We know that u <= v so there is no carry */
+        (void) mbedtls_mpi_core_sub(d, v, u, N_limbs);
+
+        /* t1 (the thing that's kept) can be d (default) or u (if t2 is d) */
+        memcpy(t1, d, N_limbs * ciL);
+        mbedtls_mpi_core_cond_assign(t1, u, N_limbs, u_odd_v_odd);
+
+        /* t2 (the thing that's shifted) can be u (if even), or v (if even),
+         * or d (which is even if both u and v were odd) */
+        memcpy(t2, u, N_limbs * ciL);
+        mbedtls_mpi_core_cond_assign(t2, v, N_limbs, u_odd_v_even);
+        mbedtls_mpi_core_cond_assign(t2, d, N_limbs, u_odd_v_odd);
+
+        mbedtls_mpi_core_shift_r(t2, N_limbs, 1); // t2 is even
+
+        /* Update u, v and re-order them if needed */
+        memcpy(u, t1, N_limbs * ciL);
+        memcpy(v, t2, N_limbs * ciL);
+        mbedtls_ct_condition_t swap = mbedtls_mpi_core_lt_ct(v, u, N_limbs);
+        mbedtls_mpi_core_cond_swap(u, v, N_limbs, swap);
+
+        /* Now, if modinv was requested, do the same with q, r, but:
+         * - decisions still based on u and v (their initial values);
+         * - operations are now mod N;
+         * - we re-use t1, t2 for what the paper calls t3, t4 in Alg 8.
+         *
+         * Here we slightly diverge from the paper and instead do the obvious
+         * thing that preserves the invariants involving q and r: mirror
+         * operations on u and v, ie also divide by 2 here (mod N).
+         *
+         * The paper uses a trick where it replaces division by 2 with
+         * multiplication by 2 here, and compensates in the end by multiplying
+         * by pre_com, which is probably intended as an optimisation.
+         *
+         * However I believe it's not actually an optimisation, since
+         * constant-time modular multiplication by 2 (left-shift + conditional
+         * subtract) is just as costly as constant-time modular division by 2
+         * (conditional add + right-shift). So, skip it and keep things simple.
+         */
+        if (I != NULL) {
+            /* This is called t2 in Alg 7 (no name in Alg 8). */
+            mpi_core_sub_mod(d, q, r, N, N_limbs);
+
+            /* t3 (the thing that's kept) */
+            memcpy(t1, d, N_limbs * ciL);
+            mbedtls_mpi_core_cond_assign(t1, r, N_limbs, u_odd_v_odd);
+
+            /* t4 (the thing that's shifted) */
+            memcpy(t2, r, N_limbs * ciL);
+            mbedtls_mpi_core_cond_assign(t2, q, N_limbs, u_odd_v_even);
+            mbedtls_mpi_core_cond_assign(t2, d, N_limbs, u_odd_v_odd);
+
+            mbedtls_mpi_core_div2_mod_odd(t2, N, N_limbs);
+
+            /* Update and possibly swap */
+            memcpy(r, t1, N_limbs * ciL);
+            memcpy(q, t2, N_limbs * ciL);
+            mbedtls_mpi_core_cond_swap(r, q, N_limbs, swap);
+        }
+    }
+
+    /* G and I already hold the correct values by virtue of being aliased */
+}
+
 #endif /* MBEDTLS_BIGNUM_C */
diff -Nru mbedtls-3.6.4/library/bignum_core.h mbedtls-3.6.5/library/bignum_core.h
--- mbedtls-3.6.4/library/bignum_core.h	2025-06-30 09:24:52.966512400 +0300
+++ mbedtls-3.6.5/library/bignum_core.h	2025-10-14 19:12:36.896168500 +0300
@@ -822,4 +822,45 @@
                                     mbedtls_mpi_uint mm,
                                     mbedtls_mpi_uint *T);
 
+/** Compute GCD(A, N) and optionally the inverse of A mod N if it exists.
+ *
+ * Requires N to be odd, 0 <= A <= N and A_limbs <= N_limbs.
+ * When I != NULL, N (the modulus) must be greater than 1.
+ *
+ * A and N may not alias each other.
+ * When I == NULL (computing only the GCD), G may alias A or N.
+ * When I != NULL (computing the modular inverse), G or I may alias A
+ * but none of them may alias N (the modulus).
+ *
+ * If any of the above preconditions is not met, output values are unspecified.
+ *
+ * \param[out]    G       The GCD of \p A and \p N.
+ *                        Must have the same number of limbs as \p N.
+ * \param[out]    I       The inverse of \p A modulo \p N if it exists (that is,
+ *                        if \p G above is 1 on exit); indeterminate otherwise.
+ *                        This must either be NULL (to only compute the GCD),
+ *                        or have the same number of limbs as \p N.
+ * \param[in]     A       The 1st operand of GCD and number to invert.
+ *                        This value must be less than or equal to \p N.
+ * \param         A_limbs The number of limbs of \p A.
+ *                        Must be less than or equal to \p N_limbs.
+ * \param[in]     N       The 2nd operand of GCD and modulus for inversion.
+ *                        This value must be odd.
+ *                        If I != NULL this value must be greater than 1.
+ * \param         N_limbs The number of limbs of \p N.
+ * \param[in,out] T       Temporary storage of size at least 5 * N_limbs limbs,
+ *                        or 4 * N_limbs if \p I is NULL (GCD only).
+ *                        Its initial content is unused and
+ *                        its final content is indeterminate.
+ *                        It must not alias or otherwise overlap any of the
+ *                        other parameters.
+ */
+void mbedtls_mpi_core_gcd_modinv_odd(mbedtls_mpi_uint *G,
+                                     mbedtls_mpi_uint *I,
+                                     const mbedtls_mpi_uint *A,
+                                     size_t A_limbs,
+                                     const mbedtls_mpi_uint *N,
+                                     size_t N_limbs,
+                                     mbedtls_mpi_uint *T);
+
 #endif /* MBEDTLS_BIGNUM_CORE_H */
diff -Nru mbedtls-3.6.4/library/bignum_core_invasive.h mbedtls-3.6.5/library/bignum_core_invasive.h
--- mbedtls-3.6.4/library/bignum_core_invasive.h	2025-06-30 09:24:52.966646400 +0300
+++ mbedtls-3.6.5/library/bignum_core_invasive.h	2025-10-14 19:12:36.896340100 +0300
@@ -13,11 +13,26 @@
 
 #include "bignum_core.h"
 
-#if defined(MBEDTLS_TEST_HOOKS) && !defined(MBEDTLS_THREADING_C)
+#if defined(MBEDTLS_TEST_HOOKS)
+
+#if !defined(MBEDTLS_THREADING_C)
 
 extern void (*mbedtls_safe_codepath_hook)(void);
 extern void (*mbedtls_unsafe_codepath_hook)(void);
 
-#endif /* MBEDTLS_TEST_HOOKS && !MBEDTLS_THREADING_C */
+#endif /* !MBEDTLS_THREADING_C */
+
+/** Divide X by 2 mod N in place, assuming N is odd.
+ *
+ * \param[in,out] X     The value to divide by 2 mod \p N.
+ * \param[in]     N     The modulus. Must be odd.
+ * \param[in]     limbs The number of limbs in \p X and \p N.
+ */
+MBEDTLS_STATIC_TESTABLE
+void mbedtls_mpi_core_div2_mod_odd(mbedtls_mpi_uint *X,
+                                   const mbedtls_mpi_uint *N,
+                                   size_t limbs);
+
+#endif /* MBEDTLS_TEST_HOOKS */
 
 #endif /* MBEDTLS_BIGNUM_CORE_INVASIVE_H */
diff -Nru mbedtls-3.6.4/library/bignum_internal.h mbedtls-3.6.5/library/bignum_internal.h
--- mbedtls-3.6.4/library/bignum_internal.h	2025-06-30 09:24:52.966808300 +0300
+++ mbedtls-3.6.5/library/bignum_internal.h	2025-10-14 19:12:36.896552600 +0300
@@ -47,4 +47,76 @@
                                const mbedtls_mpi *E, const mbedtls_mpi *N,
                                mbedtls_mpi *prec_RR);
 
+/**
+ * \brief          A wrapper around a constant time function to compute
+ *                 GCD(A, N) and/or A^-1 mod N if it exists.
+ *
+ * \warning        Requires N to be odd, and 0 <= A <= N. Additionally, if
+ *                 I != NULL, requires N > 1.
+ *                 The wrapper part of this function is not constant time.
+ *
+ * \note           A and N must not alias each other.
+ *                 When I == NULL (computing only the GCD), G can alias A or N.
+ *                 When I != NULL (computing the modular inverse), G or I can
+ *                 alias A, but neither of them can alias N (the modulus).
+ *
+ * \param[out] G   The GCD of \p A and \p N.
+ *                 This may be NULL, to only compute I.
+ * \param[out] I   The inverse of \p A modulo \p N if it exists (that is,
+ *                 if \p G above is 1 on exit), in the range [1, \p N);
+ *                 indeterminate otherwise.
+ *                 This may be NULL, to only compute G.
+ * \param[in] A    The 1st operand of GCD and number to invert.
+ *                 This value must be less than or equal to \p N.
+ * \param[in] N    The 2nd operand of GCD and modulus for inversion.
+ *                 Must be odd or the results are indeterminate.
+ *
+ * \return         \c 0 if successful.
+ * \return         #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed.
+ * \return         #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if preconditions were not
+ *                 met.
+ */
+int mbedtls_mpi_gcd_modinv_odd(mbedtls_mpi *G,
+                               mbedtls_mpi *I,
+                               const mbedtls_mpi *A,
+                               const mbedtls_mpi *N);
+
+/**
+ * \brief          Modular inverse: X = A^-1 mod N with N odd
+ *
+ * \param[out] X   The inverse of \p A modulo \p N in the range [1, \p N)
+ *                 on success; indeterminate otherwise.
+ * \param[in] A    The number to invert.
+ * \param[in] N    The modulus. Must be odd and greater than 1.
+ *
+ * \return         \c 0 if successful.
+ * \return         #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed.
+ * \return         #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if preconditions were not
+ *                 met.
+ * \return         #MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if A is not invertible mod N.
+ */
+int mbedtls_mpi_inv_mod_odd(mbedtls_mpi *X,
+                            const mbedtls_mpi *A,
+                            const mbedtls_mpi *N);
+
+/**
+ * \brief          Modular inverse: X = A^-1 mod N with N even,
+ *                 A odd and 1 < A < N.
+ *
+ * \param[out] X   The inverse of \p A modulo \p N in the range [1, \p N)
+ *                 on success; indeterminate otherwise.
+ * \param[in] A    The number to invert. Must be odd, greated than 1
+ *                 and less than \p N.
+ * \param[in] N    The modulus. Must be even and greater than 1.
+ *
+ * \return         \c 0 if successful.
+ * \return         #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed.
+ * \return         #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if preconditions were not
+ *                 met.
+ * \return         #MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if A is not invertible mod N.
+ */
+int mbedtls_mpi_inv_mod_even_in_range(mbedtls_mpi *X,
+                                      mbedtls_mpi const *A,
+                                      mbedtls_mpi const *N);
+
 #endif /* bignum_internal.h */
diff -Nru mbedtls-3.6.4/library/cipher.c mbedtls-3.6.5/library/cipher.c
--- mbedtls-3.6.4/library/cipher.c	2025-06-30 09:24:52.969365600 +0300
+++ mbedtls-3.6.5/library/cipher.c	2025-10-14 19:12:36.900232300 +0300
@@ -846,7 +846,8 @@
  */
 MBEDTLS_STATIC_TESTABLE int mbedtls_get_pkcs_padding(unsigned char *input,
                                                      size_t input_len,
-                                                     size_t *data_len)
+                                                     size_t *data_len,
+                                                     size_t *invalid_padding)
 {
     size_t i, pad_idx;
     unsigned char padding_len;
@@ -872,7 +873,8 @@
     /* If the padding is invalid, set the output length to 0 */
     *data_len = mbedtls_ct_if(bad, 0, input_len - padding_len);
 
-    return mbedtls_ct_error_if_else_0(bad, MBEDTLS_ERR_CIPHER_INVALID_PADDING);
+    *invalid_padding = mbedtls_ct_size_if_else_0(bad, SIZE_MAX);
+    return 0;
 }
 #endif /* MBEDTLS_CIPHER_PADDING_PKCS7 */
 
@@ -893,7 +895,7 @@
 }
 
 static int get_one_and_zeros_padding(unsigned char *input, size_t input_len,
-                                     size_t *data_len)
+                                     size_t *data_len, size_t *invalid_padding)
 {
     if (NULL == input || NULL == data_len) {
         return MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA;
@@ -916,7 +918,8 @@
         in_padding = mbedtls_ct_bool_and(in_padding, mbedtls_ct_bool_not(is_nonzero));
     }
 
-    return mbedtls_ct_error_if_else_0(bad, MBEDTLS_ERR_CIPHER_INVALID_PADDING);
+    *invalid_padding = mbedtls_ct_size_if_else_0(bad, SIZE_MAX);
+    return 0;
 }
 #endif /* MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS */
 
@@ -937,7 +940,7 @@
 }
 
 static int get_zeros_and_len_padding(unsigned char *input, size_t input_len,
-                                     size_t *data_len)
+                                     size_t *data_len, size_t *invalid_padding)
 {
     size_t i, pad_idx;
     unsigned char padding_len;
@@ -963,7 +966,8 @@
         bad = mbedtls_ct_bool_or(bad, nonzero_pad_byte);
     }
 
-    return mbedtls_ct_error_if_else_0(bad, MBEDTLS_ERR_CIPHER_INVALID_PADDING);
+    *invalid_padding = mbedtls_ct_size_if_else_0(bad, SIZE_MAX);
+    return 0;
 }
 #endif /* MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN */
 
@@ -978,7 +982,7 @@
 }
 
 static int get_zeros_padding(unsigned char *input, size_t input_len,
-                             size_t *data_len)
+                             size_t *data_len, size_t *invalid_padding)
 {
     size_t i;
     mbedtls_ct_condition_t done = MBEDTLS_CT_FALSE, prev_done;
@@ -994,6 +998,7 @@
         *data_len = mbedtls_ct_size_if(mbedtls_ct_bool_ne(done, prev_done), i, *data_len);
     }
 
+    *invalid_padding = 0;
     return 0;
 }
 #endif /* MBEDTLS_CIPHER_PADDING_ZEROS */
@@ -1005,20 +1010,21 @@
  * but a trivial get_padding function
  */
 static int get_no_padding(unsigned char *input, size_t input_len,
-                          size_t *data_len)
+                          size_t *data_len, size_t *invalid_padding)
 {
     if (NULL == input || NULL == data_len) {
         return MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA;
     }
 
     *data_len = input_len;
-
+    *invalid_padding = 0;
     return 0;
 }
 #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
 
-int mbedtls_cipher_finish(mbedtls_cipher_context_t *ctx,
-                          unsigned char *output, size_t *olen)
+int mbedtls_cipher_finish_padded(mbedtls_cipher_context_t *ctx,
+                                 unsigned char *output, size_t *olen,
+                                 size_t *invalid_padding)
 {
     if (ctx->cipher_info == NULL) {
         return MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA;
@@ -1034,6 +1040,7 @@
 #endif /* MBEDTLS_USE_PSA_CRYPTO && !MBEDTLS_DEPRECATED_REMOVED */
 
     *olen = 0;
+    *invalid_padding = 0;
 
 #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
     /* CBC mode requires padding so we make sure a call to
@@ -1110,7 +1117,7 @@
         /* Set output size for decryption */
         if (MBEDTLS_DECRYPT == ctx->operation) {
             return ctx->get_padding(output, mbedtls_cipher_get_block_size(ctx),
-                                    olen);
+                                    olen, invalid_padding);
         }
 
         /* Set output size for encryption */
@@ -1124,6 +1131,19 @@
     return MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE;
 }
 
+int mbedtls_cipher_finish(mbedtls_cipher_context_t *ctx,
+                          unsigned char *output, size_t *olen)
+{
+    size_t invalid_padding = 0;
+    int ret = mbedtls_cipher_finish_padded(ctx, output, olen,
+                                           &invalid_padding);
+    if (ret == 0) {
+        ret = mbedtls_ct_error_if_else_0(invalid_padding,
+                                         MBEDTLS_ERR_CIPHER_INVALID_PADDING);
+    }
+    return ret;
+}
+
 #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
 int mbedtls_cipher_set_padding_mode(mbedtls_cipher_context_t *ctx,
                                     mbedtls_cipher_padding_t mode)
@@ -1393,14 +1413,17 @@
         return ret;
     }
 
-    if ((ret = mbedtls_cipher_finish(ctx, output + *olen,
-                                     &finish_olen)) != 0) {
+    size_t invalid_padding = 0;
+    if ((ret = mbedtls_cipher_finish_padded(ctx, output + *olen,
+                                            &finish_olen,
+                                            &invalid_padding)) != 0) {
         return ret;
     }
-
     *olen += finish_olen;
 
-    return 0;
+    ret = mbedtls_ct_error_if_else_0(invalid_padding,
+                                     MBEDTLS_ERR_CIPHER_INVALID_PADDING);
+    return ret;
 }
 
 #if defined(MBEDTLS_CIPHER_MODE_AEAD)
diff -Nru mbedtls-3.6.4/library/cipher_invasive.h mbedtls-3.6.5/library/cipher_invasive.h
--- mbedtls-3.6.4/library/cipher_invasive.h	2025-06-30 09:24:52.969673000 +0300
+++ mbedtls-3.6.5/library/cipher_invasive.h	2025-10-14 19:12:36.900566600 +0300
@@ -20,7 +20,8 @@
 
 MBEDTLS_STATIC_TESTABLE int mbedtls_get_pkcs_padding(unsigned char *input,
                                                      size_t input_len,
-                                                     size_t *data_len);
+                                                     size_t *data_len,
+                                                     size_t *invalid_padding);
 
 #endif
 
diff -Nru mbedtls-3.6.4/library/CMakeLists.txt mbedtls-3.6.5/library/CMakeLists.txt
--- mbedtls-3.6.4/library/CMakeLists.txt	2025-06-30 09:24:52.963566800 +0300
+++ mbedtls-3.6.5/library/CMakeLists.txt	2025-10-14 19:12:36.891071000 +0300
@@ -188,12 +188,18 @@
             ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/driver_templates/psa_crypto_driver_wrappers_no_static.c.jinja
     )
 
+    add_custom_target(${MBEDTLS_TARGET_PREFIX}mbedcrypto_generated_files_target
+        DEPENDS
+            ${CMAKE_CURRENT_BINARY_DIR}/error.c
+            ${CMAKE_CURRENT_BINARY_DIR}/version_features.c
+            ${CMAKE_CURRENT_BINARY_DIR}/psa_crypto_driver_wrappers.h
+            ${CMAKE_CURRENT_BINARY_DIR}/psa_crypto_driver_wrappers_no_static.c
+    )
 
-else()
-    link_to_source(error.c)
-    link_to_source(version_features.c)
-    link_to_source(ssl_debug_helpers_generated.c)
-    link_to_source(psa_crypto_driver_wrappers_no_static.c)
+    add_custom_target(${MBEDTLS_TARGET_PREFIX}mbedtls_generated_files_target
+        DEPENDS
+            ${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.c
+    )
 endif()
 
 if(CMAKE_COMPILER_IS_GNUCC)
@@ -295,12 +301,19 @@
     add_library(${mbedtls_static_target} STATIC ${src_tls})
     set_target_properties(${mbedtls_static_target} PROPERTIES OUTPUT_NAME mbedtls)
     target_link_libraries(${mbedtls_static_target} PUBLIC ${libs} ${mbedx509_static_target})
+
+    if(GEN_FILES)
+        add_dependencies(${mbedcrypto_static_target}
+            ${MBEDTLS_TARGET_PREFIX}mbedcrypto_generated_files_target)
+        add_dependencies(${mbedtls_static_target}
+            ${MBEDTLS_TARGET_PREFIX}mbedtls_generated_files_target)
+    endif()
 endif(USE_STATIC_MBEDTLS_LIBRARY)
 
 if(USE_SHARED_MBEDTLS_LIBRARY)
     set(CMAKE_LIBRARY_PATH ${CMAKE_CURRENT_BINARY_DIR})
     add_library(${mbedcrypto_target} SHARED ${src_crypto})
-    set_target_properties(${mbedcrypto_target} PROPERTIES VERSION 3.6.4 SOVERSION 16)
+    set_target_properties(${mbedcrypto_target} PROPERTIES VERSION 3.6.5 SOVERSION 16)
     target_link_libraries(${mbedcrypto_target} PUBLIC ${libs})
 
     if(TARGET ${everest_target})
@@ -312,12 +325,19 @@
     endif()
 
     add_library(${mbedx509_target} SHARED ${src_x509})
-    set_target_properties(${mbedx509_target} PROPERTIES VERSION 3.6.4 SOVERSION 7)
+    set_target_properties(${mbedx509_target} PROPERTIES VERSION 3.6.5 SOVERSION 7)
     target_link_libraries(${mbedx509_target} PUBLIC ${libs} ${mbedcrypto_target})
 
     add_library(${mbedtls_target} SHARED ${src_tls})
-    set_target_properties(${mbedtls_target} PROPERTIES VERSION 3.6.4 SOVERSION 21)
+    set_target_properties(${mbedtls_target} PROPERTIES VERSION 3.6.5 SOVERSION 21)
     target_link_libraries(${mbedtls_target} PUBLIC ${libs} ${mbedx509_target})
+
+    if(GEN_FILES)
+        add_dependencies(${mbedcrypto_target}
+            ${MBEDTLS_TARGET_PREFIX}mbedcrypto_generated_files_target)
+        add_dependencies(${mbedtls_target}
+            ${MBEDTLS_TARGET_PREFIX}mbedtls_generated_files_target)
+    endif()
 endif(USE_SHARED_MBEDTLS_LIBRARY)
 
 foreach(target IN LISTS target_libraries)
diff -Nru mbedtls-3.6.4/library/dhm.c mbedtls-3.6.5/library/dhm.c
--- mbedtls-3.6.4/library/dhm.c	2025-06-30 09:24:52.972329100 +0300
+++ mbedtls-3.6.5/library/dhm.c	2025-10-14 19:12:36.904273500 +0300
@@ -18,6 +18,7 @@
 #if defined(MBEDTLS_DHM_C)
 
 #include "mbedtls/dhm.h"
+#include "bignum_internal.h"
 #include "mbedtls/platform_util.h"
 #include "mbedtls/error.h"
 
@@ -344,9 +345,6 @@
                                int (*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 {
     int ret;
-    mbedtls_mpi R;
-
-    mbedtls_mpi_init(&R);
 
     /*
      * Don't use any blinding the first time a particular X is used,
@@ -381,21 +379,11 @@
     /* Vi = random( 2, P-2 ) */
     MBEDTLS_MPI_CHK(dhm_random_below(&ctx->Vi, &ctx->P, f_rng, p_rng));
 
-    /* Vf = Vi^-X mod P
-     * First compute Vi^-1 = R * (R Vi)^-1, (avoiding leaks from inv_mod),
-     * then elevate to the Xth power. */
-    MBEDTLS_MPI_CHK(dhm_random_below(&R, &ctx->P, f_rng, p_rng));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&ctx->Vf, &ctx->Vi, &R));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&ctx->Vf, &ctx->Vf, &ctx->P));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod(&ctx->Vf, &ctx->Vf, &ctx->P));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&ctx->Vf, &ctx->Vf, &R));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&ctx->Vf, &ctx->Vf, &ctx->P));
-
+    /* Vf = Vi^-X = (Vi^-1)^X mod P */
+    MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(NULL, &ctx->Vf, &ctx->Vi, &ctx->P));
     MBEDTLS_MPI_CHK(mbedtls_mpi_exp_mod(&ctx->Vf, &ctx->Vf, &ctx->X, &ctx->P, &ctx->RP));
 
 cleanup:
-    mbedtls_mpi_free(&R);
-
     return ret;
 }
 
diff -Nru mbedtls-3.6.4/library/ecdsa.c mbedtls-3.6.5/library/ecdsa.c
--- mbedtls-3.6.4/library/ecdsa.c	2025-06-30 09:24:52.972768000 +0300
+++ mbedtls-3.6.5/library/ecdsa.c	2025-10-14 19:12:36.905029500 +0300
@@ -17,6 +17,7 @@
 
 #include "mbedtls/ecdsa.h"
 #include "mbedtls/asn1write.h"
+#include "bignum_internal.h"
 
 #include <string.h>
 
@@ -251,7 +252,7 @@
     int ret, key_tries, sign_tries;
     int *p_sign_tries = &sign_tries, *p_key_tries = &key_tries;
     mbedtls_ecp_point R;
-    mbedtls_mpi k, e, t;
+    mbedtls_mpi k, e;
     mbedtls_mpi *pk = &k, *pr = r;
 
     /* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */
@@ -265,7 +266,7 @@
     }
 
     mbedtls_ecp_point_init(&R);
-    mbedtls_mpi_init(&k); mbedtls_mpi_init(&e); mbedtls_mpi_init(&t);
+    mbedtls_mpi_init(&k); mbedtls_mpi_init(&e);
 
     ECDSA_RS_ENTER(sig);
 
@@ -340,21 +341,11 @@
         MBEDTLS_MPI_CHK(derive_mpi(grp, &e, buf, blen));
 
         /*
-         * Generate a random value to blind inv_mod in next step,
-         * avoiding a potential timing leak.
-         */
-        MBEDTLS_MPI_CHK(mbedtls_ecp_gen_privkey(grp, &t, f_rng_blind,
-                                                p_rng_blind));
-
-        /*
-         * Step 6: compute s = (e + r * d) / k = t (e + rd) / (kt) mod n
+         * Step 6: compute s = (e + r * d) / k
          */
         MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(s, pr, d));
         MBEDTLS_MPI_CHK(mbedtls_mpi_add_mpi(&e, &e, s));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&e, &e, &t));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(pk, pk, &t));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(pk, pk, &grp->N));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod(s, pk, &grp->N));
+        MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(NULL, 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));
     } while (mbedtls_mpi_cmp_int(s, 0) == 0);
@@ -367,7 +358,7 @@
 
 cleanup:
     mbedtls_ecp_point_free(&R);
-    mbedtls_mpi_free(&k); mbedtls_mpi_free(&e); mbedtls_mpi_free(&t);
+    mbedtls_mpi_free(&k); mbedtls_mpi_free(&e);
 
     ECDSA_RS_LEAVE(sig);
 
@@ -540,7 +531,7 @@
      */
     ECDSA_BUDGET(MBEDTLS_ECP_OPS_CHK + MBEDTLS_ECP_OPS_INV + 2);
 
-    MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod(&s_inv, s, &grp->N));
+    MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(NULL, &s_inv, s, &grp->N));
 
     MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(pu1, &e, &s_inv));
     MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(pu1, pu1, &grp->N));
diff -Nru mbedtls-3.6.4/library/ecp.c mbedtls-3.6.5/library/ecp.c
--- mbedtls-3.6.4/library/ecp.c	2025-06-30 09:24:52.973411300 +0300
+++ mbedtls-3.6.5/library/ecp.c	2025-10-14 19:12:36.905856800 +0300
@@ -68,6 +68,7 @@
 #include "mbedtls/error.h"
 
 #include "bn_mul.h"
+#include "bignum_internal.h"
 #include "ecp_invasive.h"
 
 #include <string.h>
@@ -1173,7 +1174,7 @@
     MBEDTLS_MPI_CHK(mbedtls_mpi_mul_int_mod(grp, X, A, c))
 
 #define MPI_ECP_INV(dst, src)                                                 \
-    MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod((dst), (src), &grp->P))
+    MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(NULL, (dst), (src), &grp->P))
 
 #define MPI_ECP_MOV(X, A)                                                     \
     MBEDTLS_MPI_CHK(mbedtls_mpi_copy(X, A))
@@ -2201,21 +2202,6 @@
 final_norm:
     MBEDTLS_ECP_BUDGET(MBEDTLS_ECP_OPS_INV);
 #endif
-    /*
-     * Knowledge of the jacobian coordinates may leak the last few bits of the
-     * scalar [1], and since our MPI implementation isn't constant-flow,
-     * inversion (used for coordinate normalization) may leak the full value
-     * of its input via side-channels [2].
-     *
-     * [1] https://eprint.iacr.org/2003/191
-     * [2] https://eprint.iacr.org/2020/055
-     *
-     * Avoid the leak by randomizing coordinates before we normalize them.
-     */
-    if (f_rng != 0) {
-        MBEDTLS_MPI_CHK(ecp_randomize_jac(grp, RR, f_rng, p_rng));
-    }
-
     MBEDTLS_MPI_CHK(ecp_normalize_jac(grp, RR));
 
 #if defined(MBEDTLS_ECP_RESTARTABLE)
@@ -2594,18 +2580,6 @@
         MPI_ECP_COND_SWAP(&R->Z, &RP.Z, b);
     }
 
-    /*
-     * Knowledge of the projective coordinates may leak the last few bits of the
-     * scalar [1], and since our MPI implementation isn't constant-flow,
-     * inversion (used for coordinate normalization) may leak the full value
-     * of its input via side-channels [2].
-     *
-     * [1] https://eprint.iacr.org/2003/191
-     * [2] https://eprint.iacr.org/2020/055
-     *
-     * Avoid the leak by randomizing coordinates before we normalize them.
-     */
-    MBEDTLS_MPI_CHK(ecp_randomize_mxz(grp, R, f_rng, p_rng));
     MBEDTLS_MPI_CHK(ecp_normalize_mxz(grp, R));
 
 cleanup:
diff -Nru mbedtls-3.6.4/library/Makefile mbedtls-3.6.5/library/Makefile
--- mbedtls-3.6.4/library/Makefile	2025-06-30 09:24:52.963733700 +0300
+++ mbedtls-3.6.5/library/Makefile	2025-10-14 19:12:36.891729400 +0300
@@ -380,19 +380,21 @@
 GENERATED_WRAPPER_FILES = \
                     psa_crypto_driver_wrappers.h \
                     psa_crypto_driver_wrappers_no_static.c
-$(GENERATED_WRAPPER_FILES): ../scripts/generate_driver_wrappers.py
-$(GENERATED_WRAPPER_FILES): ../scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja
-$(GENERATED_WRAPPER_FILES): ../scripts/data_files/driver_templates/psa_crypto_driver_wrappers_no_static.c.jinja
+$(GENERATED_WRAPPER_FILES): $(gen_file_dep) ../scripts/generate_driver_wrappers.py
+$(GENERATED_WRAPPER_FILES): $(gen_file_dep) ../scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja
+$(GENERATED_WRAPPER_FILES): $(gen_file_dep) ../scripts/data_files/driver_templates/psa_crypto_driver_wrappers_no_static.c.jinja
 $(GENERATED_WRAPPER_FILES):
 	echo "  Gen   $(GENERATED_WRAPPER_FILES)"
 	$(PYTHON) ../scripts/generate_driver_wrappers.py
 
 psa_crypto.o:psa_crypto_driver_wrappers.h
 
+RM ?= rm
+
 clean:
 ifndef WINDOWS
-	rm -f *.o *.s libmbed*
-	rm -f $(THIRDPARTY_CRYPTO_OBJECTS) $(THIRDPARTY_CRYPTO_OBJECTS:.o=.s)
+	$(RM) -f *.o *.s libmbed*
+	$(RM) -f $(THIRDPARTY_CRYPTO_OBJECTS) $(THIRDPARTY_CRYPTO_OBJECTS:.o=.s)
 else
 	if exist *.o del /Q /F *.o
 	if exist *.s del /Q /F *.s
@@ -402,7 +404,7 @@
 
 neat: clean
 ifndef WINDOWS
-	rm -f $(GENERATED_FILES)
+	$(RM) -f $(GENERATED_FILES)
 else
 	for %f in ($(subst /,\,$(GENERATED_FILES))) if exist %f del /Q /F %f
 endif
diff -Nru mbedtls-3.6.4/library/psa_crypto.c mbedtls-3.6.5/library/psa_crypto.c
--- mbedtls-3.6.4/library/psa_crypto.c	2025-06-30 09:24:52.983119000 +0300
+++ mbedtls-3.6.5/library/psa_crypto.c	2025-10-14 19:12:36.925314000 +0300
@@ -73,6 +73,8 @@
 #include "mbedtls/psa_util.h"
 #include "mbedtls/threading.h"
 
+#include "constant_time_internal.h"
+
 #if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) ||          \
     defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXTRACT) ||  \
     defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXPAND)
@@ -1494,8 +1496,8 @@
             key_buffer, key_buffer_size,
             data, data_size, data_length);
     } else {
-        /* This shouldn't happen in the reference implementation, but
-           it is valid for a special-purpose implementation to omit
+        /* This shouldn't happen in the built-in implementation, but
+           it is valid for a special-purpose drivers to omit
            support for exporting certain key types. */
         return PSA_ERROR_NOT_SUPPORTED;
     }
@@ -4692,12 +4694,26 @@
                                               output_length);
 
 exit:
-    if (status == PSA_SUCCESS) {
-        status = psa_cipher_abort(operation);
-    } else {
-        *output_length = 0;
-        (void) psa_cipher_abort(operation);
-    }
+    /* C99 doesn't allow a declaration to follow a label */;
+    psa_status_t abort_status = psa_cipher_abort(operation);
+    /* Normally abort shouldn't fail unless the operation is in a bad
+     * state, in which case we'd expect finish to fail with the same error.
+     * So it doesn't matter much which call's error code we pick when both
+     * fail. However, in unauthenticated decryption specifically, the
+     * distinction between PSA_SUCCESS and PSA_ERROR_INVALID_PADDING is
+     * security-sensitive (risk of a padding oracle attack), so here we
+     * must not have a code path that depends on the value of status. */
+    if (abort_status != PSA_SUCCESS) {
+        status = abort_status;
+    }
+
+    /* Set *output_length to 0 if status != PSA_SUCCESS, without
+     * leaking the value of status through a timing side channel
+     * (status == PSA_ERROR_INVALID_PADDING is sensitive when doing
+     * unpadded decryption, due to the risk of padding oracle attack). */
+    mbedtls_ct_condition_t success =
+        mbedtls_ct_bool_not(mbedtls_ct_bool(status));
+    *output_length = mbedtls_ct_size_if_else_0(success, *output_length);
 
     LOCAL_OUTPUT_FREE(output_external, output);
 
@@ -4841,13 +4857,17 @@
 
 exit:
     unlock_status = psa_unregister_read_under_mutex(slot);
-    if (status == PSA_SUCCESS) {
+    if (unlock_status != PSA_SUCCESS) {
         status = unlock_status;
     }
 
-    if (status != PSA_SUCCESS) {
-        *output_length = 0;
-    }
+    /* Set *output_length to 0 if status != PSA_SUCCESS, without
+     * leaking the value of status through a timing side channel
+     * (status == PSA_ERROR_INVALID_PADDING is sensitive when doing
+     * unpadded decryption, due to the risk of padding oracle attack). */
+    mbedtls_ct_condition_t success =
+        mbedtls_ct_bool_not(mbedtls_ct_bool(status));
+    *output_length = mbedtls_ct_size_if_else_0(success, *output_length);
 
     LOCAL_INPUT_FREE(input_external, input);
     LOCAL_OUTPUT_FREE(output_external, output);
diff -Nru mbedtls-3.6.4/library/psa_crypto_cipher.c mbedtls-3.6.5/library/psa_crypto_cipher.c
--- mbedtls-3.6.4/library/psa_crypto_cipher.c	2025-06-30 09:24:52.984779400 +0300
+++ mbedtls-3.6.5/library/psa_crypto_cipher.c	2025-10-14 19:12:36.927229400 +0300
@@ -13,6 +13,7 @@
 #include "psa_crypto_cipher.h"
 #include "psa_crypto_core.h"
 #include "psa_crypto_random_impl.h"
+#include "constant_time_internal.h"
 
 #include "mbedtls/cipher.h"
 #include "mbedtls/error.h"
@@ -551,7 +552,19 @@
     uint8_t *output, size_t output_size, size_t *output_length)
 {
     psa_status_t status = PSA_ERROR_GENERIC_ERROR;
-    uint8_t temp_output_buffer[MBEDTLS_MAX_BLOCK_LENGTH];
+    size_t invalid_padding = 0;
+
+    /* We will copy output_size bytes from temp_output_buffer to the
+     * output buffer. We can't use *output_length to determine how
+     * much to copy because we must not leak that value through timing
+     * when doing decryption with unpadding. But the underlying function
+     * is not guaranteed to write beyond *output_length. To ensure we don't
+     * leak the former content of the stack to the caller, wipe that
+     * former content. */
+    uint8_t temp_output_buffer[MBEDTLS_MAX_BLOCK_LENGTH] = { 0 };
+    if (output_size > sizeof(temp_output_buffer)) {
+        output_size = sizeof(temp_output_buffer);
+    }
 
     if (operation->ctx.cipher.unprocessed_len != 0) {
         if (operation->alg == PSA_ALG_ECB_NO_PADDING ||
@@ -562,25 +575,34 @@
     }
 
     status = mbedtls_to_psa_error(
-        mbedtls_cipher_finish(&operation->ctx.cipher,
-                              temp_output_buffer,
-                              output_length));
+        mbedtls_cipher_finish_padded(&operation->ctx.cipher,
+                                     temp_output_buffer,
+                                     output_length,
+                                     &invalid_padding));
     if (status != PSA_SUCCESS) {
         goto exit;
     }
 
-    if (*output_length == 0) {
+    if (output_size == 0) {
         ; /* Nothing to copy. Note that output may be NULL in this case. */
-    } else if (output_size >= *output_length) {
-        memcpy(output, temp_output_buffer, *output_length);
     } else {
-        status = PSA_ERROR_BUFFER_TOO_SMALL;
+        /* Do not use the value of *output_length to determine how much
+         * to copy. When decrypting a padded cipher, the output length is
+         * sensitive, and leaking it could allow a padding oracle attack. */
+        memcpy(output, temp_output_buffer, output_size);
     }
 
+    status = mbedtls_ct_error_if_else_0(invalid_padding,
+                                        PSA_ERROR_INVALID_PADDING);
+    mbedtls_ct_condition_t buffer_too_small =
+        mbedtls_ct_uint_lt(output_size, *output_length);
+    status = mbedtls_ct_error_if(buffer_too_small,
+                                 PSA_ERROR_BUFFER_TOO_SMALL,
+                                 status);
+
 exit:
     mbedtls_platform_zeroize(temp_output_buffer,
                              sizeof(temp_output_buffer));
-
     return status;
 }
 
@@ -701,17 +723,21 @@
         &operation,
         mbedtls_buffer_offset(output, accumulated_length),
         output_size - accumulated_length, &olength);
-    if (status != PSA_SUCCESS) {
-        goto exit;
-    }
 
     *output_length = accumulated_length + olength;
 
 exit:
-    if (status == PSA_SUCCESS) {
-        status = mbedtls_psa_cipher_abort(&operation);
-    } else {
-        mbedtls_psa_cipher_abort(&operation);
+    /* C99 doesn't allow a declaration to follow a label */;
+    psa_status_t abort_status = mbedtls_psa_cipher_abort(&operation);
+    /* Normally abort shouldn't fail unless the operation is in a bad
+     * state, in which case we'd expect finish to fail with the same error.
+     * So it doesn't matter much which call's error code we pick when both
+     * fail. However, in unauthenticated decryption specifically, the
+     * distinction between PSA_SUCCESS and PSA_ERROR_INVALID_PADDING is
+     * security-sensitive (risk of a padding oracle attack), so here we
+     * must not have a code path that depends on the value of status. */
+    if (abort_status != PSA_SUCCESS) {
+        status = abort_status;
     }
 
     return status;
diff -Nru mbedtls-3.6.4/library/psa_crypto_core.h mbedtls-3.6.5/library/psa_crypto_core.h
--- mbedtls-3.6.4/library/psa_crypto_core.h	2025-06-30 09:24:52.985438300 +0300
+++ mbedtls-3.6.5/library/psa_crypto_core.h	2025-10-14 19:12:36.928114000 +0300
@@ -24,18 +24,6 @@
 #include "mbedtls/threading.h"
 #endif
 
-/**
- * Tell if PSA is ready for this cipher.
- *
- * \note            For now, only checks the state of the driver subsystem,
- *                  not the algorithm. Might do more in the future.
- *
- * \param cipher_alg  The cipher algorithm (ignored for now).
- *
- * \return 1 if the driver subsytem is ready, 0 otherwise.
- */
-int psa_can_do_cipher(psa_key_type_t key_type, psa_algorithm_t cipher_alg);
-
 typedef enum {
     PSA_SLOT_EMPTY = 0,
     PSA_SLOT_FILLING,
diff -Nru mbedtls-3.6.4/library/rsa_alt_helpers.c mbedtls-3.6.5/library/rsa_alt_helpers.c
--- mbedtls-3.6.4/library/rsa_alt_helpers.c	2025-06-30 09:24:52.990942200 +0300
+++ mbedtls-3.6.5/library/rsa_alt_helpers.c	2025-10-14 19:12:36.937463800 +0300
@@ -12,6 +12,7 @@
 
 #include "mbedtls/rsa.h"
 #include "mbedtls/bignum.h"
+#include "bignum_internal.h"
 #include "rsa_alt_helpers.h"
 
 /*
@@ -117,7 +118,7 @@
         MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&K, primes[attempt]));
 
         /* Check if gcd(K,N) = 1 */
-        MBEDTLS_MPI_CHK(mbedtls_mpi_gcd(P, &K, N));
+        MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(P, NULL, &K, N));
         if (mbedtls_mpi_cmp_int(P, 1) != 0) {
             continue;
         }
@@ -136,7 +137,7 @@
             }
 
             MBEDTLS_MPI_CHK(mbedtls_mpi_add_int(&K, &K, 1));
-            MBEDTLS_MPI_CHK(mbedtls_mpi_gcd(P, &K, N));
+            MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(P, NULL, &K, N));
 
             if (mbedtls_mpi_cmp_int(P, 1) ==  1 &&
                 mbedtls_mpi_cmp_mpi(P, N) == -1) {
@@ -197,6 +198,10 @@
         return MBEDTLS_ERR_MPI_BAD_INPUT_DATA;
     }
 
+    if (mbedtls_mpi_get_bit(E, 0) != 1) {
+        return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE;
+    }
+
     mbedtls_mpi_init(&K);
     mbedtls_mpi_init(&L);
 
@@ -211,8 +216,11 @@
     MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&K, &K, &L));
     MBEDTLS_MPI_CHK(mbedtls_mpi_div_mpi(&K, NULL, &K, D));
 
-    /* Compute modular inverse of E in LCM(P-1, Q-1) */
-    MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod(D, E, &K));
+    /* Compute modular inverse of E mod LCM(P-1, Q-1)
+     * This is FIPS 186-4 §B.3.1 criterion 3(b).
+     * This will return MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if E is not coprime to
+     * (P-1)(Q-1), also validating FIPS 186-4 §B.3.1 criterion 2(a). */
+    MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod_even_in_range(D, E, &K));
 
 cleanup:
 
@@ -244,7 +252,7 @@
 
     /* QP = Q^{-1} mod P */
     if (QP != NULL) {
-        MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod(QP, Q, P));
+        MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod_odd(QP, Q, P));
     }
 
 cleanup:
diff -Nru mbedtls-3.6.4/library/rsa_alt_helpers.h mbedtls-3.6.5/library/rsa_alt_helpers.h
--- mbedtls-3.6.4/library/rsa_alt_helpers.h	2025-06-30 09:24:52.991114100 +0300
+++ mbedtls-3.6.5/library/rsa_alt_helpers.h	2025-10-14 19:12:36.937893000 +0300
@@ -89,12 +89,15 @@
  * \param P        First prime factor of RSA modulus
  * \param Q        Second prime factor of RSA modulus
  * \param E        RSA public exponent
- * \param D        Pointer to MPI holding the private exponent on success.
+ * \param D        Pointer to MPI holding the private exponent on success,
+ *                 i.e. the modular inverse of E modulo LCM(P-1,Q-1).
  *
- * \return
- *                 - 0 if successful. In this case, D is set to a simultaneous
- *                   modular inverse of E modulo both P-1 and Q-1.
- *                 - A non-zero error code otherwise.
+ * \return         \c 0 if successful.
+ * \return         #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed.
+ * \return         #MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if E is not coprime to P-1
+ *                 and Q-1, that is, if GCD( E, (P-1)*(Q-1) ) != 1.
+ * \return         #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if inputs are otherwise
+ *                 invalid.
  *
  * \note           This function does not check whether P and Q are primes.
  *
diff -Nru mbedtls-3.6.4/library/rsa.c mbedtls-3.6.5/library/rsa.c
--- mbedtls-3.6.4/library/rsa.c	2025-06-30 09:24:52.990591800 +0300
+++ mbedtls-3.6.5/library/rsa.c	2025-10-14 19:12:36.936987600 +0300
@@ -1047,7 +1047,7 @@
                         unsigned int nbits, int exponent)
 {
     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
-    mbedtls_mpi H, G, L;
+    mbedtls_mpi H;
     int prime_quality = 0;
 
     /*
@@ -1060,8 +1060,6 @@
     }
 
     mbedtls_mpi_init(&H);
-    mbedtls_mpi_init(&G);
-    mbedtls_mpi_init(&L);
 
     if (exponent < 3 || nbits % 2 != 0) {
         ret = MBEDTLS_ERR_RSA_BAD_INPUT_DATA;
@@ -1099,35 +1097,28 @@
             mbedtls_mpi_swap(&ctx->P, &ctx->Q);
         }
 
-        /* Temporarily replace P,Q by P-1, Q-1 */
-        MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&ctx->P, &ctx->P, 1));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_sub_int(&ctx->Q, &ctx->Q, 1));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&H, &ctx->P, &ctx->Q));
-
-        /* check GCD( E, (P-1)*(Q-1) ) == 1 (FIPS 186-4 §B.3.1 criterion 2(a)) */
-        MBEDTLS_MPI_CHK(mbedtls_mpi_gcd(&G, &ctx->E, &H));
-        if (mbedtls_mpi_cmp_int(&G, 1) != 0) {
+        /* Compute D = E^-1 mod LCM(P-1, Q-1) (FIPS 186-4 §B.3.1 criterion 3(b))
+         * if it exists (FIPS 186-4 §B.3.1 criterion 2(a)) */
+        ret = mbedtls_rsa_deduce_private_exponent(&ctx->P, &ctx->Q, &ctx->E, &ctx->D);
+        if (ret == MBEDTLS_ERR_MPI_NOT_ACCEPTABLE) {
+            mbedtls_mpi_lset(&ctx->D, 0); /* needed for the next call */
             continue;
         }
+        if (ret != 0) {
+            goto cleanup;
+        }
 
-        /* compute smallest possible D = E^-1 mod LCM(P-1, Q-1) (FIPS 186-4 §B.3.1 criterion 3(b)) */
-        MBEDTLS_MPI_CHK(mbedtls_mpi_gcd(&G, &ctx->P, &ctx->Q));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_div_mpi(&L, NULL, &H, &G));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_inv_mod(&ctx->D, &ctx->E, &L));
-
-        if (mbedtls_mpi_bitlen(&ctx->D) <= ((nbits + 1) / 2)) {      // (FIPS 186-4 §B.3.1 criterion 3(a))
+        /* (FIPS 186-4 §B.3.1 criterion 3(a)) */
+        if (mbedtls_mpi_bitlen(&ctx->D) <= ((nbits + 1) / 2)) {
             continue;
         }
 
         break;
     } while (1);
 
-    /* Restore P,Q */
-    MBEDTLS_MPI_CHK(mbedtls_mpi_add_int(&ctx->P,  &ctx->P, 1));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_add_int(&ctx->Q,  &ctx->Q, 1));
 
+    /* N = P * Q */
     MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&ctx->N, &ctx->P, &ctx->Q));
-
     ctx->len = mbedtls_mpi_size(&ctx->N);
 
 #if !defined(MBEDTLS_RSA_NO_CRT)
@@ -1146,8 +1137,6 @@
 cleanup:
 
     mbedtls_mpi_free(&H);
-    mbedtls_mpi_free(&G);
-    mbedtls_mpi_free(&L);
 
     if (ret != 0) {
         mbedtls_rsa_free(ctx);
@@ -1304,33 +1293,16 @@
     }
 
     /* Unblinding value: Vf = random number, invertible mod N */
+    mbedtls_mpi_lset(&R, 0);
     do {
         if (count++ > 10) {
             ret = MBEDTLS_ERR_RSA_RNG_FAILED;
             goto cleanup;
         }
 
-        MBEDTLS_MPI_CHK(mbedtls_mpi_fill_random(&ctx->Vf, ctx->len - 1, f_rng, p_rng));
-
-        /* Compute Vf^-1 as R * (R Vf)^-1 to avoid leaks from inv_mod. */
-        MBEDTLS_MPI_CHK(mbedtls_mpi_fill_random(&R, ctx->len - 1, f_rng, p_rng));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&ctx->Vi, &ctx->Vf, &R));
-        MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&ctx->Vi, &ctx->Vi, &ctx->N));
-
-        /* At this point, Vi is invertible mod N if and only if both Vf and R
-         * are invertible mod N. If one of them isn't, we don't need to know
-         * which one, we just loop and choose new values for both of them.
-         * (Each iteration succeeds with overwhelming probability.) */
-        ret = mbedtls_mpi_inv_mod(&ctx->Vi, &ctx->Vi, &ctx->N);
-        if (ret != 0 && ret != MBEDTLS_ERR_MPI_NOT_ACCEPTABLE) {
-            goto cleanup;
-        }
-
-    } while (ret == MBEDTLS_ERR_MPI_NOT_ACCEPTABLE);
-
-    /* Finish the computation of Vf^-1 = R * (R Vf)^-1 */
-    MBEDTLS_MPI_CHK(mbedtls_mpi_mul_mpi(&ctx->Vi, &ctx->Vi, &R));
-    MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&ctx->Vi, &ctx->Vi, &ctx->N));
+        MBEDTLS_MPI_CHK(mbedtls_mpi_random(&ctx->Vf, 1, &ctx->N, f_rng, p_rng));
+        MBEDTLS_MPI_CHK(mbedtls_mpi_gcd_modinv_odd(&R, &ctx->Vi, &ctx->Vf, &ctx->N));
+    } while (mbedtls_mpi_cmp_int(&R, 1) != 0);
 
     /* Blinding value: Vi = Vf^(-e) mod N
      * (Vi already contains Vf^-1 at this point) */
diff -Nru mbedtls-3.6.4/library/ssl_msg.c mbedtls-3.6.5/library/ssl_msg.c
--- mbedtls-3.6.4/library/ssl_msg.c	2025-06-30 09:24:52.994672300 +0300
+++ mbedtls-3.6.5/library/ssl_msg.c	2025-10-14 19:12:36.943813000 +0300
@@ -4461,7 +4461,7 @@
         ret = 0;
         goto exit;
     } else {
-        MBEDTLS_SSL_DEBUG_MSG(2, ("Next handshake message %u not or only partially bufffered",
+        MBEDTLS_SSL_DEBUG_MSG(2, ("Next handshake message %u not or only partially buffered",
                                   hs->in_msg_seq));
     }
 
@@ -6275,7 +6275,7 @@
     } else {
         /*
          * If we are past the point where we can send early data or we have
-         * already reached the maximum early data size, return immediatly.
+         * already reached the maximum early data size, return immediately.
          * Otherwise, progress the handshake as much as possible to not delay
          * it too much. If we reach a point where we can still send early data,
          * then we will send some.
diff -Nru mbedtls-3.6.4/library/ssl_tls12_client.c mbedtls-3.6.5/library/ssl_tls12_client.c
--- mbedtls-3.6.4/library/ssl_tls12_client.c	2025-06-30 09:24:52.996220600 +0300
+++ mbedtls-3.6.5/library/ssl_tls12_client.c	2025-10-14 19:12:36.946297000 +0300
@@ -2024,7 +2024,7 @@
 
     tls_id = mbedtls_ssl_get_tls_id_from_ecp_group_id(grp_id);
     if (tls_id == 0) {
-        MBEDTLS_SSL_DEBUG_MSG(1, ("ECC group %u not suported",
+        MBEDTLS_SSL_DEBUG_MSG(1, ("ECC group %u not supported",
                                   grp_id));
         return MBEDTLS_ERR_SSL_ILLEGAL_PARAMETER;
     }
diff -Nru mbedtls-3.6.4/library/ssl_tls.c mbedtls-3.6.5/library/ssl_tls.c
--- mbedtls-3.6.4/library/ssl_tls.c	2025-06-30 09:24:52.995816000 +0300
+++ mbedtls-3.6.5/library/ssl_tls.c	2025-10-14 19:12:36.945095800 +0300
@@ -3627,7 +3627,7 @@
     start = MBEDTLS_GET_UINT64_BE(p, 0);
     p += 8;
 
-    session->start = (time_t) start;
+    session->start = (mbedtls_time_t) start;
 #endif /* MBEDTLS_HAVE_TIME */
 
     /*
diff -Nru mbedtls-3.6.4/library/threading.c mbedtls-3.6.5/library/threading.c
--- mbedtls-3.6.4/library/threading.c	2025-06-30 09:24:52.999363200 +0300
+++ mbedtls-3.6.5/library/threading.c	2025-10-14 19:12:36.950206800 +0300
@@ -17,7 +17,7 @@
 
 #if defined(MBEDTLS_THREADING_C)
 
-#include "mbedtls/threading.h"
+#include "threading_internal.h"
 
 #if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT)
 
diff -Nru mbedtls-3.6.4/library/threading_internal.h mbedtls-3.6.5/library/threading_internal.h
--- mbedtls-3.6.4/library/threading_internal.h	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/library/threading_internal.h	2025-10-14 19:12:36.950327900 +0300
@@ -0,0 +1,28 @@
+/**
+ * \file threading_internal.h
+ *
+ * \brief Threading interfaces used by the test framework
+ */
+/*
+ *  Copyright The Mbed TLS Contributors
+ *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+ */
+
+#ifndef MBEDTLS_THREADING_INTERNAL_H
+#define MBEDTLS_THREADING_INTERNAL_H
+
+#include "common.h"
+
+#include <mbedtls/threading.h>
+
+/* A version number for the internal threading interface.
+ * This is meant to allow the framework to remain compatible with
+ * multiple versions, to facilitate transitions.
+ *
+ * Conventionally, this is the Mbed TLS version number when the
+ * threading interface was last changed in a way that may impact the
+ * test framework, with the lower byte incremented as necessary
+ * if multiple changes happened between releases. */
+#define MBEDTLS_THREADING_INTERNAL_VERSION 0x03060000
+
+#endif /* MBEDTLS_THREADING_INTERNAL_H */
diff -Nru mbedtls-3.6.4/programs/test/udp_proxy.c mbedtls-3.6.5/programs/test/udp_proxy.c
--- mbedtls-3.6.4/programs/test/udp_proxy.c	2025-06-30 09:24:53.022943700 +0300
+++ mbedtls-3.6.5/programs/test/udp_proxy.c	2025-10-14 19:12:36.982360800 +0300
@@ -14,15 +14,14 @@
 
 #include "mbedtls/build_info.h"
 
+#include <stdlib.h>
 #if defined(MBEDTLS_PLATFORM_C)
 #include "mbedtls/platform.h"
 #else
 #include <stdio.h>
-#include <stdlib.h>
 #if defined(MBEDTLS_HAVE_TIME)
 #include <time.h>
 #define mbedtls_time            time
-#define mbedtls_time_t          time_t
 #endif
 #define mbedtls_printf          printf
 #define mbedtls_calloc          calloc
diff -Nru mbedtls-3.6.4/README.md mbedtls-3.6.5/README.md
--- mbedtls-3.6.4/README.md	2025-06-30 09:24:52.916139800 +0300
+++ mbedtls-3.6.5/README.md	2025-10-14 19:12:36.755006600 +0300
@@ -1,9 +1,7 @@
 README for Mbed TLS
 ===================
 
-Mbed TLS is a C library that implements cryptographic primitives, X.509 certificate manipulation and the SSL/TLS and DTLS protocols. Its small code footprint makes it suitable for embedded systems.
-
-Mbed TLS includes a reference implementation of the [PSA Cryptography API](#psa-cryptography-api). This is currently a preview for evaluation purposes only.
+Mbed TLS is a C library that implements cryptographic primitives (including the [PSA Cryptography API](#psa-cryptography-api)), X.509 certificate manipulation and the SSL/TLS and DTLS protocols. Its small code footprint makes it suitable for embedded systems.
 
 Configuration
 -------------
@@ -72,7 +70,13 @@
     Depending on your Python installation, you may need to invoke `python` instead of `python3`. To install the packages system-wide, omit the `--user` option.
 * A C compiler for the host platform, for some test data.
 
-If you are cross-compiling, you must set the `CC` environment variable to a C compiler for the host platform when generating the configuration-independent files.
+The scripts that generate the configuration-independent files will look for a host C compiler in the following places (in order of preference):
+
+1. The `HOSTCC` environment variable. This can be used if `CC` is pointing to a cross-compiler.
+2. The `CC` environment variable.
+3. An executable called `cc` in the current path.
+
+Note: If you have multiple toolchains installed, it is recommended to set `CC` or `HOSTCC` to the intended host compiler before generating the files.
 
 Any of the following methods are available to generate the configuration-independent files:
 
@@ -292,8 +296,7 @@
 
 ### PSA implementation in Mbed TLS
 
-Mbed TLS includes a reference implementation of the PSA Cryptography API.
-However, it does not aim to implement the whole specification; in particular it does not implement all the algorithms.
+Mbed TLS includes an implementation of the PSA Cryptography API. It covers most, but not all algorithms.
 
 The X.509 and TLS code can use PSA cryptography for most operations. To enable this support, activate the compilation option `MBEDTLS_USE_PSA_CRYPTO` in `mbedtls_config.h`. Note that TLS 1.3 uses PSA cryptography for most operations regardless of this option. See `docs/use-psa-crypto.md` for details.
 
diff -Nru mbedtls-3.6.4/scripts/abi_check.py mbedtls-3.6.5/scripts/abi_check.py
--- mbedtls-3.6.4/scripts/abi_check.py	2025-06-30 09:24:53.025523700 +0300
+++ mbedtls-3.6.5/scripts/abi_check.py	2025-10-14 19:12:36.987432000 +0300
@@ -197,11 +197,32 @@
         """If the crypto submodule is present, initialize it.
         if version.crypto_revision exists, update it to that revision,
         otherwise update it to the default revision"""
-        update_output = subprocess.check_output(
-            [self.git_command, "submodule", "update", "--init", '--recursive'],
-            cwd=git_worktree_path,
+        submodule_output = subprocess.check_output(
+            [self.git_command, "submodule", "foreach", "--recursive",
+             f'git worktree add --detach "{git_worktree_path}/$displaypath" HEAD'],
+            cwd=self.repo_path,
             stderr=subprocess.STDOUT
         )
+        self.log.debug(submodule_output.decode("utf-8"))
+
+        try:
+            # Try to update the submodules using local commits
+            # (Git will sometimes insist on fetching the remote without --no-fetch
+            # if the submodules are shallow clones)
+            update_output = subprocess.check_output(
+                [self.git_command, "submodule", "update", "--init", '--recursive', '--no-fetch'],
+                cwd=git_worktree_path,
+                stderr=subprocess.STDOUT
+            )
+        except subprocess.CalledProcessError as err:
+            self.log.debug(err.stdout.decode("utf-8"))
+
+            # Checkout with --no-fetch failed, falling back to fetching from origin
+            update_output = subprocess.check_output(
+                [self.git_command, "submodule", "update", "--init", '--recursive'],
+                cwd=git_worktree_path,
+                stderr=subprocess.STDOUT
+            )
         self.log.debug(update_output.decode("utf-8"))
         if not (os.path.exists(os.path.join(git_worktree_path, "crypto"))
                 and version.crypto_revision):
@@ -378,8 +399,15 @@
     def _cleanup_worktree(self, git_worktree_path):
         """Remove the specified git worktree."""
         shutil.rmtree(git_worktree_path)
+        submodule_output = subprocess.check_output(
+            [self.git_command, "submodule", "foreach", "--recursive",
+             f'git worktree remove "{git_worktree_path}/$displaypath"'],
+            cwd=self.repo_path,
+            stderr=subprocess.STDOUT
+        )
+        self.log.debug(submodule_output.decode("utf-8"))
         worktree_output = subprocess.check_output(
-            [self.git_command, "worktree", "prune"],
+            [self.git_command, "worktree", "remove", git_worktree_path],
             cwd=self.repo_path,
             stderr=subprocess.STDOUT
         )
diff -Nru mbedtls-3.6.4/scripts/ci.requirements.txt mbedtls-3.6.5/scripts/ci.requirements.txt
--- mbedtls-3.6.4/scripts/ci.requirements.txt	2025-06-30 09:24:53.025952000 +0300
+++ mbedtls-3.6.5/scripts/ci.requirements.txt	2025-10-01 18:16:57.136078000 +0300
@@ -2,10 +2,12 @@
 
 -r driver.requirements.txt
 
+# The dependencies below are only used in scripts that we run on the Linux CI.
+
 # Use a known version of Pylint, because new versions tend to add warnings
 # that could start rejecting our code.
 # 2.4.4 is the version in Ubuntu 20.04. It supports Python >=3.5.
-pylint == 2.4.4
+pylint == 2.4.4; platform_system == 'Linux'
 
 # Use a version of mypy that is compatible with our code base.
 # mypy <0.940 is known not to work: see commit
@@ -13,16 +15,14 @@
 # mypy >=0.960 is known not to work:
 #   https://github.com/Mbed-TLS/mbedtls-framework/issues/50
 # mypy 0.942 is the version in Ubuntu 22.04.
-mypy == 0.942
+mypy == 0.942; platform_system == 'Linux'
 
 # At the time of writing, only needed for tests/scripts/audit-validity-dates.py.
-# It needs >=35.0.0 for correct operation, and that requires Python >=3.6,
-# but our CI has Python 3.5. So let pip install the newest version that's
-# compatible with the running Python: this way we get something good enough
-# for mypy and pylint under Python 3.5, and we also get something good enough
-# to run audit-validity-dates.py on Python >=3.6.
-cryptography # >= 35.0.0
+# It needs >=35.0.0 for correct operation, and that requires Python >=3.6.
+# >=35.0.0 also requires Rust to build from source, which we are forced to do on
+# FreeBSD, since PyPI doesn't carry binary wheels for the BSDs.
+cryptography >= 35.0.0; platform_system == 'Linux'
 
 # For building `framework/data_files/server9-bad-saltlen.crt` and check python
 # files.
-asn1crypto
+asn1crypto; platform_system == 'Linux'
diff -Nru mbedtls-3.6.4/tests/scripts/analyze_outcomes.py mbedtls-3.6.5/tests/scripts/analyze_outcomes.py
--- mbedtls-3.6.4/tests/scripts/analyze_outcomes.py	2025-06-30 09:24:53.043502800 +0300
+++ mbedtls-3.6.5/tests/scripts/analyze_outcomes.py	2025-10-14 19:12:37.017895500 +0300
@@ -86,10 +86,6 @@
             # Untested platform-specific optimizations.
             # https://github.com/Mbed-TLS/mbedtls/issues/9588
             'Config: MBEDTLS_HAVE_SSE2',
-            # Obsolete configuration option, to be replaced by
-            # PSA entropy drivers.
-            # https://github.com/Mbed-TLS/mbedtls/issues/8150
-            'Config: MBEDTLS_NO_PLATFORM_ENTROPY',
             # Untested aspect of the platform interface.
             # https://github.com/Mbed-TLS/mbedtls/issues/9589
             'Config: MBEDTLS_PLATFORM_NO_STD_FUNCTIONS',
@@ -102,9 +98,6 @@
             'Config: MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY',
             'Config: MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY',
             'Config: MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY',
-            # We don't run test_suite_config when we test this.
-            # https://github.com/Mbed-TLS/mbedtls/issues/9586
-            'Config: MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND',
         ],
         'test_suite_config.psa_boolean': [
             # We don't test with HMAC disabled.
@@ -671,6 +664,12 @@
             'CMAC null arguments',
             re.compile('CMAC.* (AES|ARIA|Camellia).*'),
         ],
+        'test_suite_cipher.constant_time': [
+            # Like with test_suite_cipher.aes and such, these tests call
+            # cipher_wrapper in a way that requires the block cipher to
+            # be built in.
+            re.compile('.*(AES|ARIA|CAMELLIA).*(encrypt|decrypt).*', re.I),
+        ],
         'test_suite_cipher.padding': [
             # Following tests require AES_C/CAMELLIA_C to be enabled,
             # but these are not available in the accelerated component.
diff -Nru mbedtls-3.6.4/tests/scripts/components-build-system.sh mbedtls-3.6.5/tests/scripts/components-build-system.sh
--- mbedtls-3.6.4/tests/scripts/components-build-system.sh	2025-06-30 09:24:53.044447700 +0300
+++ mbedtls-3.6.5/tests/scripts/components-build-system.sh	2025-10-14 19:12:37.019206000 +0300
@@ -25,6 +25,66 @@
     $FRAMEWORK/tests/programs/dlopen_demo.sh
 }
 
+component_build_make_no_gen_files () {
+    msg "prepare for building in a minimal environment"
+
+    # Ensure that the generated files are present (should be a no-op
+    # since the all.sh infrastructure already does it).
+    make generated_files
+
+    # Arrange for the non-generated sources to be more recent than any
+    # generated file. This allows us to detect if the makefile tries
+    # to rebuild the generated files from their dependencies when it
+    # shouldn't.
+    # Wait 1 second so this test is effective even if the filesystem
+    # only has a granularity of 1 second for timestamps.
+    sleep 1
+    git ls-files -z | xargs -0 touch --
+
+    # The setup code of all.sh sets up a "quiet" wrapper for `make`.
+    # We want to bypass it and just use the normal make program,
+    # so that this test mimics a normal user's platform.
+    # And anyway we need to bypass it because it wouldn't work without bash
+    # and other tools in the $PATH.
+    # The wrapper is used because the setup code adds the
+    # `.../framework/scripts/quiet` directlry to the beginning of the $PATH.
+    # So here we remove that.
+    shopt -s extglob
+    # Strip off all entries in $PATH that ends with `/quiet`. (This misses
+    # the very last element, but we know we'll never need to remove the last
+    # element, since we just want to remove the wrapper directory that comes
+    # before the normal programs.)
+    PATH=${PATH//*([!:])\/quiet:/}
+
+    # Locate the minimum programs needed for the build: ${CC} and ${AR}.
+    AR="$(command -v ar)"
+    # GCC needs "as" in $PATH by default. To use GCC, we need to tell it where
+    # to find the assembler. Or we can use clang which just works.
+    CC="$(command -v clang)"
+    # For cleaning.
+    RM="$(command -v rm)"
+
+    # Test the build with make.
+    # Preferably we should also test with CMake. Note that a CMake test
+    # would be harder to set up, because CMake will find e.g. /usr/bin/python
+    # even if it isn't on $PATH.
+    msg "build: make lib with GEN_FILES off in minimal environment"
+    env PATH=/no/such/directory "$(command -v make)" GEN_FILES= AR="$AR" CC="$CC" lib
+
+    msg "build: make -C library clean with GEN_FILES off in minimal environment"
+    env PATH=/no/such/directory "$(command -v make)" GEN_FILES= RM="$RM" -C library clean
+
+    msg "build: make lib with GEN_FILES off with generated files missing"
+    make neat
+    # Check that a sample generated file is absent
+    not test -f library/error.c
+    PERL="$(command -v perl)"
+    PYTHON="$(command -v python3)"
+    # We take whatever Python environment we're in. For a future improvement,
+    # make a venv with just scripts/basic.requirements.txt.
+    env PATH=/no/such/directory "$(command -v make)" GEN_FILES= AR="$AR" CC="$CC" PERL="$PERL" PYTHON="$PYTHON" lib
+}
+
 support_test_cmake_out_of_source () {
     distrib_id=""
     distrib_ver=""
diff -Nru mbedtls-3.6.4/tests/scripts/components-compiler.sh mbedtls-3.6.5/tests/scripts/components-compiler.sh
--- mbedtls-3.6.4/tests/scripts/components-compiler.sh	2025-06-30 09:24:53.044599300 +0300
+++ mbedtls-3.6.5/tests/scripts/components-compiler.sh	2025-10-14 19:12:37.019670700 +0300
@@ -94,9 +94,6 @@
     loc_cflags="$ASAN_CFLAGS -DPSA_CRYPTO_DRIVER_TEST_ALL"
     loc_cflags="${loc_cflags} '-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/user-config-for-test.h\"'"
     loc_cflags="${loc_cflags} -I../framework/tests/include -O2"
-    # Allow a warning that we don't yet comply to.
-    # https://github.com/Mbed-TLS/mbedtls/issues/9944
-    loc_cflags="${loc_cflags} -Wno-error=unterminated-string-initialization"
 
     make CC=$GCC_15 CFLAGS="${loc_cflags}" LDFLAGS="$ASAN_CFLAGS"
 
diff -Nru mbedtls-3.6.4/tests/scripts/components-configuration-crypto.sh mbedtls-3.6.5/tests/scripts/components-configuration-crypto.sh
--- mbedtls-3.6.4/tests/scripts/components-configuration-crypto.sh	2025-06-30 09:24:53.044995000 +0300
+++ mbedtls-3.6.5/tests/scripts/components-configuration-crypto.sh	2025-10-14 19:12:37.020917200 +0300
@@ -5,6 +5,33 @@
 
 # This file contains test components that are executed by all.sh
 
+## test_with_valgrind tests/suites/SUITE.data [...]
+## Run the specified test suite(s) with Valgrind.
+test_with_valgrind () {
+    for data_file in "$@"; do
+        suite="${data_file##*/}"; suite="${suite%.data}"
+        exe="tests/$suite"
+        log_file="tests/MemoryChecker.$suite.log"
+        make -C tests "$suite"
+        valgrind -q --tool=memcheck --track-origins=yes --log-file="$log_file" "$exe"
+        not grep . -- "$log_file"
+    done
+}
+
+## Run a small set of dedicated constant-time tests with Valgrind.
+## Exclude very slow suites.
+## Exclude suites that contain some constant-time tests, but whose focus
+## isn't on constant-time tests.
+test_with_valgrind_constant_time () {
+    # Use a different configuration name in the outcome file if we're doing
+    # additional valgrind testing on top of non-instrumented testing.
+    if [[ $MBEDTLS_TEST_CONFIGURATION != *valgrind_cf* ]]; then
+        declare MBEDTLS_TEST_CONFIGURATION="${MBEDTLS_TEST_CONFIGURATION}+valgrind_cf"
+    fi
+    declare GLOBIGNORE="tests/suites/test_suite_constant_time_hmac.data"
+    test_with_valgrind tests/suites/*constant_time*.data
+}
+
 ################################################################
 #### Configuration Testing - Crypto
 ################################################################
@@ -31,6 +58,17 @@
     make test
 }
 
+component_test_psa_assume_exclusive_buffers_valgrind_cf () {
+    msg "build: full config + MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS, constant flow with Valgrind"
+    scripts/config.py full
+    scripts/config.py set MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS
+    scripts/config.py set MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
+    make lib
+
+    msg "test: full config + MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS, constant flow with Valgrind, selected suites"
+    test_with_valgrind_constant_time tests/suites/*constant_time*.data
+}
+
 component_test_crypto_with_static_key_slots() {
     msg "build: crypto full + MBEDTLS_PSA_STATIC_KEY_SLOTS"
     scripts/config.py crypto_full
@@ -426,6 +464,23 @@
     tests/ssl-opt.sh -f 'Default\|opaque'
 }
 
+component_test_entropy_nv_seed_only () {
+    msg "build: full minus platform entropy (NV seed only)"
+    scripts/config.py full
+    scripts/config.py set MBEDTLS_NO_PLATFORM_ENTROPY
+    make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS"
+
+    msg "build: full minus platform entropy (NV seed only)"
+    make test
+
+    # Check that the library seems to refer to the seedfile, but not to
+    # platform entropy sources.
+    grep seedfile library/platform.o
+    not grep getrandom library/entropy*.o
+    not grep /dev/random library/entropy*.o
+    not grep /dev/.random library/entropy*.o
+}
+
 component_test_psa_inject_entropy () {
     msg "build: full + MBEDTLS_PSA_INJECT_ENTROPY"
     scripts/config.py full
@@ -1276,7 +1331,8 @@
                     ALG_SHA3_224 ALG_SHA3_256 ALG_SHA3_384 ALG_SHA3_512"
     helper_libtestdriver1_make_drivers "$loc_accel_list" "$loc_extra_list"
 
-    helper_libtestdriver1_make_main "$loc_accel_list"
+    # For grep to work below we need less inlining in ecp.c
+    ASAN_CFLAGS="$ASAN_CFLAGS -O0" helper_libtestdriver1_make_main "$loc_accel_list"
 
     # We expect ECDH to be re-enabled for the missing curves
     grep mbedtls_ecdh_ library/ecdh.o
@@ -2952,11 +3008,15 @@
     msg "build: default config + AES_ONLY_128_BIT_KEY_LENGTH"
     scripts/config.py set MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
     scripts/config.py unset MBEDTLS_PADLOCK_C
+    scripts/config.py set MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND
 
     make CFLAGS='-O2 -Werror -Wall -Wextra'
 
     msg "test: default config + AES_ONLY_128_BIT_KEY_LENGTH"
     make test
+
+    msg "test: default config + AES_ONLY_128_BIT_KEY_LENGTH constant flow with Valgrind, selected suites"
+    test_with_valgrind_constant_time
 }
 
 component_test_no_ctr_drbg_aes_only_128_bit_keys () {
diff -Nru mbedtls-3.6.4/tests/ssl-opt.sh mbedtls-3.6.5/tests/ssl-opt.sh
--- mbedtls-3.6.4/tests/ssl-opt.sh	2025-06-30 09:24:53.050413400 +0300
+++ mbedtls-3.6.5/tests/ssl-opt.sh	2025-10-14 19:12:37.028161300 +0300
@@ -12526,7 +12526,7 @@
             0 \
             -c "Buffering HS message" \
             -c "found fragmented DTLS handshake message"\
-            -c "Next handshake message 1 not or only partially bufffered" \
+            -c "Next handshake message 1 not or only partially buffered" \
             -c "Next handshake message has been buffered - load"\
             -S "Buffering HS message" \
             -S "Next handshake message has been buffered - load"\
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_bignum_core.function mbedtls-3.6.5/tests/suites/test_suite_bignum_core.function
--- mbedtls-3.6.4/tests/suites/test_suite_bignum_core.function	2025-06-30 09:24:53.055245900 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_bignum_core.function	2025-10-14 19:12:37.034829600 +0300
@@ -2,6 +2,7 @@
 #include "mbedtls/bignum.h"
 #include "mbedtls/entropy.h"
 #include "bignum_core.h"
+#include "bignum_core_invasive.h"
 #include "constant_time_internal.h"
 #include "test/constant_flow.h"
 #include "test/bignum_codepath_check.h"
@@ -148,6 +149,29 @@
     return ret;
 }
 
+/*
+ * Return -1 if A < B, +1 if A > B and 0 if A == B
+ */
+static int mpi_core_cmp(const mbedtls_mpi_uint *A, size_t A_limbs,
+                        const mbedtls_mpi_uint *B, size_t B_limbs)
+{
+    TEST_CF_PUBLIC(A, A_limbs * sizeof(mbedtls_mpi_uint));
+    TEST_CF_PUBLIC(B, B_limbs * sizeof(mbedtls_mpi_uint));
+
+    const mbedtls_mpi AA = {
+        .p = (mbedtls_mpi_uint *) A,
+        .s = 1,
+        .n = (unsigned short) A_limbs,
+    };
+    const mbedtls_mpi BB = {
+        .p = (mbedtls_mpi_uint *) B,
+        .s = 1,
+        .n = (unsigned short) B_limbs,
+    };
+
+    return mbedtls_mpi_cmp_mpi(&AA, &BB);
+}
+
 /* END_HEADER */
 
 /* BEGIN_DEPENDENCIES
@@ -1356,3 +1380,285 @@
     mbedtls_free(X);
 }
 /* END_CASE */
+
+/* BEGIN_CASE */
+void mpi_core_gcd_modinv_odd(char *input_A, char *input_N,
+                             char *input_exp_G, char *input_exp_I)
+{
+    mbedtls_mpi_uint *A = NULL;
+    size_t A_limbs = 0;
+    mbedtls_mpi_uint *N = NULL;
+    size_t N_limbs = 0;
+    mbedtls_mpi_uint *exp_G = NULL;
+    size_t exp_G_limbs = 0;
+    mbedtls_mpi_uint *exp_I = NULL;
+    size_t exp_I_limbs = 0;
+    mbedtls_mpi_uint *G = NULL, *I = NULL, *T = NULL;
+
+    /* Read test parameters into MPI structures */
+    TEST_EQUAL(0, mbedtls_test_read_mpi_core(&A, &A_limbs, input_A));
+    TEST_EQUAL(0, mbedtls_test_read_mpi_core(&N, &N_limbs, input_N));
+    TEST_EQUAL(0, mbedtls_test_read_mpi_core(&exp_G, &exp_G_limbs, input_exp_G));
+    const unsigned char got_I = strlen(input_exp_I) != 0;
+    if (got_I) {
+        TEST_EQUAL(0, mbedtls_test_read_mpi_core(&exp_I, &exp_I_limbs, input_exp_I));
+    }
+
+    /* The function under test wants this */
+    TEST_EQUAL(N[0] & 1, 1);
+    TEST_LE_U(A_limbs, N_limbs);
+    TEST_ASSERT(mpi_core_cmp(A, A_limbs, N, N_limbs) <= 0);
+
+    const size_t N_bytes = N_limbs * sizeof(mbedtls_mpi_uint);
+
+    TEST_CF_SECRET(A, A_limbs * sizeof(mbedtls_mpi_uint));
+    TEST_CF_SECRET(N, N_limbs * sizeof(mbedtls_mpi_uint));
+
+#define FREE_G_I_T      \
+    mbedtls_free(G);    \
+    G = NULL;           \
+    mbedtls_free(I);    \
+    I = NULL;           \
+    mbedtls_free(T);    \
+    T = NULL
+
+    /*
+     * Test GCD only (I == NULL)
+     */
+    TEST_CALLOC(G, N_limbs);
+    memset(G, 'G', N_bytes);
+
+    TEST_CALLOC(T, 4 * N_limbs);
+    memset(T, 'T', 4 * N_bytes);
+
+    mbedtls_mpi_core_gcd_modinv_odd(G, NULL, A, A_limbs, N, N_limbs, T);
+    TEST_EQUAL(mpi_core_cmp(G, N_limbs, exp_G, exp_G_limbs), 0);
+
+    FREE_G_I_T;
+
+    /* GCD only, G aliased to N */
+    TEST_CALLOC(G, N_limbs);
+    memcpy(G, N, N_bytes);
+
+    TEST_CALLOC(T, 4 * N_limbs);
+    memset(T, 'T', 4 * N_bytes);
+
+    mbedtls_mpi_core_gcd_modinv_odd(G, NULL, A, A_limbs, /* N */ G, N_limbs, T);
+    TEST_EQUAL(mpi_core_cmp(G, N_limbs, exp_G, exp_G_limbs), 0);
+
+    FREE_G_I_T;
+
+    /* GCD only, G aliased to A (hence A_limbs = N_limbs) */
+    TEST_CALLOC(G, N_limbs);
+    memcpy(G, A, A_limbs * sizeof(mbedtls_mpi_uint));
+
+    TEST_CALLOC(T, 4 * N_limbs);
+    memset(T, 'T', 4 * N_bytes);
+
+    mbedtls_mpi_core_gcd_modinv_odd(G, NULL, /* A */ G, N_limbs, N, N_limbs, T);
+    TEST_EQUAL(mpi_core_cmp(G, N_limbs, exp_G, exp_G_limbs), 0);
+
+    FREE_G_I_T;
+
+    /*
+     * Test GCD + modinv
+     */
+    TEST_CALLOC(G, N_limbs);
+    memset(G, 'G', N_bytes);
+
+    TEST_CALLOC(I, N_limbs);
+    memset(I, 'I', N_bytes);
+
+    TEST_CALLOC(T, 5 * N_limbs);
+    memset(T, 'T', 5 * N_bytes);
+
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, A, A_limbs, N, N_limbs, T);
+
+    TEST_EQUAL(mpi_core_cmp(G, N_limbs, exp_G, exp_G_limbs), 0);
+    if (got_I) {
+        TEST_EQUAL(mpi_core_cmp(I, N_limbs, exp_I, exp_I_limbs), 0);
+    }
+
+    FREE_G_I_T;
+
+    /* GCD + modinv, G aliased to A */
+    TEST_CALLOC(G, N_limbs);
+    memcpy(G, A, A_limbs * sizeof(mbedtls_mpi_uint));
+
+    TEST_CALLOC(I, N_limbs);
+    memset(I, 'I', N_bytes);
+
+    TEST_CALLOC(T, 5 * N_limbs);
+    memset(T, 'T', 5 * N_bytes);
+
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, /* A */ G, N_limbs, N, N_limbs, T);
+
+    TEST_EQUAL(mpi_core_cmp(G, N_limbs, exp_G, exp_G_limbs), 0);
+    if (got_I) {
+        TEST_EQUAL(mpi_core_cmp(I, N_limbs, exp_I, exp_I_limbs), 0);
+    }
+
+    FREE_G_I_T;
+
+    /* GCD + modinv, I aliased to A */
+    TEST_CALLOC(G, N_limbs);
+    memset(G, 'G', N_bytes);
+
+    TEST_CALLOC(I, N_limbs);
+    memcpy(I, A, A_limbs * sizeof(mbedtls_mpi_uint));
+
+    TEST_CALLOC(T, 5 * N_limbs);
+    memset(T, 'T', 5 * N_bytes);
+
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, /* A */ I, N_limbs, N, N_limbs, T);
+
+    TEST_EQUAL(mpi_core_cmp(G, N_limbs, exp_G, exp_G_limbs), 0);
+    if (got_I) {
+        TEST_EQUAL(mpi_core_cmp(I, N_limbs, exp_I, exp_I_limbs), 0);
+    }
+
+    FREE_G_I_T;
+
+#undef FREE_G_I_T
+exit:
+    mbedtls_free(A);
+    mbedtls_free(N);
+    mbedtls_free(exp_G);
+    mbedtls_free(exp_I);
+    mbedtls_free(G);
+    mbedtls_free(I);
+    mbedtls_free(T);
+}
+/* END_CASE */
+
+/* BEGIN_CASE */
+void mpi_core_gcd_modinv_odd_preconditions()
+{
+    /*
+     * The purpose of this test function is to ensure that the function doesn't
+     * crash (but just outputs garbage) when preconditions are not met.
+     */
+
+    mbedtls_mpi_uint A[1];
+    mbedtls_mpi_uint N[2];
+    mbedtls_mpi_uint AAA[3];
+    mbedtls_mpi_uint *G = NULL, *I = NULL, *TG = NULL, *TI = NULL;
+
+    /* We'll always use a two-limbs N */
+    TEST_CALLOC(G, 2);
+    TEST_CALLOC(I, 2);
+    TEST_CALLOC(TG, 4 * 2);  // For I == NULL
+    TEST_CALLOC(TI, 5 * 2);  // For I != NULL
+
+    /*
+     * Input values
+     */
+
+    /* N is not odd */
+    N[0] = 2;       // N = 2^n + 2
+    N[1] = 1;
+    A[0] = 42;      // A = 42
+    mbedtls_mpi_core_gcd_modinv_odd(G, NULL, A, 1, N, 2, TG);
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, A, 1, N, 2, TI);
+
+    /* A > N */
+    N[0] = 3;       // N = 3
+    N[1] = 0;
+    A[0] = 42;      // A = 42
+    mbedtls_mpi_core_gcd_modinv_odd(G, NULL, A, 1, N, 2, TG);
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, A, 1, N, 2, TI);
+
+    /* A_limbs > N_limbs (but A <= N) */
+    N[0] = 3;       // N = 3
+    N[1] = 0;
+    AAA[0] = 1;     // A = 1
+    AAA[1] = 0;
+    AAA[2] = 0;
+    mbedtls_mpi_core_gcd_modinv_odd(G, NULL, AAA, 3, N, 2, TG);
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, AAA, 3, N, 2, TI);
+
+    /* A_limbs > N_limbs (and A > N) */
+    N[0] = 3;       // N = 3
+    N[1] = 0;
+    AAA[0] = 0;     // A = 2^2n
+    AAA[1] = 0;
+    AAA[2] = 1;
+    mbedtls_mpi_core_gcd_modinv_odd(G, NULL, AAA, 3, N, 2, TG);
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, AAA, 3, N, 2, TI);
+
+    /* I != NULL but N is 1 */
+    N[0] = 1;       // N = 1
+    N[1] = 0;
+    A[0] = 1;       // A = 1
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, N, 2, A, 1, TI);
+
+    /*
+     * Aliasing
+     */
+
+    /* Now use valid values for remaining tests */
+    N[0] = 1;       // N = 2^n + 1
+    N[1] = 1;
+    A[0] = 42;      // A = 42
+
+    /* A aliased to N */
+    mbedtls_mpi_core_gcd_modinv_odd(G, NULL, N, 2, N, 2, TG);
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, N, 2, N, 2, TI);
+
+    /* G aliased to A and N */
+    memcpy(G, N, 2 * sizeof(mbedtls_mpi_uint));
+    mbedtls_mpi_core_gcd_modinv_odd(G, NULL, G, 2, G, 2, TG);
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, G, 2, G, 2, TI);
+
+    /* I != NULL, G aliased to N */
+    memcpy(G, N, 2 * sizeof(mbedtls_mpi_uint));
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, A, 1, G, 2, TI);
+
+    /* I != NULL, I aliased to N */
+    memcpy(I, N, 2 * sizeof(mbedtls_mpi_uint));
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, A, 1, I, 2, TI);
+
+    /* I aliased to A and N */
+    memcpy(I, N, 2 * sizeof(mbedtls_mpi_uint));
+    mbedtls_mpi_core_gcd_modinv_odd(G, I, I, 2, I, 2, TI);
+
+exit:
+    mbedtls_free(G);
+    mbedtls_free(I);
+    mbedtls_free(TG);
+    mbedtls_free(TI);
+}
+/* END_CASE */
+
+/* BEGIN_CASE depends_on:MBEDTLS_TEST_HOOKS */
+void mpi_core_div2_mod_odd(char *input_X, char *input_N, char *input_exp_X)
+{
+    mbedtls_mpi_uint *X = NULL;
+    size_t X_limbs = 0;
+    mbedtls_mpi_uint *N = NULL;
+    size_t N_limbs = 0;
+    mbedtls_mpi_uint *exp_X = NULL;
+    size_t exp_X_limbs = 0;
+
+    /* Read test parameters into MPI structures */
+    TEST_EQUAL(0, mbedtls_test_read_mpi_core(&X, &X_limbs, input_X));
+    TEST_EQUAL(0, mbedtls_test_read_mpi_core(&N, &N_limbs, input_N));
+    TEST_EQUAL(0, mbedtls_test_read_mpi_core(&exp_X, &exp_X_limbs, input_exp_X));
+
+    /* The function under test requires this */
+    TEST_EQUAL(X_limbs, N_limbs);
+
+    TEST_CF_SECRET(X, X_limbs * sizeof(mbedtls_mpi_uint));
+    TEST_CF_SECRET(N, N_limbs * sizeof(mbedtls_mpi_uint));
+
+    mbedtls_mpi_core_div2_mod_odd(X, N, N_limbs);
+
+    TEST_CF_PUBLIC(X, X_limbs * sizeof(mbedtls_mpi_uint));
+    TEST_EQUAL(0, mpi_core_cmp(X, X_limbs, exp_X, exp_X_limbs));
+
+exit:
+    mbedtls_free(X);
+    mbedtls_free(N);
+    mbedtls_free(exp_X);
+}
+/* END_CASE */
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_bignum_core.generated.data mbedtls-3.6.5/tests/suites/test_suite_bignum_core.generated.data
--- mbedtls-3.6.4/tests/suites/test_suite_bignum_core.generated.data	2025-06-30 09:24:53.057928000 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_bignum_core.generated.data	2025-10-14 19:12:37.037836600 +0300
@@ -11342,6 +11342,993 @@
 Core modular exponentiation (Mongtomery form only) #1001 14c15c910b11ad28cc21ce88d0060cc54278c2614e1bcb383bb4a570294c4ea3738d243a6e58d5ca49c7b59b995253fd6c79a3de69f85e3131f3b9238224b122c3e4a892d9196ada4fcfa583e1df8af9b474c7e89286a1754abcb06ae8abb93f01d89a024cdce7a6d7288ff68c320f89f1347e0cdd905ecfd160c5d0ef412ed6 ^ f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad mod 53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1
 mpi_core_exp_mod:"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"11e771804f5bbeaf6757295df0df2654be9fec35ce77f7fd6d950d43a114849955262289e72b322f5c95540557690d6586885a720ccefc8daa39eb543eb211b14f0abfcc10c0361f8f8b9218dc9324e0e1e6eccbd8d0e1abd807195b65cd7b419db603332980141f6e050f72ded2bc5dd01b466d4c49ba910e7d7b2d71fa666b":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"357199f9b213ce7ebf7d90f3aa8f1bd4bb4deefdb15214167d4f6793a73293741e5120c4b984f54047dd34d95c6842afb869064705008b5ae460b3e8a1f5ab643f0dac8f3f0611d1938875944f80f83e09a2ab207040ca825385044843c858c6b1e83f78ca59ccaf405dcd33d1958879c79eafe672d8b167428d9f71a669e71d"
 
+GCD-modinv, A = 0, N = 1
+mpi_core_gcd_modinv_odd:"0":"1":"1":""
+
+GCD-modinv, A = 1, N = 1
+mpi_core_gcd_modinv_odd:"1":"1":"1":""
+
+GCD-modinv, A = 0, N = 3
+mpi_core_gcd_modinv_odd:"0":"3":"3":""
+
+GCD-modinv, A = 1, N = 3
+mpi_core_gcd_modinv_odd:"1":"3":"1":"1"
+
+GCD-modinv, A = 2, N = 3
+mpi_core_gcd_modinv_odd:"2":"3":"1":"2"
+
+GCD-modinv, A = 3, N = 3
+mpi_core_gcd_modinv_odd:"3":"3":"3":""
+
+GCD-modinv, A = 0, N = 5
+mpi_core_gcd_modinv_odd:"0":"5":"5":""
+
+GCD-modinv, A = 1, N = 5
+mpi_core_gcd_modinv_odd:"1":"5":"1":"1"
+
+GCD-modinv, A = 2, N = 5
+mpi_core_gcd_modinv_odd:"2":"5":"1":"3"
+
+GCD-modinv, A = 3, N = 5
+mpi_core_gcd_modinv_odd:"3":"5":"1":"2"
+
+GCD-modinv, A = 4, N = 5
+mpi_core_gcd_modinv_odd:"4":"5":"1":"4"
+
+GCD-modinv, A = 5, N = 5
+mpi_core_gcd_modinv_odd:"5":"5":"5":""
+
+GCD-modinv, A = 0, N = 7
+mpi_core_gcd_modinv_odd:"0":"7":"7":""
+
+GCD-modinv, A = 1, N = 7
+mpi_core_gcd_modinv_odd:"1":"7":"1":"1"
+
+GCD-modinv, A = 2, N = 7
+mpi_core_gcd_modinv_odd:"2":"7":"1":"4"
+
+GCD-modinv, A = 3, N = 7
+mpi_core_gcd_modinv_odd:"3":"7":"1":"5"
+
+GCD-modinv, A = 4, N = 7
+mpi_core_gcd_modinv_odd:"4":"7":"1":"2"
+
+GCD-modinv, A = 5, N = 7
+mpi_core_gcd_modinv_odd:"5":"7":"1":"3"
+
+GCD-modinv, A = 6, N = 7
+mpi_core_gcd_modinv_odd:"6":"7":"1":"6"
+
+GCD-modinv, A = 7, N = 7
+mpi_core_gcd_modinv_odd:"7":"7":"7":""
+
+GCD-modinv, A = 0, N = 2^64 - 1
+mpi_core_gcd_modinv_odd:"0":"ffffffffffffffff":"ffffffffffffffff":""
+
+GCD-modinv, A = 1, N = 2^64 - 1
+mpi_core_gcd_modinv_odd:"1":"ffffffffffffffff":"1":"1"
+
+GCD-modinv, A = 2, N = 2^64 - 1
+mpi_core_gcd_modinv_odd:"2":"ffffffffffffffff":"1":"8000000000000000"
+
+GCD-modinv, A = 3, N = 2^64 - 1
+mpi_core_gcd_modinv_odd:"3":"ffffffffffffffff":"3":""
+
+GCD-modinv, A = 4, N = 2^64 - 1
+mpi_core_gcd_modinv_odd:"4":"ffffffffffffffff":"1":"4000000000000000"
+
+GCD-modinv, A = 5, N = 2^64 - 1
+mpi_core_gcd_modinv_odd:"5":"ffffffffffffffff":"5":""
+
+GCD-modinv, A = 6, N = 2^64 - 1
+mpi_core_gcd_modinv_odd:"6":"ffffffffffffffff":"3":""
+
+GCD-modinv, A = 7, N = 2^64 - 1
+mpi_core_gcd_modinv_odd:"7":"ffffffffffffffff":"1":"db6db6db6db6db6d"
+
+GCD-modinv, A = 2^64 - 1, N = 2^64 - 1
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"ffffffffffffffff":"ffffffffffffffff":""
+
+GCD-modinv, A = 0, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"0":"10000000000000001":"10000000000000001":""
+
+GCD-modinv, A = 1, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"1":"10000000000000001":"1":"1"
+
+GCD-modinv, A = 2, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"2":"10000000000000001":"1":"8000000000000001"
+
+GCD-modinv, A = 3, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"3":"10000000000000001":"1":"5555555555555556"
+
+GCD-modinv, A = 4, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"4":"10000000000000001":"1":"c000000000000001"
+
+GCD-modinv, A = 5, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"5":"10000000000000001":"1":"6666666666666667"
+
+GCD-modinv, A = 6, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"6":"10000000000000001":"1":"2aaaaaaaaaaaaaab"
+
+GCD-modinv, A = 7, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"7":"10000000000000001":"1":"4924924924924925"
+
+GCD-modinv, A = 2^64 - 1, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"10000000000000001":"1":"8000000000000000"
+
+GCD-modinv, A = 2^64, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"10000000000000000":"10000000000000001":"1":"10000000000000000"
+
+GCD-modinv, A = 2^64 + 1, N = 2^64 + 1
+mpi_core_gcd_modinv_odd:"10000000000000001":"10000000000000001":"10000000000000001":""
+
+GCD-modinv, A = 0, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"0":"ffffffffffffffffffffffffffffffff":"ffffffffffffffffffffffffffffffff":""
+
+GCD-modinv, A = 1, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"1":"ffffffffffffffffffffffffffffffff":"1":"1"
+
+GCD-modinv, A = 2, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"2":"ffffffffffffffffffffffffffffffff":"1":"80000000000000000000000000000000"
+
+GCD-modinv, A = 3, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"3":"ffffffffffffffffffffffffffffffff":"3":""
+
+GCD-modinv, A = 4, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"4":"ffffffffffffffffffffffffffffffff":"1":"40000000000000000000000000000000"
+
+GCD-modinv, A = 5, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"5":"ffffffffffffffffffffffffffffffff":"5":""
+
+GCD-modinv, A = 6, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"6":"ffffffffffffffffffffffffffffffff":"3":""
+
+GCD-modinv, A = 7, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"7":"ffffffffffffffffffffffffffffffff":"1":"49249249249249249249249249249249"
+
+GCD-modinv, A = 2^64 - 1, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"ffffffffffffffffffffffffffffffff":"ffffffffffffffff":""
+
+GCD-modinv, A = 2^64, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"10000000000000000":"ffffffffffffffffffffffffffffffff":"1":"10000000000000000"
+
+GCD-modinv, A = 2^64 + 1, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"10000000000000001":"ffffffffffffffffffffffffffffffff":"10000000000000001":""
+
+GCD-modinv, A = 2^128 - 1, N = 2^128 - 1
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"ffffffffffffffffffffffffffffffff":"ffffffffffffffffffffffffffffffff":""
+
+GCD-modinv, A = 0, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"0":"100000000000000000000000000000001":"100000000000000000000000000000001":""
+
+GCD-modinv, A = 1, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"1":"100000000000000000000000000000001":"1":"1"
+
+GCD-modinv, A = 2, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"2":"100000000000000000000000000000001":"1":"80000000000000000000000000000001"
+
+GCD-modinv, A = 3, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"3":"100000000000000000000000000000001":"1":"55555555555555555555555555555556"
+
+GCD-modinv, A = 4, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"4":"100000000000000000000000000000001":"1":"c0000000000000000000000000000001"
+
+GCD-modinv, A = 5, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"5":"100000000000000000000000000000001":"1":"66666666666666666666666666666667"
+
+GCD-modinv, A = 6, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"6":"100000000000000000000000000000001":"1":"2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"
+
+GCD-modinv, A = 7, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"7":"100000000000000000000000000000001":"1":"92492492492492492492492492492493"
+
+GCD-modinv, A = 2^64 - 1, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"100000000000000000000000000000001":"1":"7fffffffffffffff8000000000000000"
+
+GCD-modinv, A = 2^64, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"10000000000000000":"100000000000000000000000000000001":"1":"ffffffffffffffff0000000000000001"
+
+GCD-modinv, A = 2^64 + 1, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"10000000000000001":"100000000000000000000000000000001":"1":"7fffffffffffffff8000000000000001"
+
+GCD-modinv, A = 2^128 - 1, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"100000000000000000000000000000001":"1":"80000000000000000000000000000000"
+
+GCD-modinv, A = 2^128, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"100000000000000000000000000000001":"1":"100000000000000000000000000000000"
+
+GCD-modinv, A = 2^128 + 1, N = 2^128 + 1
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"100000000000000000000000000000001":"100000000000000000000000000000001":""
+
+GCD-modinv, A = 0, N = prime192[1]
+mpi_core_gcd_modinv_odd:"0":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":""
+
+GCD-modinv, A = 1, N = prime192[1]
+mpi_core_gcd_modinv_odd:"1":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"1"
+
+GCD-modinv, A = 2, N = prime192[1]
+mpi_core_gcd_modinv_odd:"2":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"68e093d333bc3381c1828001c75d779072d1f16e1bc7dbae"
+
+GCD-modinv, A = 3, N = prime192[1]
+mpi_core_gcd_modinv_odd:"3":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"45eb0d3777d2cd012bac555684e8fa604c8bf64967da9274"
+
+GCD-modinv, A = 4, N = prime192[1]
+mpi_core_gcd_modinv_odd:"4":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"347049e999de19c0e0c14000e3aebbc83968f8b70de3edd7"
+
+GCD-modinv, A = 5, N = prime192[1]
+mpi_core_gcd_modinv_odd:"5":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"29f36e547b18149a4d6766671c8bc96cfaba6092718324ac"
+
+GCD-modinv, A = 6, N = prime192[1]
+mpi_core_gcd_modinv_odd:"6":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"22f5869bbbe9668095d62aab42747d302645fb24b3ed493a"
+
+GCD-modinv, A = 7, N = prime192[1]
+mpi_core_gcd_modinv_odd:"7":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"95d31c5249e84994cb4cb6ddf83c61a9c899a20b031d82f8"
+
+GCD-modinv, A = 2^64 - 1, N = prime192[1]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"cda419bc9242704587c3fac9f8634efe7509c47b74f546e"
+
+GCD-modinv, A = 2^64, N = prime192[1]
+mpi_core_gcd_modinv_odd:"10000000000000000":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"7469374ce074d3bb50275cec6ca2ffa0dc688630fa4c106e"
+
+GCD-modinv, A = 2^64 + 1, N = prime192[1]
+mpi_core_gcd_modinv_odd:"10000000000000001":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"314ff4e7e292a8d0abe00bb47c0145356ebe579a95e5a8d4"
+
+GCD-modinv, A = 2^128 - 1, N = prime192[1]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"bf864e005ac1261d595319ffa07d66fe21ed0532c8448d28"
+
+GCD-modinv, A = 2^128, N = prime192[1]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"8f10c2c4881dc01446c597e12b0f54be01141e8b5a1ffa9d"
+
+GCD-modinv, A = 2^128 + 1, N = prime192[1]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"49ccc70f63e4f9ab7a981566e7a6c16b9888b86122d8acfa"
+
+GCD-modinv, A = prime192[1], N = prime192[1]
+mpi_core_gcd_modinv_odd:"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":""
+
+GCD-modinv, A = rand192[2.1], N = prime192[1]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"84337a5bd50c1c84a2aa7b68b354b719144b0dbedd6f4135"
+
+GCD-modinv, A = rand192[2.2], N = prime192[1]
+mpi_core_gcd_modinv_odd:"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"9c52f58a6cfb556c6e8207073df44c2a1957d815cfe70977"
+
+GCD-modinv, A = rand192[2.3], N = prime192[1]
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"b027048459e50c7570e5cbdcec2cee9db3a85759b744d307"
+
+GCD-modinv, A = rand192[2.9], N = prime192[1]
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"1":"625f3804e9131990978928e34847b1a33dd267f75385ef0e"
+
+GCD-modinv, A = 0, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"0":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":""
+
+GCD-modinv, A = 1, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"1":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"1"
+
+GCD-modinv, A = 2, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"2":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"13aa1bb799b349a8544878005561866b15875d44a53579309"
+
+GCD-modinv, A = 3, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"3":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"3":""
+
+GCD-modinv, A = 4, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"4":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"1d7f2993668cee7c7e6cb400801249a0a04b0be6f7d035c8d"
+
+GCD-modinv, A = 5, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"5":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"fbb495fae2907b9dd06c666aab46b88de05e436ea912dc07"
+
+GCD-modinv, A = 6, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"6":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"3":""
+
+GCD-modinv, A = 7, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"7":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"1679443f8b160b0984e51b6e186f750caae3d84e73aad3a53"
+
+GCD-modinv, A = 2^64 - 1, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"3":""
+
+GCD-modinv, A = 2^64, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"10000000000000000":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"217eb8699af65a1c256315cf38a18dde2a7b04be9696b7f24"
+
+GCD-modinv, A = 2^64 + 1, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"10000000000000001":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"103111c8e4a0b0fd42ee50bb80abc345654623a76cd75602f"
+
+GCD-modinv, A = 2^128 - 1, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"3":""
+
+GCD-modinv, A = 2^128, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"232931211570e8e1b4ccf97e8488532ffcc5be443c93f6953"
+
+GCD-modinv, A = 2^128 + 1, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"11b8deeb5cb5d60aefd9d156a7661b08c7e2c9b3d5a686455"
+
+GCD-modinv, A = prime192[1], N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":""
+
+GCD-modinv, A = prime192[1] * 2, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"1a3824f4ccef0ce07060a00071d75de41cb47c5b86f1f6eb6":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":""
+
+GCD-modinv, A = prime192[1] * 3, N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":""
+
+GCD-modinv, A = rand192[2.1], N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"155f4a2023c84838825af7b6c420fa639f9eef09b14fef890"
+
+GCD-modinv, A = rand192[2.2], N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"9c52f58a6cfb556c6e8207073df44c2a1957d815cfe70977"
+
+GCD-modinv, A = rand192[2.3], N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"b027048459e50c7570e5cbdcec2cee9db3a85759b744d307"
+
+GCD-modinv, A = rand192[2.4], N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"1":"1c79e1d39e4952e04a5bc402024071837f95d9e5875a6747b"
+
+GCD-modinv, A = rand192[2.9], N = prime192[1] * 3
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"3":""
+
+GCD-modinv, A = 0, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"0":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":""
+
+GCD-modinv, A = 1, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"1":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"1"
+
+GCD-modinv, A = 2, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"2":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"bb90ce9873d134fecadd7e47952693dee7a5dccfa5f54ba"
+
+GCD-modinv, A = 3, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"3":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"7d0b3465a28b78a9dc93a9850e19b7e9efc3e88a6ea387c"
+
+GCD-modinv, A = 4, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"4":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"5dc8674c39e89a7f656ebf23ca9349ef73d2ee67d2faa5d"
+
+GCD-modinv, A = 5, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"5":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"5":""
+
+GCD-modinv, A = 6, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"6":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"3e859a32d145bc54ee49d4c2870cdbf4f7e1f4453751c3e"
+
+GCD-modinv, A = 7, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"7":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"35971674b3605848cc3f48a6bce67364422f63a90ad85ec"
+
+GCD-modinv, A = 2^64 - 1, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"5":""
+
+GCD-modinv, A = 2^64, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"10000000000000000":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"8709cd54272e61fbe950040cc2eb26e756173829d7ffe67"
+
+GCD-modinv, A = 2^64 + 1, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"10000000000000001":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"531e5ca084d3e6693a2eaf00b636b47a70122529ba1266e"
+
+GCD-modinv, A = 2^128 - 1, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"5":""
+
+GCD-modinv, A = 2^128, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"16c60467a9cb18fd132848c4caa869fbfb4652b1d64f4ac8"
+
+GCD-modinv, A = 2^128 + 1, N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"1":"c2cf8da6993f4bedfe0c2495b7e73ad1db4ac7804b852fa"
+
+GCD-modinv, A = rand192[2.1], N = rand192[2.1]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":""
+
+GCD-modinv, A = 0, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"0":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":""
+
+GCD-modinv, A = 1, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"1":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"1"
+
+GCD-modinv, A = 2, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"2":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"678c117fde3443bc15a488226af1a0922e37219b8add15ef"
+
+GCD-modinv, A = 3, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"3":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"45080baa9422d7d2b9185ac19ca115b6c97a1667b1e8b94a"
+
+GCD-modinv, A = 4, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"4":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"9b521a3fcd4e659a2076cc33a06a70db4552b269504ba0e6"
+
+GCD-modinv, A = 5, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"5":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"7c41ae99710b847b4d2bd68fb3885a4904422854403c80b8"
+
+GCD-modinv, A = 6, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"6":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"228405d54a116be95c8c2d60ce508adb64bd0b33d8f45ca5"
+
+GCD-modinv, A = 7, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"7":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"b1826724585998b0251a0df1dbe75c684f39f0785bc42599"
+
+GCD-modinv, A = 2^64 - 1, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"165fbde3178cee520583fb99dfb11da4583ad3337eed0d80"
+
+GCD-modinv, A = 2^64, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"10000000000000000":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"500c8149670dc3a13ac9c942ee1120d52d90bd4fe812b9e4"
+
+GCD-modinv, A = 2^64 + 1, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"10000000000000001":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"2a00bb564389d64242cfde17af818ca986c94dbb8a98b60d"
+
+GCD-modinv, A = 2^128 - 1, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"5dbb92c64835cfc3f6fe96e38309690f96efe457850741a8"
+
+GCD-modinv, A = 2^128, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"1583af3289002f763685a5b538213fba8813a85c7c13f32"
+
+GCD-modinv, A = 2^128 + 1, N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"1e92f517c7b73cd5cc159fa9bf8984776a899c4d78009c2"
+
+GCD-modinv, A = rand192[2.1], N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"b":""
+
+GCD-modinv, A = rand192[2.2], N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":""
+
+GCD-modinv, A = rand192[2.3], N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"1":"5cc3d311a7d6cb50c5a2a2a90ed08fd5422d509b4455ee7f"
+
+GCD-modinv, A = rand192[2.9], N = rand192[2.2]
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"b":""
+
+GCD-modinv, A = 0, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"0":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":""
+
+GCD-modinv, A = 1, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"1":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"1"
+
+GCD-modinv, A = 2, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"2":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"1b29fc6ecd8f94172033e1ac277103fc6d4a71f455b9b9c8"
+
+GCD-modinv, A = 3, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"3":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"2437fb3e676a1ac980452ce589ec055091b897f0724cf7b5"
+
+GCD-modinv, A = 4, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"4":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"d94fe3766c7ca0b9019f0d613b881fe36a538fa2adcdce4"
+
+GCD-modinv, A = 5, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"5":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"2b7660b148e5b9be99ec9c46a5819ffa48771cba22c2c2d9"
+
+GCD-modinv, A = 6, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"6":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"2d45fa0e0144a17be056781eec6706a4b626bdec8ee035a2"
+
+GCD-modinv, A = 7, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"7":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"26ce440c011641459bb7d4accaa173689c213513e82de4d4"
+
+GCD-modinv, A = 2^64 - 1, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"2b203990e6fde7cde664f13d907fd8a4c34ab8cbb4f78727"
+
+GCD-modinv, A = 2^64, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"10000000000000000":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"2120581ea9b95767ca53bb873eaf454e164cbcea837eaab"
+
+GCD-modinv, A = 2^64 + 1, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"10000000000000001":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"e20b14463fd7418b5a0ea4892161cdc2a10c43d49f463e6"
+
+GCD-modinv, A = 2^128 - 1, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"29a9c0950f0fcdf1b895e526a6a5e1e0b9e76c3b8b3b4b68"
+
+GCD-modinv, A = 2^128, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"1d90732feda6a3c5677e3c2f86d6fe1f419ebd30b9573e9c"
+
+GCD-modinv, A = 2^128 + 1, N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"2430ae8b3ca6bf3d35a597ddb102000e4893ebaf3adc2c63"
+
+GCD-modinv, A = rand192[2.1], N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"27d44624513e54f9f0200cb52ca2a642fcf0c546d3a78165"
+
+GCD-modinv, A = rand192[2.3], N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":""
+
+GCD-modinv, A = rand192[2.9], N = rand192[2.3]
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"1":"1f14746d4d713fc28ea1b577904d443fcb60b53d8e248fb2"
+
+GCD-modinv, A = 0, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"0":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":""
+
+GCD-modinv, A = 1, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"1":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"1"
+
+GCD-modinv, A = 2, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"2":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"7ff6c91a9445e3c0d733133aca64e4a80492f23a4dabade9"
+
+GCD-modinv, A = 3, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"3":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"554f30bc62d942808f77622731989870030ca17c33c7c946"
+
+GCD-modinv, A = 4, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"4":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"bff22da7de68d5a142cc9cd82f9756fc06dc6b57748184dd"
+
+GCD-modinv, A = 5, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"5":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"ccbe0e90ed3c9f9af1eb51f7aa3b07733a84b6c3af791641"
+
+GCD-modinv, A = 6, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"6":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"2aa7985e316ca14047bbb11398cc4c38018650be19e3e4a3"
+
+GCD-modinv, A = 7, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"7":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"491f4e5854ba39007af89d462a82cbcdb9788a6a7586ac85"
+
+GCD-modinv, A = 2^64 - 1, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"b0bba9271ad94be5c7bf490d92215450b7df795661d7f7c0"
+
+GCD-modinv, A = 2^64, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"10000000000000000":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"404151f21000736e2e88d2afc8873564d05b0ebf4a2caa2c"
+
+GCD-modinv, A = 2^64 + 1, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"10000000000000001":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"644f0bb5b0dd9a9fb86ac91820557cb42f787c003cdc0215"
+
+GCD-modinv, A = 2^128 - 1, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"a62d17d34943bc63dedd5335834ad07648c670e56029a8be"
+
+GCD-modinv, A = 2^128, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"ceea0a37271eee58f338e8b91128637d2d7e9948f1704874"
+
+GCD-modinv, A = 2^128 + 1, N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"6426bfb8e2f0166470f2d193ffa1db5d34a287dbc7441782"
+
+GCD-modinv, A = prime192[1], N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"d3deeadf41c733ba0a85091f54863ffe28aaa43b2fa23915"
+
+GCD-modinv, A = rand192[2.1], N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"b":""
+
+GCD-modinv, A = rand192[2.2], N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"b":""
+
+GCD-modinv, A = rand192[2.3], N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"1":"67b69c600b7a49e8923acb9c85b23f564cf10614a1756590"
+
+GCD-modinv, A = rand192[2.4], N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":""
+
+GCD-modinv, A = rand192[2.9], N = rand192[2.4]
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"b":""
+
+GCD-modinv, A = 0, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"0":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":""
+
+GCD-modinv, A = 1, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"1":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"1":"1"
+
+GCD-modinv, A = 2, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"2":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"1":"150df4e6c34bdde871290719f226282ab638e25330a45438"
+
+GCD-modinv, A = 3, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"3":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"3":""
+
+GCD-modinv, A = 4, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"4":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"1":"a86fa7361a5eef43894838cf91314155b1c712998522a1c"
+
+GCD-modinv, A = 5, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"5":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"5":""
+
+GCD-modinv, A = 6, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"6":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"3":""
+
+GCD-modinv, A = 7, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"7":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"7":""
+
+GCD-modinv, A = 2^64 - 1, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"ff":""
+
+GCD-modinv, A = 2^64, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"10000000000000000":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"1":"1149983586ed2be8e91651bccd08e3238d6c463f7ee187fd"
+
+GCD-modinv, A = 2^64 + 1, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"10000000000000001":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"1":"416742a8126a89f0ce28a80f8da33531d1314663fb48f55"
+
+GCD-modinv, A = 2^128 - 1, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"ff":""
+
+GCD-modinv, A = 2^128, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"1":"ff6761de416aefad351718f8d879666e7aac1458966e917"
+
+GCD-modinv, A = 2^128 + 1, N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"1":"18468780830377019d3f2a2f1b30cc51d03bd8b660955198"
+
+GCD-modinv, A = rand192[2.1], N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"37":""
+
+GCD-modinv, A = rand192[2.9], N = rand192[2.9]
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":""
+
+GCD-modinv, A = 0, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"0":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":""
+
+GCD-modinv, A = 1, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"1":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"1"
+
+GCD-modinv, A = 2, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"2":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"649dd3f63a6cb7a08dd0045edbc731ff88ddaefa3528f0b5964e8ab7c7270c55faf0296580fa3e868c92d3bfb04c8abbf0947db7a979a513ca852ca5d56e9ec02bd5f5911679e654b16d8b55fbcf956d2de94d597a89225f94af7fcfb555d098177e224d8945f3af7565025e1e0d0aae88e8a745f195164143d9ccb67b56a912"
+
+GCD-modinv, A = 3, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"3":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"4313e2a426f32515b3e002e9e7da215505e91f5178c5f5ce64345c7a84c4b2e3fca01b9900a6d459b30c8d2a75885c7d4b0da9251ba66e0d31ae1dc3e39f14801d394e60b9a6998dcb9e5ce3fd350e48c9463390fc5b6c3fb874ffdfce3935baba5416de5b83f7ca4e4356e9695e071f05f06f83f663642b829133245239c60c"
+
+GCD-modinv, A = 4, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"4":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"324ee9fb1d365bd046e8022f6de398ffc46ed77d1a94785acb27455be393862afd7814b2c07d1f43464969dfd826455df84a3edbd4bcd289e5429652eab74f6015eafac88b3cf32a58b6c5aafde7cab696f4a6acbd44912fca57bfe7daaae84c0bbf1126c4a2f9d7bab2812f0f068557447453a2f8ca8b20a1ece65b3dab5489"
+
+GCD-modinv, A = 5, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"5":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"283f2195b0f849736becce8c57e94733038bdf974876c6af08ec377cb60f9e88cac676f566ca7f69050787e64685044b2d08324976fd753b1dcedea8bbc5d919ab22623a08fd8f5513c56aef31863bc545908556fdd074263b796653155586a33c98da856a1bfb12fbc200f2726b9ddf69f6a94f2d6ed5b3b4bd8515caef76d4"
+
+GCD-modinv, A = 6, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"6":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"2189f1521379928ad9f00174f3ed10aa82f48fa8bc62fae7321a2e3d42625971fe500dcc80536a2cd98646953ac42e3ea586d4928dd3370698d70ee1f1cf8a400e9ca7305cd34cc6e5cf2e71fe9a872464a319c87e2db61fdc3a7fefe71c9add5d2a0b6f2dc1fbe52721ab74b4af038f82f837c1fb31b215c1489992291ce306"
+
+GCD-modinv, A = 7, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"7":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"8fbce5a8e5bfe1c0ca96e1ac1565b523e8181e8a02ccc595b2270f4faeca119f667ba8da25f7c7095b1ae55afbdb0f55a0d4214f8464a2ae8f07645a9e9e075bac563a3cfb89922fd8e5a27ad571b0e51d04255b4156311ad4686d71de7a97b4b3d8c34a31d1a543cc4727f42aee0f427a70eef6348bd6a660edffe01de983d0"
+
+GCD-modinv, A = 2^64 - 1, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"8a298a90608f99b21226024111084ba7fea6fb6be2b8e064ad39da31ce98bb6e571e0b5d2570bb24e01551a2f9a718f18fbcb7dc48029fd7574cfb9260d2e1aeab63f07f641580a01a5476622d2b54db4396ec138c9c4a71ada18607e4582be4c08da6393552059db9f915dd4ce9223afe98ef98edef51dba5149031b6f0f476"
+
+GCD-modinv, A = 2^64, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"10000000000000000":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"13e335e8ffc3f37cfde3a748d09f69da7cf9b698ff217a65d3f51ec13004e38c8481261bc6f91bdd5222a18051c8734afe7eee1ffa0323c267139d4017a7c657447ae90a8c5d8043090e7c8dd1a9412529aac754e0cbcfc46771aade31da7cc22e83f46c0316c41bc6b870cbf93bf617cdbd64d04f12f4ac80322503dd9a9b14"
+
+GCD-modinv, A = 2^64 + 1, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"10000000000000001":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"5a6ef438de3b0baf8198959dd11b7b426654d65c8b7e4e9acd51248a87a1871670b3ecbd205098db1f31ae74db7e0e167fa270f5bfca5eba2d32c6f3713874954bf85ad92c95e7febc01fa240346382109fa998a31da3395b89beaa7a71eaa58f7363404063bdba93317f2f5585188103bc713a5b3c87ffe5a80d97eb038bbb9"
+
+GCD-modinv, A = 2^128 - 1, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"7c7b1f21fb96fea1d616bab07bbd9a325506c181e0c6399a8642e58b6aa2a681ee2538b5838a4fab6d04a556bf61102978a1a12aed95c5a25f9246f54d3bd54cdb8bc0643239b2a56096c97510c223ca4ab7769e27ea2dcd8f324d7fd3f2915dfc29db6820d108a9b8d593d21858d7c3ea51953f8ea87f2fe923a80ffeb2c570"
+
+GCD-modinv, A = 2^128, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"6e0b2b0ef9afaa5a7bb3aea18095a58bb66b4da7cddbd99a0f8cf2735f4736f78899897374c9fecd51fc65bdd54c029875aef7abf20fc2a90d41800069ae8408e17eb1a860307fd580f8349c0388e05b344f94245ef5ddc68b2b0ca1dde6f44ec04ea7d782ce86171c96c485594d7fea252438df82d50cd2afc4b108c02f559c"
+
+GCD-modinv, A = 2^128 + 1, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"88dc04f1ead28d542e04f55df42d5e6df62adac5f69467cd953e11bca7573ae4c962a029369507b0b0a53c97be8d9581eed5376ad86205948572cfb514260078dd392c49c2cd30173ff2dfe5a56e60ea244debb1ec74271378c4af5d9341a5fa84daa7c6ef57f144800a019b948c485e5620ebf7247433cdafc72092ad46d936"
+
+GCD-modinv, A = prime192[1], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"4cab457ef40c12bfc0b93f2d688cb61f00e2ae7ace333cd293d2f202d7aa651ed2446b2b1ee8864b20049e51925d326d3696ff8bd33538858fb6c8a64de10a0c1b94c7b9cc7c4351e49ae273b5691ee419dacbcca76180e7f1be5ae9fed80dbf41e187ab40c659c0e1d89b2aa4d3b220a4c43225fe254a9229da9b089b4f0f75"
+
+GCD-modinv, A = prime192[1] * 2, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"1a3824f4ccef0ce07060a00071d75de41cb47c5b86f1f6eb6":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"8af376b5b472c1006e2ca3f5900d8d0f094f06379c428f1ee03803b932fc3ee564125efb106e81ac1c9522e8797b23f28bdffd7d93144156926090f8fc5f23c639a0596dfcb807fda3bafc8fd68424df3ad6b33fce39e2d38d8ead44b4c1d777b86ee62329a9208fe6514ff37076e3bedb4ac058f0a7bb8a58c71a3ac8fe30cc"
+
+GCD-modinv, A = prime192[1] * 3, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"198e6c7fa6aeb0ea9593150f22d9920a55a0e4d39a111446314650ab9d38cc5f9b6c23b90a4d82190aac34c5db7466246787aa83f111bd81da9242e219f5ae04093197e8997ec11b4c33a0d13c785fa15df3994437cb2af7fb3f73a354f2af3fc0a0828e6aecc895a09d890e36f13b6036ec10b754b718db6348de5833c50527"
+
+GCD-modinv, A = rand192[2.1], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"6a69240378c8e19fe83045bb42006f4c636250fc31b11c8a4325a5d0f300692f7d8d364c488064ac501fbd615d08ea56f529908ea701f4c54c14188142a8f3e0f4a6e6df3c05616ee7be65ab0578d1cfc134c5466c7171ec84f3ce627333f8c3ad00e7ccdc7cab63a6d691bdef9386f2ab1f5a4c8ce94a1f9879f95fec564b3f"
+
+GCD-modinv, A = rand192[2.2], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"75ca961bfd1d565a37fb2828f6884d6d8d519834d9770da9d8d2311126de51386ae85ff268da8e84447d6aaf91581c468d159ccac3f1deebaf4f1b098e5642e9f6f2454a30046594ee3d8cc03aadec2703f166000d904b1595b339f7e132225665774dddd24d73a789f60bfbcef306f9c7add41d3b60b2a99bbc923984fa7092"
+
+GCD-modinv, A = rand192[2.3], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"411051de6fe70fd9aea76eff4e5a00311884d698495743d2c6ab051ec4b37f7a6c7761d4ced106241d1b46a1cc7e86c29263c23d9ef5cde1d758a04a3bca0542a936f79b39f0a1904bf5fbf57d54bfa4cab423bfebabec3755d901acaad940e4aba184a7d338f74dc7c0047b4feb43c2e2871dd624292844f40ee3205d947ed5"
+
+GCD-modinv, A = rand192[2.4], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"32ee46a903d2f5f270d2c4d60596683ca629caf7df38b8d2179f1e90e95dd4c98ffc062eb39a0fb4ad7575f0939237be7d21fff22bc770ff1158b7d7369bb8311571dc430f94d9cef30739bf7482360e6768bdefd98a1f7304b5b333e136c44a5f230f88dfd3b79b1c80ec05933308cc41cf260ce0c9cee5aa053c7e5712da04"
+
+GCD-modinv, A = rand192[2.9], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"9fdf836f2ed6a4fd98815fc7df7d392e77002bdaa395283cf54dbbb1ac88e2c3db2c81306a8f6b0495c196281f4664c533fea8aad094c33ddaf15fe28f98483c336d452eb5b9a74b6bd0414e3aa60410a68749ce5ef593025428394f9cc984cdf900ae79c256cee30db9aacd80b83fe54eb4cb2971a5e217a23fc6592b54503f"
+
+GCD-modinv, A = prime1024[3], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":""
+
+GCD-modinv, A = rand1024[4.1], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"9674bede084691df42953cfede313fc2d93a1daccc1244ea64dd19902f46abd53880670e3eb966b2d4ba55e967e8d2785a2592e5574fbf006a1799c3d397b38a1d7e92daacb2b4013cef3b6789e212862a292c203ecd5941aeeaf8457ad71c071e64464fbaf4da10efb862904aea185047bcecb84ef69ae6c11f9ccc7aef580e"
+
+GCD-modinv, A = rand1024[4.3], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"14c15c910b11ad28cc21ce88d0060cc54278c2614e1bcb383bb4a570294c4ea3738d243a6e58d5ca49c7b59b995253fd6c79a3de69f85e3131f3b9238224b122c3e4a892d9196ada4fcfa583e1df8af9b474c7e89286a1754abcb06ae8abb93f01d89a024cdce7a6d7288ff68c320f89f1347e0cdd905ecfd160c5d0ef412ed6":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"a2c3792cec142b9e28a3fdaa356f16ae16639b0d9293ce9e5f7ccde66ac8983c29dd191e5293a184db0112039caa4fe805c42c97c0d97d7bd5b6288d9065eb2c4f1fd557c35acc5020e29619864f9d16375b7507c6edffa647fb2e88a22198d207f11ff9b1c6bba7a9bd96054561d781fcacb76cd982dd0f8f0b89deaf4dad75"
+
+GCD-modinv, A = rand1024[4.4], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"32decd6b8efbc170a26a25c852175b7a96b98b5fbf37a2be6f98bca35b17b9662f0733c846bbe9e870ef55b1a1f65507a2909cb633e238b4e9dd38b869ace91311021c9e32111ac1ac7cc4a4ff4dab102522d53857c49391b36cc9aa78a330a1a5e333cb88dcf94384d4cd1f47ca7883ff5a52f1a05885ac7671863c0bdbc23a":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"5e9c1ed3f9813790a165700917b2a2863aeece1e6f8da8eae412199ec397c4f5dc1f4b0d4d1d7f7836488974b70e98a90e1271275a1c111d4e01ba96ca3ad35fd5b7e6b475d9e7339dfa393b268f87a10a576c0d1a8691256c36f0f4aa93d4c8671e0bb3b50d55ec9b0bc233ee260934171981be51f8fa644858c109ce5feb4a"
+
+GCD-modinv, A = rand1024[4.5], N = prime1024[3]
+mpi_core_gcd_modinv_odd:"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"2a5d07b592fd94c4d654638d8d707c9d233a69b7514657f1d10aa8ce8c205f9cd395fdefa3c6dc98e80fabc58b03cffa8ba4ffa1f983ecc15790c9bae722a5af2643de76f6db291e04e6ef31379b714f8b34d8d8ebdf7994936b0fe6554915e5a6999d0761620a566f92a796b65c6ba8294e9cba4f2b618d799f91896d8b568b"
+
+GCD-modinv, A = rand1024[4.5] * 2, N = prime1024[3]
+mpi_core_gcd_modinv_odd:"a77c8e43eb73c3eb59b58c2b7841ec4c92457399e8d35df1edcfa0f1cab70bba2a4be6c765037110b6d3b84615eb590e0d256a68eb0481be94f4060a5ae67b9bde815e5ca9819cd03e89d7a2798ebe7db9650bf13b19e9a92a162dff87c358768e11b312752e60016a9446041f8b6087adc94a2a33b39398a5a646efcf026382":"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"1":"79cc57d103eb8202f8fa3625a27f704e1a7ae3d5ddcc1cae7ed3df1f0d373c2464bb285d52ddacd3009aa9a275ce72b93666fd88a63b9b74764d918348fff197bef7e4cc91e77ae3b3e102ee979d4e14f383b9c5f078df29de6507c2dffa5b8aeacaf0d139f6f8daad2e5629793b40829d8ff5a3192ac70800a9957b321c5457"
+
+GCD-modinv, A = 0, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"0":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":""
+
+GCD-modinv, A = 1, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"1":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"1"
+
+GCD-modinv, A = 2, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"2":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"3482934f6b78584f8b2e4671b717925a18006f00d976a0769d6ee659619df0563ceb3c9a36a563d2e1c8159c4b1ee37429a7a2b9c68247607884ce361f0d92c7eb92229667538ffa50a43b5757f8d04c652ccb33367559b02895e89888391188b8867a993d621ad3d4be321b2b20954dc50d5e68d348b63a6d27cfe1e36d2ec"
+
+GCD-modinv, A = 3, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"3":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"46036f148f4b206a0ee85decf41f6dcd7555e9567748d5f37c93ddcc8227eb1da68efb7848dc85192d0ac77b0ed3d9f0378a2e4d08adb480a0b112f2d412190a8f6d8373346f6aa316304f1f1ff66b1086e66444489c77958b728b760af6c20ba0b34e21a72d791a70fd98243980c7125c11d3366f0b9da33c35152d2f3c3e5"
+
+GCD-modinv, A = 4, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"4":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"1a4149a7b5bc2c27c5972338db8bc92d0c0037806cbb503b4eb7732cb0cef82b1e759e4d1b52b1e970e40ace258f71ba14d3d15ce34123b03c42671b0f86c963f5c9114b33a9c7fd28521dababfc6826329665999b3aacd8144af44c441c88c45c433d4c9eb10d69ea5f190d95904aa6e286af3469a45b1d3693e7f0f1b6976"
+
+GCD-modinv, A = 5, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"5":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"150107b95e3023530478e8fa493ca0f0d66692cd23c90cfc3ef928f08d7260227ec47ea415dbc1878d833bd81e0c5afb43dca77d829a82f36368527c0c6bd44ff7d40dd5c2ee39975374e48956638684f5451e147c2ef0acdd08c370367d3a36b035caa3b2273dee5518e0d7aad9d5524ed225c387b6af4a920fecc0c15edf8"
+
+GCD-modinv, A = 6, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"6":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"57844ad9b31de88492a2756831274940d2ab63ac151b0b705bb8d53fa2b1e5e51032ba565b13a65f784d7959d288d06c456cb9e04ad921a0c8dd57af89169f4d3348e450018b454bdbbc62e6e7f405d4a89ffd555ac3957aee4f2e538db4728e88e021aa10f8d7610d3cfe2d47e0f8d6f31648040ace850c0b425a787b0b4de"
+
+GCD-modinv, A = 7, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"7":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"7":""
+
+GCD-modinv, A = 2^64 - 1, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"11":""
+
+GCD-modinv, A = 2^64, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"10000000000000000":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"3924a54aba583f8d30120a33fbbe6038423021807de34898e3f10f32d766a003792f73ebb285b7e6280b5664db83daab3c54a140549e52ad517ee2e964b3a2a6e9e65932e14cc0f333ac1c8e80aacddd93729c7d9dfdc741dd36ee8ed40c050a2f6aff3ee8a079fb4279a07788ee4e79a24f060e2c2d274efa73d6ca5dcaef1"
+
+GCD-modinv, A = 2^64 + 1, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"10000000000000001":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"6062960fa8cf99c6f96026d3c1aaaecb0a6dcc90109d20139401751a02b5c65c276e3838d7bf1404fb35bf35c9c58f9b3ae5cd42e8c4bd00a7589be9b0393e215afc5bceddf26ebcc38067e27a7788a9ece995ca9184c3289b885642711fdfe7d9fe68bdd45eafe1cefda8f1b60ae41ded42784e809978647f401d54322e754"
+
+GCD-modinv, A = 2^128 - 1, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"11":""
+
+GCD-modinv, A = 2^128, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"6182e86d6341fdc9a2fe15246531578578258ae0109d82651fdfb8c8fc938826b966e2da94ebf56f40aab1453b24bcb07b5fc623f20c521e99522f3d48478319327d9578a68283dfca41061817023146170216d6d7b83776cb2c22bdd5f072624ee833e8e847624e277e15b2aa2c476028679130db1589c7ffcea32ac8a8a6b"
+
+GCD-modinv, A = 2^128 + 1, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"5c9283100fa641e0909d87a55f742994e97e86367c057c610dc599a4410e9d2bc95d4ff251767979f768857f5c6c1d737c738e0de42efae1c7c5d2708df3aa80479faa771ae2caee20b11a4e5f2558fff9ce89098618b20dd69b826492f6ef2e06703cdbc6feb1558522be6391b5dd138e7c17dce3e7c54d321156a7a742511"
+
+GCD-modinv, A = prime192[1], N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"639ec24b879f24f4d669933d10b43359fbbe777e93ba00d01c8f44d434c380a0f4a821591eb5e550829bf67dc336d0a63403c6197ef68103e8fb20656c9b45ad16835b49f5e8afc354db52d12f531d457dd98a774957c0750390a05de621a097c55f581ad0165ac0d8456efcf0fc5aa87893b5c3d63e4825347a5ceec6528f1"
+
+GCD-modinv, A = prime192[1] * 2, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"1a3824f4ccef0ce07060a00071d75de41cb47c5b86f1f6eb6":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"6651f4752f47eac9f66310103f71ac0715dfaac02353a0deabb688c37bffb0a6b73f4d46c600567b231610db2cba4bc743a985c685fd87e26d025e68d55b359e76d3d03b6247e7dbfb11e4bfefa25eef2419906edb2139eaaa5e38c77b49e1d49b3626a6a56d483440e0e999a39ec2a20157394abe67da4d0764fe594696764"
+
+GCD-modinv, A = prime192[1] * 3, N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"67385a8311d58211010b8f014f0629961e956680a886d638db6e4a133e6915fdf81c5beb531926deade96efa4fe61f7cf38b7055885534d743af7314a2f0859996eea1e131124fe432796aba2fbcca27b0d9926c0bb9b7bc8ca2c0eaad01f7938d286b7fec8a420563bf67cddf2a3a9fd99865226120605a4db334277157c35"
+
+GCD-modinv, A = rand192[2.1], N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"3a2d27918ed0eb7734d085f62c0df584c4cbb3819e9a37f174803efcb91f9ebd7c5b9cbf7d2136e12f24de1453fc70428d6ea33173139ef3207e5b83df6a6ce0acadef92479a54a9f0ca5d557c6955bf86a947db1ee56afc88ba53b7ab544d5823ae54d91b737a79edcea1de658dbf970f6579128e05aee19c07e58d8e915e8"
+
+GCD-modinv, A = rand192[2.2], N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"3365d3177893d67f9d4c4fb1cc1d331147d341cb42054d46b5e03c3fe4382cbf71faea7c6fba7d1e6a3c79c6658fd316ef6b3da7e09746650865b9ebc3281f0f944262d8cee058c395903e8db665244750b78a9066bc32ac24abf8e31dce8064fe240bfda9e6829e21af498715410452a8bd8f5be4fce9bd938cbabe6dc9c43"
+
+GCD-modinv, A = rand192[2.3], N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"63e9d2a280a66e3b825469940825cb04316a1bbb4cb28d4e087c1fb6a0f81c46cd15532ef53bd64ee23e2c2026dcc36520730bcbe82c0db2ec17e48bc8ea999a8b1dba8d66ba988d45b0a9e2b793d051686a42233331fc4c2283d4316eabcc0b19e11f04deb2b6b82eb43b34d767eb699ad585f380a652e13470ce7961284fd"
+
+GCD-modinv, A = rand192[2.4], N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"1":"2db3d577ec52fec20d697993937b7e003b1fa6f20bbb78a8a30b39dc551a4c729d40e08c3cc2ec48e60cab3d36bffcd6d0ed4086e848cbe1022a801415c39361e89993164110b8d8baa4caa0892d05a0ec6a008a478f01cdc1c774aff60f9754040ee49cca199b597bcb54c7726396bb4d4d0d6177538db298aba46e8ebebbc"
+
+GCD-modinv, A = rand192[2.9], N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"77":""
+
+GCD-modinv, A = rand1024[4.1], N = rand1024[4.1]
+mpi_core_gcd_modinv_odd:"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":""
+
+GCD-modinv, A = 0, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"0":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":""
+
+GCD-modinv, A = 1, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"1":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"1"
+
+GCD-modinv, A = 2, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"2":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"78e7ecc90b6fb24323d6f6133c9e87229fa8412496c1d4119fdb169640c317e4b1a7c037d5fa503e2b3001124d8c8dfa6c220dab0b1995652faa93b9f0a580c86c9c9b70ed651e037aff8601ddaeb9c2ef046550d040bc882512f23327a929d01518c3c298c27f93a2c8a16f66751322a1500201e7406258520215d9ea1a0d57"
+
+GCD-modinv, A = 3, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"3":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"a1353bb6b9ea43042fc94819a628b42e2a35ac30c90270177fcec8c856597530ecdfaaf51d4dc052e440016dbcbb67f8902d678eb97771dc3f8e1a4d40dcabb5e626249691dc2804a3ff5d57d23e4d03e95b31c115aba60adc1942eedf8c37c01c2105037658aa1a2e60d73f3346c42e2c6aad57df0083206d581d228d7811c9"
+
+GCD-modinv, A = 4, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"4":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"b55be32d91278b64b5c2711cdaedcab3ef7c61b6e222be1a6fc8a1e16124a3d70a7ba053c0f7785d40c8019b7452d4f7a233148090a66017c77fdd96e8f8412ca2eae9296417ad05387f4902cc8616a4668697f938611acc379c6b4cbb7dbeb81fa525a3e523bf5d742cf22719af9cb3f1f80302dae093847b0320c6df271402"
+
+GCD-modinv, A = 5, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"5":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"60b98a3a6f8c8e9c1cabf80f63b205b54c869a83abce43414caf4545009c131d5aec99c644c84031bc266741d7a3a4c85681a488d5ae111dbfbba9618d5133d38a16e2c0bdea7e692f32d19b17befb0258d0510d7366fd39b7425b5c1fba87d9aa7a36354701ffa94f06e78c51f742821aa6680185cd1b79db34de47ee7b3ddf"
+
+GCD-modinv, A = 6, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"6":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"c9828aa46864d3c53bbb9a200fb2e139b4c3173cfb430c1d5fc27afa6befd27d281795b264a130679d5001c92bea41f6b438c17267d54e534f71a0e09113d6a35fafadbc36533205ccff34adc6cde044e3b1fe315b168f8d931f93aa976f45b02329464453eed4a0b9f90d0f00187539b78558add6c0a3e888ae246b30d6163b"
+
+GCD-modinv, A = 7, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"7":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"7":""
+
+GCD-modinv, A = 2^64 - 1, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"56c17de0c7e29c183e64105fd465230431b0ba13ff23e6f9f622b4e4435fdf62e3a124920bbcb831319285186be814689d7fa45a91c286730e132013afacaceaf6f04a15b92bf5fbf8bcd641a168d61f6f16710fcb93b8c3f6d2b63f6706f98b75ea79fb74f4a98c2067caac2048fa78b901373ba35cd2367d5d8430d198cfa8"
+
+GCD-modinv, A = 2^64, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"10000000000000000":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"b4c16fe37037d20261f46683d0204bc5ee36983c030866e518a259eb58790da1d7c850cbff6cc0620cbd050f1f8e62158dd9c5f68768927e6db9f32ff0fd22eb023d26429a6b6dbfc3f6431dcb20c3d0c083611b48102c84a0f304aa340b5887fe4be46870ba49773743d52da801013728b414a3429d0e27a4205059606be2b4"
+
+GCD-modinv, A = 2^64 + 1, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"10000000000000001":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"950e368c032f3cab212b06b20a97df4df5423fc8ca06a0cc78fcce3ecefdd333e341a78dd8e4ac46e5a28e9a30e1d6b45f4219195c44e1db809dbb41c38065b68a78d15f0b2983f694aa6e9b4eb7fbb89cfd4042ebebe95a2ed39794873611f827b61627d79f4724ed0e6bfa94ec1aa59f68602198b322d064dec23b17ffeef1"
+
+GCD-modinv, A = 2^128 - 1, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"59c190736dc961f9b2737aea218528fdbddf7e4a315077285e6e09e8faf41dfc31d77eb9ef6656335127fc516b0facd48b40d34ba5d867b0f6654622e6bba462a2d857cc446657062d08b9d5070726f65810fdb74014a43d0912818897919d99bc32f5ac676d30c73c7550c82c23830c2e1c6d8eec953a0b5e4176d4c6e67db2"
+
+GCD-modinv, A = 2^128, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"12357d1b0700e115025254949f04a07845b7de73bc4c8187ffe51945b5ce1b7a31e4bd47de47dbd8b7f9c1887c8460228403afba283dcd83065913d73e05efe6bb04b1cc35833eb0b1b2a2a0dce09d2000a2f67c10ece27ae25e402b9d9b4af5b65b81a0f7d7d5960b03ef8050cbe2b0de6814dfb08842cc1c1380b33fbc6c7f"
+
+GCD-modinv, A = 2^128 + 1, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"34bce97c4edb09996cf9fee5bfa8a579ce0f0413da19b04b6de54af5f63d3d197f43f8d4712bb17c55ad2d71e127a7a764fdf1126683d6a65b1cd234fde318dbdc33bca343e24d67527e8f86f7887e6b960dfc4cdd015433816e7484f06311a64e46e2d2318442307858926b50ed7e19cdb8165f553f066e4c8467084ff88ead"
+
+GCD-modinv, A = prime192[1], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"a124a0ce262cf5686c215f6f3309c79adc73956da78f3212fdd16a8d4e8a1ada0e0a9b0388004a34618c1a59e41153dee9a011ca3e6848695a414f1d4e5446a4110140cc2eedd4c282c574661a15f5da4b9d539918f0dd8b3c238a5028287429618c7d50942d89547e014faa97c9803a8aa811b0d81de049bb59eaf8241b4c06"
+
+GCD-modinv, A = prime192[1] * 2, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"1a3824f4ccef0ce07060a00071d75de41cb47c5b86f1f6eb6":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"5092506713167ab43610afb79984e3cd6e39cab6d3c799097ee8b546a7450d6d07054d81c400251a30c60d2cf208a9ef74d008e51f342434ad20a78ea72a23520880a0661776ea614162ba330d0afaed25cea9cc8c786ec59e11c52814143a14b0c63ea84a16c4aa3f00a7d54be4c01d455408d86c0ef024ddacf57c120da603"
+
+GCD-modinv, A = prime192[1] * 3, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"86517e201459734f91451931e4179ca009415d3cf1b0f36769d7dd3df0056e367b1e092666a6f8e592a4097f7fb8cff140a164601c33d1113ddcd23065351811a368d28f5892b043284180234726787563375f68e87b7233d76dcf9227d397edd93f56f1ec90d8294130db832191377fef18073c378a36fe1fca078ea81a7791"
+
+GCD-modinv, A = rand192[2.1], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"6592634ba91ea6d729ac3bdfdb2d5753ad8493b5c609f3784cc28e62b927abaa7defeb456df4757d54a1df173c927de9030f9465a7b484a767bf71f16d0109ee30bf19fda443be854c2e18059b5852cc01985dfa8471c146532cba87811b7af4c0cee8ddae2a3096a905c061a55225f06c86660658f732ae51e5fb7dbebde995"
+
+GCD-modinv, A = rand192[2.2], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"6a2df5f3d9f9b9a83761b5a31ef09e159d76c3e2431fb6a387144be5b0496c00f1f5d70a573f994c9cd6cba63994f868b7e38426369a1db1ea7bb694d47baec6ae927651c7b9491b707ff9bd5ebfa4a546e3cc70ba53ca7ff6720a4cb57c56efb8af20ed1c4a083da7f478f74ec0584380128a6fc8415acf1f38811f1167479d"
+
+GCD-modinv, A = rand192[2.3], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"518e1182619b6f2294ff534e86cb0a6e46da9f0fedbf133048f830c434f9ca5ee13a05264ab15d132710ce46fe40dbcaee30bd0c9626fb9507e44c86a81f0abc735c2ad0dc17589bef22551a99a7bc9ac25d462db88fd0030d50bcdf27cb87511d135c91c962676bea9537e44536991f2f294930b7e6c201e353876f9cb3c0de"
+
+GCD-modinv, A = rand192[2.4], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"a94e9514db7b72a50782e1046abcd03a7d021280d91060961e1fc0abc3bdb452733b9834702db36553a0f7db084dffa6140cc36f8a6b855e27ba7314f8ae1f91c21e0a98ffa7faab0951707e194010e4d726e2df75120d14a731c8d843d812690f5542f9b39f0107505d4d235a32f4b3e0308e94bfc7eb936ca3a581bcef82fa"
+
+GCD-modinv, A = rand192[2.9], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"7":""
+
+GCD-modinv, A = prime1024[3], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"ae3c816db5f2f0c1966526d6fc24af844ae13b52b354addf97bf07ce9c0a69b8f91fce5153357bb646938f3917eb2b5a8747c429224e4b7357a695587ead52194945fc5468fd99e9eb850b3997c6fca93b5db087325145298513feff7ab3e086b34d62fd1a929f3a1f99947f68dd6298e4470fba4dc7e1332b0a89bd32db1c34"
+
+GCD-modinv, A = rand1024[4.1], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"7":""
+
+GCD-modinv, A = rand1024[4.2], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":""
+
+GCD-modinv, A = rand1024[4.3], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"14c15c910b11ad28cc21ce88d0060cc54278c2614e1bcb383bb4a570294c4ea3738d243a6e58d5ca49c7b59b995253fd6c79a3de69f85e3131f3b9238224b122c3e4a892d9196ada4fcfa583e1df8af9b474c7e89286a1754abcb06ae8abb93f01d89a024cdce7a6d7288ff68c320f89f1347e0cdd905ecfd160c5d0ef412ed6":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"7":""
+
+GCD-modinv, A = rand1024[4.4], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"32decd6b8efbc170a26a25c852175b7a96b98b5fbf37a2be6f98bca35b17b9662f0733c846bbe9e870ef55b1a1f65507a2909cb633e238b4e9dd38b869ace91311021c9e32111ac1ac7cc4a4ff4dab102522d53857c49391b36cc9aa78a330a1a5e333cb88dcf94384d4cd1f47ca7883ff5a52f1a05885ac7671863c0bdbc23a":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"1":"b7f8263f1ca6fdd9347e04fb944d1daacdbda25cd7fae6bf1283a293ecab2d4dddda59a0178016835e4f4fe298f9818efa3774ba4a075408c8747a883948318057a44395bb05c5b914e8c17836da290133fee6c19262c6217777ed3c48cf319a5a6b97800cbbfd5f44c60b9397b445163886447efd52006cd5fe0bbdfd4b5c32"
+
+GCD-modinv, A = rand1024[4.5], N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"7":""
+
+GCD-modinv, A = rand1024[4.5] * 2, N = rand1024[4.2]
+mpi_core_gcd_modinv_odd:"a77c8e43eb73c3eb59b58c2b7841ec4c92457399e8d35df1edcfa0f1cab70bba2a4be6c765037110b6d3b84615eb590e0d256a68eb0481be94f4060a5ae67b9bde815e5ca9819cd03e89d7a2798ebe7db9650bf13b19e9a92a162dff87c358768e11b312752e60016a9446041f8b6087adc94a2a33b39398a5a646efcf026382":"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"7":""
+
+GCD-modinv, A = 0, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"0":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":""
+
+GCD-modinv, A = 1, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"1":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"1"
+
+GCD-modinv, A = 2, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"2":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"29df2390fadcf0fad66d630ade107b1324915ce67a34d77c7b73e83c72adc2ee8a92f9b1d940dc442db4ee11857ad64383495a9a3ac1206fa53d018296b99ee6f7a057972a6067340fa275e89e63af9f6e5942fc4ec67a6a4a858b7fe1f0d61da3846cc49d4b98005aa5118107e2d821eb72528a8cece4e6296991bbf3c098e1"
+
+GCD-modinv, A = 3, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"3":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"3":""
+
+GCD-modinv, A = 4, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"4":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"3eceb559784b697841a414904d18b89cb6da0b59b74f433ab92ddc5aac04a465cfdc768ac5e14a66448f651a4838416544ee07e75821b0a777db8243e2166e5a73708362bf909ace1773b0dced95876f2585e47a7629b79f6fc8513fd2e9412c7546a326ebf1640087f79a418bd44432e12b7bcfd36357593e1e5a99eda0e551"
+
+GCD-modinv, A = 5, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"5":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"5":""
+
+GCD-modinv, A = 6, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"6":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"3":""
+
+GCD-modinv, A = 7, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"7":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"7":""
+
+GCD-modinv, A = 2^64 - 1, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"f":""
+
+GCD-modinv, A = 2^64, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"10000000000000000":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"2abd3f1aaa4e57e968acadedf4ddcf9ff30bf8a223dbf3261e045a26346753975be0dad28d7b9bb7455b83921093394a63639aa2813a174f9ad6fcef47ed2cfc395dad6877248d5d533423d18c7f001243081ad0519f165570b03ccc91fadca02ffcfd55c73dad9c788d55df0286a99bc05744198dbc28c6d899e50b50f69ea4"
+
+GCD-modinv, A = 2^64 + 1, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"10000000000000001":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"3796b236c1130304d81ee30497ad50e66fe0911aa728ac0e731e9103257d7c50fe15ea05628161717eddd0aeae76a9ca7726e70a977eba931aaf861be267ae2bd1a378f496f5c25875f8ab31f8de8e785a1091944779c8bbea2670168d212c224b93551451211e44a867d871a7876380e37e6c59e61f396bd0612469d8db81e6"
+
+GCD-modinv, A = 2^128 - 1, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"f":""
+
+GCD-modinv, A = 2^128, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"15cdfa122e579deba894ebffca0dc09b0b16b7078b89931359002ff104260db61909dc2def7763d93cce88a1163aafae29e2663a748b98980b5f9857757b194dcfb1f70b6ed73082d4c21d5e1bf0cc7cff6fe670007f5897d7adbadb721215483c5cd373838640988df2c3bbea98a52c1136b15630945f3c4a9e004f194acfc3"
+
+GCD-modinv, A = 2^128 + 1, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"3caff235ae64bba0907ce88da6058e162fe9ee07b932af57e6f07b3013bd441e4e8d667e1a4718ffdb6d07586442e76a5ad92b58d2b262ccbfbd2ecd5fe175bb72368e090b247ada1649351e451dbc6a86a374a1b201d4675bcb1d87c80024ca8f31b27af407b0aac9299d89d83baf1ebdd2e62604eef33c87adab090f742ba1"
+
+GCD-modinv, A = prime192[1], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"12fb3cb53ee08a31b5dda3ba69ddcfac986f56aa59d06525cde0dfe20c227e7a6e31aa05b5554206d0a1607ca7aa6710ac43dae33185dd27e20c66ddba3941aa60597dab8e473eac7abcbd6978f0b346be48a885f8b73af8a4a6c3fbeed85fcec694f09435e45ebb739c6eef710e6822459a7a3dfa4dab09310b3c07a8806f70"
+
+GCD-modinv, A = prime192[1] * 2, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"1a3824f4ccef0ce07060a00071d75de41cb47c5b86f1f6eb6":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"97d9e5a9f704518daeed1dd34eee7d64c37ab552ce83292e6f06ff106113f3d3718d502daaaa1036850b03e53d533885621ed7198c2ee93f106336edd1ca0d5302cbed5c7239f563d5e5eb4bc7859a35f245442fc5b9d7c525361fdf76c2fe7634a784a1af22f5db9ce3777b887341122cd3d1efd26d58498859e03d44037b8"
+
+GCD-modinv, A = prime192[1] * 3, N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"3":""
+
+GCD-modinv, A = rand192[2.1], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"37":""
+
+GCD-modinv, A = rand192[2.2], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"b":""
+
+GCD-modinv, A = rand192[2.3], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"2cc051e5bf5b151283fd5f9f68917e09e142050de78993e7c75c67fc61bb7da6d9ad7508cebb550537b550c4e023b787834462e2fa0a78e49fdcb067c47e545a980bc01ce13db6bf204a22f354fd5891e0e909d6ea58d6d6ff702fb4ca69296568b8aa49b710e84c5c4c5d123f8c47a27495c7d53127f2608e9eef2122634b82"
+
+GCD-modinv, A = rand192[2.4], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"b":""
+
+GCD-modinv, A = rand192[2.9], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"483":""
+
+GCD-modinv, A = rand1024[4.1], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"7":""
+
+GCD-modinv, A = rand1024[4.3], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"14c15c910b11ad28cc21ce88d0060cc54278c2614e1bcb383bb4a570294c4ea3738d243a6e58d5ca49c7b59b995253fd6c79a3de69f85e3131f3b9238224b122c3e4a892d9196ada4fcfa583e1df8af9b474c7e89286a1754abcb06ae8abb93f01d89a024cdce7a6d7288ff68c320f89f1347e0cdd905ecfd160c5d0ef412ed6":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"15":""
+
+GCD-modinv, A = rand1024[4.4], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"32decd6b8efbc170a26a25c852175b7a96b98b5fbf37a2be6f98bca35b17b9662f0733c846bbe9e870ef55b1a1f65507a2909cb633e238b4e9dd38b869ace91311021c9e32111ac1ac7cc4a4ff4dab102522d53857c49391b36cc9aa78a330a1a5e333cb88dcf94384d4cd1f47ca7883ff5a52f1a05885ac7671863c0bdbc23a":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"1":"208a986abef26ce5cf6118b02a77fa83b4458a62a642361f35cdd5bc18299f6b1f735a02bd2a96d91897adcb77a411e3f76cf0f1997744ccae5d249e9ba070328b79fd8cc13880c858cc96b7ac4f404e74310a04daaba800e97fbfee9495ecde0766f4fb1ff050d2803a9e1928ffa5e33cd0cf0cbba086aa6b23b822f5e1062b"
+
+GCD-modinv, A = rand1024[4.5], N = rand1024[4.5]
+mpi_core_gcd_modinv_odd:"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":""
+
+GCD-modinv, A = 0, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"0":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":""
+
+GCD-modinv, A = 1, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"1":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"1"
+
+GCD-modinv, A = 2, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"2":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"7d9d6ab2f096d2f0834829209a3171396db416b36e9e8675725bb8b5580948cb9fb8ed158bc294cc891eca34907082ca89dc0fceb043614eefb70487c42cdcb4e6e106c57f21359c2ee761b9db2b0ede4b0bc8f4ec536f3edf90a27fa5d28258ea8d464dd7e2c8010fef348317a88865c256f79fa6c6aeb27c3cb533db41caa2"
+
+GCD-modinv, A = 3, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"3":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"3":""
+
+GCD-modinv, A = 4, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"4":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"3eceb559784b697841a414904d18b89cb6da0b59b74f433ab92ddc5aac04a465cfdc768ac5e14a66448f651a4838416544ee07e75821b0a777db8243e2166e5a73708362bf909ace1773b0dced95876f2585e47a7629b79f6fc8513fd2e9412c7546a326ebf1640087f79a418bd44432e12b7bcfd36357593e1e5a99eda0e551"
+
+GCD-modinv, A = 5, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"5":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"5":""
+
+GCD-modinv, A = 6, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"6":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"3":""
+
+GCD-modinv, A = 7, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"7":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"7":""
+
+GCD-modinv, A = 2^64 - 1, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"ffffffffffffffff":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"f":""
+
+GCD-modinv, A = 2^64, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"10000000000000000":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"7e7b863ca00839df15877403b0fec5c63c2eb26f1845a21f14ec2a9f19c2d9747106ce363ffd543fa0c55fb51b88e5d169f64fd6f6bc582ee550fff475606aca289e5c96cbe55bc572790fa2c9465f511fbaa0c8ef2c0b2a05bb53cc55dc88db7705d6df01d4dd9d2dd778e1124c59df973be92ea795f2932b6d08833877d065"
+
+GCD-modinv, A = 2^64 + 1, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"10000000000000001":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"3796b236c1130304d81ee30497ad50e66fe0911aa728ac0e731e9103257d7c50fe15ea05628161717eddd0aeae76a9ca7726e70a977eba931aaf861be267ae2bd1a378f496f5c25875f8ab31f8de8e785a1091944779c8bbea2670168d212c224b93551451211e44a867d871a7876380e37e6c59e61f396bd0612469d8db81e6"
+
+GCD-modinv, A = 2^128 - 1, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"ffffffffffffffffffffffffffffffff":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"f":""
+
+GCD-modinv, A = 2^128, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000000":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"15cdfa122e579deba894ebffca0dc09b0b16b7078b89931359002ff104260db61909dc2def7763d93cce88a1163aafae29e2663a748b98980b5f9857757b194dcfb1f70b6ed73082d4c21d5e1bf0cc7cff6fe670007f5897d7adbadb721215483c5cd373838640988df2c3bbea98a52c1136b15630945f3c4a9e004f194acfc3"
+
+GCD-modinv, A = 2^128 + 1, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"100000000000000000000000000000001":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"3caff235ae64bba0907ce88da6058e162fe9ee07b932af57e6f07b3013bd441e4e8d667e1a4718ffdb6d07586442e76a5ad92b58d2b262ccbfbd2ecd5fe175bb72368e090b247ada1649351e451dbc6a86a374a1b201d4675bcb1d87c80024ca8f31b27af407b0aac9299d89d83baf1ebdd2e62604eef33c87adab090f742ba1"
+
+GCD-modinv, A = prime192[1], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"d1c127a667786703830500038ebaef20e5a3e2dc378fb75b":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"66b983d7349a6c2762b869d025fec5d2e19210774e3a141ec4c8b05af17e045783579d6967d6fa8f2c0b3c9fb2a01397b2d69017a7081e072c8669e2e7ac7f784f9a2cd9e3080d149a01a93ab5b812859afb2e7e96442fcd39b1dafbb2ba0c0a0d9dca1d707b8ebc28e691f180d418661c7f1f53142774d583de5f7f9001a131"
+
+GCD-modinv, A = prime192[1] * 2, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"1a3824f4ccef0ce07060a00071d75de41cb47c5b86f1f6eb6":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"b0fa2c9e8ae4090434a45e08ad30d422de7d1eef15bb9084d4c010e2d0c84af76164bbca3fae12141f24688469c08c96634757da83c7705285fa397938031c710eae1d3270a53c267be836573607182118896034377587257c698ffd7f2f885df15c2b5c90208f5f24627d7bd8129498d096874930da691d3e2be4f3a3429b3a"
+
+GCD-modinv, A = prime192[1] * 3, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"2754376f33669350a890f000aac30cd62b0eba894a6af2611":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"3":""
+
+GCD-modinv, A = rand192[2.1], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"177219d30e7a269fd95bafc8f2a4d27bdcf4bb99f4bea973":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"37":""
+
+GCD-modinv, A = rand192[2.2], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"cf1822ffbc6887782b491044d5e341245c6e433715ba2bdd":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"b":""
+
+GCD-modinv, A = rand192[2.3], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"3653f8dd9b1f282e4067c3584ee207f8da94e3e8ab73738f":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"d43ce029aaced8fdddb2ebcae0d36a56738778a7d05cf1d9b52c08ee2c72896103f95bd033bec615ee89090af60f10959069cd4be50efaa334d0b6721f64cff6768d1e798abf538f5ed3fa95ce8c170f9a4e15c82572c08029865db4522c81dbf6ca5d5c2c3f484dc6e0a3165f17a82a225f11ff64db85f934453610f165af04"
+
+GCD-modinv, A = rand192[2.4], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"ffed9235288bc781ae66267594c9c9500925e4749b575bd1":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"b":""
+
+GCD-modinv, A = rand192[2.9], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"2a1be9cd8697bbd0e2520e33e44c50556c71c4a66148a86f":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"483":""
+
+GCD-modinv, A = prime1024[3], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"c93ba7ec74d96f411ba008bdb78e63ff11bb5df46a51e16b2c9d156f8e4e18abf5e052cb01f47d0d1925a77f60991577e128fb6f52f34a27950a594baadd3d8057abeb222cf3cca962db16abf79f2ada5bd29ab2f51244bf295eff9f6aaba1302efc449b128be75eeaca04bc3c1a155d11d14e8be32a2c8287b3996cf6ad5223":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"95db6375f04c9d7844e3dc9a755c358a23c9764d858beedeb0f74ebfffd63ebbe011414a2ba00264050c033500c0369754fd2d86a5e5b514fb9956618866107efce7ec249b291567121509192f009c7ba9021e272dce4e64ef56ee902d4b58d6428538c937cff4eb68062be92aac071282044dfce9936637787da6826d1320d4"
+
+GCD-modinv, A = rand1024[4.1], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"6905269ed6f0b09f165c8ce36e2f24b43000de01b2ed40ed3addccb2c33be0ac79d679346d4ac7a5c3902b38963dc6e8534f45738d048ec0f1099c6c3e1b258fd724452ccea71ff4a14876aeaff1a098ca5996666ceab360512bd13110722311710cf5327ac435a7a97c643656412a9b8a1abcd1a6916c74da4f9fc3c6da5d7":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"7":""
+
+GCD-modinv, A = rand1024[4.2], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"f1cfd99216df648647adec26793d0e453f5082492d83a8233fb62d2c81862fc9634f806fabf4a07c566002249b191bf4d8441b5616332aca5f552773e14b0190d93936e1daca3c06f5ff0c03bb5d7385de08caa1a08179104a25e4664f5253a02a3187853184ff27459142deccea264542a00403ce80c4b0a4042bb3d4341aad":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"7":""
+
+GCD-modinv, A = rand1024[4.3], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"14c15c910b11ad28cc21ce88d0060cc54278c2614e1bcb383bb4a570294c4ea3738d243a6e58d5ca49c7b59b995253fd6c79a3de69f85e3131f3b9238224b122c3e4a892d9196ada4fcfa583e1df8af9b474c7e89286a1754abcb06ae8abb93f01d89a024cdce7a6d7288ff68c320f89f1347e0cdd905ecfd160c5d0ef412ed6":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"15":""
+
+GCD-modinv, A = rand1024[4.4], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"32decd6b8efbc170a26a25c852175b7a96b98b5fbf37a2be6f98bca35b17b9662f0733c846bbe9e870ef55b1a1f65507a2909cb633e238b4e9dd38b869ace91311021c9e32111ac1ac7cc4a4ff4dab102522d53857c49391b36cc9aa78a330a1a5e333cb88dcf94384d4cd1f47ca7883ff5a52f1a05885ac7671863c0bdbc23a":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"1":"7448df8cb4ac4edb7c3bdec5e698f0a9fd68442f9aabe5182cb5a634fd85254834994d666fac4f61740189ee8299be6afdffa6260ef985abf8d727a3c913ae007abaacbb15f94f3078118288e9169f8d50e38ffd78389cd57e8ad6ee587799194e6fce845a8780d33584c11b38c5562713b57421d57a5076bdf6db9add6237ec"
+
+GCD-modinv, A = rand1024[4.5], N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":""
+
+GCD-modinv, A = rand1024[4.5] * 2, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"a77c8e43eb73c3eb59b58c2b7841ec4c92457399e8d35df1edcfa0f1cab70bba2a4be6c765037110b6d3b84615eb590e0d256a68eb0481be94f4060a5ae67b9bde815e5ca9819cd03e89d7a2798ebe7db9650bf13b19e9a92a162dff87c358768e11b312752e60016a9446041f8b6087adc94a2a33b39398a5a646efcf026382":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"53be4721f5b9e1f5acdac615bc20f6264922b9ccf469aef8f6e7d078e55b85dd1525f363b281b8885b69dc230af5ac870692b534758240df4a7a03052d733dcdef40af2e54c0ce681f44ebd13cc75f3edcb285f89d8cf4d4950b16ffc3e1ac3b4708d9893a973000b54a23020fc5b043d6e4a51519d9c9cc52d32377e78131c1":""
+
+GCD-modinv, A = rand1024[4.5] * 3, N = rand1024[4.5] * 3
+mpi_core_gcd_modinv_odd:"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":"fb3ad565e12da5e1069052413462e272db682d66dd3d0ceae4b7716ab01291973f71da2b17852999123d946920e1059513b81f9d6086c29ddf6e090f8859b969cdc20d8afe426b385dcec373b6561dbc961791e9d8a6de7dbf2144ff4ba504b1d51a8c9bafc590021fde69062f5110cb84adef3f4d8d5d64f8796a67b6839543":""
+
 mbedtls_mpi_core_mla #1 0x0 + 0x0 * 0x0
 mpi_core_mla:"0":"0":"0":"0":"0":"0":"0"
 
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_bignum_core.misc.data mbedtls-3.6.5/tests/suites/test_suite_bignum_core.misc.data
--- mbedtls-3.6.4/tests/suites/test_suite_bignum_core.misc.data	2025-06-30 09:24:53.058230900 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_bignum_core.misc.data	2025-10-14 19:12:37.038222300 +0300
@@ -523,3 +523,29 @@
 
 CLZ: 100000 0: skip overly long input
 mpi_core_clz:100000:0
+
+GCD-modinv random 80-bit, non-trivial GCD -> no inverse
+mpi_core_gcd_modinv_odd:"e4518a1900fce698fa3":"1a84113636607520200d":"3":""
+
+GCD-modinv random 80-bit, trivial GCD -> inverse
+mpi_core_gcd_modinv_odd:"7f2405d6de7db80a7bc":"1a84113636607520200d":"1":"15f158844a59cd7a3ed2"
+
+# This data results in the gcd-modinv loop converging to its final state
+# only in the last iteration. See python script in commit message.
+GCD-modinv (almost) max iterations
+mpi_core_gcd_modinv_odd:"8000000000000000":"b26eb5721a2cb24c36acb4550b176671":"1":"77e1dd63583a6b3c8deefe7737862c89"
+
+GCD-modinv preconditions not met
+mpi_core_gcd_modinv_odd_preconditions:
+
+Div2 mod odd: even value
+mpi_core_div2_mod_odd:"4":"7":"2"
+
+Div2 mod odd: odd value, no carry
+mpi_core_div2_mod_odd:"5":"7":"6"
+
+Div2 mod odd: odd value with carry
+mpi_core_div2_mod_odd:"8000000000000001":"8000000000000003":"8000000000000002"
+
+Div2 mod odd: even value with top bit set
+mpi_core_div2_mod_odd:"8000000000000002":"8000000000000003":"4000000000000001"
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_bignum.function mbedtls-3.6.5/tests/suites/test_suite_bignum.function
--- mbedtls-3.6.4/tests/suites/test_suite_bignum.function	2025-06-30 09:24:53.054605000 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_bignum.function	2025-10-14 19:12:37.033238000 +0300
@@ -390,12 +390,24 @@
     mbedtls_mpi A, X, Y, Z;
     mbedtls_mpi_init(&A); mbedtls_mpi_init(&X); mbedtls_mpi_init(&Y); mbedtls_mpi_init(&Z);
 
-    TEST_ASSERT(mbedtls_test_read_mpi(&X, input_X) == 0);
-    TEST_ASSERT(mbedtls_test_read_mpi(&Y, input_Y) == 0);
-    TEST_ASSERT(mbedtls_test_read_mpi(&A, input_A) == 0);
-    TEST_ASSERT(mbedtls_mpi_gcd(&Z, &X, &Y) == 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&X, input_X), 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&Y, input_Y), 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&A, input_A), 0);
+    TEST_EQUAL(mbedtls_mpi_gcd(&Z, &X, &Y), 0);
     TEST_ASSERT(sign_is_valid(&Z));
-    TEST_ASSERT(mbedtls_mpi_cmp_mpi(&Z, &A) == 0);
+    TEST_EQUAL(mbedtls_mpi_cmp_mpi(&Z, &A), 0);
+
+    /* Test pointer aliasing where &Z == &X. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&Z, input_X), 0);
+    TEST_EQUAL(mbedtls_mpi_gcd(&Z, /* X */ &Z, &Y), 0);
+    TEST_ASSERT(sign_is_valid(&Z));
+    TEST_EQUAL(mbedtls_mpi_cmp_mpi(&Z, &A), 0);
+
+    /* Test pointer aliasing where &Z == &Y. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&Z, input_Y), 0);
+    TEST_EQUAL(mbedtls_mpi_gcd(&Z, &X, /* Y */ &Z), 0);
+    TEST_ASSERT(sign_is_valid(&Z));
+    TEST_EQUAL(mbedtls_mpi_cmp_mpi(&Z, &A), 0);
 
 exit:
     mbedtls_mpi_free(&A); mbedtls_mpi_free(&X); mbedtls_mpi_free(&Y); mbedtls_mpi_free(&Z);
@@ -1134,14 +1146,32 @@
     int res;
     mbedtls_mpi_init(&X); mbedtls_mpi_init(&Y); mbedtls_mpi_init(&Z); mbedtls_mpi_init(&A);
 
-    TEST_ASSERT(mbedtls_test_read_mpi(&X, input_X) == 0);
-    TEST_ASSERT(mbedtls_test_read_mpi(&Y, input_Y) == 0);
-    TEST_ASSERT(mbedtls_test_read_mpi(&A, input_A) == 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&X, input_X), 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&Y, input_Y), 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&A, input_A), 0);
     res = mbedtls_mpi_inv_mod(&Z, &X, &Y);
-    TEST_ASSERT(res == div_result);
+    TEST_EQUAL(res, div_result);
     if (res == 0) {
         TEST_ASSERT(sign_is_valid(&Z));
-        TEST_ASSERT(mbedtls_mpi_cmp_mpi(&Z, &A) == 0);
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&Z, &A), 0);
+    }
+
+    /* Test pointer aliasing where &Z == &X. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&Z, input_X), 0);
+    res = mbedtls_mpi_inv_mod(&Z, /* X */ &Z, &Y);
+    TEST_EQUAL(res, div_result);
+    if (res == 0) {
+        TEST_ASSERT(sign_is_valid(&Z));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&Z, &A), 0);
+    }
+
+    /* Test pointer aliasing where &Z == &Y. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&Z, input_Y), 0);
+    res = mbedtls_mpi_inv_mod(&Z, &X, /* Y */ &Z);
+    TEST_EQUAL(res, div_result);
+    if (res == 0) {
+        TEST_ASSERT(sign_is_valid(&Z));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&Z, &A), 0);
     }
 
 exit:
@@ -1149,6 +1179,219 @@
 }
 /* END_CASE */
 
+/* BEGIN_CASE */
+void mpi_gcd_modinv_odd_both(char *input_A, char *input_N,
+                             char *result_G, char *result_I,
+                             int return_code)
+{
+    int has_inverse = strcmp(result_I, "no_inverse") ? 1 : 0;
+    mbedtls_mpi G, I, A, N, exp_G, exp_I;
+    int res;
+    mbedtls_mpi_init(&G); mbedtls_mpi_init(&I); mbedtls_mpi_init(&A); mbedtls_mpi_init(&N);
+    mbedtls_mpi_init(&exp_G); mbedtls_mpi_init(&exp_I);
+    TEST_EQUAL(mbedtls_test_read_mpi(&A, input_A), 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&N, input_N), 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&exp_G, result_G), 0);
+    /* If there is no inverse then the value returned in I will be
+     * indeterminate, and so not useful or possible to test. */
+    if (has_inverse) {
+        TEST_EQUAL(mbedtls_test_read_mpi(&exp_I, result_I), 0);
+    }
+
+    res = mbedtls_mpi_gcd_modinv_odd(&G, &I, &A, &N);
+    TEST_EQUAL(res, return_code);
+    if (res == 0) {
+        TEST_ASSERT(sign_is_valid(&G));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
+        if (has_inverse) {
+            TEST_ASSERT(sign_is_valid(&I));
+            TEST_EQUAL(mbedtls_mpi_cmp_mpi(&I, &exp_I), 0);
+        }
+    }
+
+    /* Test pointer aliasing where &G == &A. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&G, input_A), 0);
+    res = mbedtls_mpi_gcd_modinv_odd(&G, &I, /* A */ &G, &N);
+    TEST_EQUAL(res, return_code);
+    if (res == 0) {
+        TEST_ASSERT(sign_is_valid(&G));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
+        if (has_inverse) {
+            TEST_ASSERT(sign_is_valid(&I));
+            TEST_EQUAL(mbedtls_mpi_cmp_mpi(&I, &exp_I), 0);
+        }
+    }
+
+    /* Test pointer aliasing where &G == &N. This should fail. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&G, input_N), 0);
+    res = mbedtls_mpi_gcd_modinv_odd(&G, &I, &A, /* N */ &G);
+    TEST_EQUAL(res, MBEDTLS_ERR_MPI_BAD_INPUT_DATA);
+
+    /* Test pointer aliasing where &I == &A. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&I, input_A), 0);
+    res = mbedtls_mpi_gcd_modinv_odd(&G, &I, /* A */ &I, &N);
+    TEST_EQUAL(res, return_code);
+    if (res == 0) {
+        TEST_ASSERT(sign_is_valid(&G));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
+        if (has_inverse) {
+            TEST_ASSERT(sign_is_valid(&I));
+            TEST_EQUAL(mbedtls_mpi_cmp_mpi(&I, &exp_I), 0);
+        }
+    }
+
+    /* Test pointer aliasing where &I == &N. This should fail. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&I, input_N), 0);
+    res = mbedtls_mpi_gcd_modinv_odd(&G, &I, &A, /* N */ &I);
+    TEST_EQUAL(res, MBEDTLS_ERR_MPI_BAD_INPUT_DATA);
+
+    /* Test pointer aliasing where &A == &N. This should fail. */
+    res = mbedtls_mpi_gcd_modinv_odd(&G, &I, &A, /* N */ &A);
+    TEST_EQUAL(res, MBEDTLS_ERR_MPI_BAD_INPUT_DATA);
+
+    /* Test G & I initialized to a number with more limbs than N. */
+    if (N.n > 0) {
+        TEST_EQUAL(mbedtls_mpi_grow(&G, N.n * 2), 0);
+        memset(G.p, 0x2d, G.n * sizeof(mbedtls_mpi_uint));
+        TEST_EQUAL(mbedtls_mpi_grow(&I, N.n * 2), 0);
+        memset(I.p, 0x2f, I.n * sizeof(mbedtls_mpi_uint));
+        res = mbedtls_mpi_gcd_modinv_odd(&G, &I, &A, &N);
+        TEST_EQUAL(res, return_code);
+        if (res == 0) {
+            TEST_ASSERT(sign_is_valid(&G));
+            TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
+            if (has_inverse) {
+                TEST_ASSERT(sign_is_valid(&I));
+                TEST_EQUAL(mbedtls_mpi_cmp_mpi(&I, &exp_I), 0);
+            }
+        }
+    }
+
+exit:
+    mbedtls_mpi_free(&G); mbedtls_mpi_free(&I); mbedtls_mpi_free(&A); mbedtls_mpi_free(&N);
+    mbedtls_mpi_free(&exp_G); mbedtls_mpi_free(&exp_I);
+}
+/* END_CASE */
+
+/* BEGIN_CASE */
+void mpi_gcd_modinv_odd_only_gcd(char *input_A, char *input_N,
+                                 char *result_G, int return_code)
+{
+    mbedtls_mpi G, A, N, exp_G;
+    int res;
+    mbedtls_mpi_init(&G); mbedtls_mpi_init(&A); mbedtls_mpi_init(&N);
+    mbedtls_mpi_init(&exp_G);
+    TEST_EQUAL(mbedtls_test_read_mpi(&A, input_A), 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&N, input_N), 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&exp_G, result_G), 0);
+
+    res = mbedtls_mpi_gcd_modinv_odd(&G, NULL, &A, &N);
+    TEST_EQUAL(res, return_code);
+    if (res == 0) {
+        TEST_ASSERT(sign_is_valid(&G));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
+    }
+
+    /* Test pointer aliasing where &G == &A. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&G, input_A), 0);
+    res = mbedtls_mpi_gcd_modinv_odd(&G, NULL, /* A */ &G, &N);
+    TEST_EQUAL(res, return_code);
+    if (res == 0) {
+        TEST_ASSERT(sign_is_valid(&G));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
+    }
+
+    /* Test pointer aliasing where &G == &N. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&G, input_N), 0);
+    res = mbedtls_mpi_gcd_modinv_odd(&G, NULL, &A, /* N */ &G);
+    TEST_EQUAL(res, return_code);
+    if (res == 0) {
+        TEST_ASSERT(sign_is_valid(&G));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
+    }
+
+    /* Test pointer aliasing where &A == &N. This should fail. */
+    res = mbedtls_mpi_gcd_modinv_odd(&G, NULL, &A, /* N */ &A);
+    TEST_EQUAL(res, MBEDTLS_ERR_MPI_BAD_INPUT_DATA);
+
+    /* Test G initialized to a number with more limbs than N. */
+    if (N.n > 0) {
+        TEST_EQUAL(mbedtls_mpi_grow(&G, N.n * 2), 0);
+        memset(G.p, 0x2b, G.n * sizeof(mbedtls_mpi_uint));
+        res = mbedtls_mpi_gcd_modinv_odd(&G, NULL, &A, &N);
+        TEST_EQUAL(res, return_code);
+        if (res == 0) {
+            TEST_ASSERT(sign_is_valid(&G));
+            TEST_EQUAL(mbedtls_mpi_cmp_mpi(&G, &exp_G), 0);
+        }
+    }
+
+exit:
+    mbedtls_mpi_free(&G); mbedtls_mpi_free(&A); mbedtls_mpi_free(&N);
+    mbedtls_mpi_free(&exp_G);
+}
+/* END_CASE */
+
+/* BEGIN_CASE */
+void mpi_gcd_modinv_odd_only_modinv(char *input_A, char *input_N,
+                                    char *result_I, int return_code)
+{
+    int has_inverse = strcmp(result_I, "no_inverse") ? 1 : 0;
+    mbedtls_mpi I, A, N, exp_I;
+    int res;
+    mbedtls_mpi_init(&I); mbedtls_mpi_init(&A); mbedtls_mpi_init(&N);
+    mbedtls_mpi_init(&exp_I);
+    TEST_EQUAL(mbedtls_test_read_mpi(&A, input_A), 0);
+    TEST_EQUAL(mbedtls_test_read_mpi(&N, input_N), 0);
+    /* If there is no inverse then the value returned in I will be
+     * indeterminate, and so not useful or possible to test. */
+    if (has_inverse) {
+        TEST_EQUAL(mbedtls_test_read_mpi(&exp_I, result_I), 0);
+    }
+
+    res = mbedtls_mpi_gcd_modinv_odd(NULL, &I, &A, &N);
+    TEST_EQUAL(res, return_code);
+    if (res == 0 && has_inverse) {
+        TEST_ASSERT(sign_is_valid(&I));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&I, &exp_I), 0);
+    }
+
+    /* Test pointer aliasing where &I == &A. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&I, input_A), 0);
+    res = mbedtls_mpi_gcd_modinv_odd(NULL, &I, /* A */ &I, &N);
+    TEST_EQUAL(res, return_code);
+    if (res == 0 && has_inverse) {
+        TEST_ASSERT(sign_is_valid(&I));
+        TEST_EQUAL(mbedtls_mpi_cmp_mpi(&I, &exp_I), 0);
+    }
+
+    /* Test pointer aliasing where &I == &N. This should fail. */
+    TEST_EQUAL(mbedtls_test_read_mpi(&I, input_N), 0);
+    res = mbedtls_mpi_gcd_modinv_odd(NULL, &I, &A, /* N */ &I);
+    TEST_EQUAL(res, MBEDTLS_ERR_MPI_BAD_INPUT_DATA);
+
+    /* Test pointer aliasing where &A == &N. This should fail. */
+    res = mbedtls_mpi_gcd_modinv_odd(NULL, &I, &A, /* N */ &A);
+    TEST_EQUAL(res, MBEDTLS_ERR_MPI_BAD_INPUT_DATA);
+
+    /* Test I initialized to a number with more limbs than N. */
+    if (N.n > 0) {
+        TEST_EQUAL(mbedtls_mpi_grow(&I, N.n * 2), 0);
+        memset(I.p, 0x29, I.n * sizeof(mbedtls_mpi_uint));
+        res = mbedtls_mpi_gcd_modinv_odd(NULL, &I, &A, &N);
+        TEST_EQUAL(res, return_code);
+        if (res == 0 && has_inverse) {
+            TEST_ASSERT(sign_is_valid(&I));
+            TEST_EQUAL(mbedtls_mpi_cmp_mpi(&I, &exp_I), 0);
+        }
+    }
+
+exit:
+    mbedtls_mpi_free(&I); mbedtls_mpi_free(&A); mbedtls_mpi_free(&N);
+    mbedtls_mpi_free(&exp_I);
+}
+/* END_CASE */
+
 /* BEGIN_CASE depends_on:MBEDTLS_GENPRIME */
 void mpi_is_prime(char *input_X, int div_result)
 {
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_bignum.generated.data mbedtls-3.6.5/tests/suites/test_suite_bignum.generated.data
--- mbedtls-3.6.4/tests/suites/test_suite_bignum.generated.data	2025-06-30 09:24:53.054757400 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_bignum.generated.data	2025-10-14 19:12:37.034222100 +0300
@@ -972,4 +972,4390 @@
 MPI compare (abs) #104 positive < positive
 mpi_cmp_abs:"2b5":"2b6":-1
 
+GCD #1 large positive GCD large positive : |A|=|B|, A odd, B odd
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361"
+
+GCD #2 large positive GCD large positive : |A|<|B|, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #3 large positive GCD positive : |A|>|B|, A odd, B odd
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"203265b387":"1"
+
+GCD #4 large positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"9bc8e63852":"1"
+
+GCD #5 large positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"100000000":"1"
+
+GCD #6 large positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"300000000":"1"
+
+GCD #7 large positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"500000000":"1"
+
+GCD #8 large positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"50000":"1"
+
+GCD #9 large positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"30000":"1"
+
+GCD #10 large positive GCD positive : |A|>|B|, A odd, B odd
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1":"1"
+
+GCD #11 large positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"2":"1"
+
+GCD #12 large positive GCD positive : |A|>|B|, A odd, B odd
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"3":"1"
+
+GCD #13 large positive GCD large negative : |A|=|B|, B<0, A odd, B odd
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361"
+
+GCD #14 large positive GCD large negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #15 large positive GCD negative : |A|>|B|, B<0, A odd, B odd
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-203265b387":"1"
+
+GCD #16 large positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-9bc8e63852":"1"
+
+GCD #17 large positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-100000000":"1"
+
+GCD #18 large positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-300000000":"1"
+
+GCD #19 large positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-500000000":"1"
+
+GCD #20 large positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-50000":"1"
+
+GCD #21 large positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-30000":"1"
+
+GCD #22 large positive GCD negative : |A|>|B|, B<0, A odd, B odd
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-1":"1"
+
+GCD #23 large positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-2":"1"
+
+GCD #24 large positive GCD negative : |A|>|B|, B<0, A odd, B odd
+mpi_gcd:"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-3":"1"
+
+GCD #25 large positive GCD large positive : |A|>|B|, A even, B odd
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #26 large positive GCD large positive : |A|=|B|, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e"
+
+GCD #27 large positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"203265b387":"1"
+
+GCD #28 large positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"9bc8e63852":"6"
+
+GCD #29 large positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"100000000":"2"
+
+GCD #30 large positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"300000000":"6"
+
+GCD #31 large positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"500000000":"a"
+
+GCD #32 large positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"50000":"a"
+
+GCD #33 large positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"30000":"6"
+
+GCD #34 large positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1":"1"
+
+GCD #35 large positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2":"2"
+
+GCD #36 large positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"3":"3"
+
+GCD #37 large positive GCD large negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #38 large positive GCD large negative : |A|=|B|, B<0, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e"
+
+GCD #39 large positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-203265b387":"1"
+
+GCD #40 large positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-9bc8e63852":"6"
+
+GCD #41 large positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-100000000":"2"
+
+GCD #42 large positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-300000000":"6"
+
+GCD #43 large positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-500000000":"a"
+
+GCD #44 large positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-50000":"a"
+
+GCD #45 large positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-30000":"6"
+
+GCD #46 large positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-1":"1"
+
+GCD #47 large positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-2":"2"
+
+GCD #48 large positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-3":"3"
+
+GCD #49 positive GCD large positive : |A|<|B|, A odd, B odd
+mpi_gcd:"203265b387":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #50 positive GCD large positive : |A|<|B|, A odd, B even
+mpi_gcd:"203265b387":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #51 positive GCD positive : |A|=|B|, A odd, B odd
+mpi_gcd:"203265b387":"203265b387":"203265b387"
+
+GCD #52 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"203265b387":"9bc8e63852":"13"
+
+GCD #53 positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"203265b387":"100000000":"1"
+
+GCD #54 positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"203265b387":"300000000":"1"
+
+GCD #55 positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"203265b387":"500000000":"1"
+
+GCD #56 positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"203265b387":"50000":"1"
+
+GCD #57 positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"203265b387":"30000":"1"
+
+GCD #58 positive GCD positive : |A|>|B|, A odd, B odd
+mpi_gcd:"203265b387":"1":"1"
+
+GCD #59 positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"203265b387":"2":"1"
+
+GCD #60 positive GCD positive : |A|>|B|, A odd, B odd
+mpi_gcd:"203265b387":"3":"1"
+
+GCD #61 positive GCD large negative : |A|<|B|, B<0, A odd, B odd
+mpi_gcd:"203265b387":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #62 positive GCD large negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"203265b387":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #63 positive GCD negative : |A|=|B|, B<0, A odd, B odd
+mpi_gcd:"203265b387":"-203265b387":"203265b387"
+
+GCD #64 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"203265b387":"-9bc8e63852":"13"
+
+GCD #65 positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"203265b387":"-100000000":"1"
+
+GCD #66 positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"203265b387":"-300000000":"1"
+
+GCD #67 positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"203265b387":"-500000000":"1"
+
+GCD #68 positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"203265b387":"-50000":"1"
+
+GCD #69 positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"203265b387":"-30000":"1"
+
+GCD #70 positive GCD negative : |A|>|B|, B<0, A odd, B odd
+mpi_gcd:"203265b387":"-1":"1"
+
+GCD #71 positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"203265b387":"-2":"1"
+
+GCD #72 positive GCD negative : |A|>|B|, B<0, A odd, B odd
+mpi_gcd:"203265b387":"-3":"1"
+
+GCD #73 positive GCD large positive : |A|<|B|, A even, B odd
+mpi_gcd:"9bc8e63852":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #74 positive GCD large positive : |A|<|B|, A even, B even
+mpi_gcd:"9bc8e63852":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #75 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"9bc8e63852":"203265b387":"13"
+
+GCD #76 positive GCD positive : |A|=|B|, A even, B even
+mpi_gcd:"9bc8e63852":"9bc8e63852":"9bc8e63852"
+
+GCD #77 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"9bc8e63852":"100000000":"2"
+
+GCD #78 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"9bc8e63852":"300000000":"6"
+
+GCD #79 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"9bc8e63852":"500000000":"2"
+
+GCD #80 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"9bc8e63852":"50000":"2"
+
+GCD #81 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"9bc8e63852":"30000":"6"
+
+GCD #82 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"9bc8e63852":"1":"1"
+
+GCD #83 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"9bc8e63852":"2":"2"
+
+GCD #84 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"9bc8e63852":"3":"3"
+
+GCD #85 positive GCD large negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"9bc8e63852":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #86 positive GCD large negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"9bc8e63852":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #87 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"9bc8e63852":"-203265b387":"13"
+
+GCD #88 positive GCD negative : |A|=|B|, B<0, A even, B even
+mpi_gcd:"9bc8e63852":"-9bc8e63852":"9bc8e63852"
+
+GCD #89 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"9bc8e63852":"-100000000":"2"
+
+GCD #90 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"9bc8e63852":"-300000000":"6"
+
+GCD #91 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"9bc8e63852":"-500000000":"2"
+
+GCD #92 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"9bc8e63852":"-50000":"2"
+
+GCD #93 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"9bc8e63852":"-30000":"6"
+
+GCD #94 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"9bc8e63852":"-1":"1"
+
+GCD #95 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"9bc8e63852":"-2":"2"
+
+GCD #96 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"9bc8e63852":"-3":"3"
+
+GCD #97 positive GCD large positive : |A|<|B|, A even, B odd
+mpi_gcd:"100000000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #98 positive GCD large positive : |A|<|B|, A even, B even
+mpi_gcd:"100000000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2"
+
+GCD #99 positive GCD positive : |A|<|B|, A even, B odd
+mpi_gcd:"100000000":"203265b387":"1"
+
+GCD #100 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"100000000":"9bc8e63852":"2"
+
+GCD #101 positive GCD positive : |A|=|B|, A even, B even
+mpi_gcd:"100000000":"100000000":"100000000"
+
+GCD #102 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"100000000":"300000000":"100000000"
+
+GCD #103 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"100000000":"500000000":"100000000"
+
+GCD #104 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"100000000":"50000":"10000"
+
+GCD #105 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"100000000":"30000":"10000"
+
+GCD #106 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"100000000":"1":"1"
+
+GCD #107 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"100000000":"2":"2"
+
+GCD #108 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"100000000":"3":"1"
+
+GCD #109 positive GCD large negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"100000000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #110 positive GCD large negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"100000000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2"
+
+GCD #111 positive GCD negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"100000000":"-203265b387":"1"
+
+GCD #112 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"100000000":"-9bc8e63852":"2"
+
+GCD #113 positive GCD negative : |A|=|B|, B<0, A even, B even
+mpi_gcd:"100000000":"-100000000":"100000000"
+
+GCD #114 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"100000000":"-300000000":"100000000"
+
+GCD #115 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"100000000":"-500000000":"100000000"
+
+GCD #116 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"100000000":"-50000":"10000"
+
+GCD #117 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"100000000":"-30000":"10000"
+
+GCD #118 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"100000000":"-1":"1"
+
+GCD #119 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"100000000":"-2":"2"
+
+GCD #120 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"100000000":"-3":"1"
+
+GCD #121 positive GCD large positive : |A|<|B|, A even, B odd
+mpi_gcd:"300000000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #122 positive GCD large positive : |A|<|B|, A even, B even
+mpi_gcd:"300000000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #123 positive GCD positive : |A|<|B|, A even, B odd
+mpi_gcd:"300000000":"203265b387":"1"
+
+GCD #124 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"300000000":"9bc8e63852":"6"
+
+GCD #125 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"300000000":"100000000":"100000000"
+
+GCD #126 positive GCD positive : |A|=|B|, A even, B even
+mpi_gcd:"300000000":"300000000":"300000000"
+
+GCD #127 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"300000000":"500000000":"100000000"
+
+GCD #128 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"300000000":"50000":"10000"
+
+GCD #129 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"300000000":"30000":"30000"
+
+GCD #130 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"300000000":"1":"1"
+
+GCD #131 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"300000000":"2":"2"
+
+GCD #132 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"300000000":"3":"3"
+
+GCD #133 positive GCD large negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"300000000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #134 positive GCD large negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"300000000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #135 positive GCD negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"300000000":"-203265b387":"1"
+
+GCD #136 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"300000000":"-9bc8e63852":"6"
+
+GCD #137 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"300000000":"-100000000":"100000000"
+
+GCD #138 positive GCD negative : |A|=|B|, B<0, A even, B even
+mpi_gcd:"300000000":"-300000000":"300000000"
+
+GCD #139 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"300000000":"-500000000":"100000000"
+
+GCD #140 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"300000000":"-50000":"10000"
+
+GCD #141 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"300000000":"-30000":"30000"
+
+GCD #142 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"300000000":"-1":"1"
+
+GCD #143 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"300000000":"-2":"2"
+
+GCD #144 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"300000000":"-3":"3"
+
+GCD #145 positive GCD large positive : |A|<|B|, A even, B odd
+mpi_gcd:"500000000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #146 positive GCD large positive : |A|<|B|, A even, B even
+mpi_gcd:"500000000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"a"
+
+GCD #147 positive GCD positive : |A|<|B|, A even, B odd
+mpi_gcd:"500000000":"203265b387":"1"
+
+GCD #148 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"500000000":"9bc8e63852":"2"
+
+GCD #149 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"500000000":"100000000":"100000000"
+
+GCD #150 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"500000000":"300000000":"100000000"
+
+GCD #151 positive GCD positive : |A|=|B|, A even, B even
+mpi_gcd:"500000000":"500000000":"500000000"
+
+GCD #152 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"500000000":"50000":"50000"
+
+GCD #153 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"500000000":"30000":"10000"
+
+GCD #154 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"500000000":"1":"1"
+
+GCD #155 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"500000000":"2":"2"
+
+GCD #156 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"500000000":"3":"1"
+
+GCD #157 positive GCD large negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"500000000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #158 positive GCD large negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"500000000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"a"
+
+GCD #159 positive GCD negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"500000000":"-203265b387":"1"
+
+GCD #160 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"500000000":"-9bc8e63852":"2"
+
+GCD #161 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"500000000":"-100000000":"100000000"
+
+GCD #162 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"500000000":"-300000000":"100000000"
+
+GCD #163 positive GCD negative : |A|=|B|, B<0, A even, B even
+mpi_gcd:"500000000":"-500000000":"500000000"
+
+GCD #164 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"500000000":"-50000":"50000"
+
+GCD #165 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"500000000":"-30000":"10000"
+
+GCD #166 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"500000000":"-1":"1"
+
+GCD #167 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"500000000":"-2":"2"
+
+GCD #168 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"500000000":"-3":"1"
+
+GCD #169 positive GCD large positive : |A|<|B|, A even, B odd
+mpi_gcd:"50000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #170 positive GCD large positive : |A|<|B|, A even, B even
+mpi_gcd:"50000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"a"
+
+GCD #171 positive GCD positive : |A|<|B|, A even, B odd
+mpi_gcd:"50000":"203265b387":"1"
+
+GCD #172 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"50000":"9bc8e63852":"2"
+
+GCD #173 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"50000":"100000000":"10000"
+
+GCD #174 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"50000":"300000000":"10000"
+
+GCD #175 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"50000":"500000000":"50000"
+
+GCD #176 positive GCD positive : |A|=|B|, A even, B even
+mpi_gcd:"50000":"50000":"50000"
+
+GCD #177 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"50000":"30000":"10000"
+
+GCD #178 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"50000":"1":"1"
+
+GCD #179 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"50000":"2":"2"
+
+GCD #180 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"50000":"3":"1"
+
+GCD #181 positive GCD large negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"50000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #182 positive GCD large negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"50000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"a"
+
+GCD #183 positive GCD negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"50000":"-203265b387":"1"
+
+GCD #184 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"50000":"-9bc8e63852":"2"
+
+GCD #185 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"50000":"-100000000":"10000"
+
+GCD #186 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"50000":"-300000000":"10000"
+
+GCD #187 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"50000":"-500000000":"50000"
+
+GCD #188 positive GCD negative : |A|=|B|, B<0, A even, B even
+mpi_gcd:"50000":"-50000":"50000"
+
+GCD #189 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"50000":"-30000":"10000"
+
+GCD #190 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"50000":"-1":"1"
+
+GCD #191 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"50000":"-2":"2"
+
+GCD #192 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"50000":"-3":"1"
+
+GCD #193 positive GCD large positive : |A|<|B|, A even, B odd
+mpi_gcd:"30000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #194 positive GCD large positive : |A|<|B|, A even, B even
+mpi_gcd:"30000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #195 positive GCD positive : |A|<|B|, A even, B odd
+mpi_gcd:"30000":"203265b387":"1"
+
+GCD #196 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"30000":"9bc8e63852":"6"
+
+GCD #197 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"30000":"100000000":"10000"
+
+GCD #198 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"30000":"300000000":"30000"
+
+GCD #199 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"30000":"500000000":"10000"
+
+GCD #200 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"30000":"50000":"10000"
+
+GCD #201 positive GCD positive : |A|=|B|, A even, B even
+mpi_gcd:"30000":"30000":"30000"
+
+GCD #202 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"30000":"1":"1"
+
+GCD #203 positive GCD positive : |A|>|B|, A even, B even
+mpi_gcd:"30000":"2":"2"
+
+GCD #204 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"30000":"3":"3"
+
+GCD #205 positive GCD large negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"30000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #206 positive GCD large negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"30000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #207 positive GCD negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"30000":"-203265b387":"1"
+
+GCD #208 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"30000":"-9bc8e63852":"6"
+
+GCD #209 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"30000":"-100000000":"10000"
+
+GCD #210 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"30000":"-300000000":"30000"
+
+GCD #211 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"30000":"-500000000":"10000"
+
+GCD #212 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"30000":"-50000":"10000"
+
+GCD #213 positive GCD negative : |A|=|B|, B<0, A even, B even
+mpi_gcd:"30000":"-30000":"30000"
+
+GCD #214 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"30000":"-1":"1"
+
+GCD #215 positive GCD negative : |A|>|B|, B<0, A even, B even
+mpi_gcd:"30000":"-2":"2"
+
+GCD #216 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"30000":"-3":"3"
+
+GCD #217 positive GCD large positive : |A|<|B|, A odd, B odd
+mpi_gcd:"1":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #218 positive GCD large positive : |A|<|B|, A odd, B even
+mpi_gcd:"1":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #219 positive GCD positive : |A|<|B|, A odd, B odd
+mpi_gcd:"1":"203265b387":"1"
+
+GCD #220 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"1":"9bc8e63852":"1"
+
+GCD #221 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"1":"100000000":"1"
+
+GCD #222 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"1":"300000000":"1"
+
+GCD #223 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"1":"500000000":"1"
+
+GCD #224 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"1":"50000":"1"
+
+GCD #225 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"1":"30000":"1"
+
+GCD #226 positive GCD positive : |A|=|B|, A odd, B odd
+mpi_gcd:"1":"1":"1"
+
+GCD #227 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"1":"2":"1"
+
+GCD #228 positive GCD positive : |A|<|B|, A odd, B odd
+mpi_gcd:"1":"3":"1"
+
+GCD #229 positive GCD large negative : |A|<|B|, B<0, A odd, B odd
+mpi_gcd:"1":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #230 positive GCD large negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"1":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #231 positive GCD negative : |A|<|B|, B<0, A odd, B odd
+mpi_gcd:"1":"-203265b387":"1"
+
+GCD #232 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"1":"-9bc8e63852":"1"
+
+GCD #233 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"1":"-100000000":"1"
+
+GCD #234 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"1":"-300000000":"1"
+
+GCD #235 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"1":"-500000000":"1"
+
+GCD #236 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"1":"-50000":"1"
+
+GCD #237 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"1":"-30000":"1"
+
+GCD #238 positive GCD negative : |A|=|B|, B<0, A odd, B odd
+mpi_gcd:"1":"-1":"1"
+
+GCD #239 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"1":"-2":"1"
+
+GCD #240 positive GCD negative : |A|<|B|, B<0, A odd, B odd
+mpi_gcd:"1":"-3":"1"
+
+GCD #241 positive GCD large positive : |A|<|B|, A even, B odd
+mpi_gcd:"2":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #242 positive GCD large positive : |A|<|B|, A even, B even
+mpi_gcd:"2":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2"
+
+GCD #243 positive GCD positive : |A|<|B|, A even, B odd
+mpi_gcd:"2":"203265b387":"1"
+
+GCD #244 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"2":"9bc8e63852":"2"
+
+GCD #245 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"2":"100000000":"2"
+
+GCD #246 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"2":"300000000":"2"
+
+GCD #247 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"2":"500000000":"2"
+
+GCD #248 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"2":"50000":"2"
+
+GCD #249 positive GCD positive : |A|<|B|, A even, B even
+mpi_gcd:"2":"30000":"2"
+
+GCD #250 positive GCD positive : |A|>|B|, A even, B odd
+mpi_gcd:"2":"1":"1"
+
+GCD #251 positive GCD positive : |A|=|B|, A even, B even
+mpi_gcd:"2":"2":"2"
+
+GCD #252 positive GCD positive : |A|<|B|, A even, B odd
+mpi_gcd:"2":"3":"1"
+
+GCD #253 positive GCD large negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"2":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #254 positive GCD large negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"2":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2"
+
+GCD #255 positive GCD negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"2":"-203265b387":"1"
+
+GCD #256 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"2":"-9bc8e63852":"2"
+
+GCD #257 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"2":"-100000000":"2"
+
+GCD #258 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"2":"-300000000":"2"
+
+GCD #259 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"2":"-500000000":"2"
+
+GCD #260 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"2":"-50000":"2"
+
+GCD #261 positive GCD negative : |A|<|B|, B<0, A even, B even
+mpi_gcd:"2":"-30000":"2"
+
+GCD #262 positive GCD negative : |A|>|B|, B<0, A even, B odd
+mpi_gcd:"2":"-1":"1"
+
+GCD #263 positive GCD negative : |A|=|B|, B<0, A even, B even
+mpi_gcd:"2":"-2":"2"
+
+GCD #264 positive GCD negative : |A|<|B|, B<0, A even, B odd
+mpi_gcd:"2":"-3":"1"
+
+GCD #265 positive GCD large positive : |A|<|B|, A odd, B odd
+mpi_gcd:"3":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #266 positive GCD large positive : |A|<|B|, A odd, B even
+mpi_gcd:"3":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"3"
+
+GCD #267 positive GCD positive : |A|<|B|, A odd, B odd
+mpi_gcd:"3":"203265b387":"1"
+
+GCD #268 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"3":"9bc8e63852":"3"
+
+GCD #269 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"3":"100000000":"1"
+
+GCD #270 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"3":"300000000":"3"
+
+GCD #271 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"3":"500000000":"1"
+
+GCD #272 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"3":"50000":"1"
+
+GCD #273 positive GCD positive : |A|<|B|, A odd, B even
+mpi_gcd:"3":"30000":"3"
+
+GCD #274 positive GCD positive : |A|>|B|, A odd, B odd
+mpi_gcd:"3":"1":"1"
+
+GCD #275 positive GCD positive : |A|>|B|, A odd, B even
+mpi_gcd:"3":"2":"1"
+
+GCD #276 positive GCD positive : |A|=|B|, A odd, B odd
+mpi_gcd:"3":"3":"3"
+
+GCD #277 positive GCD large negative : |A|<|B|, B<0, A odd, B odd
+mpi_gcd:"3":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #278 positive GCD large negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"3":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"3"
+
+GCD #279 positive GCD negative : |A|<|B|, B<0, A odd, B odd
+mpi_gcd:"3":"-203265b387":"1"
+
+GCD #280 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"3":"-9bc8e63852":"3"
+
+GCD #281 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"3":"-100000000":"1"
+
+GCD #282 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"3":"-300000000":"3"
+
+GCD #283 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"3":"-500000000":"1"
+
+GCD #284 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"3":"-50000":"1"
+
+GCD #285 positive GCD negative : |A|<|B|, B<0, A odd, B even
+mpi_gcd:"3":"-30000":"3"
+
+GCD #286 positive GCD negative : |A|>|B|, B<0, A odd, B odd
+mpi_gcd:"3":"-1":"1"
+
+GCD #287 positive GCD negative : |A|>|B|, B<0, A odd, B even
+mpi_gcd:"3":"-2":"1"
+
+GCD #288 positive GCD negative : |A|=|B|, B<0, A odd, B odd
+mpi_gcd:"3":"-3":"3"
+
+GCD #289 large negative GCD large positive : |A|=|B|, A<0, A odd, B odd
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361"
+
+GCD #290 large negative GCD large positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #291 large negative GCD positive : |A|>|B|, A<0, A odd, B odd
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"203265b387":"1"
+
+GCD #292 large negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"9bc8e63852":"1"
+
+GCD #293 large negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"100000000":"1"
+
+GCD #294 large negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"300000000":"1"
+
+GCD #295 large negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"500000000":"1"
+
+GCD #296 large negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"50000":"1"
+
+GCD #297 large negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"30000":"1"
+
+GCD #298 large negative GCD positive : |A|>|B|, A<0, A odd, B odd
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1":"1"
+
+GCD #299 large negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"2":"1"
+
+GCD #300 large negative GCD positive : |A|>|B|, A<0, A odd, B odd
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"3":"1"
+
+GCD #301 large negative GCD large negative : |A|=|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361"
+
+GCD #302 large negative GCD large negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #303 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-203265b387":"1"
+
+GCD #304 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-9bc8e63852":"1"
+
+GCD #305 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-100000000":"1"
+
+GCD #306 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-300000000":"1"
+
+GCD #307 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-500000000":"1"
+
+GCD #308 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-50000":"1"
+
+GCD #309 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-30000":"1"
+
+GCD #310 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-1":"1"
+
+GCD #311 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-2":"1"
+
+GCD #312 large negative GCD negative : |A|>|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"-3":"1"
+
+GCD #313 large negative GCD large positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #314 large negative GCD large positive : |A|=|B|, A<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e"
+
+GCD #315 large negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"203265b387":"1"
+
+GCD #316 large negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"9bc8e63852":"6"
+
+GCD #317 large negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"100000000":"2"
+
+GCD #318 large negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"300000000":"6"
+
+GCD #319 large negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"500000000":"a"
+
+GCD #320 large negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"50000":"a"
+
+GCD #321 large negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"30000":"6"
+
+GCD #322 large negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1":"1"
+
+GCD #323 large negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2":"2"
+
+GCD #324 large negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"3":"3"
+
+GCD #325 large negative GCD large negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #326 large negative GCD large negative : |A|=|B|, A<0, B<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e"
+
+GCD #327 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-203265b387":"1"
+
+GCD #328 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-9bc8e63852":"6"
+
+GCD #329 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-100000000":"2"
+
+GCD #330 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-300000000":"6"
+
+GCD #331 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-500000000":"a"
+
+GCD #332 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-50000":"a"
+
+GCD #333 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-30000":"6"
+
+GCD #334 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-1":"1"
+
+GCD #335 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-2":"2"
+
+GCD #336 large negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"-3":"3"
+
+GCD #337 negative GCD large positive : |A|<|B|, A<0, A odd, B odd
+mpi_gcd:"-203265b387":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #338 negative GCD large positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-203265b387":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #339 negative GCD positive : |A|=|B|, A<0, A odd, B odd
+mpi_gcd:"-203265b387":"203265b387":"203265b387"
+
+GCD #340 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-203265b387":"9bc8e63852":"13"
+
+GCD #341 negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-203265b387":"100000000":"1"
+
+GCD #342 negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-203265b387":"300000000":"1"
+
+GCD #343 negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-203265b387":"500000000":"1"
+
+GCD #344 negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-203265b387":"50000":"1"
+
+GCD #345 negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-203265b387":"30000":"1"
+
+GCD #346 negative GCD positive : |A|>|B|, A<0, A odd, B odd
+mpi_gcd:"-203265b387":"1":"1"
+
+GCD #347 negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-203265b387":"2":"1"
+
+GCD #348 negative GCD positive : |A|>|B|, A<0, A odd, B odd
+mpi_gcd:"-203265b387":"3":"1"
+
+GCD #349 negative GCD large negative : |A|<|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-203265b387":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #350 negative GCD large negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-203265b387":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #351 negative GCD negative : |A|=|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-203265b387":"-203265b387":"203265b387"
+
+GCD #352 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-203265b387":"-9bc8e63852":"13"
+
+GCD #353 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-203265b387":"-100000000":"1"
+
+GCD #354 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-203265b387":"-300000000":"1"
+
+GCD #355 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-203265b387":"-500000000":"1"
+
+GCD #356 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-203265b387":"-50000":"1"
+
+GCD #357 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-203265b387":"-30000":"1"
+
+GCD #358 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-203265b387":"-1":"1"
+
+GCD #359 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-203265b387":"-2":"1"
+
+GCD #360 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-203265b387":"-3":"1"
+
+GCD #361 negative GCD large positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-9bc8e63852":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #362 negative GCD large positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-9bc8e63852":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #363 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-9bc8e63852":"203265b387":"13"
+
+GCD #364 negative GCD positive : |A|=|B|, A<0, A even, B even
+mpi_gcd:"-9bc8e63852":"9bc8e63852":"9bc8e63852"
+
+GCD #365 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-9bc8e63852":"100000000":"2"
+
+GCD #366 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-9bc8e63852":"300000000":"6"
+
+GCD #367 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-9bc8e63852":"500000000":"2"
+
+GCD #368 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-9bc8e63852":"50000":"2"
+
+GCD #369 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-9bc8e63852":"30000":"6"
+
+GCD #370 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-9bc8e63852":"1":"1"
+
+GCD #371 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-9bc8e63852":"2":"2"
+
+GCD #372 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-9bc8e63852":"3":"3"
+
+GCD #373 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-9bc8e63852":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #374 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-9bc8e63852":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #375 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-9bc8e63852":"-203265b387":"13"
+
+GCD #376 negative GCD negative : |A|=|B|, A<0, B<0, A even, B even
+mpi_gcd:"-9bc8e63852":"-9bc8e63852":"9bc8e63852"
+
+GCD #377 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-9bc8e63852":"-100000000":"2"
+
+GCD #378 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-9bc8e63852":"-300000000":"6"
+
+GCD #379 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-9bc8e63852":"-500000000":"2"
+
+GCD #380 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-9bc8e63852":"-50000":"2"
+
+GCD #381 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-9bc8e63852":"-30000":"6"
+
+GCD #382 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-9bc8e63852":"-1":"1"
+
+GCD #383 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-9bc8e63852":"-2":"2"
+
+GCD #384 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-9bc8e63852":"-3":"3"
+
+GCD #385 negative GCD large positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-100000000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #386 negative GCD large positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-100000000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2"
+
+GCD #387 negative GCD positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-100000000":"203265b387":"1"
+
+GCD #388 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-100000000":"9bc8e63852":"2"
+
+GCD #389 negative GCD positive : |A|=|B|, A<0, A even, B even
+mpi_gcd:"-100000000":"100000000":"100000000"
+
+GCD #390 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-100000000":"300000000":"100000000"
+
+GCD #391 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-100000000":"500000000":"100000000"
+
+GCD #392 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-100000000":"50000":"10000"
+
+GCD #393 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-100000000":"30000":"10000"
+
+GCD #394 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-100000000":"1":"1"
+
+GCD #395 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-100000000":"2":"2"
+
+GCD #396 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-100000000":"3":"1"
+
+GCD #397 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-100000000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #398 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-100000000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2"
+
+GCD #399 negative GCD negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-100000000":"-203265b387":"1"
+
+GCD #400 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-100000000":"-9bc8e63852":"2"
+
+GCD #401 negative GCD negative : |A|=|B|, A<0, B<0, A even, B even
+mpi_gcd:"-100000000":"-100000000":"100000000"
+
+GCD #402 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-100000000":"-300000000":"100000000"
+
+GCD #403 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-100000000":"-500000000":"100000000"
+
+GCD #404 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-100000000":"-50000":"10000"
+
+GCD #405 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-100000000":"-30000":"10000"
+
+GCD #406 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-100000000":"-1":"1"
+
+GCD #407 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-100000000":"-2":"2"
+
+GCD #408 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-100000000":"-3":"1"
+
+GCD #409 negative GCD large positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-300000000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #410 negative GCD large positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-300000000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #411 negative GCD positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-300000000":"203265b387":"1"
+
+GCD #412 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-300000000":"9bc8e63852":"6"
+
+GCD #413 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-300000000":"100000000":"100000000"
+
+GCD #414 negative GCD positive : |A|=|B|, A<0, A even, B even
+mpi_gcd:"-300000000":"300000000":"300000000"
+
+GCD #415 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-300000000":"500000000":"100000000"
+
+GCD #416 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-300000000":"50000":"10000"
+
+GCD #417 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-300000000":"30000":"30000"
+
+GCD #418 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-300000000":"1":"1"
+
+GCD #419 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-300000000":"2":"2"
+
+GCD #420 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-300000000":"3":"3"
+
+GCD #421 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-300000000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #422 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-300000000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #423 negative GCD negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-300000000":"-203265b387":"1"
+
+GCD #424 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-300000000":"-9bc8e63852":"6"
+
+GCD #425 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-300000000":"-100000000":"100000000"
+
+GCD #426 negative GCD negative : |A|=|B|, A<0, B<0, A even, B even
+mpi_gcd:"-300000000":"-300000000":"300000000"
+
+GCD #427 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-300000000":"-500000000":"100000000"
+
+GCD #428 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-300000000":"-50000":"10000"
+
+GCD #429 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-300000000":"-30000":"30000"
+
+GCD #430 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-300000000":"-1":"1"
+
+GCD #431 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-300000000":"-2":"2"
+
+GCD #432 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-300000000":"-3":"3"
+
+GCD #433 negative GCD large positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-500000000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #434 negative GCD large positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-500000000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"a"
+
+GCD #435 negative GCD positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-500000000":"203265b387":"1"
+
+GCD #436 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-500000000":"9bc8e63852":"2"
+
+GCD #437 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-500000000":"100000000":"100000000"
+
+GCD #438 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-500000000":"300000000":"100000000"
+
+GCD #439 negative GCD positive : |A|=|B|, A<0, A even, B even
+mpi_gcd:"-500000000":"500000000":"500000000"
+
+GCD #440 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-500000000":"50000":"50000"
+
+GCD #441 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-500000000":"30000":"10000"
+
+GCD #442 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-500000000":"1":"1"
+
+GCD #443 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-500000000":"2":"2"
+
+GCD #444 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-500000000":"3":"1"
+
+GCD #445 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-500000000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #446 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-500000000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"a"
+
+GCD #447 negative GCD negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-500000000":"-203265b387":"1"
+
+GCD #448 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-500000000":"-9bc8e63852":"2"
+
+GCD #449 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-500000000":"-100000000":"100000000"
+
+GCD #450 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-500000000":"-300000000":"100000000"
+
+GCD #451 negative GCD negative : |A|=|B|, A<0, B<0, A even, B even
+mpi_gcd:"-500000000":"-500000000":"500000000"
+
+GCD #452 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-500000000":"-50000":"50000"
+
+GCD #453 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-500000000":"-30000":"10000"
+
+GCD #454 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-500000000":"-1":"1"
+
+GCD #455 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-500000000":"-2":"2"
+
+GCD #456 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-500000000":"-3":"1"
+
+GCD #457 negative GCD large positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-50000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #458 negative GCD large positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-50000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"a"
+
+GCD #459 negative GCD positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-50000":"203265b387":"1"
+
+GCD #460 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-50000":"9bc8e63852":"2"
+
+GCD #461 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-50000":"100000000":"10000"
+
+GCD #462 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-50000":"300000000":"10000"
+
+GCD #463 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-50000":"500000000":"50000"
+
+GCD #464 negative GCD positive : |A|=|B|, A<0, A even, B even
+mpi_gcd:"-50000":"50000":"50000"
+
+GCD #465 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-50000":"30000":"10000"
+
+GCD #466 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-50000":"1":"1"
+
+GCD #467 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-50000":"2":"2"
+
+GCD #468 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-50000":"3":"1"
+
+GCD #469 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-50000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #470 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-50000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"a"
+
+GCD #471 negative GCD negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-50000":"-203265b387":"1"
+
+GCD #472 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-50000":"-9bc8e63852":"2"
+
+GCD #473 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-50000":"-100000000":"10000"
+
+GCD #474 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-50000":"-300000000":"10000"
+
+GCD #475 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-50000":"-500000000":"50000"
+
+GCD #476 negative GCD negative : |A|=|B|, A<0, B<0, A even, B even
+mpi_gcd:"-50000":"-50000":"50000"
+
+GCD #477 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-50000":"-30000":"10000"
+
+GCD #478 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-50000":"-1":"1"
+
+GCD #479 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-50000":"-2":"2"
+
+GCD #480 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-50000":"-3":"1"
+
+GCD #481 negative GCD large positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-30000":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #482 negative GCD large positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-30000":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #483 negative GCD positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-30000":"203265b387":"1"
+
+GCD #484 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-30000":"9bc8e63852":"6"
+
+GCD #485 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-30000":"100000000":"10000"
+
+GCD #486 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-30000":"300000000":"30000"
+
+GCD #487 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-30000":"500000000":"10000"
+
+GCD #488 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-30000":"50000":"10000"
+
+GCD #489 negative GCD positive : |A|=|B|, A<0, A even, B even
+mpi_gcd:"-30000":"30000":"30000"
+
+GCD #490 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-30000":"1":"1"
+
+GCD #491 negative GCD positive : |A|>|B|, A<0, A even, B even
+mpi_gcd:"-30000":"2":"2"
+
+GCD #492 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-30000":"3":"3"
+
+GCD #493 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-30000":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #494 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-30000":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"6"
+
+GCD #495 negative GCD negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-30000":"-203265b387":"1"
+
+GCD #496 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-30000":"-9bc8e63852":"6"
+
+GCD #497 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-30000":"-100000000":"10000"
+
+GCD #498 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-30000":"-300000000":"30000"
+
+GCD #499 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-30000":"-500000000":"10000"
+
+GCD #500 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-30000":"-50000":"10000"
+
+GCD #501 negative GCD negative : |A|=|B|, A<0, B<0, A even, B even
+mpi_gcd:"-30000":"-30000":"30000"
+
+GCD #502 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-30000":"-1":"1"
+
+GCD #503 negative GCD negative : |A|>|B|, A<0, B<0, A even, B even
+mpi_gcd:"-30000":"-2":"2"
+
+GCD #504 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-30000":"-3":"3"
+
+GCD #505 negative GCD large positive : |A|<|B|, A<0, A odd, B odd
+mpi_gcd:"-1":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #506 negative GCD large positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-1":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #507 negative GCD positive : |A|<|B|, A<0, A odd, B odd
+mpi_gcd:"-1":"203265b387":"1"
+
+GCD #508 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-1":"9bc8e63852":"1"
+
+GCD #509 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-1":"100000000":"1"
+
+GCD #510 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-1":"300000000":"1"
+
+GCD #511 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-1":"500000000":"1"
+
+GCD #512 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-1":"50000":"1"
+
+GCD #513 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-1":"30000":"1"
+
+GCD #514 negative GCD positive : |A|=|B|, A<0, A odd, B odd
+mpi_gcd:"-1":"1":"1"
+
+GCD #515 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-1":"2":"1"
+
+GCD #516 negative GCD positive : |A|<|B|, A<0, A odd, B odd
+mpi_gcd:"-1":"3":"1"
+
+GCD #517 negative GCD large negative : |A|<|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-1":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #518 negative GCD large negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-1":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"1"
+
+GCD #519 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-1":"-203265b387":"1"
+
+GCD #520 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-1":"-9bc8e63852":"1"
+
+GCD #521 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-1":"-100000000":"1"
+
+GCD #522 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-1":"-300000000":"1"
+
+GCD #523 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-1":"-500000000":"1"
+
+GCD #524 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-1":"-50000":"1"
+
+GCD #525 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-1":"-30000":"1"
+
+GCD #526 negative GCD negative : |A|=|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-1":"-1":"1"
+
+GCD #527 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-1":"-2":"1"
+
+GCD #528 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-1":"-3":"1"
+
+GCD #529 negative GCD large positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-2":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #530 negative GCD large positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-2":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2"
+
+GCD #531 negative GCD positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-2":"203265b387":"1"
+
+GCD #532 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-2":"9bc8e63852":"2"
+
+GCD #533 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-2":"100000000":"2"
+
+GCD #534 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-2":"300000000":"2"
+
+GCD #535 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-2":"500000000":"2"
+
+GCD #536 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-2":"50000":"2"
+
+GCD #537 negative GCD positive : |A|<|B|, A<0, A even, B even
+mpi_gcd:"-2":"30000":"2"
+
+GCD #538 negative GCD positive : |A|>|B|, A<0, A even, B odd
+mpi_gcd:"-2":"1":"1"
+
+GCD #539 negative GCD positive : |A|=|B|, A<0, A even, B even
+mpi_gcd:"-2":"2":"2"
+
+GCD #540 negative GCD positive : |A|<|B|, A<0, A even, B odd
+mpi_gcd:"-2":"3":"1"
+
+GCD #541 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-2":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #542 negative GCD large negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-2":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"2"
+
+GCD #543 negative GCD negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-2":"-203265b387":"1"
+
+GCD #544 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-2":"-9bc8e63852":"2"
+
+GCD #545 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-2":"-100000000":"2"
+
+GCD #546 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-2":"-300000000":"2"
+
+GCD #547 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-2":"-500000000":"2"
+
+GCD #548 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-2":"-50000":"2"
+
+GCD #549 negative GCD negative : |A|<|B|, A<0, B<0, A even, B even
+mpi_gcd:"-2":"-30000":"2"
+
+GCD #550 negative GCD negative : |A|>|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-2":"-1":"1"
+
+GCD #551 negative GCD negative : |A|=|B|, A<0, B<0, A even, B even
+mpi_gcd:"-2":"-2":"2"
+
+GCD #552 negative GCD negative : |A|<|B|, A<0, B<0, A even, B odd
+mpi_gcd:"-2":"-3":"1"
+
+GCD #553 negative GCD large positive : |A|<|B|, A<0, A odd, B odd
+mpi_gcd:"-3":"3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #554 negative GCD large positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-3":"b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"3"
+
+GCD #555 negative GCD positive : |A|<|B|, A<0, A odd, B odd
+mpi_gcd:"-3":"203265b387":"1"
+
+GCD #556 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-3":"9bc8e63852":"3"
+
+GCD #557 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-3":"100000000":"1"
+
+GCD #558 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-3":"300000000":"3"
+
+GCD #559 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-3":"500000000":"1"
+
+GCD #560 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-3":"50000":"1"
+
+GCD #561 negative GCD positive : |A|<|B|, A<0, A odd, B even
+mpi_gcd:"-3":"30000":"3"
+
+GCD #562 negative GCD positive : |A|>|B|, A<0, A odd, B odd
+mpi_gcd:"-3":"1":"1"
+
+GCD #563 negative GCD positive : |A|>|B|, A<0, A odd, B even
+mpi_gcd:"-3":"2":"1"
+
+GCD #564 negative GCD positive : |A|=|B|, A<0, A odd, B odd
+mpi_gcd:"-3":"3":"3"
+
+GCD #565 negative GCD large negative : |A|<|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-3":"-3c094fd6b36ee4902c8ba84d13a401def90a2130116dad3361":"1"
+
+GCD #566 negative GCD large negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3":"-b2b06ebe14a185a83d5d2d7bddd1dd0e05e800d6b914fbed4e":"3"
+
+GCD #567 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-3":"-203265b387":"1"
+
+GCD #568 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3":"-9bc8e63852":"3"
+
+GCD #569 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3":"-100000000":"1"
+
+GCD #570 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3":"-300000000":"3"
+
+GCD #571 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3":"-500000000":"1"
+
+GCD #572 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3":"-50000":"1"
+
+GCD #573 negative GCD negative : |A|<|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3":"-30000":"3"
+
+GCD #574 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-3":"-1":"1"
+
+GCD #575 negative GCD negative : |A|>|B|, A<0, B<0, A odd, B even
+mpi_gcd:"-3":"-2":"1"
+
+GCD #576 negative GCD negative : |A|=|B|, A<0, B<0, A odd, B odd
+mpi_gcd:"-3":"-3":"3"
+
+GCD & mod inv #1 large positive GCD & ^-1 mod large positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #2 large positive GCD & ^-1 mod large positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"258e2368a7965a953f1b588f9077370cf7262028a530e0702c":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #3 large positive GCD & ^-1 mod large negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #4 large positive GCD & ^-1 mod large positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"7da9ec44f42e6311c56a":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #5 large positive GCD & ^-1 mod large positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"cdbcce3f763819345cfb":"1":"2e7811a90024ebf5c83a":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #6 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"100000000":"8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #7 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"300000000":"18":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #8 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"500000000":"8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #9 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"50000":"8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #10 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"30000":"18":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #11 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #12 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #13 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"3":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #14 large positive GCD & ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #15 large positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"00":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #16 large positive GCD & ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #17 large positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":"137af6f3b3904ddf2718e2a89b655a3029b4dd9984c3d31c15":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #18 large positive GCD & ^-1 mod large positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"no_inverse":0
+
+GCD & mod inv #19 large positive GCD & ^-1 mod large negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #20 large positive GCD & ^-1 mod large positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"7da9ec44f42e6311c56a":"1":"5018c1f533208620c869":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #21 large positive GCD & ^-1 mod large positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"cdbcce3f763819345cfb":"1":"8dc54080734c2fbeecb5":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #22 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"100000000":"1":"1d7441dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #23 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"300000000":"1":"21d7441dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #24 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"500000000":"1":"21d7441dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #25 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"50000":"1":"241dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #26 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"30000":"1":"41dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #27 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #28 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"2":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #29 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"3":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #30 large positive GCD & ^-1 mod 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #31 large positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"00":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #32 large positive GCD & ^-1 mod negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #33 large negative GCD & ^-1 mod large positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":"57a9d91b6c1475a7c2c7116d25fe35c9a893310dc5d665b153":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #34 large negative GCD & ^-1 mod large positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"234b402ff60f7d117cf1e856da3b77e9933b9e074a1c006b68":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #35 large negative GCD & ^-1 mod large negative : |A|=|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #36 large negative GCD & ^-1 mod large positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"7da9ec44f42e6311c56a":"1":"65b3ec5f1d29b526c389":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #37 large negative GCD & ^-1 mod large positive : |A|>|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"cdbcce3f763819345cfb":"1":"439794d60798ac185902":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #38 large negative GCD & ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"100000000":"1":"8a23c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #39 large negative GCD & ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"300000000":"1":"28a23c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #40 large negative GCD & ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"500000000":"1":"48a23c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #41 large negative GCD & ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"50000":"1":"2c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #42 large negative GCD & ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"30000":"1":"1c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #43 large negative GCD & ^-1 mod positive : |A|>|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #44 large negative GCD & ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"2":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #45 large negative GCD & ^-1 mod positive : |A|>|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"3":"1":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #46 large negative GCD & ^-1 mod 0 (null) : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #47 large negative GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"00":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #48 large negative GCD & ^-1 mod negative : |A|>|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #49 large positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #50 large positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"f1731829032e770ea74a8cf018bfcbafbd8d79a41250f0eaf":0
+
+GCD & mod inv #51 large positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #52 large positive GCD & ^-1 mod large positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"7da9ec44f42e6311c56a":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #53 large positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"cdbcce3f763819345cfb":"1":"a3837a94e7490299a239":0
+
+GCD & mod inv #54 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"100000000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #55 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"300000000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #56 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"500000000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #57 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"50000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #58 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"30000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #59 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #60 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #61 large positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"3":"1":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #62 large positive GCD & ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #63 large positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"00":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #64 large positive GCD & ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"7da9ec44f42e6311c56a":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #65 large positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":"9a87f079dd0b6d0310d871d3ea819aa171499489613e8e393b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #66 large positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"cf070ca50f644be5faf8659554773f37ed7e6b0ea5642fdcd":0
+
+GCD & mod inv #67 large positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #68 large positive GCD & ^-1 mod large positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"7da9ec44f42e6311c56a":"1":"19ca4c94ff1a0f2e70ef":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #69 large positive GCD & ^-1 mod large positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"cdbcce3f763819345cfb":"cdbcce3f763819345cfb":"no_inverse":0
+
+GCD & mod inv #70 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"100000000":"1":"d4274e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #71 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"300000000":"1":"d4274e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #72 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"500000000":"1":"1d4274e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #73 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"50000":"1":"24e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #74 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"30000":"1":"24e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #75 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #76 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"2":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #77 large positive GCD & ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"3":"1":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #78 large positive GCD & ^-1 mod 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"":"cdbcce3f763819345cfb":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #79 large positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"00":"cdbcce3f763819345cfb":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #80 large positive GCD & ^-1 mod negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"cdbcce3f763819345cfb":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #81 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"100000000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #82 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"100000000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"24d40c2391c4bd8bcdd0fd31396b2763922073affecdfabbe7":0
+
+GCD & mod inv #83 positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"100000000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #84 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"100000000":"7da9ec44f42e6311c56a":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #85 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"100000000":"cdbcce3f763819345cfb":"1":"233cdcd6f932351f8426":0
+
+GCD & mod inv #86 positive GCD & ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_both:"100000000":"100000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #87 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"100000000":"300000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #88 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"100000000":"500000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #89 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"100000000":"50000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #90 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"100000000":"30000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #91 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"100000000":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #92 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"100000000":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #93 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"100000000":"3":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #94 positive GCD & ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"100000000":"":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #95 positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"100000000":"00":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #96 positive GCD & ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"100000000":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #97 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"300000000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"18":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #98 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"300000000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"c46aeb685ec3f2e99f05465bdce6276860ad13aaa44a8e94d":0
+
+GCD & mod inv #99 positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"300000000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #100 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"300000000":"7da9ec44f42e6311c56a":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #101 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"300000000":"cdbcce3f763819345cfb":"1":"94e77dc74c8b77d814b4":0
+
+GCD & mod inv #102 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"300000000":"100000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #103 positive GCD & ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_both:"300000000":"300000000":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #104 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"300000000":"500000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #105 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"300000000":"50000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #106 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"300000000":"30000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #107 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"300000000":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #108 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"300000000":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #109 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"300000000":"3":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #110 positive GCD & ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"300000000":"":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #111 positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"300000000":"00":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #112 positive GCD & ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"300000000":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #113 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"500000000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #114 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"500000000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"180323bf1429087d023d6c00ab4de645a865be2ceabf57cb5d":0
+
+GCD & mod inv #115 positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"500000000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #116 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"500000000":"7da9ec44f42e6311c56a":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #117 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"500000000":"cdbcce3f763819345cfb":"1":"827d74b778c54cf2856b":0
+
+GCD & mod inv #118 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"500000000":"100000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #119 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"500000000":"300000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #120 positive GCD & ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_both:"500000000":"500000000":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #121 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"500000000":"50000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #122 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"500000000":"30000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #123 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"500000000":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #124 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"500000000":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #125 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"500000000":"3":"1":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #126 positive GCD & ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"500000000":"":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #127 positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"500000000":"00":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #128 positive GCD & ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"500000000":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #129 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"50000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #130 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"50000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"16d4186602beb2138cf77217d733a62f0184b6bc715a544847":0
+
+GCD & mod inv #131 positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"50000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #132 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"50000":"7da9ec44f42e6311c56a":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #133 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"50000":"cdbcce3f763819345cfb":"1":"6edf94a86466215a05d6":0
+
+GCD & mod inv #134 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"50000":"100000000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #135 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"50000":"300000000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #136 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"50000":"500000000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #137 positive GCD & ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_both:"50000":"50000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #138 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"50000":"30000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #139 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"50000":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #140 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"50000":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #141 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"50000":"3":"1":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #142 positive GCD & ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"50000":"":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #143 positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"50000":"00":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #144 positive GCD & ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"50000":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #145 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"30000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"18":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #146 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"30000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"260c28aa049328cb4047137d115614f90287db3a1241372321":0
+
+GCD & mod inv #147 positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"30000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #148 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"30000":"7da9ec44f42e6311c56a":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #149 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"30000":"cdbcce3f763819345cfb":"1":"2fa16e43adda26c87668":0
+
+GCD & mod inv #150 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"30000":"100000000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #151 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"30000":"300000000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #152 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"30000":"500000000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #153 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"30000":"50000":"10000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #154 positive GCD & ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_both:"30000":"30000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #155 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"30000":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #156 positive GCD & ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_both:"30000":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #157 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"30000":"3":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #158 positive GCD & ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"30000":"":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #159 positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"30000":"00":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #160 positive GCD & ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"30000":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #161 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"1":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #162 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"1":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"1":0
+
+GCD & mod inv #163 positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"1":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #164 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"1":"7da9ec44f42e6311c56a":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #165 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"1":"cdbcce3f763819345cfb":"1":"1":0
+
+GCD & mod inv #166 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"1":"100000000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #167 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"1":"300000000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #168 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"1":"500000000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #169 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"1":"50000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #170 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"1":"30000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #171 positive GCD & ^-1 mod positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"1":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #172 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"1":"2":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #173 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"1":"3":"1":"1":0
+
+GCD & mod inv #174 positive GCD & ^-1 mod 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_both:"1":"":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #175 positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_both:"1":"00":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #176 positive GCD & ^-1 mod negative : |A|=|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"1":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #177 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"2":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #178 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"2":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"14cee9a5f4c21b394f5887b487c695fe2df710cc25bbaf0f3b":0
+
+GCD & mod inv #179 positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"2":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #180 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"2":"7da9ec44f42e6311c56a":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #181 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"2":"cdbcce3f763819345cfb":"1":"66de671fbb1c0c9a2e7e":0
+
+GCD & mod inv #182 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"2":"100000000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #183 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"2":"300000000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #184 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"2":"500000000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #185 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"2":"50000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #186 positive GCD & ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_both:"2":"30000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #187 positive GCD & ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"2":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #188 positive GCD & ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_both:"2":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #189 positive GCD & ^-1 mod positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"2":"3":"1":"2":0
+
+GCD & mod inv #190 positive GCD & ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"2":"":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #191 positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_both:"2":"00":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #192 positive GCD & ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_both:"2":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #193 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"3":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #194 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"3":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"1bbe8cdd4658244c69cb5f9b5fb372a83d496bbadcfa3ebef9":0
+
+GCD & mod inv #195 positive GCD & ^-1 mod large negative : |A|<|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"3":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #196 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"3":"7da9ec44f42e6311c56a":"1":"29e34ec1a6ba2105ec79":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #197 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"3":"cdbcce3f763819345cfb":"1":"449444bfd212b3117454":0
+
+GCD & mod inv #198 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"3":"100000000":"1":"aaaaaaab":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #199 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"3":"300000000":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #200 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"3":"500000000":"1":"1aaaaaaab":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #201 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"3":"50000":"1":"1aaab":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #202 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"3":"30000":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #203 positive GCD & ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"3":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #204 positive GCD & ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_both:"3":"2":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #205 positive GCD & ^-1 mod positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"3":"3":"3":"no_inverse":0
+
+GCD & mod inv #206 positive GCD & ^-1 mod 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_both:"3":"":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #207 positive GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_both:"3":"00":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #208 positive GCD & ^-1 mod negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"3":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #209 0 (null) GCD & ^-1 mod large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #210 0 (null) GCD & ^-1 mod large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_both:"":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"no_inverse":0
+
+GCD & mod inv #211 0 (null) GCD & ^-1 mod large negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_both:"":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #212 0 (null) GCD & ^-1 mod large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"":"7da9ec44f42e6311c56a":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #213 0 (null) GCD & ^-1 mod large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_both:"":"cdbcce3f763819345cfb":"cdbcce3f763819345cfb":"no_inverse":0
+
+GCD & mod inv #214 0 (null) GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"":"100000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #215 0 (null) GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"":"300000000":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #216 0 (null) GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"":"500000000":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #217 0 (null) GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"":"50000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #218 0 (null) GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"":"30000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #219 0 (null) GCD & ^-1 mod positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_both:"":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #220 0 (null) GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #221 0 (null) GCD & ^-1 mod positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_both:"":"3":"3":"no_inverse":0
+
+GCD & mod inv #222 0 (null) GCD & ^-1 mod 0 (null) : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_both:"":"":"0":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #223 0 (null) GCD & ^-1 mod positive with leading zero limb : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_both:"":"00":"0":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #224 0 (null) GCD & ^-1 mod negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_both:"":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #225 positive with leading zero limb GCD & ^-1 mod large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"00":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #226 positive with leading zero limb GCD & ^-1 mod large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_both:"00":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"no_inverse":0
+
+GCD & mod inv #227 positive with leading zero limb GCD & ^-1 mod large negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_both:"00":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #228 positive with leading zero limb GCD & ^-1 mod large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"00":"7da9ec44f42e6311c56a":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #229 positive with leading zero limb GCD & ^-1 mod large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_both:"00":"cdbcce3f763819345cfb":"cdbcce3f763819345cfb":"no_inverse":0
+
+GCD & mod inv #230 positive with leading zero limb GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"00":"100000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #231 positive with leading zero limb GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"00":"300000000":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #232 positive with leading zero limb GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"00":"500000000":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #233 positive with leading zero limb GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"00":"50000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #234 positive with leading zero limb GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"00":"30000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #235 positive with leading zero limb GCD & ^-1 mod positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_both:"00":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #236 positive with leading zero limb GCD & ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_both:"00":"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #237 positive with leading zero limb GCD & ^-1 mod positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_both:"00":"3":"3":"no_inverse":0
+
+GCD & mod inv #238 positive with leading zero limb GCD & ^-1 mod 0 (null) : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_both:"00":"":"0":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #239 positive with leading zero limb GCD & ^-1 mod positive with leading zero limb : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_both:"00":"00":"0":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #240 positive with leading zero limb GCD & ^-1 mod negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_both:"00":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #241 negative GCD & ^-1 mod large positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-1":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed7":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #242 negative GCD & ^-1 mod large positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-1":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e74":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #243 negative GCD & ^-1 mod large negative : |A|<|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-1":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #244 negative GCD & ^-1 mod large positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-1":"7da9ec44f42e6311c56a":"1":"7da9ec44f42e6311c569":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #245 negative GCD & ^-1 mod large positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-1":"cdbcce3f763819345cfb":"1":"cdbcce3f763819345cfa":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #246 negative GCD & ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-1":"100000000":"1":"ffffffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #247 negative GCD & ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-1":"300000000":"1":"2ffffffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #248 negative GCD & ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-1":"500000000":"1":"4ffffffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #249 negative GCD & ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-1":"50000":"1":"4ffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #250 negative GCD & ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-1":"30000":"1":"2ffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #251 negative GCD & ^-1 mod positive : |A|=|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-1":"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #252 negative GCD & ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_both:"-1":"2":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #253 negative GCD & ^-1 mod positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-1":"3":"1":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #254 negative GCD & ^-1 mod 0 (null) : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_both:"-1":"":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #255 negative GCD & ^-1 mod positive with leading zero limb : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_both:"-1":"00":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #256 negative GCD & ^-1 mod negative : |A|=|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_both:"-1":"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD & mod inv #257 large positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"bc7fa9fb389618302e8b":"d49730e586607d42269f":"1":"7ba123f341eee197ea02":0
+
+GCD & mod inv #258 large positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"28bcc01a2d54b174532e":"d1915057d829a934c25d":"1":"11d74557d57cc204d634":0
+
+GCD & mod inv #259 large positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"d56b50834719280dfa1d":"f007b78f6278ebcccd57":"1":"68ecfafd1034660592bf":0
+
+GCD & mod inv #260 large positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"8c327d1d8743c89d4483":"aa20b0c1f97a428311b5":"1":"62bb341ff73ea85151b5":0
+
+GCD & mod inv #261 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"e905382f38":"c844b4f9bdaa5ed0002df3dbd2991cd9b9d":"1":"31c52f4abc0e62fa27a165594abac48d7d8":0
+
+GCD & mod inv #262 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"e4623ef13d":"f2a4894ede013e354e481fe8974e67":"3":"no_inverse":0
+
+GCD & mod inv #263 positive GCD & ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"9f6afa8bdb":"b50aa03a7066df6f27bd6267b":"1":"9f44e930627765846484b8d13":0
+
+GCD & mod inv #264 positive GCD & ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"95f99b7122":"e8c74031ec75839f7539":"1":"758bb087eeb92703c480":0
+
+GCD & mod inv #265 positive GCD & ^-1 mod positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"32":"948fbec067":"1":"73e0c2ddc1":0
+
+GCD & mod inv #266 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"7445":"948fbec067":"1":"278cc322c9":0
+
+GCD & mod inv #267 positive GCD & ^-1 mod positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"31850e":"948fbec067":"1":"74b13fd778":0
+
+GCD & mod inv #268 positive GCD & ^-1 mod positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_both:"421c2cc8":"948fbec067":"1":"79f08dfc5":0
+
+GCD & mod inv #269 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"32a69":"71e107":"f":"no_inverse":0
+
+GCD & mod inv #270 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"36d4e9":"3e05d1":"e61d":"no_inverse":0
+
+GCD & mod inv #271 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"babf01":"1bf699d1":"3e3fab":"no_inverse":0
+
+GCD & mod inv #272 positive GCD & ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_both:"7":"31":"7":"no_inverse":0
+
+GCD only #1 large positive GCD large positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #2 large positive GCD large positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #3 large positive GCD large negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #4 large positive GCD large positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"7da9ec44f42e6311c56a":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #5 large positive GCD large positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"cdbcce3f763819345cfb":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #6 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"100000000":"8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #7 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"300000000":"18":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #8 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"500000000":"8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #9 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"50000":"8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #10 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"30000":"18":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #11 large positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #12 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #13 large positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"3":"3":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #14 large positive GCD 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #15 large positive GCD positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"00":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #16 large positive GCD negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #17 large positive GCD large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #18 large positive GCD large positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":0
+
+GCD only #19 large positive GCD large negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #20 large positive GCD large positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"7da9ec44f42e6311c56a":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #21 large positive GCD large positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"cdbcce3f763819345cfb":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #22 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"100000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #23 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"300000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #24 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"500000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #25 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"50000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #26 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"30000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #27 large positive GCD positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #28 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #29 large positive GCD positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #30 large positive GCD 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #31 large positive GCD positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"00":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #32 large positive GCD negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #33 large negative GCD large positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #34 large negative GCD large positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #35 large negative GCD large negative : |A|=|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #36 large negative GCD large positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"7da9ec44f42e6311c56a":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #37 large negative GCD large positive : |A|>|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"cdbcce3f763819345cfb":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #38 large negative GCD positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"100000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #39 large negative GCD positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"300000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #40 large negative GCD positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"500000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #41 large negative GCD positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"50000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #42 large negative GCD positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"30000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #43 large negative GCD positive : |A|>|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #44 large negative GCD positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #45 large negative GCD positive : |A|>|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #46 large negative GCD 0 (null) : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #47 large negative GCD positive with leading zero limb : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"00":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #48 large negative GCD negative : |A|>|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #49 large positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #50 large positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #51 large positive GCD large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #52 large positive GCD large positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"7da9ec44f42e6311c56a":"7da9ec44f42e6311c56a":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #53 large positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"cdbcce3f763819345cfb":"1":0
+
+GCD only #54 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"100000000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #55 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"300000000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #56 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"500000000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #57 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"50000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #58 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"30000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #59 large positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #60 large positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #61 large positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #62 large positive GCD 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"":"7da9ec44f42e6311c56a":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #63 large positive GCD positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"00":"7da9ec44f42e6311c56a":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #64 large positive GCD negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"7da9ec44f42e6311c56a":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #65 large positive GCD large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #66 large positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #67 large positive GCD large negative : |A|<|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #68 large positive GCD large positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"7da9ec44f42e6311c56a":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #69 large positive GCD large positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"cdbcce3f763819345cfb":"cdbcce3f763819345cfb":0
+
+GCD only #70 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"100000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #71 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"300000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #72 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"500000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #73 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"50000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #74 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"30000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #75 large positive GCD positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #76 large positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #77 large positive GCD positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #78 large positive GCD 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"":"cdbcce3f763819345cfb":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #79 large positive GCD positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"00":"cdbcce3f763819345cfb":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #80 large positive GCD negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"cdbcce3f763819345cfb":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #81 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"100000000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #82 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"100000000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #83 positive GCD large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"100000000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #84 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"100000000":"7da9ec44f42e6311c56a":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #85 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"100000000":"cdbcce3f763819345cfb":"1":0
+
+GCD only #86 positive GCD positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"100000000":"100000000":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #87 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"100000000":"300000000":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #88 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"100000000":"500000000":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #89 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"100000000":"50000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #90 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"100000000":"30000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #91 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"100000000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #92 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"100000000":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #93 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"100000000":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #94 positive GCD 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"100000000":"":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #95 positive GCD positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"100000000":"00":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #96 positive GCD negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"100000000":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #97 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"300000000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"18":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #98 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"300000000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #99 positive GCD large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"300000000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #100 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"300000000":"7da9ec44f42e6311c56a":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #101 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"300000000":"cdbcce3f763819345cfb":"1":0
+
+GCD only #102 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"300000000":"100000000":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #103 positive GCD positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"300000000":"300000000":"300000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #104 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"300000000":"500000000":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #105 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"300000000":"50000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #106 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"300000000":"30000":"30000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #107 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"300000000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #108 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"300000000":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #109 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"300000000":"3":"3":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #110 positive GCD 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"300000000":"":"300000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #111 positive GCD positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"300000000":"00":"300000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #112 positive GCD negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"300000000":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #113 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"500000000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #114 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"500000000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #115 positive GCD large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"500000000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #116 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"500000000":"7da9ec44f42e6311c56a":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #117 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"500000000":"cdbcce3f763819345cfb":"1":0
+
+GCD only #118 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"500000000":"100000000":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #119 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"500000000":"300000000":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #120 positive GCD positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"500000000":"500000000":"500000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #121 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"500000000":"50000":"50000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #122 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"500000000":"30000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #123 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"500000000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #124 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"500000000":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #125 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"500000000":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #126 positive GCD 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"500000000":"":"500000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #127 positive GCD positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"500000000":"00":"500000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #128 positive GCD negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"500000000":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #129 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"50000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #130 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"50000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #131 positive GCD large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"50000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #132 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"50000":"7da9ec44f42e6311c56a":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #133 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"50000":"cdbcce3f763819345cfb":"1":0
+
+GCD only #134 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"50000":"100000000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #135 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"50000":"300000000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #136 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"50000":"500000000":"50000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #137 positive GCD positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"50000":"50000":"50000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #138 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"50000":"30000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #139 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"50000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #140 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"50000":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #141 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"50000":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #142 positive GCD 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"50000":"":"50000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #143 positive GCD positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"50000":"00":"50000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #144 positive GCD negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"50000":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #145 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"30000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"18":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #146 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"30000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #147 positive GCD large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"30000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #148 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"30000":"7da9ec44f42e6311c56a":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #149 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"30000":"cdbcce3f763819345cfb":"1":0
+
+GCD only #150 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"30000":"100000000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #151 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"30000":"300000000":"30000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #152 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"30000":"500000000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #153 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"30000":"50000":"10000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #154 positive GCD positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"30000":"30000":"30000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #155 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"30000":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #156 positive GCD positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"30000":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #157 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"30000":"3":"3":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #158 positive GCD 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"30000":"":"30000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #159 positive GCD positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"30000":"00":"30000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #160 positive GCD negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"30000":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #161 positive GCD large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"1":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #162 positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"1":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #163 positive GCD large negative : |A|<|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"1":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #164 positive GCD large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"1":"7da9ec44f42e6311c56a":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #165 positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"1":"cdbcce3f763819345cfb":"1":0
+
+GCD only #166 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"1":"100000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #167 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"1":"300000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #168 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"1":"500000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #169 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"1":"50000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #170 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"1":"30000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #171 positive GCD positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"1":"1":"1":0
+
+GCD only #172 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"1":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #173 positive GCD positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"1":"3":"1":0
+
+GCD only #174 positive GCD 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"1":"":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #175 positive GCD positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"1":"00":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #176 positive GCD negative : |A|=|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"1":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #177 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"2":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #178 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"2":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #179 positive GCD large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"2":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #180 positive GCD large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"2":"7da9ec44f42e6311c56a":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #181 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"2":"cdbcce3f763819345cfb":"1":0
+
+GCD only #182 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"2":"100000000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #183 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"2":"300000000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #184 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"2":"500000000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #185 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"2":"50000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #186 positive GCD positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"2":"30000":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #187 positive GCD positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"2":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #188 positive GCD positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_gcd:"2":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #189 positive GCD positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"2":"3":"1":0
+
+GCD only #190 positive GCD 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"2":"":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #191 positive GCD positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_gcd:"2":"00":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #192 positive GCD negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"2":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #193 positive GCD large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"3":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"3":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #194 positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"3":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+GCD only #195 positive GCD large negative : |A|<|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"3":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #196 positive GCD large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"3":"7da9ec44f42e6311c56a":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #197 positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"3":"cdbcce3f763819345cfb":"1":0
+
+GCD only #198 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"3":"100000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #199 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"3":"300000000":"3":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #200 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"3":"500000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #201 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"3":"50000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #202 positive GCD positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"3":"30000":"3":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #203 positive GCD positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"3":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #204 positive GCD positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"3":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #205 positive GCD positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"3":"3":"3":0
+
+GCD only #206 positive GCD 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"3":"":"3":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #207 positive GCD positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"3":"00":"3":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #208 positive GCD negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"3":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #209 0 (null) GCD large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #210 0 (null) GCD large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":0
+
+GCD only #211 0 (null) GCD large negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #212 0 (null) GCD large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"":"7da9ec44f42e6311c56a":"7da9ec44f42e6311c56a":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #213 0 (null) GCD large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"":"cdbcce3f763819345cfb":"cdbcce3f763819345cfb":0
+
+GCD only #214 0 (null) GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"":"100000000":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #215 0 (null) GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"":"300000000":"300000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #216 0 (null) GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"":"500000000":"500000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #217 0 (null) GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"":"50000":"50000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #218 0 (null) GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"":"30000":"30000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #219 0 (null) GCD positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"":"1":"1":0
+
+GCD only #220 0 (null) GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #221 0 (null) GCD positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"":"3":"3":0
+
+GCD only #222 0 (null) GCD 0 (null) : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_only_gcd:"":"":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #223 0 (null) GCD positive with leading zero limb : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_only_gcd:"":"00":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #224 0 (null) GCD negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #225 positive with leading zero limb GCD large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"00":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #226 positive with leading zero limb GCD large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"00":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":0
+
+GCD only #227 positive with leading zero limb GCD large negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"00":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #228 positive with leading zero limb GCD large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"00":"7da9ec44f42e6311c56a":"7da9ec44f42e6311c56a":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #229 positive with leading zero limb GCD large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"00":"cdbcce3f763819345cfb":"cdbcce3f763819345cfb":0
+
+GCD only #230 positive with leading zero limb GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"00":"100000000":"100000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #231 positive with leading zero limb GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"00":"300000000":"300000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #232 positive with leading zero limb GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"00":"500000000":"500000000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #233 positive with leading zero limb GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"00":"50000":"50000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #234 positive with leading zero limb GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"00":"30000":"30000":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #235 positive with leading zero limb GCD positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"00":"1":"1":0
+
+GCD only #236 positive with leading zero limb GCD positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_gcd:"00":"2":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #237 positive with leading zero limb GCD positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"00":"3":"3":0
+
+GCD only #238 positive with leading zero limb GCD 0 (null) : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_only_gcd:"00":"":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #239 positive with leading zero limb GCD positive with leading zero limb : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_only_gcd:"00":"00":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #240 positive with leading zero limb GCD negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_only_gcd:"00":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #241 negative GCD large positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-1":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #242 negative GCD large positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-1":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #243 negative GCD large negative : |A|<|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-1":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #244 negative GCD large positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-1":"7da9ec44f42e6311c56a":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #245 negative GCD large positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-1":"cdbcce3f763819345cfb":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #246 negative GCD positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-1":"100000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #247 negative GCD positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-1":"300000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #248 negative GCD positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-1":"500000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #249 negative GCD positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-1":"50000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #250 negative GCD positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-1":"30000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #251 negative GCD positive : |A|=|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-1":"1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #252 negative GCD positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_gcd:"-1":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #253 negative GCD positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-1":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #254 negative GCD 0 (null) : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"-1":"":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #255 negative GCD positive with leading zero limb : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_only_gcd:"-1":"00":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #256 negative GCD negative : |A|=|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"-1":"-1":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD only #257 large positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"bc7fa9fb389618302e8b":"d49730e586607d42269f":"1":0
+
+GCD only #258 large positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"28bcc01a2d54b174532e":"d1915057d829a934c25d":"1":0
+
+GCD only #259 large positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"d56b50834719280dfa1d":"f007b78f6278ebcccd57":"1":0
+
+GCD only #260 large positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"8c327d1d8743c89d4483":"aa20b0c1f97a428311b5":"1":0
+
+GCD only #261 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"e905382f38":"c844b4f9bdaa5ed0002df3dbd2991cd9b9d":"1":0
+
+GCD only #262 positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"e4623ef13d":"f2a4894ede013e354e481fe8974e67":"3":0
+
+GCD only #263 positive GCD large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"9f6afa8bdb":"b50aa03a7066df6f27bd6267b":"1":0
+
+GCD only #264 positive GCD large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"95f99b7122":"e8c74031ec75839f7539":"1":0
+
+GCD only #265 positive GCD positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"32":"948fbec067":"1":0
+
+GCD only #266 positive GCD positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"7445":"948fbec067":"1":0
+
+GCD only #267 positive GCD positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"31850e":"948fbec067":"1":0
+
+GCD only #268 positive GCD positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_gcd:"421c2cc8":"948fbec067":"1":0
+
+GCD only #269 positive GCD positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"32a69":"71e107":"f":0
+
+GCD only #270 positive GCD positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"36d4e9":"3e05d1":"e61d":0
+
+GCD only #271 positive GCD positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"babf01":"1bf699d1":"3e3fab":0
+
+GCD only #272 positive GCD positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_gcd:"7":"31":"7":0
+
+Mod inv only #1 large positive ^-1 mod large positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #2 large positive ^-1 mod large positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"258e2368a7965a953f1b588f9077370cf7262028a530e0702c":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #3 large positive ^-1 mod large negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #4 large positive ^-1 mod large positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #5 large positive ^-1 mod large positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"cdbcce3f763819345cfb":"2e7811a90024ebf5c83a":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #6 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #7 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #8 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #9 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #10 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #11 large positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #12 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #13 large positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #14 large positive ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #15 large positive ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #16 large positive ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #17 large positive ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"137af6f3b3904ddf2718e2a89b655a3029b4dd9984c3d31c15":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #18 large positive ^-1 mod large positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"no_inverse":0
+
+Mod inv only #19 large positive ^-1 mod large negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #20 large positive ^-1 mod large positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"7da9ec44f42e6311c56a":"5018c1f533208620c869":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #21 large positive ^-1 mod large positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"cdbcce3f763819345cfb":"8dc54080734c2fbeecb5":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #22 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"100000000":"1d7441dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #23 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"300000000":"21d7441dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #24 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"500000000":"21d7441dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #25 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"50000":"241dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #26 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"30000":"41dd":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #27 large positive ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #28 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #29 large positive ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #30 large positive ^-1 mod 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #31 large positive ^-1 mod positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #32 large positive ^-1 mod negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #33 large negative ^-1 mod large positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"57a9d91b6c1475a7c2c7116d25fe35c9a893310dc5d665b153":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #34 large negative ^-1 mod large positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"234b402ff60f7d117cf1e856da3b77e9933b9e074a1c006b68":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #35 large negative ^-1 mod large negative : |A|=|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #36 large negative ^-1 mod large positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"7da9ec44f42e6311c56a":"65b3ec5f1d29b526c389":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #37 large negative ^-1 mod large positive : |A|>|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"cdbcce3f763819345cfb":"439794d60798ac185902":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #38 large negative ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"100000000":"8a23c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #39 large negative ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"300000000":"28a23c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #40 large negative ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"500000000":"48a23c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #41 large negative ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"50000":"2c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #42 large negative ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"30000":"1c71b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #43 large negative ^-1 mod positive : |A|>|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #44 large negative ^-1 mod positive : |A|>|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #45 large negative ^-1 mod positive : |A|>|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"3":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #46 large negative ^-1 mod 0 (null) : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #47 large negative ^-1 mod positive with leading zero limb : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #48 large negative ^-1 mod negative : |A|>|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #49 large positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #50 large positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"f1731829032e770ea74a8cf018bfcbafbd8d79a41250f0eaf":0
+
+Mod inv only #51 large positive ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #52 large positive ^-1 mod large positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #53 large positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"cdbcce3f763819345cfb":"a3837a94e7490299a239":0
+
+Mod inv only #54 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #55 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #56 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #57 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #58 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #59 large positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #60 large positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #61 large positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"3":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #62 large positive ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #63 large positive ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #64 large positive ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"7da9ec44f42e6311c56a":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #65 large positive ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"9a87f079dd0b6d0310d871d3ea819aa171499489613e8e393b":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #66 large positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"cf070ca50f644be5faf8659554773f37ed7e6b0ea5642fdcd":0
+
+Mod inv only #67 large positive ^-1 mod large negative : |A|<|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #68 large positive ^-1 mod large positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"7da9ec44f42e6311c56a":"19ca4c94ff1a0f2e70ef":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #69 large positive ^-1 mod large positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"cdbcce3f763819345cfb":"no_inverse":0
+
+Mod inv only #70 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"100000000":"d4274e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #71 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"300000000":"d4274e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #72 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"500000000":"1d4274e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #73 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"50000":"24e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #74 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"30000":"24e33":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #75 large positive ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #76 large positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #77 large positive ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"3":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #78 large positive ^-1 mod 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #79 large positive ^-1 mod positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #80 large positive ^-1 mod negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"cdbcce3f763819345cfb":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #81 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"100000000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #82 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"100000000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"24d40c2391c4bd8bcdd0fd31396b2763922073affecdfabbe7":0
+
+Mod inv only #83 positive ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"100000000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #84 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"100000000":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #85 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"100000000":"cdbcce3f763819345cfb":"233cdcd6f932351f8426":0
+
+Mod inv only #86 positive ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"100000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #87 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"100000000":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #88 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"100000000":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #89 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"100000000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #90 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"100000000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #91 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"100000000":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #92 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"100000000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #93 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"100000000":"3":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #94 positive ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"100000000":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #95 positive ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"100000000":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #96 positive ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"100000000":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #97 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"300000000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #98 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"300000000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"c46aeb685ec3f2e99f05465bdce6276860ad13aaa44a8e94d":0
+
+Mod inv only #99 positive ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"300000000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #100 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"300000000":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #101 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"300000000":"cdbcce3f763819345cfb":"94e77dc74c8b77d814b4":0
+
+Mod inv only #102 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"300000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #103 positive ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"300000000":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #104 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"300000000":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #105 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"300000000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #106 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"300000000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #107 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"300000000":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #108 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"300000000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #109 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"300000000":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #110 positive ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"300000000":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #111 positive ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"300000000":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #112 positive ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"300000000":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #113 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"500000000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #114 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"500000000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"180323bf1429087d023d6c00ab4de645a865be2ceabf57cb5d":0
+
+Mod inv only #115 positive ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"500000000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #116 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"500000000":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #117 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"500000000":"cdbcce3f763819345cfb":"827d74b778c54cf2856b":0
+
+Mod inv only #118 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"500000000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #119 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"500000000":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #120 positive ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"500000000":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #121 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"500000000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #122 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"500000000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #123 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"500000000":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #124 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"500000000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #125 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"500000000":"3":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #126 positive ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"500000000":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #127 positive ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"500000000":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #128 positive ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"500000000":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #129 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"50000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #130 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"50000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"16d4186602beb2138cf77217d733a62f0184b6bc715a544847":0
+
+Mod inv only #131 positive ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"50000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #132 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"50000":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #133 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"50000":"cdbcce3f763819345cfb":"6edf94a86466215a05d6":0
+
+Mod inv only #134 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"50000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #135 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"50000":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #136 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"50000":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #137 positive ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"50000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #138 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"50000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #139 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"50000":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #140 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"50000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #141 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"50000":"3":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #142 positive ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"50000":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #143 positive ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"50000":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #144 positive ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"50000":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #145 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"30000":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #146 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"30000":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"260c28aa049328cb4047137d115614f90287db3a1241372321":0
+
+Mod inv only #147 positive ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"30000":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #148 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"30000":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #149 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"30000":"cdbcce3f763819345cfb":"2fa16e43adda26c87668":0
+
+Mod inv only #150 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"30000":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #151 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"30000":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #152 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"30000":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #153 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"30000":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #154 positive ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"30000":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #155 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"30000":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #156 positive ^-1 mod positive : |A|>|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"30000":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #157 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"30000":"3":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #158 positive ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"30000":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #159 positive ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"30000":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #160 positive ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"30000":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #161 positive ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"1":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #162 positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"1":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1":0
+
+Mod inv only #163 positive ^-1 mod large negative : |A|<|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"1":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #164 positive ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"1":"7da9ec44f42e6311c56a":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #165 positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"1":"cdbcce3f763819345cfb":"1":0
+
+Mod inv only #166 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"1":"100000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #167 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"1":"300000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #168 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"1":"500000000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #169 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"1":"50000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #170 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"1":"30000":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #171 positive ^-1 mod positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #172 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"1":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #173 positive ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"1":"3":"1":0
+
+Mod inv only #174 positive ^-1 mod 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"1":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #175 positive ^-1 mod positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"1":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #176 positive ^-1 mod negative : |A|=|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"1":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #177 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"2":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #178 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"2":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"14cee9a5f4c21b394f5887b487c695fe2df710cc25bbaf0f3b":0
+
+Mod inv only #179 positive ^-1 mod large negative : |A|<|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"2":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #180 positive ^-1 mod large positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"2":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #181 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"2":"cdbcce3f763819345cfb":"66de671fbb1c0c9a2e7e":0
+
+Mod inv only #182 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"2":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #183 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"2":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #184 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"2":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #185 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"2":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #186 positive ^-1 mod positive : |A|<|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"2":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #187 positive ^-1 mod positive : |A|>|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"2":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #188 positive ^-1 mod positive : |A|=|N|, A even, B even
+mpi_gcd_modinv_odd_only_modinv:"2":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #189 positive ^-1 mod positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"2":"3":"2":0
+
+Mod inv only #190 positive ^-1 mod 0 (null) : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"2":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #191 positive ^-1 mod positive with leading zero limb : |A|>|N|, A even, N=0
+mpi_gcd_modinv_odd_only_modinv:"2":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #192 positive ^-1 mod negative : |A|>|N|, N<0, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"2":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #193 positive ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"3":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #194 positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"3":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"1bbe8cdd4658244c69cb5f9b5fb372a83d496bbadcfa3ebef9":0
+
+Mod inv only #195 positive ^-1 mod large negative : |A|<|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"3":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #196 positive ^-1 mod large positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"3":"7da9ec44f42e6311c56a":"29e34ec1a6ba2105ec79":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #197 positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"3":"cdbcce3f763819345cfb":"449444bfd212b3117454":0
+
+Mod inv only #198 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"3":"100000000":"aaaaaaab":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #199 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"3":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #200 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"3":"500000000":"1aaaaaaab":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #201 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"3":"50000":"1aaab":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #202 positive ^-1 mod positive : |A|<|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"3":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #203 positive ^-1 mod positive : |A|>|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"3":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #204 positive ^-1 mod positive : |A|>|N|, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"3":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #205 positive ^-1 mod positive : |A|=|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"3":"3":"no_inverse":0
+
+Mod inv only #206 positive ^-1 mod 0 (null) : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"3":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #207 positive ^-1 mod positive with leading zero limb : |A|>|N|, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"3":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #208 positive ^-1 mod negative : |A|>|N|, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"3":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #209 0 (null) ^-1 mod large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #210 0 (null) ^-1 mod large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"no_inverse":0
+
+Mod inv only #211 0 (null) ^-1 mod large negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #212 0 (null) ^-1 mod large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #213 0 (null) ^-1 mod large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"":"cdbcce3f763819345cfb":"no_inverse":0
+
+Mod inv only #214 0 (null) ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #215 0 (null) ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #216 0 (null) ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #217 0 (null) ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #218 0 (null) ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #219 0 (null) ^-1 mod positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #220 0 (null) ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #221 0 (null) ^-1 mod positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"":"3":"no_inverse":0
+
+Mod inv only #222 0 (null) ^-1 mod 0 (null) : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_only_modinv:"":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #223 0 (null) ^-1 mod positive with leading zero limb : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_only_modinv:"":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #224 0 (null) ^-1 mod negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #225 positive with leading zero limb ^-1 mod large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"00":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #226 positive with leading zero limb ^-1 mod large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"00":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"no_inverse":0
+
+Mod inv only #227 positive with leading zero limb ^-1 mod large negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"00":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #228 positive with leading zero limb ^-1 mod large positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"00":"7da9ec44f42e6311c56a":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #229 positive with leading zero limb ^-1 mod large positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"00":"cdbcce3f763819345cfb":"no_inverse":0
+
+Mod inv only #230 positive with leading zero limb ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"00":"100000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #231 positive with leading zero limb ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"00":"300000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #232 positive with leading zero limb ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"00":"500000000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #233 positive with leading zero limb ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"00":"50000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #234 positive with leading zero limb ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"00":"30000":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #235 positive with leading zero limb ^-1 mod positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"00":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #236 positive with leading zero limb ^-1 mod positive : |A|<|N|, A=0, B even
+mpi_gcd_modinv_odd_only_modinv:"00":"2":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #237 positive with leading zero limb ^-1 mod positive : |A|<|N|, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"00":"3":"no_inverse":0
+
+Mod inv only #238 positive with leading zero limb ^-1 mod 0 (null) : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_only_modinv:"00":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #239 positive with leading zero limb ^-1 mod positive with leading zero limb : |A|=|N|, A=0, N=0
+mpi_gcd_modinv_odd_only_modinv:"00":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #240 positive with leading zero limb ^-1 mod negative : |A|<|N|, N<0, A=0, B odd
+mpi_gcd_modinv_odd_only_modinv:"00":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #241 negative ^-1 mod large positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-1":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed8":"c79e27fc71c69a08b3e85bd48b9cd3be9aa8e2e56df39f4ed7":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #242 negative ^-1 mod large positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-1":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e75":"299dd34be98436729eb10f690f8d2bfc5bee21984b775e1e74":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #243 negative ^-1 mod large negative : |A|<|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-1":"-ecbb3a4e986d488172ecd54f7bd71bd18050c4ed":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #244 negative ^-1 mod large positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-1":"7da9ec44f42e6311c56a":"7da9ec44f42e6311c569":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #245 negative ^-1 mod large positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-1":"cdbcce3f763819345cfb":"cdbcce3f763819345cfa":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #246 negative ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-1":"100000000":"ffffffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #247 negative ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-1":"300000000":"2ffffffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #248 negative ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-1":"500000000":"4ffffffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #249 negative ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-1":"50000":"4ffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #250 negative ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-1":"30000":"2ffff":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #251 negative ^-1 mod positive : |A|=|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-1":"1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #252 negative ^-1 mod positive : |A|<|N|, A<0, A odd, B even
+mpi_gcd_modinv_odd_only_modinv:"-1":"2":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #253 negative ^-1 mod positive : |A|<|N|, A<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-1":"3":"2":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #254 negative ^-1 mod 0 (null) : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"-1":"":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #255 negative ^-1 mod positive with leading zero limb : |A|>|N|, A<0, A odd, N=0
+mpi_gcd_modinv_odd_only_modinv:"-1":"00":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #256 negative ^-1 mod negative : |A|=|N|, A<0, N<0, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"-1":"-1":"no_inverse":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Mod inv only #257 large positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"bc7fa9fb389618302e8b":"d49730e586607d42269f":"7ba123f341eee197ea02":0
+
+Mod inv only #258 large positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"28bcc01a2d54b174532e":"d1915057d829a934c25d":"11d74557d57cc204d634":0
+
+Mod inv only #259 large positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"d56b50834719280dfa1d":"f007b78f6278ebcccd57":"68ecfafd1034660592bf":0
+
+Mod inv only #260 large positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"8c327d1d8743c89d4483":"aa20b0c1f97a428311b5":"62bb341ff73ea85151b5":0
+
+Mod inv only #261 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"e905382f38":"c844b4f9bdaa5ed0002df3dbd2991cd9b9d":"31c52f4abc0e62fa27a165594abac48d7d8":0
+
+Mod inv only #262 positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"e4623ef13d":"f2a4894ede013e354e481fe8974e67":"no_inverse":0
+
+Mod inv only #263 positive ^-1 mod large positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"9f6afa8bdb":"b50aa03a7066df6f27bd6267b":"9f44e930627765846484b8d13":0
+
+Mod inv only #264 positive ^-1 mod large positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"95f99b7122":"e8c74031ec75839f7539":"758bb087eeb92703c480":0
+
+Mod inv only #265 positive ^-1 mod positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"32":"948fbec067":"73e0c2ddc1":0
+
+Mod inv only #266 positive ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"7445":"948fbec067":"278cc322c9":0
+
+Mod inv only #267 positive ^-1 mod positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"31850e":"948fbec067":"74b13fd778":0
+
+Mod inv only #268 positive ^-1 mod positive : |A|<|N|, A even, B odd
+mpi_gcd_modinv_odd_only_modinv:"421c2cc8":"948fbec067":"79f08dfc5":0
+
+Mod inv only #269 positive ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"32a69":"71e107":"no_inverse":0
+
+Mod inv only #270 positive ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"36d4e9":"3e05d1":"no_inverse":0
+
+Mod inv only #271 positive ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"babf01":"1bf699d1":"no_inverse":0
+
+Mod inv only #272 positive ^-1 mod positive : |A|<|N|, A odd, B odd
+mpi_gcd_modinv_odd_only_modinv:"7":"31":"no_inverse":0
+
+MPI inv_mod #1 large positive ^-1 mod large positive : A<N
+mpi_inv_mod:"aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"8d6a5c1d7adeae3e94b9bcd2c47e0d46e778bc8804a2cc25c02d775dc3d05b0c":0
+
+MPI inv_mod #2 large positive ^-1 mod large positive : A>N, no inverse
+mpi_inv_mod:"aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #3 large positive ^-1 mod positive : A>N
+mpi_inv_mod:"aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"2ec0888f":"c55786f":0
+
+MPI inv_mod #4 large positive ^-1 mod positive : A>N, no inverse
+mpi_inv_mod:"aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"22fbdf4c":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #5 large positive ^-1 mod positive : A>N, no inverse
+mpi_inv_mod:"aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"34d0830":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #6 large positive ^-1 mod positive : A>N, no inverse
+mpi_inv_mod:"aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"364b6729":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #7 large positive ^-1 mod positive : A>N
+mpi_inv_mod:"aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"14419cd":"50ad45":0
+
+MPI inv_mod #8 large positive ^-1 mod large positive : A<N
+mpi_inv_mod:"f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"71a1510c56fa2b0c7184661d93c303bac4244926e76cd64bc1231fa6498155f6":0
+
+MPI inv_mod #9 large positive ^-1 mod large positive : A>N
+mpi_inv_mod:"f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"15f994a9265a2ca8e962e488c5b654b099cab42bf8c0590eb":0
+
+MPI inv_mod #10 large positive ^-1 mod positive : A>N
+mpi_inv_mod:"f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"2ec0888f":"25e69804":0
+
+MPI inv_mod #11 large positive ^-1 mod positive : A>N
+mpi_inv_mod:"f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"22fbdf4c":"c5a8dd3":0
+
+MPI inv_mod #12 large positive ^-1 mod positive : A>N
+mpi_inv_mod:"f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"34d0830":"17b7373":0
+
+MPI inv_mod #13 large positive ^-1 mod positive : A>N
+mpi_inv_mod:"f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"364b6729":"3a9cced":0
+
+MPI inv_mod #14 large positive ^-1 mod positive : A>N
+mpi_inv_mod:"f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"14419cd":"b3c94d":0
+
+MPI inv_mod #15 positive ^-1 mod large positive : A<N
+mpi_inv_mod:"2ec0888f":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"1b46732d6c0f6f98e88a721ec396c7adb19ad61dbe80fbc05d00c76219cf20f9":0
+
+MPI inv_mod #16 positive ^-1 mod large positive : A<N, no inverse
+mpi_inv_mod:"2ec0888f":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #17 positive ^-1 mod positive : A=N, no inverse
+mpi_inv_mod:"2ec0888f":"2ec0888f":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #18 positive ^-1 mod positive : A>N
+mpi_inv_mod:"2ec0888f":"22fbdf4c":"13544d7f":0
+
+MPI inv_mod #19 positive ^-1 mod positive : A>N
+mpi_inv_mod:"2ec0888f":"34d0830":"149f34f":0
+
+MPI inv_mod #20 positive ^-1 mod positive : A<N
+mpi_inv_mod:"2ec0888f":"364b6729":"21271600":0
+
+MPI inv_mod #21 positive ^-1 mod positive : A>N
+mpi_inv_mod:"2ec0888f":"14419cd":"d81d1e":0
+
+MPI inv_mod #22 positive ^-1 mod large positive : A<N
+mpi_inv_mod:"22fbdf4c":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"1f1d6a30944a8461c3c2f81ae0aaf9f2f29e6c28b528708f6c2ae01accdadade":0
+
+MPI inv_mod #23 positive ^-1 mod large positive : A<N, no inverse
+mpi_inv_mod:"22fbdf4c":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #24 positive ^-1 mod positive : A<N
+mpi_inv_mod:"22fbdf4c":"2ec0888f":"14ebac7b":0
+
+MPI inv_mod #25 positive ^-1 mod positive : A=N, no inverse
+mpi_inv_mod:"22fbdf4c":"22fbdf4c":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #26 positive ^-1 mod positive : A>N, no inverse
+mpi_inv_mod:"22fbdf4c":"34d0830":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #27 positive ^-1 mod positive : A<N
+mpi_inv_mod:"22fbdf4c":"364b6729":"31816ca0":0
+
+MPI inv_mod #28 positive ^-1 mod positive : A>N
+mpi_inv_mod:"22fbdf4c":"14419cd":"a3cbf9":0
+
+MPI inv_mod #29 positive ^-1 mod large positive : A<N
+mpi_inv_mod:"32cf9a75":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"e793a582817a3da87a0fd02360e13409a63f6a8278861891f3971fc36dbf5fef":0
+
+MPI inv_mod #30 positive ^-1 mod large positive : A<N
+mpi_inv_mod:"32cf9a75":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"2ed1f054622b51350631ce8b1f14de4926ed29132cf80ed85":0
+
+MPI inv_mod #31 positive ^-1 mod positive : A>N
+mpi_inv_mod:"32cf9a75":"2ec0888f":"24d4e4d2":0
+
+MPI inv_mod #32 positive ^-1 mod positive : A>N
+mpi_inv_mod:"32cf9a75":"22fbdf4c":"1901a5c9":0
+
+MPI inv_mod #33 positive ^-1 mod positive : A>N
+mpi_inv_mod:"32cf9a75":"34d0830":"2251dcd":0
+
+MPI inv_mod #34 positive ^-1 mod positive : A<N, no inverse
+mpi_inv_mod:"32cf9a75":"364b6729":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #35 positive ^-1 mod positive : A>N
+mpi_inv_mod:"32cf9a75":"14419cd":"12d19e0":0
+
+MPI inv_mod #36 large negative ^-1 mod large positive : |A|<N, A<0
+mpi_inv_mod:"-aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"7291614890b592ec5164f0c9648895fd29f574e220cd0761c71ef509974cfd71":0
+
+MPI inv_mod #37 large negative ^-1 mod large positive : |A|>N, A<0, no inverse
+mpi_inv_mod:"-aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #38 large negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"2ec0888f":"226b1020":0
+
+MPI inv_mod #39 large negative ^-1 mod positive : |A|>N, A<0, no inverse
+mpi_inv_mod:"-aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"22fbdf4c":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #40 large negative ^-1 mod positive : |A|>N, A<0, no inverse
+mpi_inv_mod:"-aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"34d0830":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #41 large negative ^-1 mod positive : |A|>N, A<0, no inverse
+mpi_inv_mod:"-aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"364b6729":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #42 large negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"14419cd":"f36c88":0
+
+MPI inv_mod #43 large negative ^-1 mod large positive : |A|<N, A<0
+mpi_inv_mod:"-f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"8e5a6c59b49a161e749a477e95439f894d49e8433e02fd3bc6294cc1119c0287":0
+
+MPI inv_mod #44 large negative ^-1 mod large positive : |A|>N, A<0
+mpi_inv_mod:"-f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"19ed9afc9a0194a32916fef5614b68e4ce57e5734a0572d99":0
+
+MPI inv_mod #45 large negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"2ec0888f":"8d9f08b":0
+
+MPI inv_mod #46 large negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"22fbdf4c":"16a15179":0
+
+MPI inv_mod #47 large negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"34d0830":"1d194bd":0
+
+MPI inv_mod #48 large negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"364b6729":"32a19a3c":0
+
+MPI inv_mod #49 large negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-f847e7731a2687c837f6b825f2937d997bf66814d3db79b27b":"14419cd":"905080":0
+
+MPI inv_mod #50 negative ^-1 mod large positive : |A|<N, A<0
+mpi_inv_mod:"-2ec0888f":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"e4b54a389f84d191fd943b7d656fdb965fd35b4c66eed7c72a4ba505414e3784":0
+
+MPI inv_mod #51 negative ^-1 mod large positive : |A|<N, A<0, no inverse
+mpi_inv_mod:"-2ec0888f":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #52 negative ^-1 mod positive : |A|=N, A<0, no inverse
+mpi_inv_mod:"-2ec0888f":"2ec0888f":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #53 negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-2ec0888f":"22fbdf4c":"fa791cd":0
+
+MPI inv_mod #54 negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-2ec0888f":"34d0830":"20314e1":0
+
+MPI inv_mod #55 negative ^-1 mod positive : |A|<N, A<0
+mpi_inv_mod:"-2ec0888f":"364b6729":"15245129":0
+
+MPI inv_mod #56 negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-2ec0888f":"14419cd":"6bfcaf":0
+
+MPI inv_mod #57 negative ^-1 mod large positive : |A|<N, A<0
+mpi_inv_mod:"-22fbdf4c":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"e0de53357749bcc9225bb581485ba9511ecfc541704762f81b218c4c8e427d9f":0
+
+MPI inv_mod #58 negative ^-1 mod large positive : |A|<N, A<0, no inverse
+mpi_inv_mod:"-22fbdf4c":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #59 negative ^-1 mod positive : |A|<N, A<0
+mpi_inv_mod:"-22fbdf4c":"2ec0888f":"19d4dc14":0
+
+MPI inv_mod #60 negative ^-1 mod positive : |A|=N, A<0, no inverse
+mpi_inv_mod:"-22fbdf4c":"22fbdf4c":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #61 negative ^-1 mod positive : |A|>N, A<0, no inverse
+mpi_inv_mod:"-22fbdf4c":"34d0830":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #62 negative ^-1 mod positive : |A|<N, A<0
+mpi_inv_mod:"-22fbdf4c":"364b6729":"4c9fa89":0
+
+MPI inv_mod #63 negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-22fbdf4c":"14419cd":"a04dd4":0
+
+MPI inv_mod #64 negative ^-1 mod large positive : |A|<N, A<0
+mpi_inv_mod:"-32cf9a75":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"186817e38a1a03826c0edd78c8256f3a6b2ec6e7ace9baf593b54ca3ed5df88e":0
+
+MPI inv_mod #65 negative ^-1 mod large positive : |A|<N, A<0
+mpi_inv_mod:"-32cf9a75":"2fe72fa5c05bc14c1279e37e2701bd956822999f42c5cbe84":"1153f515e3070170c4814f307ecdf4c4135708c15cdbd0ff":0
+
+MPI inv_mod #66 negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-32cf9a75":"2ec0888f":"9eba3bd":0
+
+MPI inv_mod #67 negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-32cf9a75":"22fbdf4c":"9fa3983":0
+
+MPI inv_mod #68 negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-32cf9a75":"34d0830":"127ea63":0
+
+MPI inv_mod #69 negative ^-1 mod positive : |A|<N, A<0, no inverse
+mpi_inv_mod:"-32cf9a75":"364b6729":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+MPI inv_mod #70 negative ^-1 mod positive : |A|>N, A<0
+mpi_inv_mod:"-32cf9a75":"14419cd":"16ffed":0
+
 # End of automatically generated file.
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_bignum.misc.data mbedtls-3.6.5/tests/suites/test_suite_bignum.misc.data
--- mbedtls-3.6.4/tests/suites/test_suite_bignum.misc.data	2025-06-30 09:24:53.055058000 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_bignum.misc.data	2025-10-14 19:12:37.034633400 +0300
@@ -1435,6 +1435,9 @@
 Test GCD: 0 (null), 0 (1 limb)
 mpi_gcd:"":"00":"0"
 
+Test GCD: 0 (1 limb), 0 (1 limb)
+mpi_gcd:"00":"00":"0"
+
 Test GCD: 0 (null), 3
 mpi_gcd:"":"03":"3"
 
@@ -1462,66 +1465,195 @@
 Test GCD: 6, 0 (1 limb)
 mpi_gcd:"06":"00":"6"
 
-Test GCD: gcd=1, 0 < A < B
+Test GCD: negative, 0 (null)
+mpi_gcd:"-50000":"":"50000"
+
+Test GCD: negative, 0 (1 limb)
+mpi_gcd:"-a782374b2ee927df28802745833a":"00":"a782374b2ee927df28802745833a"
+
+Test GCD: 0 (null), negative
+mpi_gcd:"":"-50000":"50000"
+
+Test GCD: 0 (1 limb), negative
+mpi_gcd:"00":"-a782374b2ee927df28802745833a":"a782374b2ee927df28802745833a"
+
+Test GCD: gcd=1, A is odd, B is odd, 0 < A < B
 mpi_gcd:"109fe45714866e56fdd4ad9b6b686df27224afb7868cf4f0cbb794526932853cbf0beea61594166654d13cd9fe0d9da594a97ee20230f12fb5434de73fb4f8102725a01622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af":"33ae3764fd06a00cdc3cba5c45dc79a9edb4e67e4d057cc74139d531c25190d111775fc4a0f4439b8b1930bbd766e7b46f170601f316c8a18ff8d5cb5ca5581f168345d101edb462b7d93b7c520ccb8fb276b447a63d869203cc11f67a1122dc4da034218de85e39":"1"
 
-Test GCD: gcd=1, 0 < B < A
+Test GCD: gcd=1, A is odd, B is odd, 0 < B < A
 mpi_gcd:"33ae3764fd06a00cdc3cba5c45dc79a9edb4e67e4d057cc74139d531c25190d111775fc4a0f4439b8b1930bbd766e7b46f170601f316c8a18ff8d5cb5ca5581f168345d101edb462b7d93b7c520ccb8fb276b447a63d869203cc11f67a1122dc4da034218de85e39":"109fe45714866e56fdd4ad9b6b686df27224afb7868cf4f0cbb794526932853cbf0beea61594166654d13cd9fe0d9da594a97ee20230f12fb5434de73fb4f8102725a01622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af":"1"
 
-Test GCD: gcd=1, A > 0, B < 0
+Test GCD: gcd=1, A is odd, B is odd, A > 0, B < 0
 mpi_gcd:"109fe45714866e56fdd4ad9b6b686df27224afb7868cf4f0cbb794526932853cbf0beea61594166654d13cd9fe0d9da594a97ee20230f12fb5434de73fb4f8102725a01622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af":"-33ae3764fd06a00cdc3cba5c45dc79a9edb4e67e4d057cc74139d531c25190d111775fc4a0f4439b8b1930bbd766e7b46f170601f316c8a18ff8d5cb5ca5581f168345d101edb462b7d93b7c520ccb8fb276b447a63d869203cc11f67a1122dc4da034218de85e39":"1"
 
-Test GCD: gcd=1, A < 0 < B, |A| < |B|
+Test GCD: gcd=1, A is odd, B is odd, A < 0 < B, |A| < |B|
 mpi_gcd:"-109fe45714866e56fdd4ad9b6b686df27224afb7868cf4f0cbb794526932853cbf0beea61594166654d13cd9fe0d9da594a97ee20230f12fb5434de73fb4f8102725a01622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af":"33ae3764fd06a00cdc3cba5c45dc79a9edb4e67e4d057cc74139d531c25190d111775fc4a0f4439b8b1930bbd766e7b46f170601f316c8a18ff8d5cb5ca5581f168345d101edb462b7d93b7c520ccb8fb276b447a63d869203cc11f67a1122dc4da034218de85e39":"1"
 
-Test GCD: gcd=1, B < A < 0
+Test GCD: gcd=1, A is odd, B is odd, B < A < 0
 mpi_gcd:"-109fe45714866e56fdd4ad9b6b686df27224afb7868cf4f0cbb794526932853cbf0beea61594166654d13cd9fe0d9da594a97ee20230f12fb5434de73fb4f8102725a01622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af":"-33ae3764fd06a00cdc3cba5c45dc79a9edb4e67e4d057cc74139d531c25190d111775fc4a0f4439b8b1930bbd766e7b46f170601f316c8a18ff8d5cb5ca5581f168345d101edb462b7d93b7c520ccb8fb276b447a63d869203cc11f67a1122dc4da034218de85e39":"1"
 
-Test GCD: gcd=2, 0 < A < B
+Test GCD: gcd=2, A is even, B is even, 0 < A < B
 mpi_gcd:"213fc8ae290cdcadfba95b36d6d0dbe4e4495f6f0d19e9e1976f28a4d2650a797e17dd4c2b282ccca9a279b3fc1b3b4b2952fdc40461e25f6a869bce7f69f0204e4b402c4566363d485c744ca032073583be630d37b2f261af25f6e59b552e3b15002b5e":"675c6ec9fa0d4019b87974b88bb8f353db69ccfc9a0af98e8273aa6384a321a222eebf8941e8873716326177aecdcf68de2e0c03e62d91431ff1ab96b94ab03e2d068ba203db68c56fb276f8a419971f64ed688f4c7b0d24079823ecf42245b89b4068431bd0bc72":"2"
 
-Test GCD: gcd=2, 0 < B < A
+Test GCD: gcd=2, A is even, B is even, 0 < B < A
 mpi_gcd:"675c6ec9fa0d4019b87974b88bb8f353db69ccfc9a0af98e8273aa6384a321a222eebf8941e8873716326177aecdcf68de2e0c03e62d91431ff1ab96b94ab03e2d068ba203db68c56fb276f8a419971f64ed688f4c7b0d24079823ecf42245b89b4068431bd0bc72":"213fc8ae290cdcadfba95b36d6d0dbe4e4495f6f0d19e9e1976f28a4d2650a797e17dd4c2b282ccca9a279b3fc1b3b4b2952fdc40461e25f6a869bce7f69f0204e4b402c4566363d485c744ca032073583be630d37b2f261af25f6e59b552e3b15002b5e":"2"
 
-Test GCD: gcd=3, 0 < A < B
+Test GCD: gcd=3, A is odd, B is odd, 0 < A < B
 mpi_gcd:"31dfad053d934b04f97e08d2423949d7566e0f2693a6ded26326bcf73b978fb63d23cbf240bc4332fe73b68dfa28d8f0bdfc7ca60692d38f1fc9e9b5bf1ee8307570e0426819515bec8aae72f04b0ad0459d9493d38c6b9286b8f25868ffc5589f80410d":"9b0aa62ef713e02694b62f14d1956cfdc91eb37ae7107655c3ad7f9546f4b27334661f4de2dccad2a14b92338634b71d4d451205d94459e4afea816215f0085d4389d17305c91d28278bb274f62662af17641cd6f2b893b60b6435e36e336894e8e09c64a9b91aab":"3"
 
-Test GCD: gcd=3, 0 < B < A
+Test GCD: gcd=3, A is odd, B is odd, 0 < B < A
 mpi_gcd:"9b0aa62ef713e02694b62f14d1956cfdc91eb37ae7107655c3ad7f9546f4b27334661f4de2dccad2a14b92338634b71d4d451205d94459e4afea816215f0085d4389d17305c91d28278bb274f62662af17641cd6f2b893b60b6435e36e336894e8e09c64a9b91aab":"31dfad053d934b04f97e08d2423949d7566e0f2693a6ded26326bcf73b978fb63d23cbf240bc4332fe73b68dfa28d8f0bdfc7ca60692d38f1fc9e9b5bf1ee8307570e0426819515bec8aae72f04b0ad0459d9493d38c6b9286b8f25868ffc5589f80410d":"3"
 
-Test GCD: gcd=4, 0 < A < B
+Test GCD: gcd=4, A is even, B is even, 0 < A < B
 mpi_gcd:"427f915c5219b95bf752b66dada1b7c9c892bede1a33d3c32ede5149a4ca14f2fc2fba98565059995344f367f836769652a5fb8808c3c4bed50d379cfed3e0409c9680588acc6c7a90b8e89940640e6b077cc61a6f65e4c35e4bedcb36aa5c762a0056bc":"ceb8dd93f41a803370f2e9711771e6a7b6d399f93415f31d04e754c70946434445dd7f1283d10e6e2c64c2ef5d9b9ed1bc5c1807cc5b22863fe3572d7295607c5a0d174407b6d18adf64edf148332e3ec9dad11e98f61a480f3047d9e8448b713680d08637a178e4":"4"
 
-Test GCD: gcd=4, 0 < B < A
+Test GCD: gcd=4, A is even, B is even, 0 < B < A
 mpi_gcd:"ceb8dd93f41a803370f2e9711771e6a7b6d399f93415f31d04e754c70946434445dd7f1283d10e6e2c64c2ef5d9b9ed1bc5c1807cc5b22863fe3572d7295607c5a0d174407b6d18adf64edf148332e3ec9dad11e98f61a480f3047d9e8448b713680d08637a178e4":"427f915c5219b95bf752b66dada1b7c9c892bede1a33d3c32ede5149a4ca14f2fc2fba98565059995344f367f836769652a5fb8808c3c4bed50d379cfed3e0409c9680588acc6c7a90b8e89940640e6b077cc61a6f65e4c35e4bedcb36aa5c762a0056bc":"4"
 
-Test GCD: gcd=6, 0 < A < B
+Test GCD: gcd=6, A is even, B is even, 0 < A < B
 mpi_gcd:"63bf5a0a7b269609f2fc11a4847293aeacdc1e4d274dbda4c64d79ee772f1f6c7a4797e481788665fce76d1bf451b1e17bf8f94c0d25a71e3f93d36b7e3dd060eae1c084d032a2b7d9155ce5e09615a08b3b2927a718d7250d71e4b0d1ff8ab13f00821a":"136154c5dee27c04d296c5e29a32ad9fb923d66f5ce20ecab875aff2a8de964e668cc3e9bc5b995a5429724670c696e3a9a8a240bb288b3c95fd502c42be010ba8713a2e60b923a504f1764e9ec4cc55e2ec839ade571276c16c86bc6dc66d129d1c138c953723556":"6"
 
-Test GCD: gcd=6, 0 < B < A
+Test GCD: gcd=6, A is even, B is even, 0 < B < A
 mpi_gcd:"136154c5dee27c04d296c5e29a32ad9fb923d66f5ce20ecab875aff2a8de964e668cc3e9bc5b995a5429724670c696e3a9a8a240bb288b3c95fd502c42be010ba8713a2e60b923a504f1764e9ec4cc55e2ec839ade571276c16c86bc6dc66d129d1c138c953723556":"63bf5a0a7b269609f2fc11a4847293aeacdc1e4d274dbda4c64d79ee772f1f6c7a4797e481788665fce76d1bf451b1e17bf8f94c0d25a71e3f93d36b7e3dd060eae1c084d032a2b7d9155ce5e09615a08b3b2927a718d7250d71e4b0d1ff8ab13f00821a":"6"
 
-Test GCD: 0 < A = B
+Test GCD: A is odd, B is odd, 0 < A = B
 mpi_gcd:"109fe45714866e56fdd4ad9b6b686df27224afb7868cf4f0cbb794526932853cbf0beea61594166654d13cd9fe0d9da594a97ee20230f12fb5434de73fb4f8102725a01622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af":"109fe45714866e56fdd4ad9b6b686df27224afb7868cf4f0cbb794526932853cbf0beea61594166654d13cd9fe0d9da594a97ee20230f12fb5434de73fb4f8102725a01622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af":"109fe45714866e56fdd4ad9b6b686df27224afb7868cf4f0cbb794526932853cbf0beea61594166654d13cd9fe0d9da594a97ee20230f12fb5434de73fb4f8102725a01622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af"
 
+Test GCD: A is odd, B is odd, A = B < 0
+mpi_gcd:"-9986dabb54d13cd9fe0d9da594a97e8372ab26ed98ff622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af":"-9986dabb54d13cd9fe0d9da594a97e8372ab26ed98ff622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af":"9986dabb54d13cd9fe0d9da594a97e8372ab26ed98ff622b31b1ea42e3a265019039ac1df31869bd97930d792fb72cdaa971d8a8015af"
+
 Base test mbedtls_mpi_inv_mod #1
 mpi_inv_mod:"3":"b":"4":0
 
+Base test mbedtls_mpi_inv_mod: 0 mod 3
+mpi_inv_mod:"0":"3":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Base test mbedtls_mpi_inv_mod: 1 mod 3
+mpi_inv_mod:"1":"3":"1":0
+
+Base test mbedtls_mpi_inv_mod: 2 mod 3
+mpi_inv_mod:"2":"3":"2":0
+
+Base test mbedtls_mpi_inv_mod: 3 mod 3
+mpi_inv_mod:"0":"3":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Base test mbedtls_mpi_inv_mod: 4 mod 3
+mpi_inv_mod:"4":"3":"1":0
+
+Base test mbedtls_mpi_inv_mod: 5 mod 3
+mpi_inv_mod:"5":"3":"2":0
+
+Base test mbedtls_mpi_inv_mod: -1 mod 3
+mpi_inv_mod:"-1":"3":"2":0
+
+Base test mbedtls_mpi_inv_mod: -2 mod 3
+mpi_inv_mod:"-2":"3":"1":0
+
+Base test mbedtls_mpi_inv_mod: -3 mod 3
+mpi_inv_mod:"-3":"3":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Base test mbedtls_mpi_inv_mod: -4 mod 3
+mpi_inv_mod:"-4":"3":"2":0
+
+Base test mbedtls_mpi_inv_mod: 0 mod 4
+mpi_inv_mod:"0":"4":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Base test mbedtls_mpi_inv_mod: 1 mod 4
+mpi_inv_mod:"1":"4":"1":0
+
+Base test mbedtls_mpi_inv_mod: 2 mod 4
+mpi_inv_mod:"2":"4":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Base test mbedtls_mpi_inv_mod: 3 mod 4
+mpi_inv_mod:"3":"4":"3":0
+
+Base test mbedtls_mpi_inv_mod: 4 mod 4
+mpi_inv_mod:"4":"4":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Base test mbedtls_mpi_inv_mod: 5 mod 4
+mpi_inv_mod:"5":"4":"1":0
+
+Base test mbedtls_mpi_inv_mod: 6 mod 4
+mpi_inv_mod:"6":"4":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Base test mbedtls_mpi_inv_mod: 7 mod 4
+mpi_inv_mod:"7":"4":"3":0
+
+Base test mbedtls_mpi_inv_mod: -1 mod 4
+mpi_inv_mod:"-1":"4":"3":0
+
+Base test mbedtls_mpi_inv_mod: -2 mod 4
+mpi_inv_mod:"-2":"4":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Base test mbedtls_mpi_inv_mod: -3 mod 4
+mpi_inv_mod:"-3":"4":"1":0
+
+Base test mbedtls_mpi_inv_mod: -4 mod 4
+mpi_inv_mod:"-4":"4":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Base test mbedtls_mpi_inv_mod: -5 mod 4
+mpi_inv_mod:"-5":"4":"3":0
+
 Test mbedtls_mpi_inv_mod: mod 0 (null)
 mpi_inv_mod:"3":"":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
 
 Test mbedtls_mpi_inv_mod: mod 0 (1 limb)
 mpi_inv_mod:"3":"0":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
 
+Test mbedtls_mpi_inv_mod: 0 (null) mod positive
+mpi_inv_mod:"":"25":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Test mbedtls_mpi_inv_mod: 0 (1 limb) mod positive
+mpi_inv_mod:"00":"25":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
+
+Test mbedtls_mpi_inv_mod: 0 (null) mod 0 (null)
+mpi_inv_mod:"":"":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: 0 (1 limb) mod 0 (1 limb)
+mpi_inv_mod:"00":"00":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: 0 (null) mod 0 (1 limb)
+mpi_inv_mod:"":"00":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: 0 (1 limb) mod 0 (null)
+mpi_inv_mod:"00":"":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
 Test mbedtls_mpi_inv_mod: mod negative
 mpi_inv_mod:"3":"-b":"4":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
 
+Test mbedtls_mpi_inv_mod: negative mod negative
+mpi_inv_mod:"-3543a":"-f":"5":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: 1 mod negative
+mpi_inv_mod:"1":"-f":"1":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: 0 (null) mod negative
+mpi_inv_mod:"":"-f":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: 0 (1 limb) mod negative
+mpi_inv_mod:"00":"-f":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
 Test mbedtls_mpi_inv_mod: 2^-1 mod 4
 mpi_inv_mod:"2":"4":"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
 
 Test mbedtls_mpi_inv_mod: mod 1
 mpi_inv_mod:"3":"1":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
 
+Test mbedtls_mpi_inv_mod: negative mod 1
+mpi_inv_mod:"-732487665ae082f75c44":"1":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: 1 mod 1
+mpi_inv_mod:"1":"1":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: larger positive mod 1
+mpi_inv_mod:"aaf97513ce987d99d9d934e":"1":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: 0 (null) mod 1
+mpi_inv_mod:"":"1":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+Test mbedtls_mpi_inv_mod: 0 (1 limb) mod 1
+mpi_inv_mod:"00":"1":"0":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
 Test mbedtls_mpi_inv_mod: 0 (null) ^-1
 mpi_inv_mod:"":"11":"":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
 
@@ -1531,6 +1663,60 @@
 Test mbedtls_mpi_inv_mod #1
 mpi_inv_mod:"aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c":"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d":"8d6a5c1d7adeae3e94b9bcd2c47e0d46e778bc8804a2cc25c02d775dc3d05b0c":0
 
+GCD-modinv wrapper: working, A < N
+mpi_gcd_modinv_odd_both:"54a":"3999":"1":"30b5":0
+
+GCD-modinv wrapper: no mod inverse, A = N
+mpi_gcd_modinv_odd_both:"365":"365":"365":"no_inverse":0
+
+GCD-modinv wrapper: no mod inverse, A < N
+mpi_gcd_modinv_odd_both:"5a":"b9":"5":"no_inverse":0
+
+GCD-modinv wrapper: bad inputs, A > N
+mpi_gcd_modinv_odd_both:"3999":"54a":"":"":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD-modinv wrapper: bad inputs, A < 0
+mpi_gcd_modinv_odd_both:"-5":"54a":"":"":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD-modinv wrapper: bad inputs, N even
+mpi_gcd_modinv_odd_both:"89":"540":"":"":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD-modinv wrapper only gcd: working, A < N
+mpi_gcd_modinv_odd_only_gcd:"1de3":"31d9":"7":0
+
+GCD-modinv wrapper only gcd: working, A = N
+mpi_gcd_modinv_odd_only_gcd:"365":"365":"365":0
+
+GCD-modinv wrapper only gcd: working, no mod inverse, A < N
+mpi_gcd_modinv_odd_only_gcd:"19e":"a47f":"9":0
+
+GCD-modinv wrapper only gcd: bad inputs, A > N
+mpi_gcd_modinv_odd_only_gcd:"319d":"1de3":"":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD-modinv wrapper only gcd: bad inputs, A < 0
+mpi_gcd_modinv_odd_only_gcd:"-628ef":"991827f":"":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD-modinv wrapper only gcd: bad inputs, N even
+mpi_gcd_modinv_odd_only_gcd:"319d":"24":"":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD-modinv wrapper only modinv: working, A < N
+mpi_gcd_modinv_odd_only_modinv:"28c":"26f9":"84f":0
+
+GCD-modinv wrapper only modinv: no mod inverse, A = N
+mpi_gcd_modinv_odd_only_modinv:"365":"365":"no_inverse":0
+
+GCD-modinv wrapper only modinv: no mod inverse, A < N
+mpi_gcd_modinv_odd_only_modinv:"19e":"a47f":"no_inverse":0
+
+GCD-modinv wrapper only modinv: bad inputs, A > N
+mpi_gcd_modinv_odd_only_modinv:"26f9":"28c":"":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD-modinv wrapper only modinv: bad inputs, A < 0
+mpi_gcd_modinv_odd_only_modinv:"-992f":"1000002":"":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
+GCD-modinv wrapper only modinv: bad inputs, N even
+mpi_gcd_modinv_odd_only_modinv:"28c":"26f0":"":MBEDTLS_ERR_MPI_BAD_INPUT_DATA
+
 Base test mbedtls_mpi_is_prime #1
 depends_on:MBEDTLS_GENPRIME
 mpi_is_prime:"0":MBEDTLS_ERR_MPI_NOT_ACCEPTABLE
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_cipher.aes.data mbedtls-3.6.5/tests/suites/test_suite_cipher.aes.data
--- mbedtls-3.6.4/tests/suites/test_suite_cipher.aes.data	2025-06-30 09:24:53.064495000 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_cipher.aes.data	2025-10-14 19:12:37.046393900 +0300
@@ -1482,43 +1482,243 @@
 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
 enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_CBC:256:16:16:MBEDTLS_PADDING_PKCS7:16:16:0:32
 
-AES Decrypt test vector #0
-depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
-decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"00000000000000000000000000000000":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
-
-AES Decrypt test vector #1
-depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+AES-128-CBC Decrypt test vector, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
 decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_NONE:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"00000000000000000000000000000000":"":"":0:0
 
-AES Decrypt test vector #2
-depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+AES-192-CBC Decrypt test vector, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
 decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_NONE:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"707b1dbb0ffa40ef7d95def421233fae":"fffffffff80000000000000000000000":"":"":0:0
 
-AES Decrypt test vector #3
-depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+AES-256-CBC Decrypt test vector, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
 decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_NONE:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"49af6b372135acef10132e548f217b17":"ff000000000000000000000000000000":"":"":0:0
 
-AES Decrypt test vector #4
+AES-128-CBC Decrypt test vector, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"6dbd04d1579f6a7bee0842b9ae491588":"000000000000000000000000000000":"":"":0:0
+
+AES-192-CBC Decrypt test vector, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"593ebdf9a785f414cbed5d8a9eee1e4d":"fffffffff800000000000000000000":"":"":0:0
+
+AES-256-CBC Decrypt test vector, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f1b27ac78b93f6b0ab9787d8827176e6":"ff0000000000000000000000000000":"":"":0:0
+
+AES-128-CBC Decrypt test vector, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"175334ced3166a22437861f4bcced178":"0000000000000000000000000000":"":"":0:0
+
+AES-192-CBC Decrypt test vector, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"5d9ee7bc7066e438582c86c165604f2e":"fffffffff8000000000000000000":"":"":0:0
+
+AES-256-CBC Decrypt test vector, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"cc71abea78b8e82c3791b52d3dba55e2":"ff00000000000000000000000000":"":"":0:0
+
+AES-128-CBC Decrypt test vector, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"7d340c60b9067883962c69766cf9ec35":"2a":"":"":0:0
+
+AES-192-CBC Decrypt test vector, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"48fef8aaa78c4a148f241aaf14866772":"2a":"":"":0:0
+
+AES-256-CBC Decrypt test vector, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6ad50ca266a3e32024818f11839afb2f":"2a":"":"":0:0
+
+AES-128-CBC Decrypt test vector, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"e9844992c4b55bcaf8199d5df842adad":"":"":"":0:0
+
+AES-192-CBC Decrypt test vector, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"02bb292527e726fd51eb29894d6f0aad":"":"":"":0:0
+
+AES-256-CBC Decrypt test vector, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"1f788fe6d86c317549697fbf0c07fa43":"":"":"":0:0
+
+AES-128-CBC Decrypt test vector, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-192-CBC Decrypt test vector, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"707b1dbb0ffa40ef7d95def421233fae":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-256-CBC Decrypt test vector, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"49af6b372135acef10132e548f217b17":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-128-CBC Decrypt test vector, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"e651289760d35177eade56eae724f8fd":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-192-CBC Decrypt test vector, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f5b599490354e71a3b3fb5f1419fb971":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-256-CBC Decrypt test vector, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6852d318a0884a289a725c558e761e25":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-128-CBC Decrypt test vector, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"9c336551cc31074ffcefc161bac686b7afa572c3b53bd14a1b98d201229ddd03":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-192-CBC Decrypt test vector, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"33a31ec7605c85893872a467777f3ddb5c4271870e51a0c618f20a0efccc2bfc":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-256-CBC Decrypt test vector, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"3e536c7917a695485ef046bda7c6a3e64f439d87aa0deb338029253bea0ba54f":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-128-CBC Decrypt test vector, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"9c336551cc31074ffcefc161bac686b7":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-192-CBC Decrypt test vector, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"33a31ec7605c85893872a467777f3ddb":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-256-CBC Decrypt test vector, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"3e536c7917a695485ef046bda7c6a3e6":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-128-CBC Decrypt with finish_padded, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_NONE:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"00000000000000000000000000000000":"":"":0:0
+
+AES-192-CBC Decrypt with finish_padded, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_NONE:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"707b1dbb0ffa40ef7d95def421233fae":"fffffffff80000000000000000000000":"":"":0:0
+
+AES-256-CBC Decrypt with finish_padded, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_NONE:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"49af6b372135acef10132e548f217b17":"ff000000000000000000000000000000":"":"":0:0
+
+AES-128-CBC Decrypt with finish_padded, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"6dbd04d1579f6a7bee0842b9ae491588":"000000000000000000000000000000":"":"":0:0
+
+AES-192-CBC Decrypt with finish_padded, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"593ebdf9a785f414cbed5d8a9eee1e4d":"fffffffff800000000000000000000":"":"":0:0
+
+AES-256-CBC Decrypt with finish_padded, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f1b27ac78b93f6b0ab9787d8827176e6":"ff0000000000000000000000000000":"":"":0:0
+
+AES-128-CBC Decrypt with finish_padded, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"175334ced3166a22437861f4bcced178":"0000000000000000000000000000":"":"":0:0
+
+AES-192-CBC Decrypt with finish_padded, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"5d9ee7bc7066e438582c86c165604f2e":"fffffffff8000000000000000000":"":"":0:0
+
+AES-256-CBC Decrypt with finish_padded, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"cc71abea78b8e82c3791b52d3dba55e2":"ff00000000000000000000000000":"":"":0:0
+
+AES-128-CBC Decrypt with finish_padded, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"7d340c60b9067883962c69766cf9ec35":"2a":"":"":0:0
+
+AES-192-CBC Decrypt with finish_padded, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"48fef8aaa78c4a148f241aaf14866772":"2a":"":"":0:0
+
+AES-256-CBC Decrypt with finish_padded, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6ad50ca266a3e32024818f11839afb2f":"2a":"":"":0:0
+
+AES-128-CBC Decrypt with finish_padded, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"e9844992c4b55bcaf8199d5df842adad":"":"":"":0:0
+
+AES-192-CBC Decrypt with finish_padded, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"02bb292527e726fd51eb29894d6f0aad":"":"":"":0:0
+
+AES-256-CBC Decrypt with finish_padded, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"1f788fe6d86c317549697fbf0c07fa43":"":"":"":0:0
+
+AES-128-CBC Decrypt with finish_padded, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-192-CBC Decrypt with finish_padded, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"707b1dbb0ffa40ef7d95def421233fae":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-256-CBC Decrypt with finish_padded, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"49af6b372135acef10132e548f217b17":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-128-CBC Decrypt with finish_padded, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"e651289760d35177eade56eae724f8fd":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-192-CBC Decrypt with finish_padded, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f5b599490354e71a3b3fb5f1419fb971":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-256-CBC Decrypt with finish_padded, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6852d318a0884a289a725c558e761e25":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-128-CBC Decrypt with finish_padded, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"9c336551cc31074ffcefc161bac686b7afa572c3b53bd14a1b98d201229ddd03":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-192-CBC Decrypt with finish_padded, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"33a31ec7605c85893872a467777f3ddb5c4271870e51a0c618f20a0efccc2bfc":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-256-CBC Decrypt with finish_padded, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"3e536c7917a695485ef046bda7c6a3e64f439d87aa0deb338029253bea0ba54f":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-128-CBC Decrypt with finish_padded, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"9c336551cc31074ffcefc161bac686b7":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-192-CBC Decrypt with finish_padded, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"33a31ec7605c85893872a467777f3ddb":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-256-CBC Decrypt with finish_padded, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7
+decrypt_padded_test_vec:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"3e536c7917a695485ef046bda7c6a3e6":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+AES-128-CFB Decrypt test vector
 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CFB
 decrypt_test_vec:MBEDTLS_CIPHER_AES_128_CFB128:-1:"fffffffe000000000000000000000000":"00000000000000000000000000000000":"1114bc2028009b923f0b01915ce5e7c4":"00000000000000000000000000000000":"":"":0:0:
 
-AES Decrypt test vector #5
+AES-192-CFB Decrypt test vector
 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CFB:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
 decrypt_test_vec:MBEDTLS_CIPHER_AES_192_CFB128:-1:"ffffffffffffffffffffffffffffffffffffffffffe00000":"00000000000000000000000000000000":"60136703374f64e860b48ce31f930716":"00000000000000000000000000000000":"":"":0:0
 
-AES Decrypt test vector #6
+AES-256-CFB Decrypt test vector
 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CFB:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
 decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CFB128:-1:"ffffffffff800000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"be66cfea2fecd6bf0ec7b4352c99bcaa":"00000000000000000000000000000000":"":"":0:0
 
-AES Decrypt test vector #7
+AES-128-OFB Decrypt test vector
 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB
 decrypt_test_vec:MBEDTLS_CIPHER_AES_128_OFB:-1:"2B7E151628AED2A6ABF7158809CF4F3C":"000102030405060708090A0B0C0D0E0F":"3B3FD92EB72DAD20333449F8E83CFB4A7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e":"6BC1BEE22E409F96E93D7E117393172AAE2D8A571E03AC9C9EB76FAC45AF8E5130C81C46A35CE411E5FBC1191A0A52EFF69F2445DF4F9B17AD2B417BE66C3710":"":"":0:0:
 
-AES Decrypt test vector #8
+AES-192-OFB Decrypt test vector
 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
 decrypt_test_vec:MBEDTLS_CIPHER_AES_192_OFB:-1:"8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B":"000102030405060708090A0B0C0D0E0F":"CDC80D6FDDF18CAB34C25909C99A4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92a":"6BC1BEE22E409F96E93D7E117393172AAE2D8A571E03AC9C9EB76FAC45AF8E5130C81C46A35CE411E5FBC1191A0A52EFF69F2445DF4F9B17AD2B417BE66C3710":"":"":0:0:
 
-AES Decrypt test vector #9
+AES-256-OFB Decrypt test vector
 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
 decrypt_test_vec:MBEDTLS_CIPHER_AES_256_OFB:-1:"603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4":"000102030405060708090A0B0C0D0E0F":"DC7E84BFDA79164B7ECD8486985D38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484":"6BC1BEE22E409F96E93D7E117393172AAE2D8A571E03AC9C9EB76FAC45AF8E5130C81C46A35CE411E5FBC1191A0A52EFF69F2445DF4F9B17AD2B417BE66C3710":"":"":0:0:
 
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_cipher.constant_time.data mbedtls-3.6.5/tests/suites/test_suite_cipher.constant_time.data
--- mbedtls-3.6.4/tests/suites/test_suite_cipher.constant_time.data	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/tests/suites/test_suite_cipher.constant_time.data	2025-10-14 19:12:37.047887000 +0300
@@ -0,0 +1,255 @@
+Constant-time PKCS7 padding, valid #1
+get_pkcs_padding:"00112233445566778899AABBCCDDEE01":0:15
+
+Constant-time PKCS7 padding, valid #2
+get_pkcs_padding:"00112233445566778899AA0505050505":0:11
+
+Constant-time PKCS7 padding, valid #3
+get_pkcs_padding:"10101010101010101010101010101010":0:0
+
+Constant-time PKCS7 padding, invalid zero
+get_pkcs_padding:"00112233445566778899AABBCCDDEE00":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+Constant-time PKCS7 padding, invalid > 16
+get_pkcs_padding:"00112233445566778899AABBCCDDEE11":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC Decrypt with finish_padded, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_NONE:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"00000000000000000000000000000000":"":"":0:0
+
+CF AES-192-CBC Decrypt with finish_padded, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_NONE:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"707b1dbb0ffa40ef7d95def421233fae":"fffffffff80000000000000000000000":"":"":0:0
+
+CF AES-256-CBC Decrypt with finish_padded, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_NONE:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"49af6b372135acef10132e548f217b17":"ff000000000000000000000000000000":"":"":0:0
+
+CF AES-128-CBC Decrypt with finish_padded, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"6dbd04d1579f6a7bee0842b9ae491588":"000000000000000000000000000000":"":"":0:0
+
+CF AES-192-CBC Decrypt with finish_padded, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"593ebdf9a785f414cbed5d8a9eee1e4d":"fffffffff800000000000000000000":"":"":0:0
+
+CF AES-256-CBC Decrypt with finish_padded, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f1b27ac78b93f6b0ab9787d8827176e6":"ff0000000000000000000000000000":"":"":0:0
+
+CF AES-128-CBC Decrypt with finish_padded, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"175334ced3166a22437861f4bcced178":"0000000000000000000000000000":"":"":0:0
+
+CF AES-192-CBC Decrypt with finish_padded, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"5d9ee7bc7066e438582c86c165604f2e":"fffffffff8000000000000000000":"":"":0:0
+
+CF AES-256-CBC Decrypt with finish_padded, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"cc71abea78b8e82c3791b52d3dba55e2":"ff00000000000000000000000000":"":"":0:0
+
+CF AES-128-CBC Decrypt with finish_padded, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"7d340c60b9067883962c69766cf9ec35":"2a":"":"":0:0
+
+CF AES-192-CBC Decrypt with finish_padded, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"48fef8aaa78c4a148f241aaf14866772":"2a":"":"":0:0
+
+CF AES-256-CBC Decrypt with finish_padded, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6ad50ca266a3e32024818f11839afb2f":"2a":"":"":0:0
+
+CF AES-128-CBC Decrypt with finish_padded, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"e9844992c4b55bcaf8199d5df842adad":"":"":"":0:0
+
+CF AES-192-CBC Decrypt with finish_padded, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"02bb292527e726fd51eb29894d6f0aad":"":"":"":0:0
+
+CF AES-256-CBC Decrypt with finish_padded, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"1f788fe6d86c317549697fbf0c07fa43":"":"":"":0:0
+
+CF AES-128-CBC Decrypt with finish_padded, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-192-CBC Decrypt with finish_padded, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"707b1dbb0ffa40ef7d95def421233fae":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-256-CBC Decrypt with finish_padded, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"49af6b372135acef10132e548f217b17":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC Decrypt with finish_padded, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"e651289760d35177eade56eae724f8fd":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-192-CBC Decrypt with finish_padded, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f5b599490354e71a3b3fb5f1419fb971":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-256-CBC Decrypt with finish_padded, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6852d318a0884a289a725c558e761e25":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC Decrypt with finish_padded, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"9c336551cc31074ffcefc161bac686b7afa572c3b53bd14a1b98d201229ddd03":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-192-CBC Decrypt with finish_padded, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"33a31ec7605c85893872a467777f3ddb5c4271870e51a0c618f20a0efccc2bfc":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-256-CBC Decrypt with finish_padded, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"3e536c7917a695485ef046bda7c6a3e64f439d87aa0deb338029253bea0ba54f":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC Decrypt with finish_padded, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"9c336551cc31074ffcefc161bac686b7":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-192-CBC Decrypt with finish_padded, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"33a31ec7605c85893872a467777f3ddb":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-256-CBC Decrypt with finish_padded, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_padded_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"3e536c7917a695485ef046bda7c6a3e6":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC Decrypt test vector, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_NONE:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"00000000000000000000000000000000":"":"":0:0
+
+CF AES-192-CBC Decrypt test vector, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_NONE:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"707b1dbb0ffa40ef7d95def421233fae":"fffffffff80000000000000000000000":"":"":0:0
+
+CF AES-256-CBC Decrypt test vector, no padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_NONE:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"49af6b372135acef10132e548f217b17":"ff000000000000000000000000000000":"":"":0:0
+
+CF AES-128-CBC Decrypt test vector, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"6dbd04d1579f6a7bee0842b9ae491588":"000000000000000000000000000000":"":"":0:0
+
+CF AES-192-CBC Decrypt test vector, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"593ebdf9a785f414cbed5d8a9eee1e4d":"fffffffff800000000000000000000":"":"":0:0
+
+CF AES-256-CBC Decrypt test vector, PKCS7 (good pad 1)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f1b27ac78b93f6b0ab9787d8827176e6":"ff0000000000000000000000000000":"":"":0:0
+
+CF AES-128-CBC Decrypt test vector, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"175334ced3166a22437861f4bcced178":"0000000000000000000000000000":"":"":0:0
+
+CF AES-192-CBC Decrypt test vector, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"5d9ee7bc7066e438582c86c165604f2e":"fffffffff8000000000000000000":"":"":0:0
+
+CF AES-256-CBC Decrypt test vector, PKCS7 (good pad 2)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"cc71abea78b8e82c3791b52d3dba55e2":"ff00000000000000000000000000":"":"":0:0
+
+CF AES-128-CBC Decrypt test vector, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"7d340c60b9067883962c69766cf9ec35":"2a":"":"":0:0
+
+CF AES-192-CBC Decrypt test vector, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"48fef8aaa78c4a148f241aaf14866772":"2a":"":"":0:0
+
+CF AES-256-CBC Decrypt test vector, PKCS7 (good pad 15)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6ad50ca266a3e32024818f11839afb2f":"2a":"":"":0:0
+
+CF AES-128-CBC Decrypt test vector, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"e9844992c4b55bcaf8199d5df842adad":"":"":"":0:0
+
+CF AES-192-CBC Decrypt test vector, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"02bb292527e726fd51eb29894d6f0aad":"":"":"":0:0
+
+CF AES-256-CBC Decrypt test vector, PKCS7 (good pad 16)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"1f788fe6d86c317549697fbf0c07fa43":"":"":"":0:0
+
+CF AES-128-CBC Decrypt test vector, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-192-CBC Decrypt test vector, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"707b1dbb0ffa40ef7d95def421233fae":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-256-CBC Decrypt test vector, PKCS7 (bad pad 0)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"49af6b372135acef10132e548f217b17":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC Decrypt test vector, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"e651289760d35177eade56eae724f8fd":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-192-CBC Decrypt test vector, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f5b599490354e71a3b3fb5f1419fb971":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-256-CBC Decrypt test vector, PKCS7 (bad pad 0102)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6852d318a0884a289a725c558e761e25":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC Decrypt test vector, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"9c336551cc31074ffcefc161bac686b7afa572c3b53bd14a1b98d201229ddd03":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-192-CBC Decrypt test vector, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"33a31ec7605c85893872a467777f3ddb5c4271870e51a0c618f20a0efccc2bfc":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-256-CBC Decrypt test vector, PKCS7 (long, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"3e536c7917a695485ef046bda7c6a3e64f439d87aa0deb338029253bea0ba54f":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC Decrypt test vector, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"9c336551cc31074ffcefc161bac686b7":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-192-CBC Decrypt test vector, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_PADDING_PKCS7:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"33a31ec7605c85893872a467777f3ddb":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-256-CBC Decrypt test vector, PKCS7 (short, bad pad 17)
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+decrypt_test_vec_cf:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_PADDING_PKCS7:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"3e536c7917a695485ef046bda7c6a3e6":"":"":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC crypt Encrypt NIST KAT #4
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:HAVE_CONSTANT_TIME_AES
+test_vec_crypt_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_NONE:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"f34481ec3cc627bacd5dc3fb08f273e6":"0336763e966d92595a567cc9ce537f5e":0:0
+
+CF AES-128-CBC crypt Decrypt NIST KAT #4
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:HAVE_CONSTANT_TIME_AES
+test_vec_crypt_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_NONE:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"0336763e966d92595a567cc9ce537f5e":"f34481ec3cc627bacd5dc3fb08f273e6":0:0
+
+CF AES-128-CBC crypt Decrypt PKCS7 invalid padding
+depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:HAVE_CONSTANT_TIME_AES
+test_vec_crypt_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"0336763e966d92595a567cc9ce537f5e":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
+
+CF AES-128-CBC crypt Encrypt NIST KAT #4 PSA
+depends_on:MBEDTLS_USE_PSA_CRYPTO:MBEDTLS_TEST_DEPRECATED:PSA_WANT_KEY_TYPE_AES:PSA_WANT_ALG_CBC_NO_PADDING:HAVE_CONSTANT_TIME_AES
+test_vec_crypt_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_NONE:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"f34481ec3cc627bacd5dc3fb08f273e6":"0336763e966d92595a567cc9ce537f5e":0:1
+
+CF AES-128-CBC crypt Decrypt NIST KAT #4 PSA
+depends_on:MBEDTLS_USE_PSA_CRYPTO:MBEDTLS_TEST_DEPRECATED:PSA_WANT_KEY_TYPE_AES:PSA_WANT_ALG_CBC_NO_PADDING:HAVE_CONSTANT_TIME_AES
+test_vec_crypt_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_NONE:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"0336763e966d92595a567cc9ce537f5e":"f34481ec3cc627bacd5dc3fb08f273e6":0:1
+
+## PSA-backed cipher contexts do not support PKCS7 padding.
+#CF AES-128-CBC crypt Decrypt PKCS7 invalid padding PSA
+#depends_on:MBEDTLS_USE_PSA_CRYPTO:MBEDTLS_TEST_DEPRECATED:PSA_WANT_KEY_TYPE_AES:PSA_WANT_ALG_CBC_PKCS7:HAVE_CONSTANT_TIME_AES
+#test_vec_crypt_cf:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_PADDING_PKCS7:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"0336763e966d92595a567cc9ce537f5e":"":MBEDTLS_ERR_CIPHER_INVALID_PADDING:1
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_cipher.function mbedtls-3.6.5/tests/suites/test_suite_cipher.function
--- mbedtls-3.6.4/tests/suites/test_suite_cipher.function	2025-06-30 09:24:53.065969500 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_cipher.function	2025-10-14 19:12:37.048460500 +0300
@@ -14,6 +14,20 @@
 #define MBEDTLS_CIPHER_AUTH_CRYPT
 #endif
 
+/* Our software AES implementation is not constant-time. For constant-time
+ * testing involving AES, require a hardware-assisted AES that is
+ * constant-time.
+ *
+ * We assume that if the hardware-assisted version is available in the build,
+ * it will be available at runtime. The AES tests will fail if run on a
+ * processor without AESNI/AESCE.
+ */
+#include "aesce.h"
+#include "aesni.h"
+#if defined(MBEDTLS_AESCE_HAVE_CODE) || defined(MBEDTLS_AESNI_HAVE_CODE)
+#define HAVE_CONSTANT_TIME_AES
+#endif
+
 /* Check the internal consistency of a cipher info structure, and
  * check it against mbedtls_cipher_info_from_xxx(). */
 static int check_cipher_info(mbedtls_cipher_type_t type,
@@ -858,6 +872,269 @@
 }
 /* END_CASE */
 
+/* BEGIN_CASE */
+/* Similar to decrypt_test_vec, but with constant-flow assertions.
+ * We use a separate test function so that we can run the functional tests
+ * in all configurations where the underlying cipher is enabled, and
+ * run the constant-flow tests only in configurations where the underlying
+ * cipher is constant-time. In particular, AES test cases need to depend
+ * on HAVE_CONSTANT_TIME_AES.
+ */
+void decrypt_test_vec_cf(int cipher_id, int pad_mode, data_t *key,
+                         data_t *iv, data_t *cipher,
+                         data_t *clear, data_t *ad, data_t *tag,
+                         int expected_finish_result, int tag_result)
+{
+    unsigned char output[265];
+    mbedtls_cipher_context_t ctx;
+    size_t outlen, total_len;
+
+    mbedtls_cipher_init(&ctx);
+
+    memset(output, 0x00, sizeof(output));
+
+#if !defined(MBEDTLS_GCM_C) && !defined(MBEDTLS_CHACHAPOLY_C)
+    ((void) ad);
+    ((void) tag);
+#endif
+
+    TEST_CF_SECRET(key->x, key->len);
+    TEST_CF_SECRET(cipher->x, cipher->len);
+
+    /* Prepare context */
+    TEST_ASSERT(0 == mbedtls_cipher_setup(&ctx,
+                                          mbedtls_cipher_info_from_type(cipher_id)));
+    TEST_ASSERT(0 == mbedtls_cipher_setkey(&ctx, key->x, 8 * key->len, MBEDTLS_DECRYPT));
+#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
+    if (pad_mode != -1) {
+        TEST_ASSERT(0 == mbedtls_cipher_set_padding_mode(&ctx, pad_mode));
+    }
+#else
+    (void) pad_mode;
+#endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
+    TEST_ASSERT(0 == mbedtls_cipher_set_iv(&ctx, iv->x, iv->len));
+    TEST_ASSERT(0 == mbedtls_cipher_reset(&ctx));
+#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
+    int expected = (ctx.cipher_info->mode == MBEDTLS_MODE_GCM ||
+                    ctx.cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305) ?
+                   0 : MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE;
+
+    TEST_EQUAL(expected, mbedtls_cipher_update_ad(&ctx, ad->x, ad->len));
+#endif
+
+    /* decode buffer and check tag->x */
+    total_len = 0;
+    TEST_ASSERT(0 == mbedtls_cipher_update(&ctx, cipher->x, cipher->len, output, &outlen));
+    total_len += outlen;
+    int actual_finish_result = mbedtls_cipher_finish(&ctx, output + outlen,
+                                                     &outlen);
+    TEST_CF_PUBLIC(&outlen, sizeof(outlen));
+    TEST_EQUAL(actual_finish_result, expected_finish_result);
+    if (0 != expected_finish_result) {
+        /* Check output parameter is set to the least-harmful value on error */
+        TEST_ASSERT(0 == outlen);
+    }
+    total_len += outlen;
+#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
+    int tag_expected = (ctx.cipher_info->mode == MBEDTLS_MODE_GCM ||
+                        ctx.cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305) ?
+                       tag_result : MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE;
+
+    TEST_EQUAL(tag_expected, mbedtls_cipher_check_tag(&ctx, tag->x, tag->len));
+#endif
+
+    /* check plaintext only if everything went fine */
+    if (0 == expected_finish_result && 0 == tag_result) {
+        TEST_CF_PUBLIC(output, sizeof(output));
+        TEST_MEMORY_COMPARE(output, total_len, clear->x, clear->len);
+    }
+
+exit:
+    mbedtls_cipher_free(&ctx);
+}
+/* END_CASE */
+
+/* BEGIN_CASE */
+void decrypt_padded_test_vec(int cipher_id, int pad_mode, data_t *key,
+                             data_t *iv, data_t *cipher,
+                             data_t *clear, data_t *ad, data_t *tag,
+                             int expected_finish_result, int tag_result)
+{
+    unsigned char output[265];
+    mbedtls_cipher_context_t ctx;
+    size_t outlen, total_len;
+
+    mbedtls_cipher_init(&ctx);
+
+    memset(output, 0x00, sizeof(output));
+
+#if !defined(MBEDTLS_GCM_C) && !defined(MBEDTLS_CHACHAPOLY_C)
+    ((void) ad);
+    ((void) tag);
+#endif
+
+    /* Prepare context */
+    TEST_ASSERT(0 == mbedtls_cipher_setup(&ctx,
+                                          mbedtls_cipher_info_from_type(cipher_id)));
+    TEST_ASSERT(0 == mbedtls_cipher_setkey(&ctx, key->x, 8 * key->len, MBEDTLS_DECRYPT));
+#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
+    if (pad_mode != -1) {
+        TEST_ASSERT(0 == mbedtls_cipher_set_padding_mode(&ctx, pad_mode));
+    }
+#else
+    (void) pad_mode;
+#endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
+    TEST_ASSERT(0 == mbedtls_cipher_set_iv(&ctx, iv->x, iv->len));
+    TEST_ASSERT(0 == mbedtls_cipher_reset(&ctx));
+#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
+    int expected = (ctx.cipher_info->mode == MBEDTLS_MODE_GCM ||
+                    ctx.cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305) ?
+                   0 : MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE;
+
+    TEST_EQUAL(expected, mbedtls_cipher_update_ad(&ctx, ad->x, ad->len));
+#endif
+
+    /* decode buffer and check tag->x */
+    total_len = 0;
+    TEST_ASSERT(0 == mbedtls_cipher_update(&ctx, cipher->x, cipher->len, output, &outlen));
+    total_len += outlen;
+
+    size_t invalid_padding = 42;
+    int actual_finish_result =
+        mbedtls_cipher_finish_padded(&ctx, output + outlen, &outlen,
+                                     &invalid_padding);
+    switch (expected_finish_result) {
+        case 0:
+            TEST_EQUAL(actual_finish_result, 0);
+            TEST_EQUAL(invalid_padding, 0);
+            break;
+        case MBEDTLS_ERR_CIPHER_INVALID_PADDING:
+            TEST_EQUAL(actual_finish_result, 0);
+            TEST_EQUAL(invalid_padding, ~(size_t) 0);
+            break;
+        default:
+            TEST_EQUAL(actual_finish_result, expected_finish_result);
+            /* Check output parameter is set to the least-harmful value on error */
+            TEST_EQUAL(0, outlen);
+            break;
+    }
+    total_len += outlen;
+
+#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
+    int tag_expected = (ctx.cipher_info->mode == MBEDTLS_MODE_GCM ||
+                        ctx.cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305) ?
+                       tag_result : MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE;
+
+    TEST_EQUAL(tag_expected, mbedtls_cipher_check_tag(&ctx, tag->x, tag->len));
+#endif
+
+    /* check plaintext only if everything went fine */
+    if (0 == expected_finish_result && 0 == tag_result) {
+        TEST_ASSERT(total_len == clear->len);
+        TEST_ASSERT(0 == memcmp(output, clear->x, clear->len));
+    }
+
+exit:
+    mbedtls_cipher_free(&ctx);
+}
+/* END_CASE */
+
+/* BEGIN_CASE */
+/* Similar to decrypt_padded_test_vec, but with constant-flow assertions.
+ * We use a separate test function so that we can run the functional tests
+ * in all configurations where the underlying cipher is enabled, and
+ * run the constant-flow tests only in configurations where the underlying
+ * cipher is constant-time. In particular, AES test cases need to depend
+ * on HAVE_CONSTANT_TIME_AES.
+ */
+void decrypt_padded_test_vec_cf(int cipher_id, int pad_mode, data_t *key,
+                                data_t *iv, data_t *cipher,
+                                data_t *clear, data_t *ad, data_t *tag,
+                                int expected_finish_result, int tag_result)
+{
+    unsigned char output[265];
+    mbedtls_cipher_context_t ctx;
+    size_t outlen, total_len;
+
+    mbedtls_cipher_init(&ctx);
+
+    memset(output, 0x00, sizeof(output));
+
+#if !defined(MBEDTLS_GCM_C) && !defined(MBEDTLS_CHACHAPOLY_C)
+    ((void) ad);
+    ((void) tag);
+#endif
+
+    TEST_CF_SECRET(key->x, key->len);
+    TEST_CF_SECRET(cipher->x, cipher->len);
+
+    /* Prepare context */
+    TEST_ASSERT(0 == mbedtls_cipher_setup(&ctx,
+                                          mbedtls_cipher_info_from_type(cipher_id)));
+    TEST_ASSERT(0 == mbedtls_cipher_setkey(&ctx, key->x, 8 * key->len, MBEDTLS_DECRYPT));
+#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
+    if (pad_mode != -1) {
+        TEST_ASSERT(0 == mbedtls_cipher_set_padding_mode(&ctx, pad_mode));
+    }
+#else
+    (void) pad_mode;
+#endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
+    TEST_ASSERT(0 == mbedtls_cipher_set_iv(&ctx, iv->x, iv->len));
+    TEST_ASSERT(0 == mbedtls_cipher_reset(&ctx));
+#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
+    int expected = (ctx.cipher_info->mode == MBEDTLS_MODE_GCM ||
+                    ctx.cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305) ?
+                   0 : MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE;
+
+    TEST_EQUAL(expected, mbedtls_cipher_update_ad(&ctx, ad->x, ad->len));
+#endif
+
+    /* decode buffer and check tag->x */
+    total_len = 0;
+    TEST_ASSERT(0 == mbedtls_cipher_update(&ctx, cipher->x, cipher->len, output, &outlen));
+    total_len += outlen;
+
+    size_t invalid_padding = 42;
+    int actual_finish_result =
+        mbedtls_cipher_finish_padded(&ctx, output + outlen, &outlen,
+                                     &invalid_padding);
+    TEST_CF_PUBLIC(&outlen, sizeof(outlen));
+    switch (expected_finish_result) {
+        case 0:
+            TEST_EQUAL(actual_finish_result, 0);
+            TEST_EQUAL(invalid_padding, 0);
+            break;
+        case MBEDTLS_ERR_CIPHER_INVALID_PADDING:
+            TEST_EQUAL(actual_finish_result, 0);
+            TEST_EQUAL(invalid_padding, ~(size_t) 0);
+            break;
+        default:
+            TEST_EQUAL(actual_finish_result, expected_finish_result);
+            /* Check output parameter is set to the least-harmful value on error */
+            TEST_EQUAL(0, outlen);
+            break;
+    }
+    total_len += outlen;
+
+#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
+    int tag_expected = (ctx.cipher_info->mode == MBEDTLS_MODE_GCM ||
+                        ctx.cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305) ?
+                       tag_result : MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE;
+
+    TEST_EQUAL(tag_expected, mbedtls_cipher_check_tag(&ctx, tag->x, tag->len));
+#endif
+
+    /* check plaintext only if everything went fine */
+    if (0 == expected_finish_result && 0 == tag_result) {
+        TEST_CF_PUBLIC(output, sizeof(output));
+        TEST_MEMORY_COMPARE(output, total_len, clear->x, clear->len);
+    }
+
+exit:
+    mbedtls_cipher_free(&ctx);
+}
+/* END_CASE */
+
 /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_AEAD */
 void auth_crypt_tv(int cipher_id, data_t *key, data_t *iv,
                    data_t *ad, data_t *cipher, data_t *tag,
@@ -1141,6 +1418,68 @@
 /* END_CASE */
 
 /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_WITH_PADDING */
+/* Similar to test_vec_crypt, but with constant-flow assertions.
+ * We use a separate test function so that we can run the functional tests
+ * in all configurations where the underlying cipher is enabled, and
+ * run the constant-flow tests only in configurations where the underlying
+ * cipher is constant-time. In particular, AES test cases need to depend
+ * on HAVE_CONSTANT_TIME_AES.
+ */
+void test_vec_crypt_cf(int cipher_id, int pad_mode, int operation, data_t *key,
+                       data_t *iv, data_t *input, data_t *result,
+                       int expected_finish_result, int use_psa)
+{
+    mbedtls_cipher_context_t ctx;
+    unsigned char output[32];
+    size_t outlen;
+
+    mbedtls_cipher_init(&ctx);
+
+    memset(output, 0x00, sizeof(output));
+
+    TEST_CF_SECRET(key->x, key->len);
+    TEST_CF_SECRET(input->x, input->len);
+
+    /* Prepare context */
+#if !defined(MBEDTLS_USE_PSA_CRYPTO) || !defined(MBEDTLS_TEST_DEPRECATED)
+    (void) use_psa;
+#else
+    if (use_psa == 1) {
+        PSA_ASSERT(psa_crypto_init());
+        TEST_ASSERT(0 == mbedtls_cipher_setup_psa(&ctx,
+                                                  mbedtls_cipher_info_from_type(cipher_id), 0));
+    } else
+#endif /* !MBEDTLS_USE_PSA_CRYPTO || !MBEDTLS_TEST_DEPRECATED*/
+    TEST_ASSERT(0 == mbedtls_cipher_setup(&ctx,
+                                          mbedtls_cipher_info_from_type(cipher_id)));
+
+    TEST_ASSERT(0 == mbedtls_cipher_setkey(&ctx, key->x, 8 * key->len, operation));
+    if (MBEDTLS_MODE_CBC == ctx.cipher_info->mode) {
+        TEST_ASSERT(0 == mbedtls_cipher_set_padding_mode(&ctx, pad_mode));
+    }
+
+    int actual_finish_result =
+        mbedtls_cipher_crypt(&ctx, iv->len ? iv->x : NULL, iv->len,
+                             input->x, input->len,
+                             output, &outlen);
+    TEST_CF_PUBLIC(&outlen, sizeof(outlen));
+    TEST_EQUAL(expected_finish_result, actual_finish_result);
+
+    /* check plaintext only if everything went fine */
+    if (0 == expected_finish_result) {
+        TEST_CF_PUBLIC(output, sizeof(output));
+        TEST_MEMORY_COMPARE(output, outlen, result->x, result->len);
+    }
+
+exit:
+    mbedtls_cipher_free(&ctx);
+#if defined(MBEDTLS_USE_PSA_CRYPTO) && defined(MBEDTLS_TEST_DEPRECATED)
+    PSA_DONE();
+#endif /* MBEDTLS_USE_PSA_CRYPTO && MBEDTLS_TEST_DEPRECATED */
+}
+/* END_CASE */
+
+/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_WITH_PADDING */
 void set_padding(int cipher_id, int pad_mode, int ret)
 {
     const mbedtls_cipher_info_t *cipher_info;
@@ -1160,8 +1499,8 @@
 /* END_CASE */
 
 /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
-void check_padding(int pad_mode, data_t *input, int ret, int dlen_check
-                   )
+void check_padding(int pad_mode, data_t *input,
+                   int expected_ret, int dlen_check)
 {
     mbedtls_cipher_info_t cipher_info;
     mbedtls_cipher_context_t ctx;
@@ -1174,10 +1513,20 @@
 
     TEST_ASSERT(0 == mbedtls_cipher_set_padding_mode(&ctx, pad_mode));
 
-
-    TEST_ASSERT(ret == ctx.get_padding(input->x, input->len, &dlen));
-    if (0 == ret) {
-        TEST_ASSERT(dlen == (size_t) dlen_check);
+    size_t invalid_padding = 42;
+    int ret = ctx.get_padding(input->x, input->len, &dlen, &invalid_padding);
+    switch (expected_ret) {
+        case 0:
+            TEST_EQUAL(ret, 0);
+            TEST_EQUAL(invalid_padding, 0);
+            TEST_EQUAL(dlen, dlen_check);
+            break;
+        case MBEDTLS_ERR_CIPHER_INVALID_PADDING:
+            TEST_EQUAL(ret, 0);
+            TEST_EQUAL(invalid_padding, ~(size_t) 0);
+            break;
+        default:
+            TEST_EQUAL(ret, expected_ret);
     }
 }
 /* END_CASE */
@@ -1270,14 +1619,27 @@
 {
     int ret;
     size_t calculated_len;
+    size_t invalid_padding;
 
     TEST_CF_SECRET(decrypted_block->x, decrypted_block->len);
     ret = mbedtls_get_pkcs_padding(decrypted_block->x, decrypted_block->len,
-                                   &calculated_len);
+                                   &calculated_len, &invalid_padding);
 
-    TEST_EQUAL(ret, exp_ret);
-    if (exp_ret == 0) {
-        TEST_EQUAL(calculated_len, exp_len);
+    switch (exp_ret) {
+        case 0:
+            TEST_EQUAL(ret, 0);
+            TEST_EQUAL(invalid_padding, 0);
+            TEST_EQUAL(calculated_len, exp_len);
+            break;
+
+        case MBEDTLS_ERR_CIPHER_INVALID_PADDING:
+            TEST_EQUAL(ret, 0);
+            TEST_EQUAL(invalid_padding, ~(size_t) 0);
+            break;
+
+        default:
+            TEST_EQUAL(ret, exp_ret);
+            break;
     }
 }
 /* END_CASE */
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_cipher.padding.data mbedtls-3.6.5/tests/suites/test_suite_cipher.padding.data
--- mbedtls-3.6.4/tests/suites/test_suite_cipher.padding.data	2025-06-30 09:24:53.067678000 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_cipher.padding.data	2025-10-14 19:12:37.051335800 +0300
@@ -217,18 +217,3 @@
 
 Check no padding #3 (correct by definition)
 check_padding:MBEDTLS_PADDING_NONE:"":0:0
-
-Constant-time PKCS7 padding, valid #1
-get_pkcs_padding:"00112233445566778899AABBCCDDEE01":0:15
-
-Constant-time PKCS7 padding, valid #2
-get_pkcs_padding:"00112233445566778899AA0505050505":0:11
-
-Constant-time PKCS7 padding, valid #3
-get_pkcs_padding:"10101010101010101010101010101010":0:0
-
-Constant-time PKCS7 padding, invalid zero
-get_pkcs_padding:"00112233445566778899AABBCCDDEE00":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
-
-Constant-time PKCS7 padding, invalid > 16
-get_pkcs_padding:"00112233445566778899AABBCCDDEE11":MBEDTLS_ERR_CIPHER_INVALID_PADDING:0
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_config.crypto_combinations.data mbedtls-3.6.5/tests/suites/test_suite_config.crypto_combinations.data
--- mbedtls-3.6.4/tests/suites/test_suite_config.crypto_combinations.data	2025-06-30 09:24:53.068394400 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_config.crypto_combinations.data	2025-10-14 19:12:37.052193200 +0300
@@ -1,5 +1,10 @@
 # Interesting combinations of low-level crypto options
 
+# Entropy: available in mbedtls_entropy_init(), thanks to NV seed, no platform sources, no custom source
+Config: entropy: NV seed only
+depends_on:!MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_NO_PLATFORM_ENTROPY:!MBEDTLS_ENTROPY_HARDWARE_ALT
+pass:
+
 Config: ECC: Weierstrass curves only
 depends_on:MBEDTLS_ECP_SHORT_WEIERSTRASS_ENABLED:!MBEDTLS_ECP_MONTGOMERY_ENABLED
 pass:
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_pkparse.data mbedtls-3.6.5/tests/suites/test_suite_pkparse.data
--- mbedtls-3.6.4/tests/suites/test_suite_pkparse.data	2025-06-30 09:24:53.090514200 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_pkparse.data	2025-10-14 19:12:37.079558600 +0300
@@ -174,74 +174,290 @@
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des.pem":"PolarSSLTest":0
 
+Parse RSA Key #38.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem":"PolarSSLTest":0
+
+Parse RSA Key #38.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem":"PolarSSLTest":0
+
+Parse RSA Key #38.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem":"PolarSSLTest":0
+
 Parse RSA Key #38.1 (PKCS#8 encrypted v2 PBKDF2 3DES, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #38.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #38.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #38.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #38.2 (PKCS#8 encrypted v2 PBKDF2 3DES, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #38.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #38.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #38.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #39 (PKCS#8 encrypted v2 PBKDF2 3DES, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des.pem":"PolarSSLTest":0
 
+Parse RSA Key #39.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem":"PolarSSLTest":0
+
+Parse RSA Key #39.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem":"PolarSSLTest":0
+
+Parse RSA Key #39.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem":"PolarSSLTest":0
+
 Parse RSA Key #39.1 (PKCS#8 encrypted v2 PBKDF2 3DES, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #39.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #39.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #39.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #39.2 (PKCS#8 encrypted v2 PBKDF2 3DES, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #39.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #39.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #39.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #40 (PKCS#8 encrypted v2 PBKDF2 3DES, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des.pem":"PolarSSLTest":0
 
+Parse RSA Key #40.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem":"PolarSSLTest":0
+
+Parse RSA Key #40.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem":"PolarSSLTest":0
+
+Parse RSA Key #40.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem":"PolarSSLTest":0
+
 Parse RSA Key #40.1 (PKCS#8 encrypted v2 PBKDF2 3DES, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #40.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #40.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #40.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #40.2 (PKCS#8 encrypted v2 PBKDF2 3DES, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #40.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #40.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #40.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #41 (PKCS#8 encrypted v2 PBKDF2 3DES DER)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des.der":"PolarSSLTest":0
 
+Parse RSA Key #41.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.der":"PolarSSLTest":0
+
+Parse RSA Key #41.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.der":"PolarSSLTest":0
+
+Parse RSA Key #41.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.der":"PolarSSLTest":0
+
 Parse RSA Key #41.1 (PKCS#8 encrypted v2 PBKDF2 3DES DER, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #41.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #41.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #41.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #41.2 (PKCS#8 encrypted v2 PBKDF2 3DES DER, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #41.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #41.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #41.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #42 (PKCS#8 encrypted v2 PBKDF2 3DES DER, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des.der":"PolarSSLTest":0
 
+Parse RSA Key #42.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.der":"PolarSSLTest":0
+
+Parse RSA Key #42.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.der":"PolarSSLTest":0
+
+Parse RSA Key #42.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.der":"PolarSSLTest":0
+
 Parse RSA Key #42.1 (PKCS#8 encrypted v2 PBKDF2 3DES DER, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #42.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #42.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #42.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #42.2 (PKCS#8 encrypted v2 PBKDF2 3DES DER, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #42.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #42.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #42.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #43 (PKCS#8 encrypted v2 PBKDF2 3DES DER, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des.der":"PolarSSLTest":0
 
+Parse RSA Key #43.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.der":"PolarSSLTest":0
+
+Parse RSA Key #43.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.der":"PolarSSLTest":0
+
+Parse RSA Key #43.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.der":"PolarSSLTest":0
+
 Parse RSA Key #43.1 (PKCS#8 encrypted v2 PBKDF2 3DES DER, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #43.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #43.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #43.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #43.2 (PKCS#8 encrypted v2 PBKDF2 3DES DER, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #43.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #43.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #43.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #44 (PKCS#8 encrypted v2 PBKDF2 DES)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA1:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des.pem":"PolarSSLTest":0
@@ -318,74 +534,290 @@
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.pem":"PolarSSLTest":0
 
+Parse RSA Key #50.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem":"PolarSSLTest":0
+
+Parse RSA Key #50.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem":"PolarSSLTest":0
+
+Parse RSA Key #50.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem":"PolarSSLTest":0
+
 Parse RSA Key #50.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #50.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #50.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #50.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #50.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #50.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #50.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #50.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #51 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem":"PolarSSLTest":0
 
+Parse RSA Key #51.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem":"PolarSSLTest":0
+
+Parse RSA Key #51.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem":"PolarSSLTest":0
+
+Parse RSA Key #51.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem":"PolarSSLTest":0
+
 Parse RSA Key #51.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #51.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #51.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #51.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #51.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #51.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #51.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #51.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #52 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.pem":"PolarSSLTest":0
 
+Parse RSA Key #52.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem":"PolarSSLTest":0
+
+Parse RSA Key #52.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem":"PolarSSLTest":0
+
+Parse RSA Key #52.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem":"PolarSSLTest":0
+
 Parse RSA Key #52.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #52.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #52.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #52.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #52.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #52.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #52.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #52.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #53 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.der":"PolarSSLTest":0
 
+Parse RSA Key #53.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.der":"PolarSSLTest":0
+
+Parse RSA Key #53.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.der":"PolarSSLTest":0
+
+Parse RSA Key #53.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.der":"PolarSSLTest":0
+
 Parse RSA Key #53.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #53.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #53.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #53.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #53.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #53.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #53.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #53.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #54 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.der":"PolarSSLTest":0
 
+Parse RSA Key #54.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.der":"PolarSSLTest":0
+
+Parse RSA Key #54.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.der":"PolarSSLTest":0
+
+Parse RSA Key #54.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.der":"PolarSSLTest":0
+
 Parse RSA Key #54.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #54.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #54.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #54.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #54.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #54.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #54.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #54.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #55 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.der":"PolarSSLTest":0
 
+Parse RSA Key #55.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.der":"PolarSSLTest":0
+
+Parse RSA Key #55.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.der":"PolarSSLTest":0
+
+Parse RSA Key #55.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.der":"PolarSSLTest":0
+
 Parse RSA Key #55.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #55.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #55.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #55.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #55.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #55.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA224 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #55.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA224 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #55.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA224 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #56 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA224:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.pem":"PolarSSLTest":0
@@ -462,74 +894,290 @@
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.pem":"PolarSSLTest":0
 
+Parse RSA Key #62.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem":"PolarSSLTest":0
+
+Parse RSA Key #62.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem":"PolarSSLTest":0
+
+Parse RSA Key #62.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem":"PolarSSLTest":0
+
 Parse RSA Key #62.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #62.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #62.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #62.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #62.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #62.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #62.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #62.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #63 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.pem":"PolarSSLTest":0
 
+Parse RSA Key #63.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem":"PolarSSLTest":0
+
+Parse RSA Key #63.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem":"PolarSSLTest":0
+
+Parse RSA Key #63.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem":"PolarSSLTest":0
+
 Parse RSA Key #63.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #63.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #63.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #63.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #63.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #63.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #63.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #63.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #64 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.pem":"PolarSSLTest":0
 
+Parse RSA Key #64.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem":"PolarSSLTest":0
+
+Parse RSA Key #64.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem":"PolarSSLTest":0
+
+Parse RSA Key #64.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem":"PolarSSLTest":0
+
 Parse RSA Key #64.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #64.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #64.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #64.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #64.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #64.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #64.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #64.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #65 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.der":"PolarSSLTest":0
 
+Parse RSA Key #65.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.der":"PolarSSLTest":0
+
+Parse RSA Key #65.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.der":"PolarSSLTest":0
+
+Parse RSA Key #65.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.der":"PolarSSLTest":0
+
 Parse RSA Key #65.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #65.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #65.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #65.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #65.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #65.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #65.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #65.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #66 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.der":"PolarSSLTest":0
 
+Parse RSA Key #66.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.der":"PolarSSLTest":0
+
+Parse RSA Key #66.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.der":"PolarSSLTest":0
+
+Parse RSA Key #66.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.der":"PolarSSLTest":0
+
 Parse RSA Key #66.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #66.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #66.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #66.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #66.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #66.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #66.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #66.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #67 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.der":"PolarSSLTest":0
 
+Parse RSA Key #67.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.der":"PolarSSLTest":0
+
+Parse RSA Key #67.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.der":"PolarSSLTest":0
+
+Parse RSA Key #67.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.der":"PolarSSLTest":0
+
 Parse RSA Key #68.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #68.2 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #68.3 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #68.4 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #68.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #68.5 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA256 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #68.6 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA256 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #68.7 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA256 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #69 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.pem":"PolarSSLTest":0
@@ -606,74 +1254,290 @@
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.pem":"PolarSSLTest":0
 
+Parse RSA Key #75.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem":"PolarSSLTest":0
+
+Parse RSA Key #75.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem":"PolarSSLTest":0
+
+Parse RSA Key #75.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem":"PolarSSLTest":0
+
 Parse RSA Key #75.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #75.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #75.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #75.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #75.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #75.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #75.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #75.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #76 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem":"PolarSSLTest":0
 
+Parse RSA Key #76.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.pem":"PolarSSLTest":0
+
+Parse RSA Key #76.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.pem":"PolarSSLTest":0
+
+Parse RSA Key #76.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem":"PolarSSLTest":0
+
 Parse RSA Key #76.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #76.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #76.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #76.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #76.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #76.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #76.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #76.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #77 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.pem":"PolarSSLTest":0
 
+Parse RSA Key #77.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem":"PolarSSLTest":0
+
+Parse RSA Key #77.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem":"PolarSSLTest":0
+
+Parse RSA Key #77.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem":"PolarSSLTest":0
+
 Parse RSA Key #77.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #77.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #77.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #77.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #77.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #77.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #77.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #77.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #78 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.der":"PolarSSLTest":0
 
+Parse RSA Key #78.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.der":"PolarSSLTest":0
+
+Parse RSA Key #78.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.der":"PolarSSLTest":0
+
+Parse RSA Key #78.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.der":"PolarSSLTest":0
+
 Parse RSA Key #78.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #78.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #78.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #78.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #78.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #78.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #78.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #78.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #79 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.der":"PolarSSLTest":0
 
+Parse RSA Key #79.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.der":"PolarSSLTest":0
+
+Parse RSA Key #79.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.der":"PolarSSLTest":0
+
+Parse RSA Key #79.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.der":"PolarSSLTest":0
+
 Parse RSA Key #79.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #79.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #79.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #79.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #79.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #79.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #79.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #79.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #80 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.der":"PolarSSLTest":0
 
+Parse RSA Key #80.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.der":"PolarSSLTest":0
+
+Parse RSA Key #80.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.der":"PolarSSLTest":0
+
+Parse RSA Key #80.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.der":"PolarSSLTest":0
+
 Parse RSA Key #80.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #80.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #80.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #80.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #80.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #80.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #80.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #80.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #81 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.pem":"PolarSSLTest":0
@@ -750,74 +1614,290 @@
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.pem":"PolarSSLTest":0
 
+Parse RSA Key #88.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem":"PolarSSLTest":0
+
+Parse RSA Key #88.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem":"PolarSSLTest":0
+
+Parse RSA Key #88.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem":"PolarSSLTest":0
+
 Parse RSA Key #88.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #88.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #88.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #88.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #88.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #88.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #88.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #88.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #89 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem":"PolarSSLTest":0
 
+Parse RSA Key #89.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem":"PolarSSLTest":0
+
+Parse RSA Key #89.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem":"PolarSSLTest":0
+
+Parse RSA Key #89.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem":"PolarSSLTest":0
+
 Parse RSA Key #89.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #89.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #89.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #89.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #89.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #89.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #89.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #89.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #90 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.pem":"PolarSSLTest":0
 
+Parse RSA Key #90.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem":"PolarSSLTest":0
+
+Parse RSA Key #90.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem":"PolarSSLTest":0
+
+Parse RSA Key #90.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem":"PolarSSLTest":0
+
 Parse RSA Key #90.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #90.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #90.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #90.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #90.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
 
+Parse RSA Key #90.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #90.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
+Parse RSA Key #90.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
+
 Parse RSA Key #91 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.der":"PolarSSLTest":0
 
+Parse RSA Key #91.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.der":"PolarSSLTest":0
+
+Parse RSA Key #91.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.der":"PolarSSLTest":0
+
+Parse RSA Key #91.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512 DER)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.der":"PolarSSLTest":0
+
 Parse RSA Key #91.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #91.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #91.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #91.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512 DER, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #91.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #91.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes128cbc_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #91.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes192cbc_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #91.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512 DER, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_aes256cbc_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #92 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 2048-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.der":"PolarSSLTest":0
 
+Parse RSA Key #92.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.der":"PolarSSLTest":0
+
+Parse RSA Key #92.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.der":"PolarSSLTest":0
+
+Parse RSA Key #92.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512 DER, 2048-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.der":"PolarSSLTest":0
+
 Parse RSA Key #92.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 2048-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #92.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #92.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #92.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512 DER, 2048-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #92.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 2048-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #92.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #92.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #92.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512 DER, 2048-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #93 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 4096-bit)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.der":"PolarSSLTest":0
 
+Parse RSA Key #93.1 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.der":"PolarSSLTest":0
+
+Parse RSA Key #93.2 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.der":"PolarSSLTest":0
+
+Parse RSA Key #93.3 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512 DER, 4096-bit)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.der":"PolarSSLTest":0
+
 Parse RSA Key #93.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 4096-bit, wrong PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
 
+Parse RSA Key #93.4 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #93.5 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
+Parse RSA Key #93.6 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512 DER, 4096-bit, wrong PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
+
 Parse RSA Key #93.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 4096-bit, no PW)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
+Parse RSA Key #93.7 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA512 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes128cbc_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #93.8 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA512 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes192cbc_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
+Parse RSA Key #93.9 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA512 DER, 4096-bit, no PW)
+depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
+pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_aes256cbc_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
+
 Parse RSA Key #94 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512)
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.pem":"PolarSSLTest":0
@@ -890,30 +1970,6 @@
 depends_on:MBEDTLS_DES_C:MBEDTLS_MD_CAN_SHA512:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_TEST_PK_ALLOW_RSA_KEY_PAIR_4096
 pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
 
-Parse RSA Key #99.3 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384, 2048-bit)
-depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
-pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.pem":"PolarSSLTest":0
-
-Parse RSA Key #99.4 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384, 2048-bit)
-depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
-pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.pem":"PolarSSLTest":0
-
-Parse RSA Key #99.5 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384, 2048-bit)
-depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
-pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.pem":"PolarSSLTest":0
-
-Parse RSA Key #99.6 (PKCS#8 encrypted v2 PBKDF2 AES-128-CBC hmacWithSHA384 DER, 2048-bit)
-depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC
-pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes128cbc_sha384.der":"PolarSSLTest":0
-
-Parse RSA Key #99.7 (PKCS#8 encrypted v2 PBKDF2 AES-192-CBC hmacWithSHA384 DER, 2048-bit)
-depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
-pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes192cbc_sha384.der":"PolarSSLTest":0
-
-Parse RSA Key #99.8 (PKCS#8 encrypted v2 PBKDF2 AES-256-CBC hmacWithSHA384 DER, 2048-bit)
-depends_on:MBEDTLS_AES_C:MBEDTLS_MD_CAN_SHA384:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_C:MBEDTLS_CIPHER_MODE_CBC:!MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
-pk_parse_keyfile_rsa:"../framework/data_files/rsa_pkcs8_pbes2_pbkdf2_2048_aes256cbc_sha384.der":"PolarSSLTest":0
-
 # Test keys with non-word-aligned sizes.
 # We use sizes that are large enough to exercise PKCS#1 v1.5 signature with
 # the largest supported hashes (SHA-512 and SHA3-512.)
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_platform_threading.data mbedtls-3.6.5/tests/suites/test_suite_platform_threading.data
--- mbedtls-3.6.4/tests/suites/test_suite_platform_threading.data	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/tests/suites/test_suite_platform_threading.data	2025-10-14 19:12:37.081096400 +0300
@@ -0,0 +1,8 @@
+Mutex usage: init, free
+mutex_usage_nominal:0
+
+Mutex usage: lock 1
+mutex_usage_nominal:1
+
+Mutex usage: lock 2
+mutex_usage_nominal:2
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_platform_threading.function mbedtls-3.6.5/tests/suites/test_suite_platform_threading.function
--- mbedtls-3.6.4/tests/suites/test_suite_platform_threading.function	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/tests/suites/test_suite_platform_threading.function	2025-10-14 19:12:37.081222000 +0300
@@ -0,0 +1,32 @@
+/* BEGIN_HEADER */
+/* Basic tests for the threading interface.
+ */
+
+#include "mbedtls/threading.h"
+
+#include "test/threading_helpers.h"
+
+/* END_HEADER */
+
+/* BEGIN_DEPENDENCIES
+ * depends_on:MBEDTLS_THREADING_C
+ * END_DEPENDENCIES
+ */
+
+/* BEGIN_CASE */
+void mutex_usage_nominal(int lock_cycles)
+{
+    mbedtls_threading_mutex_t mutex;
+
+    mbedtls_mutex_init(&mutex);
+
+    for (int i = 0; i < lock_cycles; i++) {
+        mbedtls_test_set_step(i);
+        TEST_EQUAL(mbedtls_mutex_lock(&mutex), 0);
+        TEST_EQUAL(mbedtls_mutex_unlock(&mutex), 0);
+    }
+
+exit:
+    mbedtls_mutex_free(&mutex);
+}
+/* END_CASE */
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_constant_time.data mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_constant_time.data
--- mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_constant_time.data	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_constant_time.data	2025-10-14 19:12:37.084749500 +0300
@@ -0,0 +1,39 @@
+CT encrypt CHACHA20
+depends_on:PSA_WANT_ALG_STREAM_CIPHER:PSA_WANT_KEY_TYPE_CHACHA20
+ct_cipher_encrypt:PSA_ALG_STREAM_CIPHER:PSA_KEY_TYPE_CHACHA20:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f":"000000000000004a00000000":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":"af051e40bba0354981329a806a140eafd258a22a6dcb4bb9f6569cb3efe2deaf837bd87ca20b5ba12081a306af0eb35c41a239d20dfc74c81771560d9c9c1e4b224f51f3401bd9e12fde276fb8631ded8c131f823d2c06e27e4fcaec9ef3cf788a3b0aa372600a92b57974cded2b9334794cba40c63e34cdea212c4cf07d41b769a6749f3f630f4122cafe28ec4dc47e26d4346d70b98c73f3e9c53ac40c5945398b6eda1a832c89c167eacd901d7e2bf363"
+
+CT encrypt AES-CTR
+depends_on:PSA_WANT_ALG_CTR:PSA_WANT_KEY_TYPE_AES:HAVE_CONSTANT_TIME_AES
+ct_cipher_encrypt:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"dd3b5e5319b7591daab1e1a92687feb2":"396ee84fb75fdbb5c2b13c7fe5a654aa"
+
+CT encrypt AES-CBC-nopad
+depends_on:PSA_WANT_ALG_CBC_NO_PADDING:PSA_WANT_KEY_TYPE_AES:HAVE_CONSTANT_TIME_AES
+ct_cipher_encrypt:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"49e4e66c89a86b67758df89db9ad6955":"396ee84fb75fdbb5c2b13c7fe5a654aa"
+
+CT encrypt AES-CBC-PKCS7
+depends_on:PSA_WANT_ALG_CBC_PKCS7:PSA_WANT_KEY_TYPE_AES:HAVE_CONSTANT_TIME_AES
+ct_cipher_encrypt:PSA_ALG_CBC_PKCS7:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a":"a076ec9dfbe47d52afc357336f20743bca7e8a15dc3c776436314293031cd4f3"
+
+CT decrypt CHACHA20
+depends_on:PSA_WANT_ALG_STREAM_CIPHER:PSA_WANT_KEY_TYPE_CHACHA20
+ct_cipher_decrypt:PSA_ALG_STREAM_CIPHER:PSA_KEY_TYPE_CHACHA20:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f":"000000000000004a00000000":"af051e40bba0354981329a806a140eafd258a22a6dcb4bb9f6569cb3efe2deaf837bd87ca20b5ba12081a306af0eb35c41a239d20dfc74c81771560d9c9c1e4b224f51f3401bd9e12fde276fb8631ded8c131f823d2c06e27e4fcaec9ef3cf788a3b0aa372600a92b57974cded2b9334794cba40c63e34cdea212c4cf07d41b769a6749f3f630f4122cafe28ec4dc47e26d4346d70b98c73f3e9c53ac40c5945398b6eda1a832c89c167eacd901d7e2bf363":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":0
+
+CT decrypt AES-CTR
+depends_on:PSA_WANT_ALG_CTR:PSA_WANT_KEY_TYPE_AES:HAVE_CONSTANT_TIME_AES
+ct_cipher_decrypt:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"396ee84fb75fdbb5c2b13c7fe5a654aa":"dd3b5e5319b7591daab1e1a92687feb2":0
+
+CT decrypt AES-CBC-nopad
+depends_on:PSA_WANT_ALG_CBC_NO_PADDING:PSA_WANT_KEY_TYPE_AES:HAVE_CONSTANT_TIME_AES
+ct_cipher_decrypt:PSA_ALG_CBC_NO_PADDING:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"396ee84fb75fdbb5c2b13c7fe5a654aa":"49e4e66c89a86b67758df89db9ad6955":0
+
+CT decrypt AES-CBC-PKCS7 good
+depends_on:PSA_WANT_ALG_CBC_PKCS7:PSA_WANT_KEY_TYPE_AES:HAVE_CONSTANT_TIME_AES
+ct_cipher_decrypt:PSA_ALG_CBC_PKCS7:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"a076ec9dfbe47d52afc357336f20743bca7e8a15dc3c776436314293031cd4f3":"6bc1bee22e409f96e93d7e117393172a":0
+
+CT decrypt AES-CBC-PKCS7 invalid padding @0
+depends_on:PSA_WANT_ALG_CBC_PKCS7:PSA_WANT_KEY_TYPE_AES:HAVE_CONSTANT_TIME_AES
+ct_cipher_decrypt:PSA_ALG_CBC_PKCS7:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"a076ec9dfbe47d52afc357336f20743bf42ddf64c420325affb343d5d5f5d5dc":"6bc1bee22e409f96e93d7e117393172a":1
+
+CT decrypt AES-CBC-PKCS7 invalid padding @16
+depends_on:PSA_WANT_ALG_CBC_PKCS7:PSA_WANT_KEY_TYPE_AES:HAVE_CONSTANT_TIME_AES
+ct_cipher_decrypt:PSA_ALG_CBC_PKCS7:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"a076ec9dfbe47d52afc357336f20743ba3d6a86d0a9d172eeb1b754512d04416":"6bc1bee22e409f96e93d7e117393172a":1
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_constant_time.function mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_constant_time.function
--- mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_constant_time.function	1970-01-01 02:00:00.000000000 +0200
+++ mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_constant_time.function	2025-10-14 19:12:37.084901800 +0300
@@ -0,0 +1,310 @@
+/* BEGIN_HEADER */
+/* Positive test cases for PSA crypto APIs that assert constant-time
+ * (more accurately constant-flow) behavior. */
+
+#include <psa/crypto.h>
+#include <test/constant_flow.h>
+
+/* Our software AES implementation is not constant-time. For constant-time
+ * testing involving AES, require a hardware-assisted AES that is
+ * constant-time.
+ *
+ * We assume that if the hardware-assisted version is available in the build,
+ * it will be available at runtime. The AES tests will fail if run on a
+ * processor without AESNI/AESCE.
+ */
+#include "aesce.h"
+#include "aesni.h"
+#if defined(MBEDTLS_AESCE_HAVE_CODE) || defined(MBEDTLS_AESNI_HAVE_CODE)
+#define HAVE_CONSTANT_TIME_AES
+#endif
+
+static int ct_cipher_multipart(psa_cipher_operation_t *operation,
+                               const data_t *iv,
+                               const data_t *input,
+                               size_t output_size,
+                               const data_t *expected_output,
+                               psa_status_t expected_finish_status)
+{
+    unsigned char *output = NULL;
+    size_t update_length = SIZE_MAX;
+    size_t finish_length = SIZE_MAX;
+    psa_status_t status;
+    int ok = 0;
+
+    TEST_CALLOC(output, output_size);
+
+    PSA_ASSERT(psa_cipher_set_iv(operation, iv->x, iv->len));
+    status = psa_cipher_update(operation,
+                               input->x, input->len,
+                               output, output_size, &update_length);
+    if (expected_finish_status == PSA_ERROR_BUFFER_TOO_SMALL &&
+        status == PSA_ERROR_BUFFER_TOO_SMALL) {
+        /* The output buffer is already too small for update. That's ok. */
+        ok = 1;
+        goto exit;
+    } else {
+        PSA_ASSERT(status);
+    }
+    TEST_LE_U(update_length, output_size);
+    TEST_EQUAL(psa_cipher_finish(operation,
+                                 output + update_length,
+                                 output_size - update_length,
+                                 &finish_length),
+               expected_finish_status);
+
+    TEST_CF_PUBLIC(output, output_size);
+    if (expected_finish_status == PSA_SUCCESS) {
+        TEST_MEMORY_COMPARE(expected_output->x, expected_output->len,
+                            output, update_length + finish_length);
+    }
+    ok = 1;
+
+exit:
+    mbedtls_free(output);
+    psa_cipher_abort(operation);
+    return ok;
+}
+
+static int ct_cipher_decrypt_oneshot(mbedtls_svc_key_id_t key,
+                                     psa_algorithm_t alg,
+                                     const data_t *input,
+                                     size_t output_size,
+                                     const data_t *expected_output,
+                                     psa_status_t expected_status)
+{
+    unsigned char *output = NULL;
+    size_t output_length = SIZE_MAX;
+    int ok = 0;
+
+    TEST_CALLOC(output, output_size);
+
+    TEST_EQUAL(psa_cipher_decrypt(key, alg,
+                                  input->x, input->len,
+                                  output, output_size, &output_length),
+               expected_status);
+
+    TEST_CF_PUBLIC(output, output_size);
+    if (expected_status == PSA_SUCCESS) {
+        TEST_MEMORY_COMPARE(expected_output->x, expected_output->len,
+                            output, output_length);
+    }
+    ok = 1;
+
+exit:
+    mbedtls_free(output);
+    return ok;
+}
+
+/* END_HEADER */
+
+/* BEGIN_DEPENDENCIES
+ * depends_on:MBEDTLS_PSA_CRYPTO_C
+ * END_DEPENDENCIES
+ */
+
+/* BEGIN_CASE */
+/* Known answer test for cipher multipart encryption.
+ * There is no known answer test for one-shot encryption because that
+ * uses a random IV. */
+void ct_cipher_encrypt(int alg_arg,
+                       int key_type_arg, const data_t *key_data,
+                       const data_t *iv,
+                       const data_t *plaintext,
+                       const data_t *expected_ciphertext)
+{
+    psa_key_type_t key_type = key_type_arg;
+    psa_algorithm_t alg = alg_arg;
+    size_t sufficient_output_size =
+        PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(key_type, alg, plaintext->len);
+    psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
+    mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT;
+    psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT;
+
+    PSA_INIT();
+    TEST_CF_SECRET(key_data->x, key_data->len);
+    TEST_CF_SECRET(plaintext->x, plaintext->len);
+    //TEST_ASSERT(key_data->x[0] != 42); // uncomment to trip constant-flow test
+
+    psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_ENCRYPT);
+    psa_set_key_algorithm(&attributes, alg);
+    psa_set_key_type(&attributes, key_type);
+    PSA_ASSERT(psa_import_key(&attributes, key_data->x, key_data->len, &key));
+
+    /* Output buffer too small for the actual output */
+    mbedtls_test_set_step(1);
+    PSA_ASSERT(psa_cipher_encrypt_setup(&operation, key, alg));
+    if (!ct_cipher_multipart(&operation, iv, plaintext,
+                             expected_ciphertext->len - 1,
+                             expected_ciphertext,
+                             PSA_ERROR_BUFFER_TOO_SMALL)) {
+        goto exit;
+    }
+
+    if (expected_ciphertext->len < sufficient_output_size) {
+        /* For a buffer of intermediate size (between the actual output length
+         * and the guaranteed sufficient size), either PSA_SUCCESS or
+         * PSA_ERROR_BUFFER_TOO_SMALL is acceptable. Require what the our
+         * built-in implementation currently does. */
+        psa_status_t intermediate_size_status = PSA_SUCCESS;
+
+        /* Output buffer size just large enough for the actual output
+         * but less than the guaranteed sufficient size */
+        mbedtls_test_set_step(2);
+        PSA_ASSERT(psa_cipher_encrypt_setup(&operation, key, alg));
+        if (!ct_cipher_multipart(&operation, iv, plaintext,
+                                 expected_ciphertext->len,
+                                 expected_ciphertext,
+                                 intermediate_size_status)) {
+            goto exit;
+        }
+
+        /* Output buffer size large enough for the actual output
+         * but one less than the guaranteed sufficient size */
+        mbedtls_test_set_step(3);
+        PSA_ASSERT(psa_cipher_encrypt_setup(&operation, key, alg));
+        if (!ct_cipher_multipart(&operation, iv, plaintext,
+                                 sufficient_output_size - 1,
+                                 expected_ciphertext,
+                                 intermediate_size_status)) {
+            goto exit;
+        }
+    }
+
+    /* Guaranteed sufficient output buffer size */
+    mbedtls_test_set_step(4);
+    PSA_ASSERT(psa_cipher_encrypt_setup(&operation, key, alg));
+    if (!ct_cipher_multipart(&operation, iv, plaintext,
+                             sufficient_output_size,
+                             expected_ciphertext,
+                             PSA_SUCCESS)) {
+        goto exit;
+    }
+
+exit:
+    psa_cipher_abort(&operation);
+    psa_destroy_key(key);
+    PSA_DONE();
+}
+/* END_CASE */
+
+/* BEGIN_CASE */
+/* Known answer for cipher decryption (one-shot and multipart).
+ * Supports good cases and invalid padding cases. */
+void ct_cipher_decrypt(int alg_arg,
+                       int key_type_arg, const data_t *key_data,
+                       const data_t *iv,
+                       const data_t *ciphertext,
+                       const data_t *expected_plaintext,
+                       int expect_invalid_padding)
+{
+    psa_key_type_t key_type = key_type_arg;
+    psa_algorithm_t alg = alg_arg;
+    size_t sufficient_output_size =
+        PSA_CIPHER_DECRYPT_OUTPUT_SIZE(key_type, alg, ciphertext->len);
+    psa_status_t expected_status =
+        expect_invalid_padding ? PSA_ERROR_INVALID_PADDING : PSA_SUCCESS;
+    psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
+    mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT;
+    psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT;
+    data_t input = { NULL, iv->len + ciphertext->len };
+
+    PSA_INIT();
+    TEST_CF_SECRET(key_data->x, key_data->len);
+    TEST_CF_SECRET(ciphertext->x, ciphertext->len);
+    //TEST_ASSERT(key_data->x[0] != 42); // uncomment to trip constant-flow test
+
+    TEST_CALLOC(input.x, input.len);
+    memcpy(input.x, iv->x, iv->len);
+    memcpy(input.x + iv->len, ciphertext->x, ciphertext->len);
+
+    psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_DECRYPT);
+    psa_set_key_algorithm(&attributes, alg);
+    psa_set_key_type(&attributes, key_type);
+    PSA_ASSERT(psa_import_key(&attributes, key_data->x, key_data->len, &key));
+
+    /* Output buffer too small for the actual output */
+    mbedtls_test_set_step(1);
+    PSA_ASSERT(psa_cipher_decrypt_setup(&operation, key, alg));
+    if (!ct_cipher_multipart(&operation, iv, ciphertext,
+                             expected_plaintext->len - 1,
+                             expected_plaintext,
+                             PSA_ERROR_BUFFER_TOO_SMALL)) {
+        goto exit;
+    }
+    if (!ct_cipher_decrypt_oneshot(key, alg, &input,
+                                   expected_plaintext->len - 1,
+                                   expected_plaintext,
+                                   PSA_ERROR_BUFFER_TOO_SMALL)) {
+        goto exit;
+    }
+
+    if (expected_plaintext->len < sufficient_output_size) {
+        /* For a buffer of intermediate size (between the actual output length
+         * and the guaranteed sufficient size), either PSA_SUCCESS (or
+         * PSA_ERROR_INVALID_PADDING if the padding is invalid) or
+         * PSA_ERROR_BUFFER_TOO_SMALL is acceptable. Require what the our
+         * built-in implementation currently does. */
+        psa_status_t intermediate_size_status = expected_status;
+        if (alg == PSA_ALG_CBC_PKCS7) {
+            intermediate_size_status = PSA_ERROR_BUFFER_TOO_SMALL;
+        }
+
+        /* Output buffer size just large enough for the actual output
+         * but less than the guaranteed sufficient size */
+        mbedtls_test_set_step(2);
+        PSA_ASSERT(psa_cipher_decrypt_setup(&operation, key, alg));
+        if (!ct_cipher_multipart(&operation, iv, ciphertext,
+                                 expected_plaintext->len,
+                                 expected_plaintext,
+                                 intermediate_size_status)) {
+            goto exit;
+        }
+        if (!ct_cipher_decrypt_oneshot(key, alg, &input,
+                                       expected_plaintext->len - 1,
+                                       expected_plaintext,
+                                       intermediate_size_status)) {
+            goto exit;
+        }
+
+        /* Output buffer size large enough for the actual output
+         * but one less than the guaranteed sufficient size */
+        mbedtls_test_set_step(3);
+        PSA_ASSERT(psa_cipher_decrypt_setup(&operation, key, alg));
+        if (!ct_cipher_multipart(&operation, iv, ciphertext,
+                                 sufficient_output_size - 1,
+                                 expected_plaintext,
+                                 intermediate_size_status)) {
+            goto exit;
+        }
+        if (!ct_cipher_decrypt_oneshot(key, alg, &input,
+                                       sufficient_output_size - 1,
+                                       expected_plaintext,
+                                       intermediate_size_status)) {
+            goto exit;
+        }
+    }
+
+    /* Guaranteed sufficient output buffer size */
+    mbedtls_test_set_step(4);
+    PSA_ASSERT(psa_cipher_decrypt_setup(&operation, key, alg));
+    if (!ct_cipher_multipart(&operation, iv, ciphertext,
+                             sufficient_output_size,
+                             expected_plaintext,
+                             expected_status)) {
+        goto exit;
+    }
+    if (!ct_cipher_decrypt_oneshot(key, alg, &input,
+                                   sufficient_output_size,
+                                   expected_plaintext,
+                                   expected_status)) {
+        goto exit;
+    }
+
+exit:
+    mbedtls_free(input.x);
+    psa_cipher_abort(&operation);
+    psa_destroy_key(key);
+    PSA_DONE();
+}
+/* END_CASE */
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_storage_format.current.data mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_storage_format.current.data
--- mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_storage_format.current.data	2025-06-30 09:24:53.105254200 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_storage_format.current.data	2025-10-14 19:12:37.104888000 +0300
@@ -100,7 +100,7 @@
 depends_on:PSA_WANT_KEY_TYPE_RAW_DATA
 key_storage_save:0x0001:PSA_KEY_TYPE_RAW_DATA:8:PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_COPY:0x0000:0x0000:"4b":"505341004b455900000000000100000001100800020800000000000000000000010000004b"
 
-save usage without implication: all known
+save usage without implication: all valid
 depends_on:PSA_WANT_KEY_TYPE_RAW_DATA
 key_storage_save:0x0001:PSA_KEY_TYPE_RAW_DATA:8:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_DERIVATION | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:0x0000:0x0000:"4b":"505341004b45590000000000010000000110080003ff00000000000000000000010000004b"
 
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_storage_format.misc.data mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_storage_format.misc.data
--- mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_storage_format.misc.data	2025-06-30 09:24:53.105612000 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_storage_format.misc.data	2025-10-14 19:12:37.105980900 +0300
@@ -10,6 +10,14 @@
 depends_on:PSA_WANT_KEY_TYPE_AES
 key_storage_save:PSA_KEY_LIFETIME_PERSISTENT:PSA_KEY_TYPE_AES:128:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_GCM:PSA_ALG_CTR:"404142434445464748494a4b4c4d4e4f":"505341004b45590000000000010000000024800001010000000250050010c00410000000404142434445464748494a4b4c4d4e4f"
 
+PSA storage read: PASSWORD-JPAKE
+depends_on:PSA_WANT_ALG_JPAKE:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT:PSA_WANT_ECC_SECP_R1_256
+key_storage_read:0x0001:PSA_KEY_TYPE_PASSWORD:8:PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_JPAKE:PSA_ALG_NONE:"4c":"505341004b455900000000000100000003120800014000000001000a00000000010000004c":0
+
+PSA storage save: PASSWORD-JPAKE
+depends_on:PSA_WANT_ALG_JPAKE:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT:PSA_WANT_ECC_SECP_R1_256
+key_storage_save:0x0001:PSA_KEY_TYPE_PASSWORD:8:PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_EXPORT:PSA_ALG_JPAKE:PSA_ALG_NONE:"4c":"505341004b455900000000000100000003120800014000000001000a00000000010000004c"
+
 # Create a persistent key which is larger than MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE
 # so that when psa_get_key_attributes() tries to load it from the storage it will fail.
 PSA storage read: key larger than MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_storage_format.v0.data mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_storage_format.v0.data
--- mbedtls-3.6.4/tests/suites/test_suite_psa_crypto_storage_format.v0.data	2025-06-30 09:24:53.106917000 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_psa_crypto_storage_format.v0.data	2025-10-14 19:12:37.108060000 +0300
@@ -104,7 +104,7 @@
 depends_on:PSA_WANT_KEY_TYPE_RAW_DATA
 key_storage_read:0x0001:PSA_KEY_TYPE_RAW_DATA:8:PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_COPY:0x0000:0x0000:"4b":"505341004b455900000000000100000001100800020800000000000000000000010000004b":0
 
-read usage without implication: all known
+read usage without implication: all valid
 depends_on:PSA_WANT_KEY_TYPE_RAW_DATA
 key_storage_read:0x0001:PSA_KEY_TYPE_RAW_DATA:8:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_DERIVATION | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:0x0000:0x0000:"4b":"505341004b45590000000000010000000110080003ff00000000000000000000010000004b":0
 
diff -Nru mbedtls-3.6.4/tests/suites/test_suite_version.data mbedtls-3.6.5/tests/suites/test_suite_version.data
--- mbedtls-3.6.4/tests/suites/test_suite_version.data	2025-06-30 09:24:53.112493000 +0300
+++ mbedtls-3.6.5/tests/suites/test_suite_version.data	2025-10-14 19:12:37.117262400 +0300
@@ -1,8 +1,8 @@
 Check compile time library version
-check_compiletime_version:"3.6.4"
+check_compiletime_version:"3.6.5"
 
 Check runtime library version
-check_runtime_version:"3.6.4"
+check_runtime_version:"3.6.5"
 
 Check for MBEDTLS_VERSION_C
 check_feature:"MBEDTLS_VERSION_C":0
diff -Nru mbedtls-3.6.4/visualc/VS2017/mbedTLS.vcxproj mbedtls-3.6.5/visualc/VS2017/mbedTLS.vcxproj
--- mbedtls-3.6.4/visualc/VS2017/mbedTLS.vcxproj	2025-06-30 09:24:53.118861700 +0300
+++ mbedtls-3.6.5/visualc/VS2017/mbedTLS.vcxproj	2025-10-14 19:12:37.124797300 +0300
@@ -337,6 +337,7 @@
     <ClInclude Include="..\..\library\ssl_misc.h" />
     <ClInclude Include="..\..\library\ssl_tls13_invasive.h" />
     <ClInclude Include="..\..\library\ssl_tls13_keys.h" />
+    <ClInclude Include="..\..\library\threading_internal.h" />
     <ClInclude Include="..\..\library\x509_internal.h" />
     <ClInclude Include="..\..\framework\tests\programs\query_config.h" />
     <ClInclude Include="..\..\3rdparty\everest\include\everest\everest.h" />
