![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) 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. Note: This example requires Chilkat v10.1.2 or greater.
IncludeFile "CkBinData.pb" IncludeFile "CkCert.pb" IncludeFile "CkCertStore.pb" IncludeFile "CkZip.pb" IncludeFile "CkStringBuilder.pb" IncludeFile "CkZipEntry.pb" Procedure ChilkatExample() certStore.i = CkCertStore::ckCreate() If certStore.i = 0 Debug "Failed to create object." ProcedureReturn EndIf readOnly.i = 1 success.i = CkCertStore::ckOpenCurrentUserStore(certStore,readOnly) If Not success Debug CkCertStore::ckLastErrorText(certStore) CkCertStore::ckDispose(certStore) ProcedureReturn EndIf pfxPassword.s = "secret" allSuccess.i = 1 numSuccess.i = 0 entry.i zip.i = CkZip::ckCreate() If zip.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkZip::ckNewZip(zip,"qa_output/personalCerts.zip") certData.i = CkBinData::ckCreate() If certData.i = 0 Debug "Failed to create object." ProcedureReturn EndIf sbFilename.i = CkStringBuilder::ckCreate() If sbFilename.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Iterate over the certificates in the Current User store. cert.i = CkCert::ckCreate() If cert.i = 0 Debug "Failed to create object." ProcedureReturn EndIf numCerts.i = CkCertStore::ckNumCertificates(certStore) i.i = 0 While i < numCerts CkCertStore::ckGetCert(certStore,i,cert) Debug "DN = " + CkCert::ckSubjectDN(cert) CkStringBuilder::ckSetString(sbFilename,"cert") CkStringBuilder::ckAppendInt(sbFilename,i + 1) bHasPrivateKey.i = CkCert::ckHasPrivateKey(cert) If (bHasPrivateKey = 1) AND (CkCert::ckPrivateKeyExportable(cert) = 1) ; Export to a .pfx success = CkCert::ckExportToPfxBd(cert,pfxPassword,1,certData) If success = 1 CkStringBuilder::ckAppend(sbFilename,".pfx") entry = CkZip::ckAppendBd(zip,CkStringBuilder::ckGetAsString(sbFilename),certData) CkZipEntry::ckDispose(entry) EndIf Else ; Export to a .cer success = CkCert::ckExportCertDerBd(cert,certData) If success = 1 CkStringBuilder::ckAppend(sbFilename,".cer") entry = CkZip::ckAppendBd(zip,CkStringBuilder::ckGetAsString(sbFilename),certData) CkZipEntry::ckDispose(entry) EndIf EndIf If success <> 1 allSuccess = 0 Else numSuccess = numSuccess + 1 EndIf i = i + 1 Wend If numSuccess > 0 success = CkZip::ckWriteZipAndClose(zip) If success <> 1 Debug CkZip::ckLastErrorText(zip) allSuccess = 0 EndIf EndIf Debug "All success = " + Str(allSuccess) CkCertStore::ckDispose(certStore) CkZip::ckDispose(zip) CkBinData::ckDispose(certData) CkStringBuilder::ckDispose(sbFilename) CkCert::ckDispose(cert) ProcedureReturn EndProcedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.