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
(Ruby) 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.
require 'chilkat' certStore = Chilkat::CkCertStore.new() readOnly = true success = certStore.OpenCurrentUserStore(readOnly) if (!success) print certStore.lastErrorText() + "\n"; exit end pfxPassword = "secret" allSuccess = true numSuccess = 0 zip = Chilkat::CkZip.new() zip.NewZip("qa_output/personalCerts.zip") certData = Chilkat::CkBinData.new() sbFilename = Chilkat::CkStringBuilder.new() # Iterate over the certificates in the Current User store. numCerts = certStore.get_NumCertificates() i = 0 while i < numCerts # cert is a CkCert cert = certStore.GetCertificate(i) print "DN = " + cert.subjectDN() + "\n"; sbFilename.SetString("cert") sbFilename.AppendInt(i + 1) bHasPrivateKey = cert.HasPrivateKey() if ((bHasPrivateKey == true) and (cert.get_PrivateKeyExportable() == true)) # Export to a .pfx success = cert.ExportToPfxBd(pfxPassword,true,certData) if (success == true) sbFilename.Append(".pfx") # entry is a CkZipEntry entry = zip.AppendBd(sbFilename.getAsString(),certData) end else # Export to a .cer success = cert.ExportCertDerBd(certData) if (success == true) sbFilename.Append(".cer") # entry is a CkZipEntry entry = zip.AppendBd(sbFilename.getAsString(),certData) end end if (success != true) allSuccess = false else numSuccess = numSuccess + 1 end i = i + 1 end if (numSuccess > 0) success = zip.WriteZipAndClose() if (success != true) print zip.lastErrorText() + "\n"; allSuccess = false end end print "All success = " + allSuccess.to_s() + "\n"; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.