Swift
Swift
Verfies an RSA Signature
See more Apple Keychain Examples
Verifies an RSA signature against the original data.Chilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
// The following data was signed by the following example:
// RSA Sign using a Private Key on a USB Token or Smartcard
let bd = CkoBinData()!
var i: Int
for i = 0; i <= 100; i++ {
bd.appendEncoded(encData: "000102030405060708090A0B0C0D0E0F", encoding: "hex")
}
// Load the signature
let bdSig = CkoBinData()!
success = bdSig.loadFile(path: "rsaSignatures/test1.sig")
if success == false {
print("Failed to load the RSA signature")
return
}
// Get the public key to be used for signature verification.
let pubKey = CkoPublicKey()!
success = pubKey.load(fromFile: "rsaKeys/chilkat-rsa-2048.pem")
if success == false {
print("\(pubKey.lastErrorText!)")
return
}
let rsa = CkoRsa()!
success = rsa.usePublicKey(pubKey: pubKey)
if success == false {
print("\(rsa.lastErrorText!)")
return
}
// Verify the hash of the data against the signature.
// We pass in the original data. Internally, the hash is generated
// and used to validate the signature.
// Validating the RSA signature means two things:
// (1) the original data is exactly what was signed, and
// (2) it was signed by the owner of the RSA private key.
success = rsa.verifyBd(bdData: bd, hashAlgorithm: "sha256", bdSig: bdSig)
if success == false {
print("\(rsa.lastErrorText!)")
print("Signature invalid.")
}
else {
print("Signature valid.")
}
}