Cocoa Objective-C Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CUnicode C++Unicode CMFCDelphi DLLDelphi ActiveXFoxProJavaPerlPHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Objective-C Examples

Bounced Email
Digital Certificates
Digital Signatures
DKIM / DomainKey
DSA
Email Object
Encryption
FTP
HTML Conversion
HTTP
IMAP
MHT / HTML Email
POP3
RSA
MIME
SMTP
Socket
SOCKS Proxy
Spider
SSH Key
SSH
SFTP
Tar
Upload
XML
XMP
Zip


More Examples...
Amazon S3
NTLM
RSS
Atom
PPMD
Deflate
Bzip2
LZW
Diffie-Hellman
Bz2
Character Encoding
CSV

 

 

 

 

 

 

 

 

Generate RSA Key and Sign a String

Demonstrates how to generate a new RSA public/private key pair and use it to generate a signature for a string. The (binary) digital signature is returned as a hexidecimalized string.

Download: Chilkat Cocoa Objective-C Libraries

NSMutableString *strOutput = [NSMutableString stringWithCapacity:1000];

CkoRsa *rsa = [[[CkoRsa alloc] init] autorelease];

//  Any string argument automatically begins the 30-day trial.
BOOL success;
success = [rsa UnlockComponent: @"30-day trial"];
if (success != YES) {
    [strOutput appendString: @"RSA component unlock failed"];
    [strOutput appendString: @"\n"];
    self.mainTextField.stringValue = strOutput;
    return;
}

//  Generate a 1024-bit RSA key pair.
[rsa GenerateKey: [NSNumber numberWithInt: 1024]];

//  This example will sign a string, and receive the signature
//  in a hex-encoded string.  Therefore, set the encoding mode
//  to "hex":
rsa.EncodingMode = @"hex";

//  If some other non-Chilkat application or web service is going to be verifying
//  the signature, it is important to match the byte-ordering.
//  The LittleEndian property may be set to YES
//  for little-endian byte ordering,
//  or NO  for big-endian byte ordering.
//  Microsoft apps typically use little-endian, while
//  OpenSSL and other services (such as Amazon CloudFront)
//  use big-endian.
rsa.LittleEndian = NO;

NSString *strData;
strData = @"This is the string to be signed.";

//  Sign the string using the  md5 hash algorithm.
//  Other valid choices are "md2", "sha256", "sha384",
//  "sha512", and "sha-1".
NSString *hexSig;
hexSig = [rsa SignStringENC: strData hashAlg: @"md5"];

[strOutput appendString: hexSig];
[strOutput appendString: @"\n"];
[strOutput appendString: rsa.LastErrorText];
[strOutput appendString: @"\n"];

//  Now verify the signature:
success = [rsa VerifyStringENC: strData hashAlg: @"md5" sig: hexSig];
if (success == YES) {
    [strOutput appendString: @"Signature verified!"];
    [strOutput appendString: @"\n"];
}
else {
    [strOutput appendString: rsa.LastErrorText];
    [strOutput appendString: @"\n"];
}

//  Try it with an invalid signature:
success = [rsa VerifyStringENC: strData hashAlg: @"md5" sig: @"not a valid sig"];
if (success == YES) {
    [strOutput appendString: @"Signature verified!"];
    [strOutput appendString: @"\n"];
}
else {
    [strOutput appendString: rsa.LastErrorText];
    [strOutput appendString: @"\n"];
}

//  Try it with invalid data:
success = [rsa VerifyStringENC: @"Not the original data" hashAlg: @"md5" sig: hexSig];
if (success == YES) {
    [strOutput appendString: @"Signature verified!"];
    [strOutput appendString: @"\n"];
}
else {
    [strOutput appendString: rsa.LastErrorText];
    [strOutput appendString: @"\n"];
}

//  Try it with the wrong hash algorithm:
success = [rsa VerifyStringENC: strData hashAlg: @"sha-1" sig: hexSig];
if (success == YES) {
    [strOutput appendString: @"Signature verified!"];
    [strOutput appendString: @"\n"];
}
else {
    [strOutput appendString: rsa.LastErrorText];
    [strOutput appendString: @"\n"];
}


self.mainTextField.stringValue = strOutput;



© 2000-2013 Chilkat Software, Inc. All Rights Reserved.