mbedtls
mbedtls copied to clipboard
Driver-only hashes: PKCS12
PKCS12, aka RFC 7292, is a standard for, among other things, representing private keys, possibly encrypted with a password. We implement part of this standard in pkcs12.c and optionally use it in pkparse.c to parse those types of encrypted keys. It uses iterated hashing in order to derive an encryption key from a password. Currently this uses MD, which means it doesn't work in builds where hashes are provided only by drivers; this task is to make it work.
- [ ] In
mbedtls_pkcs12_derivation()usembedtls_hash_info_get_size()(fromlibrary/hash_info.h) instead ofmbedtls_md_get_size(). - [ ] In the same function, reduce the scope of
md_ctxandmd_infoto the beginning of thewhileloop if possible, or preferably extract the code that computes to a new static function. (Note: this is similar to the creation ofhash_mprime()in #6141 and is a preparation for the next point.) - [ ] Provide an implementation of the new static function (or code block inside
mbedtls_pkcs12_derivation()) based on PSA, to be used only whenMD_Cis not available (in order to preserve backwards compatibility: the PSA version requirespsa_crypto_init()to have been called, we don't want to impose this requirement on existing code, but we can impose it in builds where this just didn't work at all before). (Again, this is similar tohash_mprime()in #6141.) - [ ] Adjust the dependency in
check_config.h: PKCS12 now only requiresMD_C || PSA_CRYPTO_C. - [ ] Remove the
unset PKCS12_Clines fromall.shcomponentscomponent_test_crypto_full_no_md()andcomponent_test_psa_crypto_config_accel_hash_use_psa(). - [ ] Adjust dependencies in
test_suite_pkcs12.data, replacingMBEDTLS_MD5_CwithMBEDTLS_HAS_ALG_MD5_VIA_MD_OR_PSA(fromlegacy_or_psa.hwhich needs to be#included in the.functionfile). - [ ] Similarly adjust hash dependencies in
test_suite_pkparse.datafor tests that depend onPKCS12_C(again,legacy_or_psa.hneeds to be#included in the.functionfile). - [ ] Fix any issue that may arise.
- [ ] Check test coverage for
test_suite_pkcs5andtest_suite_pkparse: seedocs/architecture/psa-migration/outcome-analysis.sh(don't forget to removeunset PKCS12_Cinreference_config()and editSUITESin your copy).