Skip to content

RFC: Upstreaming CKM_HKDF_DERIVE — design questions #878

Description

@Hussainity

Hi, I have a working CKM_HKDF_DERIVE implementation against current main and would like to upstream it. Before opening a PR, I'd appreciate input on a few design choices.

What I have

  • CKM_HKDF_DERIVE per PKCS#11 v3, parsing CK_HKDF_PARAMS.
  • All three salt sources (NULL / DATA / KEY) and all four extract/expand combinations.
  • Sensitive/extractable propagation matching CKM_CONCATENATE_BASE_AND_KEY.
  • Support for all PRFs.
  • Some RFC 5869 Test Cases passing as a CppUnit test.

Known gaps:

  • OpenSSL backend only.
  • HKDF logic inline in SoftHSM.cpp, not under src/lib/crypto/.
  • CKK_HKDF not wired into newP11Object / P11Attributes.
  • No CKM_HKDF_KEY_GEN / CKM_HKDF_DATA, no FIPS gating.

Questions

  1. Crypto layer — should I model HKDF after MacAlgorithm (new + OSSL/Botan subclasses via CryptoFactory), or build it on top of existing MacAlgorithm HMAC and skip a new factory entry?
  2. Botan backend — required for merge, or acceptable as follow-up?
  3. FIPS — for WITH_FIPS builds, allow SHA-2 PRFs only and compile out the rest, matching the CKM_DES_* pattern?
  4. CKK_HKDF object representation — reuse P11GenericSecretKeyObj (like the CKK_*_HMAC types), or introduce P11HKDFSecretKeyObj?
  5. Would CKM_HKDF_KEY_GEN / CKM_HKDF_DATA be required to merge?
  6. Tests — anything beyond DeriveTests.cpp and RFC 5869 vectors you'd like to see?

Motivation
My project uses SoftHSM in CI and needs HKDF; we'd rather upstream than maintain a fork.

Thanks!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions