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 Signature with Certificate's Private Key from PFXDemonstrates how to use a certificate's private key from a PFX file to create an RSA signature. Download: Chilkat Cocoa Objective-C Libraries NSMutableString *strOutput = [NSMutableString stringWithCapacity:1000]; BOOL success; // Create an instance of a certificate store object, load a PFX file, // locate the certificate we need, and use it for signing. // (a PFX file may contain more than one certificate.) CkoCertStore *certStore = [[[CkoCertStore alloc] init] autorelease]; // The 1st argument is the filename, the 2nd arg is the // PFX file's password: success = [certStore LoadPfxFile: @"chilkat.pfx" password: @"test"]; if (success != YES) { [strOutput appendString: certStore.LastErrorText]; [strOutput appendString: @"\n"]; self.mainTextField.stringValue = strOutput; return; } CkoCert *cert; cert = [certStore FindCertBySubject: @"Chilkat Software, Inc."]; if (cert == nil ) { [strOutput appendString: certStore.LastErrorText]; [strOutput appendString: @"\n"]; self.mainTextField.stringValue = strOutput; return; } CkoPrivateKey *pkey; pkey = [cert ExportPrivateKey]; if (pkey == nil ) { [strOutput appendString: cert.LastErrorText]; [strOutput appendString: @"\n"]; self.mainTextField.stringValue = strOutput; return; } 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: @"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"; // 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 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"]; [strOutput appendString: @"Success!"]; [strOutput appendString: @"\n"]; self.mainTextField.stringValue = strOutput; |
© 2000-2013 Chilkat Software, Inc. All Rights Reserved.