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
(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.
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. numCerts.i = CkCertStore::ckNumCertificates(certStore) i.i = 0 While i < numCerts cert.i = CkCertStore::ckGetCertificate(certStore,i) 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) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.