Sample code for 30+ languages & platforms
Objective-C

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 Objective-C Downloads

Objective-C
#import <CkoPrivateKey.h>
#import <CkoRsa.h>
#import <NSString.h>
#import <CkoBinData.h>
#import <CkoPublicKey.h>

BOOL success = NO;

// 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.
CkoPrivateKey *privKey = [[CkoPrivateKey alloc] init];
success = [privKey LoadEncryptedPemFile: @"qa_data/pem/rsa_passwd.pem" password: @"passwd"];
if (success == NO) {
    NSLog(@"%@",privKey.LastErrorText);
    return;
}

CkoRsa *rsa = [[CkoRsa alloc] init];
[rsa UsePrivateKey: privKey];

// We have some binary data (in hex) to sign
NSString *originalData = @"0102030405060708090A";
CkoBinData *bd = [[CkoBinData alloc] init];
[bd AppendEncoded: originalData encoding: @"hex"];

// If successful, the contents of bd are replaced with the RSA signature.
success = [rsa SignRawBd: bd];
if (success == NO) {
    NSLog(@"%@",rsa.LastErrorText);
    return;
}

// Show the RSA signature in base64
NSLog(@"%@",[bd GetEncoded: @"base64"]);

// ------------------------------------------
// Get the public key from the private key
CkoPublicKey *pubKey = [[CkoPublicKey alloc] init];
[privKey ToPublicKey: pubKey];

// Verify the signature and extract the original data.
CkoRsa *rsa2 = [[CkoRsa alloc] init];
[rsa2 UsePublicKey: pubKey];

BOOL bVerified = [rsa2 VerifyRawBd: bd];
NSLog(@"%@%d",@"signature verified: ",bVerified);

// Show the original data:
NSLog(@"%@%@",@"original data: ",[bd GetEncoded: @"hex"]);