Objective-C
Objective-C
RSA Sign using Private Key of Certificate Type A3 (smart card / token)
See more RSA Examples
Demonstrates RSA signing data using the private key of a certificate type A3 (smart card, token).Note: This is a Windows-only example.
Chilkat Objective-C Downloads
#import <CkoCertStore.h>
#import <NSString.h>
#import <CkoJsonObject.h>
#import <CkoCert.h>
#import <CkoRsa.h>
#import <CkoFileAccess.h>
BOOL success = NO;
// First get the A3 certificate that was installed on the Windows system.
CkoCertStore *certStore = [[CkoCertStore alloc] init];
NSString *thumbprint = @"12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2";
// This is specific to Windows because it is opening the Windows Current-User certificate store.
BOOL bReadOnly = YES;
success = [certStore OpenCurrentUserStore: bReadOnly];
if (success != YES) {
NSLog(@"%@",certStore.LastErrorText);
return;
}
// Find the certificate with the desired thumbprint
// (There are many ways to locate a certificate. This example chooses to find by thumbprint.)
CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateString: @"thumbprint" value: thumbprint];
CkoCert *cert = [[CkoCert alloc] init];
success = [certStore FindCert: json cert: cert];
if (success == NO) {
NSLog(@"%@",@"Failed to find the certificate.");
return;
}
NSLog(@"%@%@",@"Found: ",cert.SubjectCN);
CkoRsa *rsa = [[CkoRsa alloc] init];
// Provide the cert's private key
BOOL bUsePrivateKey = YES;
success = [rsa SetX509Cert: cert usePrivateKey: bUsePrivateKey];
if (success != YES) {
NSLog(@"%@",rsa.LastErrorText);
return;
}
// Now we're ready to sign..
CkoFileAccess *fac = [[CkoFileAccess alloc] init];
// Get bytes to be signed..
NSData inData = [fac ReadEntireFile: @"in.dat"];
NSData signature = [rsa SignBytes: inData hashAlg: @"SHA-256"];
if (rsa.LastMethodSuccess != YES) {
NSLog(@"%@",rsa.LastErrorText);
return;
}
NSLog(@"%@",@"Signature created.");