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

RSA Sign Binary Data and Verify (Recover the Original Data)

See more RSA Examples

Demonstrates how to RSA sign binary data and then verify/recover the original data.

Note: This example uses methods introduced in Chilkat v9.5.0.77.

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    //  This example requires the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    //  Load an RSA private key for signing.
    let privKey = CkoPrivateKey()!
    success = privKey.loadEncryptedPemFile(path: "qa_data/pem/rsa_passwd.pem", password: "passwd")
    if success == false {
        print("\(privKey.lastErrorText!)")
        return
    }

    let rsa = CkoRsa()!
    rsa.usePrivateKey(privKey: privKey)

    //  We have some binary data (in hex) to sign
    var originalData: String? = "0102030405060708090A"
    let bd = CkoBinData()!
    bd.appendEncoded(encData: originalData, encoding: "hex")

    //  If successful, the contents of bd are replaced with the RSA signature.
    success = rsa.signRawBd(bd: bd)
    if success == false {
        print("\(rsa.lastErrorText!)")
        return
    }

    //  Show the RSA signature in base64
    print("\(bd.getEncoded(encoding: "base64")!)")

    //  ------------------------------------------
    //  Get the public key from the private key
    let pubKey = CkoPublicKey()!
    privKey.toPublicKey(pubKey: pubKey)

    //  Verify the signature and extract the original data.
    let rsa2 = CkoRsa()!
    rsa2.usePublicKey(pubKey: pubKey)

    var bVerified: Bool = rsa2.verifyRawBd(bd: bd)
    print("signature verified: \(bVerified)")

    //  Show the original data:
    print("original data: \(bd.getEncoded(encoding: "hex")!)")

}