Sample code for 30+ languages & platforms
Objective-C

Verfies an RSA Signature

See more Apple Keychain Examples

Verifies an RSA signature against the original data.

Chilkat Objective-C Downloads

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

BOOL success = NO;

// The following data was signed by the following example:
// RSA Sign using a Private Key on a USB Token or Smartcard
CkoBinData *bd = [[CkoBinData alloc] init];
int i;
for (i = 0; i <= 100; i++) {
    [bd AppendEncoded: @"000102030405060708090A0B0C0D0E0F" encoding: @"hex"];
}

// Load the signature
CkoBinData *bdSig = [[CkoBinData alloc] init];
success = [bdSig LoadFile: @"rsaSignatures/test1.sig"];
if (success == NO) {
    NSLog(@"%@",@"Failed to load the RSA signature");
    return;
}

// Get the public key to be used for signature verification.
CkoPublicKey *pubKey = [[CkoPublicKey alloc] init];
success = [pubKey LoadFromFile: @"rsaKeys/chilkat-rsa-2048.pem"];
if (success == NO) {
    NSLog(@"%@",pubKey.LastErrorText);
    return;
}

CkoRsa *rsa = [[CkoRsa alloc] init];
success = [rsa UsePublicKey: pubKey];
if (success == NO) {
    NSLog(@"%@",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: bd hashAlgorithm: @"sha256" bdSig: bdSig];

if (success == NO) {
    NSLog(@"%@",rsa.LastErrorText);
    NSLog(@"%@",@"Signature invalid.");
}
else {
    NSLog(@"%@",@"Signature valid.");
}