Seems like nobody has an idea.
Are there any source files we could analyze ?
Did you get any notice about this thread?
I am thinking to do something similar, but I could not find any documentation or basic example to do that.
We did open DTS-TSI thee weeks ago, but sadly no answer so far.
We'll keep this thread updated.
I have a similar problem.
I want to use a smartphone as key storage device and implement a key storage provider as an app extension using CryptoTokenKit.
The only difference to a smartcard is, that there is no plug-in detection in my case, and no automatic identity storing in keychain.
Up to now, I didn't find any description how could I activate my app extension to start its work in case of missing token plug-in.
This activation would store the token identity in keychain via TKTokenChainContents.
Maybe the CryptoTokenKit API is not flexible enough.
I don’t know enough about CryptoTokenKit to tell you whether this idea is feasible. My recommendation is that you open a DTS tech support incident and talk to our CryptoTokenKit expert.
Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware
let myEmail = "eskimo" + "1" + "@apple.com"
opened DTS right after Your post.
Case ID: 699988558
No response yet.
I tried to get some estimates, but i was tols there are none.
And as a user you're unable to track status of DTS.
Please involve someone that could help
Basically it should be possible, when looking at the CryptoTokenKit framework included in xcode 11, they have implemented _TKClientTokenServerPortName, this should give you a hint where to go from this.
One possible solution is to read the reference data from your certificate and keys from the server into the so called user keychain database, located in your ~Library/Keychains and once they are there they are automatically recognized by safari for doing web authentication or smartcard logon or just any other application.
Below is a snippet where you can find the available functionalities inside ctk;
archs: [ x86_64 ]
uuids: [ 'x86_64: 6F9BF731-FACA-3161-B1C7-22B11942FCFA', 'x86_64: 6F9BF731-FACA-3161-B1C7-22B11942FCFA' ]
- archs: [ x86_64 ]
symbols: [ _TKClientTokenServerPortName, _TKEntitlementSlotType, _TKErrorDomain,
_TKNotifyNameFirstSlot, _TKProtocolSlotClientName, _TKProtocolSlotRegistryName,
_TKRegisterOptionRemoveObjects, _TKSlotTypeSmartCard, _TKSmartCardSessionEndPolicyKey,
_TKSmartCardSlotATR, _TKSmartCardSlotMaxInputLength, _TKSmartCardSlotMaxOutputLength,
_TKSmartCardSlotShareStateKey, _TKSmartCardSlotStateKey, _TKTokenClassDriverApplicationIDKey,
_TKTokenConfigurationProtocolName, _TKTokenTypeKey, _TKTokenWatcherServerStartedNotification,
_TKTransportSlotName, _TKUnderlyingAKSErrorKey ]
objc-classes: [ TKBERTLVRecord, TKClientToken, TKClientTokenAdvertisedItem,
TKClientTokenObject, TKClientTokenSession, TKCompactTLVRecord,
TKSharedResource, TKSharedResourceSlot, TKSimpleTLVRecord,
TKSmartCard, TKSmartCardATR, TKSmartCardATRInterfaceGroup,
TKSmartCardPINFormat, TKSmartCardSlot, TKSmartCardSlotEngine,
TKSmartCardSlotManager, TKSmartCardSlotScreen, TKSmartCardToken,
TKSmartCardTokenDriver, TKSmartCardTokenSession, TKSmartCardUserInteraction,
TKSmartCardUserInteractionForStringEntry, TKTLVRecord, TKToken,
TKTokenAuthOperation, TKTokenBaseContext, TKTokenConfiguration,
TKTokenConfigurationTransaction, TKTokenDriver, TKTokenDriverConfiguration,
TKTokenID, TKTokenKeyAlgorithm, TKTokenKeyExchangeParameters,
TKTokenKeychainCertificate, TKTokenKeychainContents, TKTokenKeychainItem,
TKTokenKeychainKey, TKTokenPasswordAuthOperation, TKTokenSession,
TKTokenSmartCardPINAuthOperation, TKTokenWatcher ]
Where did you find this function . "_TKClientTokenServerPortName" ???
I have xcode 11 and it does not has this inside of it.
I'm trying to do the same thing, but i don't know exactly how.
MichaelLang, where did you find that reference with that methods? I have downloaded xcode 11, but i can't find that methods.