Chilkat HOME Android™ ASP Visual Basic VB.NET C# iOS (IPhone) Objective-C C++ C Unicode C++ Unicode C MFC Delphi DLL Delphi ActiveX FoxPro Java Perl PHP Extension PHP ActiveX Python PowerShell Ruby SQL Server VBScript
|
Generate RSA Key and Sign a StringDemonstrates 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.