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
|
RSA Sign with PKCS8 Encrypted KeyDemonstrates how to load a private key from an encrypted PKCS8 file and create an RSA digital signature (and then verify it). Download: Chilkat Cocoa Objective-C Libraries NSMutableString *strOutput = [NSMutableString stringWithCapacity:1000]; CkoPrivateKey *pkey = [[[CkoPrivateKey alloc] init] autorelease]; // Load the private key from an RSA PEM file: [pkey LoadPkcs8EncryptedFile: @"raul_privateKey.key" password: @"a0123456789"]; BOOL success; NSString *pkeyXml; // Get the private key in XML format: pkeyXml = [pkey GetXml]; CkoRsa *rsa = [[[CkoRsa alloc] init] autorelease]; // Any string argument automatically begins the 30-day trial. success = [rsa UnlockComponent: @"Anything for 30-day trial."]; if (success != YES) { [strOutput appendString: @"RSA component unlock failed"]; [strOutput appendString: @"\n"]; self.mainTextField.stringValue = strOutput; return; } // Import the private key into the RSA component: success = [rsa ImportPrivateKey: pkeyXml]; if (success != YES) { [strOutput appendString: rsa.LastErrorText]; [strOutput appendString: @"\n"]; self.mainTextField.stringValue = strOutput; return; } // 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"; NSString *strData; strData = @"This is the string to be signed."; // Sign the string using the sha-1 hash algorithm. // Other valid choices are "md2" and "md5". NSString *hexSig; hexSig = [rsa SignStringENC: strData hashAlg: @"sha-1"]; [strOutput appendString: hexSig]; [strOutput appendString: @"\n"]; // Now verify with the public key. // This example shows how to use the public key from // a digital certificate (.cer file) CkoCert *cert = [[[CkoCert alloc] init] autorelease]; success = [cert LoadFromFile: @"raul_publicKey.cer"]; if (success != YES) { [strOutput appendString: cert.LastErrorText]; [strOutput appendString: @"\n"]; self.mainTextField.stringValue = strOutput; return; } CkoPublicKey *pubKey; pubKey = [cert ExportPublicKey]; NSString *pubKeyXml; // Get the private key in XML format: pubKeyXml = [pubKey GetXml]; CkoRsa *rsa2 = [[[CkoRsa alloc] init] autorelease]; success = [rsa2 ImportPublicKey: pubKeyXml]; if (success != YES) { [strOutput appendString: rsa2.LastErrorText]; [strOutput appendString: @"\n"]; self.mainTextField.stringValue = strOutput; return; } // Verify the signature against the original data: rsa2.EncodingMode = @"hex"; success = [rsa2 VerifyStringENC: strData hashAlg: @"sha-1" sig: hexSig]; if (success != YES) { [strOutput appendString: rsa2.LastErrorText]; [strOutput appendString: @"\n"]; self.mainTextField.stringValue = strOutput; return; } [strOutput appendString: @"Signature verified!"]; [strOutput appendString: @"\n"]; // Verify with incorrect data: success = [rsa2 VerifyStringENC: @"something else" hashAlg: @"sha-1" sig: hexSig]; if (success != YES) { [strOutput appendString: ]; [strOutput appendString: @"\n"];} self.mainTextField.stringValue = strOutput; |
© 2000-2013 Chilkat Software, Inc. All Rights Reserved.