Skip to content

Releases: wolfSSL/wolfPKCS11

wolfPKCS11 Release 2.0 (Aug 26, 2025)

27 Aug 12:56
6b76537

Choose a tag to compare

Summary

This release contains many new features so that it can be the PKCS11 backend for NSS. It also includes many bug fixes.

Detail

  • New examples added
  • Added certificate storage for wolfPKCS11
  • Added new AES algorithms:
    • AES-CCM
    • AES-ECB
    • AES-CTS
    • AES-CTR
  • Compiler fixes
  • Large improvements to TPM storage
  • Reduced memory usage for objects
  • Added support for MAXQ1065
  • Fixed RSA with no public exponent provided
  • Fixed CKA_CERTIFICATE_TYPE search for CKC_X_509
  • Fixed RSA with no modulus provided
  • Fixed bad memory access with C_FindObjects on a certificate object
  • Added new functionality:
    • C_Digest*
    • C_SignEncryptUpdate
    • C_DecryptVerifyUpdate
    • C_GetOperationState and C_SetOperationState (Digest only)
    • C_SignRecoverInit and C_VerifyRecover
    • wolfPKCS11_Debugging_On and wolfPKCS11_Debugging_Off
  • Added new mechanisms:
    • CKM_ECDSA_SHA*
    • CKM_SHA*_RSA*
    • CKM_AES_CMAC_GENERAL
    • CKM_AES_CMAC
    • CKM_AES_CBC_ENCRYPT_DATA
    • CKM_HKDF_DATA
    • CKM_HKDF_KEY_GEN
    • CKM_TLS12_KEY_AND_MAC_DERIVE
    • CKM_TLS12_MASTER_KEY_DERIVE
    • CKM_TLS12_MASTER_KEY_DERIVE_DH
    • CKM_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE (NSS builds only)
    • CKM_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE_DH (NSS builds only)
    • CKM_NSS_TLS_PRF_GENERAL_SHA256 (NSS builds only)
    • CKM_TLS_MAC
    • CKM_SHA1_RSA_PKCS
    • CKM_SHA1_RSA_PKCS_PSS
    • CKM_SHA3*
    • CKM_MD5
    • CKM_NSS_PKCS12_PBE_SHA*_HMAC_KEY_GEN (NSS builds only)
    • CKM_PKCS5_PBKD2
  • Added new types:
    • CKO_DATA
    • CKO_NSS_TRUST (NSS builds only)
  • Added new attributes:
    • CKA_CERTIFICATE_TYPE
    • CKA_CERTIFICATE_CATEGORY
    • CKA_ID
    • CKA_ISSUER
    • CKA_SERIAL_NUMBER
    • CKA_PUBLIC_KEY_INFO
    • CKA_URL
    • CKA_HASH_OF_SUBJECT_PUBLIC_KEY
    • CKA_HASH_OF_ISSUER_PUBLIC_KEY
    • CKA_NAME_HASH_ALGORITHM
    • CKA_CHECK_VALUE
    • CKA_CERT_SHA1_HASH (NSS builds only)
    • CKA_CERT_MD5_HASH (NSS builds only)
    • CKA_TRUST_SERVER_AUTH (NSS builds only)
    • CKA_TRUST_CLIENT_AUTH (NSS builds only)
    • CKA_TRUST_EMAIL_PROTECTION (NSS builds only)
    • CKA_TRUST_CODE_SIGNING (NSS builds only)
    • CKA_TRUST_STEP_UP_APPROVED (NSS builds only)
    • CKA_NSS_EMAIL (NSS builds only)
    • CKA_NSS_DB (NSS builds only, not stored)
  • Added SHA3 support for digest and HMAC
  • Added AES key gen and key wrap
  • Added --enable-nss for NSS specific PKCS11 quirks
  • Fixed ECC derive key curve error
  • Fixed object boolean attributes and permissions
  • Fixed C_SetAttributeValue sometimes erasing keys
  • Fixed wolfCrypt FIPSv5 and FIPSv6 support
  • Fixed token erasure on load error
  • Fixed various memory leaks
  • Complete re-write of file based token path handling
  • Added debugging output
  • Fixed visibility issues
  • Fixed x963 usage for ECC keys
  • Added support for older wolfSSL versions
  • Fixed token overwriting previous objects
  • Fixed token load error handling
  • Improved error handling for C_Login
  • Improved Debian packaging
  • Fixed build issues with wolfBoot
  • Fixed malloc(0) code path
  • Fixed C_CopyObject not doing a deep copy
  • Added CKM_RSA_PKCS to wrap / unwrap
  • Fixed ECC curve lookup for FIPSv5
  • Fixed default attributes for keys
  • C_DestroyObject now deletes files instead of leaving truncated files
  • Added support for STM32U5 DHUK wrapping
  • Added PBKDF2 support for pins
    • Enabled by default for FIPS
    • Enabled using --enable-pbkdf2 or defining WOLFPKCS11_PBKDF2
  • Added --pbkdf2-iterations and PBKDF2_ITERATIONS to set the number of
    PBKDF2 iterations for pin handling (default 600,000).

wolfPKCS11 Release 1.3 (Mar 22, 2024)

22 Mar 20:40
b94a987

Choose a tag to compare

Summary

Added Visual Studio support for wolfPKCS11. Fixes for cast warnings and portability.

Detail

  • Fixed C_GetAttributeValue incorrectly erroring with CKR_ATTRIBUTE_VALUE_INVALID when data == NULL. The C_GetAttributeValue should set length if data field is NULL. (PR #27)
  • Fixed several cast warnings and possible use of uninitialized. (PR #28)
  • Fixed portability issues with WOLFPKCS11_USER_SETTINGS. (PR #28)
  • Added Visual Studio support for wolfPKCS11. (PR #28)
    • This includes wolfTPM support with Windows TBS interface
  • Reworked shared library versioning. (PR #29)

wolfPKCS11 Release 1.2 (Dec 26, 2023)

27 Dec 22:04
c9ccc51

Choose a tag to compare

Summary

Adds backend support for TPM 2.0 using wolfTPM. Adds AES CBC key wrap / unwrap support. Portability improvements. Improved testing with GitHub Actions.

Detail

  • Cleanups for minor cast warning, spelling and ignore for generated test files (PR #14)
  • Added support for wrap/unwrap RSA with aes_cbc_pad. (PR #15)
  • Fixed setting of label for public key after creation (init ECC objects before decoding) (PR #16)
  • Flush writes in key store. (PR #17)
  • Added build options for embedded use (PR #18)
    • WOLFSSL_USER_SETTINGS to avoid including wolfssl/options.h
    • WOLFPKCS11_USER_SETTINGS to avoid including wolfPKCS11/options.h
    • WOLFPKCS11_NO_TIME to make wc_GetTime() optional (it disables brute-force protections on token login)
  • Reset failed login counter only with WOLFPKCS11_NO_TIME (PR #18)
  • Fixed argument passing in SetMPI/GetMPIData (PR #19)
  • Fixed NO_DH ifdef gate when freeing PKCS11 object (PR #20)
  • Added GitHub CI action (PR #21)
  • Fixed warnings from ./autogen.sh. Updated m4 macros. (PR #21)
  • Added additional GitHub CI action tests. (PR #22)
  • Added wolfPKCS11 support for using TPM 2.0 module as backend. Uses wolfTPM and supports RSA and ECC. Requires wolfSSL/wolfTPM#311 (PR #23)
  • Added CI testing for wolfPKCS11 with wolfTPM backend and single threaded. (PR #23)
  • Added PKCS11 TPM NV store (enabled with WOLFPKCS11_TPM_STORE). Allow WOLFPKCS11_NO_STORE for TPM use case. (PR #23)
  • Fixed compiler warnings from mingw. (PR #23)
  • Added portability macro WOLFPKCS11_NO_ENV when setenv/getenv are not available. (PR #23)
  • Fix to only require -ldl for non-static builds. (PR #23)
  • Portability fixes. Added NO_MAIN_DRIVER. Support for SINGLE_THREADED. Add static to some globals. (PR #24)
  • Fixes for portability where XREALLOC is not available. (PR #25)
  • Added support for custom setenv/get env using WOLFPKCS11_USER_ENV. (PR #25)
  • Fix for final not being called after init in edge case pin failure. (PR #25)
  • Added support for hashing PIN with SHA2-256.
    • PKS11 uses scrypt, which uses multiple MB of memory and is not practical for embedded systems. (PR #25)

wolfPKCS11 Release 1.1 (May 6, 2022)

12 May 16:30
86610c2

Choose a tag to compare

  • Added support for CKM_AES_CBC_PAD
  • Added support for storage of token data.
  • Added support encrypted private keys.
  • Added CKF_LOGIN_REQUIRED to the slot flags.
  • Added RSA X_509 support for signing/verifying
  • Added missing CK_INVALID_SESSION.
  • Added some missing PKCS11 types.
  • Fixed building with FIPS 140-2 (fipsv2).
  • Fixed WP11_API visibility.
  • Fixed test pin to be at least 14-characters as required by FIPS HMAC.
  • Fixed getting a boolean for the operations flags.
  • Fixed misleading indentation fixes.
  • Improve the curve_oid lookup with FIPS.
  • Removed config.h from the public pkcs11.h header.
  • Convert repository to GPLv3.