Sample code for 30+ languages & platforms
Swift

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")!)")

}