Problem: plist not going to call our VirtualSmartCardDriver class.
We are developing a mac application. The purpose is to create a smart virtual card. This is the basic class
public class VirtualSmartCardDriver: TKTokenDriver {
// Required initializer for TKTokenDriver
override init() {
super.init()
print("VirtualSmartCardDriver initialized")
}
}
Created a plist and saved it on the location Library/Security/Tokens
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DriverBundleIdentifier</key>
<string>com.student.SignExtension</string>
<key>TKTokenDriverClassName</key>
<string>VirtualSmartCardDriver</string>
<key>TKTokenClassName</key>
<string>VirtualSmartCard</string>
<key>TKTokenDriverTokenTypes</key>
<array>
<string>com.apple.token.smartcard</string>
</array>
</dict>
</plist>
We installed a certificate in the Mac keychain that does not have its private key. We bind our smart virtual card with this certificate programmatically.
We run our Mac application. We open a document with a signature field on it in the Adobe Acrobat. When we click on the signature it only opens the certificate with its private key.
By process, as defined it should look system-wide to check any smart card. It would invoke our virtual smart card driver class via plist in the Security/Tokens folder.
plist in the /Library/Security/Tokens should invoke our class.