Sample code for 30+ languages & platforms
Swift Requires Chilkat v11.0.0+

Verfies an RSA Signature

See more Apple Keychain Examples

Verifies an RSA signature against the original data.

Chilkat Swift Downloads

Swift

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.")
    }


}