Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
154 commits
Select commit Hold shift + click to select a range
e99f687
F-8673 - Lock the cached empty user PIN state
aidangarske Oct 6, 2026
d3e4430
F-8662 - Clear the derived key and decoded objects on failed login
aidangarske Oct 6, 2026
9566a34
F-5080 - Keep the PIN lockout armed when failed logins race
aidangarske Oct 6, 2026
ad35940
F-4962 - Apply the SO login lockout to C_SetPIN
aidangarske Oct 6, 2026
cf0f575
F-6495 - Apply the user login lockout to C_SetPIN
aidangarske Oct 6, 2026
1606bd0
F-13244 - Decide and log out on last session close under one lock
aidangarske Oct 6, 2026
754d4fc
F-5253 - Hold the token lock while walking session objects in find
aidangarske Oct 6, 2026
354761f
F-8663 - Protect every token object on logout despite a failure
aidangarske Oct 6, 2026
0599b01
F-8642 - Stop token reset when token initialization fails
aidangarske Oct 6, 2026
4df6671
F-4958 - Read login state under the slot lock when finding objects
aidangarske Oct 6, 2026
3d1f490
F-4267 - Read object flags under the token lock in object lookup
aidangarske Oct 6, 2026
ba08cd4
F-11509 - Invalidate private session objects on logout
aidangarske Oct 6, 2026
f1019bd
Count object calls under a dedicated epoch lock
aidangarske Oct 13, 2026
0d947a2
Ignore digest-only operations for destroyed keys
aidangarske Oct 13, 2026
ff87286
Return CKR_USER_NOT_LOGGED_IN for private adds
aidangarske Oct 13, 2026
6d3a41c
Reserve each PIN guess before hashing it
aidangarske Oct 13, 2026
18acd7d
Test token reset when token initialization fails
aidangarske Oct 13, 2026
9534f50
Run the PIN guess test in threaded builds
aidangarske Oct 14, 2026
27e0d4a
Run logout_retire_test in the empty PIN workflow
aidangarske Oct 14, 2026
3b02a6a
Advance the object call epoch while freed objects wait
aidangarske Oct 14, 2026
209da0d
Build the epoch test only with thread support
aidangarske Oct 14, 2026
8ffdbd4
F-4262 - Reject negative stored array lengths when loading token objects
aidangarske Oct 6, 2026
5121890
F-5078 - Grow stored array buffers only as data is read
aidangarske Oct 6, 2026
c12ec8c
F-13814 - Set data object lengths only after a successful storage read
aidangarske Oct 6, 2026
43e149a
F-4264 - Reject stored private key records shorter than the tag
aidangarske Oct 6, 2026
3ca85af
F-4733 - Bound stored DH public key length to the key buffer
aidangarske Oct 6, 2026
fe211da
F-3641 - Reject stored trust records that are not the trust size
aidangarske Oct 6, 2026
4856b1d
F-3404 - Write the encoded TPM key into the caller's buffer
aidangarske Oct 6, 2026
9aba0e5
F-8643 - Keep key buffer allocation errors in TPM RSA and ECC encoders
aidangarske Oct 6, 2026
106a9aa
F-13813 - Release DH and symmetric key data when encoding fails
aidangarske Oct 6, 2026
818bad9
F-3017 - Zeroize encoded private keys when RSA, ECC or ML-DSA encodin…
aidangarske Oct 6, 2026
a24c6e4
F-3413 - Zeroize decrypted private key buffers on every decode path
aidangarske Oct 6, 2026
8e14264
F-8667 - Scrub symmetric and DH key buffers after a failed decrypt
aidangarske Oct 6, 2026
77cdcaa
Keep the old key record when encoding fails
aidangarske Oct 13, 2026
dd28fb6
F-10400 - Authenticate stored object policy with the key encryption
aidangarske Oct 7, 2026
37be726
Take the store lock before publishing the store batch slot
aidangarske Oct 13, 2026
f14dfab
Skip store batch recovery when token storage is disabled
aidangarske Oct 13, 2026
45a234b
Hold the store batch locks until the token load finishes
aidangarske Oct 13, 2026
1dfea4d
Record store batch entries by file name
aidangarske Oct 13, 2026
531ce7a
Sync staged store files before commit
aidangarske Oct 13, 2026
ea4f15e
Correct the store batch setup comment
aidangarske Oct 13, 2026
0cec1c0
Rename WP11_FLAG_UNBOUND to WP11_FLAG_POLICY_EXCLUDED
aidangarske Oct 13, 2026
64203b1
Hold the token lock across the SO PIN change store
aidangarske Oct 15, 2026
693ddcc
Clean up staged store files in the policy test
aidangarske Oct 13, 2026
36e1f37
Test store failures with undecoded keys
aidangarske Oct 13, 2026
29767a8
Cache the empty user PIN verdict when loading a token
aidangarske Oct 13, 2026
61afa66
Test that a stored PIN change needs no logout to take effect
aidangarske Oct 15, 2026
b66edbd
Tidy store batch comments
aidangarske Oct 13, 2026
3c22be1
Publish SO PIN changes under the token lock
aidangarske Oct 15, 2026
a7d754b
F-5763 - Release the replaced operation when a new one is initialized
aidangarske Oct 6, 2026
efbd582
F-8664 - Release operation state on terminating error paths
aidangarske Oct 6, 2026
f78abbe
F-11514 - Free buffered AES-GCM data when GCM parameters are reset
aidangarske Oct 6, 2026
2f86aa8
F-11506 - Free AES and HMAC contexts when key setup fails
aidangarske Oct 6, 2026
6d9fe64
F-12480 - Drop the session reference to a destroyed AES key read at o…
aidangarske Oct 6, 2026
d3a97de
F-4071 - Scrub accumulated MAC input before growing or freeing it
aidangarske Oct 6, 2026
d0738cf
F-8660 - Release accumulated MAC input when the session operation ends
aidangarske Oct 6, 2026
8a5c90a
F-8641 - Require an active digest before saving operation state
aidangarske Oct 6, 2026
8c7bdcb
F-5871 - Release the active operation before restoring saved state
aidangarske Oct 6, 2026
5f769dc
F-11510 - Validate saved operation state before changing the session
aidangarske Oct 6, 2026
3ab58ef
F-5870 - Reject key handles when restoring a keyless operation state
aidangarske Oct 6, 2026
be9aa6f
F-10394 - Cancel the active operation when Init is called with a NULL…
aidangarske Oct 6, 2026
78da875
F-2769 - Blank pad fixed-length info fields
aidangarske Oct 7, 2026
bedfafc
F-6230 - Report the token clock only when a valid UTC time is available
aidangarske Oct 7, 2026
4d9e024
F-6053 - Advertise wrap and unwrap only for mechanisms C_WrapKey supp…
aidangarske Oct 7, 2026
f98ad0b
F-12477 - Report generic secret key generation sizes in bits
aidangarske Oct 7, 2026
a0723af
F-13248 - Advertise PBKDF2 and PKCS#12 PBE key generation only with HMAC
aidangarske Oct 7, 2026
7f06485
F-8634 - Report C_OpenSession failures instead of returning CKR_OK
aidangarske Oct 7, 2026
824c237
F-10370 - Document how C_Initialize uses pInitArgs
aidangarske Oct 7, 2026
3a89f67
F-10371 - Remove the wrong NULL pulCount return from C_GetMechanismLi…
aidangarske Oct 7, 2026
ad51d4f
F-10372 - Document CKR_PIN_LEN_RANGE for C_InitToken PIN length
aidangarske Oct 7, 2026
8efdcae
F-10373 - Document CKR_PIN_LEN_RANGE for C_InitPIN PIN length
aidangarske Oct 7, 2026
dd3e074
F-10374 - Document CKR_PIN_LEN_RANGE for the C_SetPIN new PIN length
aidangarske Oct 7, 2026
d6cbbfe
F-9413 - Correct the WP11_Slot_UserLogin return code docs
aidangarske Oct 7, 2026
2e75f16
Require CKA_VALUE_LEN on ECB unwrap only when ambiguous
aidangarske Oct 13, 2026
415eda7
Return CKR_KEY_SIZE_RANGE for unaligned ECB wraps
aidangarske Oct 13, 2026
60de138
Refuse an unaligned AES-ECB wrap before encrypting
aidangarske Oct 14, 2026
8483d8a
Add an AES-ECB unit test build
aidangarske Oct 14, 2026
1553de6
F-10378 - Fix file store path lookup build with WOLFPKCS11_NO_ENV
aidangarske Oct 6, 2026
2b56135
F-10379 - Keep token object count intact when an object store fails
aidangarske Oct 6, 2026
bf4c23c
F-10386 - Report token store commit failures to the caller
aidangarske Oct 6, 2026
8cc653c
F-10384 - Keep the stored token record until the new one is committed
aidangarske Oct 6, 2026
12eb649
F-11505 - Report token store failures from C_Finalize
aidangarske Oct 6, 2026
c51b7bf
F-8645 - Undo partial library initialization on failure
aidangarske Oct 6, 2026
fa8fada
F-10385 - Handle a failed object allocation without freeing NULL
aidangarske Oct 6, 2026
2740795
F-13243 - Report token object unstore failures from object destroy
aidangarske Oct 6, 2026
bbb17ac
F-2791 - Zeroize token state with wc_ForceZero on finalize
aidangarske Oct 6, 2026
057a482
F-11502 - Propagate token flag read errors during token load
aidangarske Oct 6, 2026
456c963
Prefer the token store error in object destroy
aidangarske Oct 13, 2026
8952683
Document both CKR_FUNCTION_FAILED cases of C_Finalize
aidangarske Oct 13, 2026
872b0e2
Test a close failure in wolfPKCS11_Store_CloseCommit
aidangarske Oct 13, 2026
2b69da0
Test C_DeriveKey reporting a token store failure
aidangarske Oct 13, 2026
9d7d52b
Test library initialization rollback when allocation fails
aidangarske Oct 13, 2026
b977085
Skip store failure tests when the directory stays writable
aidangarske Oct 13, 2026
456266a
Set the no_env default token path with configure
aidangarske Oct 15, 2026
958c395
F-10386 - Stage TPM store records in memory until commit
aidangarske Oct 6, 2026
37fc9dd
F-10380 - Size and index post-quantum key records in the TPM store
aidangarske Oct 6, 2026
5aecd94
Map TPM NV delete errors to failures
aidangarske Oct 13, 2026
dd1a73c
Reject TPM records over the NV index limit
aidangarske Oct 13, 2026
d06896b
Test grown and overflowing TPM store records
aidangarske Oct 13, 2026
7e1c28a
Map TPM store commit errors to a negative error
aidangarske Oct 14, 2026
d3d09a5
Skip the threaded C_SetPIN race in single-threaded builds
aidangarske Oct 15, 2026
94dad5d
Fail one store write in the interrupted TPM PIN change test
aidangarske Oct 15, 2026
298685b
F-10396 - Reject ECDH shared data when the KDF is CKD_NULL
aidangarske Oct 6, 2026
4e804a9
F-4272 - Bound the ECDH public data length before sizing the secret
aidangarske Oct 6, 2026
b3c6078
F-1610 - Keep the raw point fallback for an unsupported DER length form
aidangarske Oct 6, 2026
5c73d7e
F-5159 - Bound the DER point length by the ECDH public data length
aidangarske Oct 6, 2026
2e0fc01
F-10383 - Clear the ECDH key RNG before freeing the stack RNG
aidangarske Oct 6, 2026
f1bfe19
F-6959 - Require user login to derive a private key object
aidangarske Oct 6, 2026
5094d99
F-13818 - Set derived key initial states before adding the object
aidangarske Oct 6, 2026
955f99e
F-13816 - Derive key historical flags from the base key history
aidangarske Oct 6, 2026
a168a5b
F-3403 - Map derived key length failures to a PKCS#11 return value
aidangarske Oct 6, 2026
02f611d
Test ECDH derive with well-formed points of the wrong size
aidangarske Oct 13, 2026
b405268
F-4687 - Reject HKDF salt and info lengths beyond 32 bits
aidangarske Oct 6, 2026
e96f480
F-4804 - Reject an extended master secret session hash length beyond …
aidangarske Oct 6, 2026
ba194d5
F-4274 - Bound the DH peer public value length by the largest support…
aidangarske Oct 6, 2026
e915e8f
F-5077 - Reject an AES-CBC encrypt-data length beyond 32 bits
aidangarske Oct 6, 2026
939508c
F-10389 - Require whole-byte sizes for each TLS key material field
aidangarske Oct 6, 2026
55ba15a
F-10381 - Use one feature guard for the derive key locals and helpers
aidangarske Oct 6, 2026
fe44424
F-11518 - Require TLS random and session hash pointers before deriving
aidangarske Oct 6, 2026
b443550
F-4066 - Report an unsupported TLS master secret version as a paramet…
aidangarske Oct 6, 2026
a055e8c
F-13245 - Reject a derived key length larger than the derived secret
aidangarske Oct 6, 2026
e669f78
F-3636 - Set derive historical flags on TLS key material keys
aidangarske Oct 6, 2026
55304c3
F-4074 - Add TLS key material keys only after all attributes are set
aidangarske Oct 6, 2026
2f884f6
F-8644 - Require an HKDF salt key handle to be a symmetric secret key
aidangarske Oct 6, 2026
54a995c
Pad the DH derived secret to the prime length
aidangarske Oct 13, 2026
082dd9d
F-11503 - Default companion RSA public key to a session object on unwrap
aidangarske Oct 6, 2026
36c64a6
F-12460 - Validate CKA_TOKEN as a boolean attribute
aidangarske Oct 6, 2026
01181cf
F-5255 - Reject oversized attribute counts in SetAttributeValue
aidangarske Oct 6, 2026
a46d231
F-5254 - Reject oversized attribute counts in C_GetAttributeValue
aidangarske Oct 6, 2026
4db3085
F-5256 - Use a CK_ULONG index in C_FindObjects
aidangarske Oct 6, 2026
53550b8
F-13831 - Reject post-creation changes to copy-only attributes
aidangarske Oct 6, 2026
e1bd603
F-11511 - Reject derived key state attributes in creation templates
aidangarske Oct 6, 2026
7015de7
F-8670 - Reject a conflicting CKA_CLASS during object creation
aidangarske Oct 6, 2026
705de41
F-13242 - Validate the whole template before applying attribute updates
aidangarske Oct 6, 2026
6e2fd6f
F-4268 - Reject attribute lengths that do not fit the object setters
aidangarske Oct 6, 2026
74ce0b9
F-2773 - Reject CKA_ALWAYS_AUTHENTICATE since it cannot be enforced
aidangarske Oct 6, 2026
0ae3d3e
F-11517 - Reject NULL values with a non-zero length for data attributes
aidangarske Oct 6, 2026
6875363
F-6234 - Accept an empty CKA_START_DATE or CKA_END_DATE to clear the …
aidangarske Oct 6, 2026
50d4b1e
F-12462 - Keep the previous attribute value when a replacement fails
aidangarske Oct 6, 2026
3345ce5
F-2030 - Read CKA_CERTIFICATE_CATEGORY as a full CK_ULONG
aidangarske Oct 6, 2026
a55c0cd
Use a bounded handle array in the find test
aidangarske Oct 13, 2026
3f91939
F-11500 - Reject key material changes on existing objects
aidangarske Oct 6, 2026
d8f049d
F-10387 - Validate a secret key update before replacing the key
aidangarske Oct 6, 2026
6bb5405
F-10399 - Clear the whole DH key buffer before storing a private value
aidangarske Oct 6, 2026
f9be9a2
F-11515 - Test that asymmetric private components stay fixed after cr…
aidangarske Oct 6, 2026
714f06f
F-13815 - Require the EC curve before importing EC key material
aidangarske Oct 6, 2026
2a5c468
F-5158 - Reject RSA modulus sizes larger than the supported maximum
aidangarske Oct 6, 2026
99003ad
F-12458 - Keep the certificate value when an update omits CKA_VALUE
aidangarske Oct 6, 2026
03a6545
F-4528 - Allocate the new certificate value before freeing the old one
aidangarske Oct 6, 2026
f8d3903
F-11501 - Drop the storage alias when replacing a loaded certificate …
aidangarske Oct 7, 2026
8224016
F-4318 - Reject DH domain parameters larger than the supported key size
aidangarske Oct 7, 2026
74a9be3
Return template errors for bad RSA, EC and DH keys
aidangarske Oct 13, 2026
4c8e737
Test the secret key setter through a derive
aidangarske Oct 13, 2026
d4803a8
Describe key material tests as read-only gate tests
aidangarske Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/empty-pin-store-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ jobs:
echo ""
echo "=== Test completed ==="

- name: Run logout retire test with an empty PIN
run: |
mkdir -p store/logout_retire_test
./tests/logout_retire_test

- name: Show store directory contents on failure
if: failure()
run: |
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/unit-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,21 @@ jobs:
with:
config: --enable-singlethreaded

aesecb:
uses: ./.github/workflows/build-workflow.yml
with:
config: --enable-aesecb

tpm:
uses: ./.github/workflows/build-workflow.yml
with:
config: --enable-singlethreaded --enable-wolftpm --disable-dh C_EXTRA_FLAGS="-DWOLFPKCS11_TPM_STORE"
check: ./tests/pkcs11str && ./tests/pkcs11test && ./tests/rsa_session_persistence_test
tpm_debug:
uses: ./.github/workflows/build-workflow.yml
with:
config: --enable-singlethreaded --enable-wolftpm --disable-dh --enable-debug C_EXTRA_FLAGS="-DWOLFPKCS11_TPM_STORE"
check: ./tests/token_store_test

tpm_no_store:
uses: ./.github/workflows/build-workflow.yml
Expand Down Expand Up @@ -56,6 +66,11 @@ jobs:
uses: ./.github/workflows/build-workflow.yml
with:
config: CFLAGS="-DWOLFPKCS11_NO_STORE"
no_env:
uses: ./.github/workflows/build-workflow.yml
with:
config: C_EXTRA_FLAGS="-DWOLFPKCS11_NO_ENV" --with-default-token-path=./store/default
check: mkdir -p store && ./tests/pkcs11test
no_aesgcm:
uses: ./.github/workflows/build-workflow.yml
with:
Expand Down
3 changes: 1 addition & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,7 @@ if(NOT WOLFPKCS11_SINGLE_THREADED)
"-D_POSIX_THREADS")
endif()
else()
set(SINGLE_THREADED 1)
list(APPEND WOLFPKCS11_DEFINITIONS "-DSINGLE_THREADED")
list(APPEND WOLFPKCS11_DEFINITIONS "-DWOLFPKCS11_SINGLE_THREADED")
endif()


Expand Down
4 changes: 2 additions & 2 deletions cmake/options.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ extern "C" {
#endif
#undef DEBUG_WOLFPKCS11
#cmakedefine DEBUG_WOLFPKCS11
#undef SINGLE_THREADED
#cmakedefine SINGLE_THREADED
#undef WOLFPKCS11_SINGLE_THREADED
#cmakedefine WOLFPKCS11_SINGLE_THREADED
#undef NO_RSA
#cmakedefine NO_RSA
#undef WC_NO_RSA_OAEP
Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ AS_IF([ test "x$ENABLED_SINGLETHREADED" = "xno" ],[
])
])

AS_IF([ test "x$ENABLED_SINGLETHREADED" = "xyes" ],[ AM_CFLAGS="-DSINGLE_THREADED $AM_CFLAGS" ])
AS_IF([ test "x$ENABLED_SINGLETHREADED" = "xyes" ],[ AM_CFLAGS="-DWOLFPKCS11_SINGLE_THREADED $AM_CFLAGS" ])

HAVE_PTHREAD=0
AS_IF([test "x$ax_pthread_ok" = "xyes"],[HAVE_PTHREAD=1])
Expand Down
Loading
Loading