Sample code for 30+ languages & platforms
Swift

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


}