Skip to content

Add SHA-384/SHA-512 support to Pkcs5HashPassword (PBKDF2) - #267

Merged
Doug Flick (Flickdm) merged 2 commits into
microsoft:mainfrom
Flickdm:feat/pkcs5-pbkdf2-sha384-sha512
Jul 24, 2026
Merged

Add SHA-384/SHA-512 support to Pkcs5HashPassword (PBKDF2)#267
Doug Flick (Flickdm) merged 2 commits into
microsoft:mainfrom
Flickdm:feat/pkcs5-pbkdf2-sha384-sha512

Conversation

@Flickdm

@Flickdm Doug Flick (Flickdm) commented Jul 24, 2026

Copy link
Copy Markdown
Member

Description

Pkcs5HashPassword (PBKDF2) only mapped SHA1_DIGEST_SIZE and SHA256_DIGEST_SIZE, so platforms could not select SHA-384/SHA-512 for password hashing. This blocks CNSA 2.0–aligned configurations. This change extends the digest-size switch in both BaseCryptLib backends to cover SHA-384 and SHA-512; iteration count is already a caller-supplied parameter.

  • OpensslPkg (CryptPkcs5Pbkdf2.c): map SHA384_DIGEST_SIZE → EVP_sha384(), SHA512_DIGEST_SIZE → EVP_sha512().
  • MbedTlsPkg (CryptPkcs5Pbkdf2.c): map SHA384_DIGEST_SIZE → MBEDTLS_MD_SHA384, SHA512_DIGEST_SIZE → MBEDTLS_MD_SHA512 (config already enables MBEDTLS_SHA384_C/MBEDTLS_SHA512_C).
  • Doc comments updated in both implementations and their *Null.c variants to list the newly supported digest sizes.
  switch (DigestSize) {
    case SHA1_DIGEST_SIZE:
      HashAlg = EVP_sha1 ();
      break;
    case SHA256_DIGEST_SIZE:
      HashAlg = EVP_sha256 ();
      break;
    case SHA384_DIGEST_SIZE:      // new
      HashAlg = EVP_sha384 ();
      break;
    case SHA512_DIGEST_SIZE:      // new
      HashAlg = EVP_sha512 ();
      break;
    default:
      return FALSE;
  }
  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

Host based testing, and QemuQ35
microsoft/mu_basecore#1863

Integration Instructions

Callers wishing to use stronger hashes pass SHA384_DIGEST_SIZE or SHA512_DIGEST_SIZE as DigestSize with an appropriate IterationCount. Backwards compatibility (stored-hash migration) and any OS-facing capability reporting (e.g., ECIT) are platform responsibilities and out of scope here.

@mu-automation mu-automation Bot added impact:security Has a security impact type:documentation Improvements or additions to documentation labels Jul 24, 2026
@Flickdm
Doug Flick (Flickdm) force-pushed the feat/pkcs5-pbkdf2-sha384-sha512 branch from 6aba5c3 to e15ae38 Compare July 24, 2026 16:43
@Flickdm
Doug Flick (Flickdm) marked this pull request as ready for review July 24, 2026 17:15
@Flickdm
Doug Flick (Flickdm) enabled auto-merge (rebase) July 24, 2026 17:16
@Flickdm Doug Flick (Flickdm) added this to the v1.0.2-OneCrypto milestone Jul 24, 2026
@Flickdm
Doug Flick (Flickdm) force-pushed the feat/pkcs5-pbkdf2-sha384-sha512 branch from e15ae38 to 369e0b8 Compare July 24, 2026 19:35
@Flickdm
Doug Flick (Flickdm) force-pushed the feat/pkcs5-pbkdf2-sha384-sha512 branch from 369e0b8 to 95eaa1a Compare July 24, 2026 20:40
@Flickdm
Doug Flick (Flickdm) merged commit bb7430a into microsoft:main Jul 24, 2026
38 checks passed
@Flickdm
Doug Flick (Flickdm) deleted the feat/pkcs5-pbkdf2-sha384-sha512 branch July 24, 2026 21:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

impact:security Has a security impact type:documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Pkcs5HashPassword ]: Use PBKDF2-SHA512 for password hashing

3 participants