Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) Backup Windows Current User / Personal Certificates to a .zipDemonstrates how to backup the certificates in the Windows registry-based Current User certificate store (in the "Personal" Logical Store as seen in certmgr.msc), to a zip archive. Certificates having an exportable private key are exported to .pfx files. Certificates with no private key, or with a non-exportable private key, are exported to .cer files. Obviously, this example only runs on Windows computers.
#import <CkoCertStore.h> #import <NSString.h> #import <CkoZipEntry.h> #import <CkoZip.h> #import <CkoBinData.h> #import <CkoStringBuilder.h> #import <CkoCert.h> CkoCertStore *certStore = [[CkoCertStore alloc] init]; BOOL readOnly = YES; BOOL success = [certStore OpenCurrentUserStore: readOnly]; if (!success) { NSLog(@"%@",certStore.LastErrorText); return; } NSString *pfxPassword = @"secret"; BOOL allSuccess = YES; int numSuccess = 0; CkoZipEntry *entry = 0; CkoZip *zip = [[CkoZip alloc] init]; [zip NewZip: @"qa_output/personalCerts.zip"]; CkoBinData *certData = [[CkoBinData alloc] init]; CkoStringBuilder *sbFilename = [[CkoStringBuilder alloc] init]; // Iterate over the certificates in the Current User store. int numCerts = [certStore.NumCertificates intValue]; int i = 0; while (i < numCerts) { CkoCert *cert = [certStore GetCertificate: [NSNumber numberWithInt: i]]; NSLog(@"%@%@",@"DN = ",cert.SubjectDN); [sbFilename SetString: @"cert"]; [sbFilename AppendInt: [NSNumber numberWithInt: (i + 1)]]; BOOL bHasPrivateKey = [cert HasPrivateKey]; if ((bHasPrivateKey == YES) && (cert.PrivateKeyExportable == YES)) { // Export to a .pfx success = [cert ExportToPfxBd: pfxPassword includeCertChain: YES pfxData: certData]; if (success == YES) { [sbFilename Append: @".pfx"]; entry = [zip AppendBd: [sbFilename GetAsString] byteData: certData]; } } else { // Export to a .cer success = [cert ExportCertDerBd: certData]; if (success == YES) { [sbFilename Append: @".cer"]; entry = [zip AppendBd: [sbFilename GetAsString] byteData: certData]; } } if (success != YES) { allSuccess = NO; } else { numSuccess = numSuccess + 1; } i = i + 1; } if (numSuccess > 0) { success = [zip WriteZipAndClose]; if (success != YES) { NSLog(@"%@",zip.LastErrorText); allSuccess = NO; } } NSLog(@"%@%d",@"All success = ",allSuccess); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.