Conform SignedDataVerifier & ChainVerifier to Sendable #94
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR improves thread safety and concurrency support by making
SignedDataVerifier
andChainVerifier
conform to theSendable
protocol. The main change involves replacing a mutablevar
for certificate caching with a dedicatedCacheManager
actor to ensure thread-safe certificate caching operations.Changes
Core Changes
SignedDataVerifier
: AddedSendable
conformance to enable safe concurrent usageChainVerifier
:Sendable
conformanceverifiedPublicKeyCache
with a dedicatedCacheManager
actorCacheManager
actor for thread safety🆕 New Components
CacheManager
actor: A thread-safe actor that manages certificate verification result cachinggetCachedResult
andcacheResult
methods🔄 Updated Types
CacheKey
: AddedSendable
conformanceCacheValue
: AddedSendable
conformance🧪 Testing
CacheManagerTests.swift
with comprehensive tests for:SignedDataVerifierTests.swift
to use the new caching architectureDateOverrideChainVerifier
classBenefits
CacheManager
actor ensures all cache operations are thread-safeBreaking Changes
None - this is a backward-compatible improvement that enhances thread safety without changing the public API.