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
(Perl) 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.
use chilkat(); $certStore = chilkat::CkCertStore->new(); $readOnly = 1; $success = $certStore->OpenCurrentUserStore($readOnly); if (!$success) { print $certStore->lastErrorText() . "\r\n"; exit; } $pfxPassword = "secret"; $allSuccess = 1; $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 Cert $cert = $certStore->GetCertificate($i); print "DN = " . $cert->subjectDN() . "\r\n"; $sbFilename->SetString("cert"); $sbFilename->AppendInt($i + 1); $bHasPrivateKey = $cert->HasPrivateKey(); if (($bHasPrivateKey == 1) and ($cert->get_PrivateKeyExportable() == 1)) { # Export to a .pfx $success = $cert->ExportToPfxBd($pfxPassword,1,$certData); if ($success == 1) { $sbFilename->Append(".pfx"); # entry is a ZipEntry $entry = $zip->AppendBd($sbFilename->getAsString(),$certData); } } else { # Export to a .cer $success = $cert->ExportCertDerBd($certData); if ($success == 1) { $sbFilename->Append(".cer"); # entry is a ZipEntry $entry = $zip->AppendBd($sbFilename->getAsString(),$certData); } } if ($success != 1) { $allSuccess = 0; } else { $numSuccess = $numSuccess + 1; } $i = $i + 1; } if ($numSuccess > 0) { $success = $zip->WriteZipAndClose(); if ($success != 1) { print $zip->lastErrorText() . "\r\n"; $allSuccess = 0; } } print "All success = " . $allSuccess . "\r\n"; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.