Swift Requires Chilkat v10.1.2+
Swift
RSA Sign String using Private Key of Certificate Type A3 (smart card / token)
See more RSA Examples
Demonstrates RSA signing a string using the private key of a certificate type A3 (smart card, token).Note: This is a Windows-only example.
Chilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
// First get the A3 certificate that was installed on the Windows system.
let certStore = CkoCertStore()!
var thumbprint: String? = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2"
// This is specific to Windows because it is opening the Windows Current-User certificate store.
var bReadOnly: Bool = true
success = certStore.openCurrentUserStore(readOnly: bReadOnly)
if success != true {
print("\(certStore.lastErrorText!)")
return
}
// Find the certificate with the desired thumbprint
// (There are many ways to locate a certificate. This example chooses to find by thumbprint.)
let json = CkoJsonObject()!
json.updateString(jsonPath: "thumbprint", value: thumbprint)
let cert = CkoCert()!
success = certStore.findCert(json: json, cert: cert)
if success == false {
print("Failed to find the certificate.")
return
}
print("Found: \(cert.subjectCN!)")
let rsa = CkoRsa()!
// Provide the cert's private key
var bUsePrivateKey: Bool = true
success = rsa.setX509Cert(cert: cert, usePrivateKey: bUsePrivateKey)
if success != true {
print("\(rsa.lastErrorText!)")
return
}
// Return the RSA signature in base64 encoded form.
rsa.encodingMode = "base64"
// Sign the utf-8 byte representation of the string.
rsa.charset = "utf-8"
// You can also choose other hash algorithms, such as SHA-1.
var sigBase64: String? = rsa.signStringENC(str: "text to sign", hashAlg: "SHA-256")
if rsa.lastMethodSuccess != true {
print("\(rsa.lastErrorText!)")
return
}
print("Base64 signature: \(sigBase64!)")
}