Xojo Plugin
Xojo Plugin
Backup Windows Current User / Personal Certificates to a .zip
See more Certificates Examples
Demonstrates 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.
Chilkat Xojo Plugin Downloads
Dim success As Boolean
success = False
Dim certStore As New Chilkat.CertStore
Dim readOnly As Boolean
readOnly = True
success = certStore.OpenCurrentUserStore(readOnly)
If (Not success) Then
System.DebugLog(certStore.LastErrorText)
Return
End If
Dim pfxPassword As String
pfxPassword = "secret"
Dim allSuccess As Boolean
allSuccess = True
Dim numSuccess As Int32
numSuccess = 0
Dim zip As New Chilkat.Zip
success = zip.NewZip("qa_output/personalCerts.zip")
Dim certData As New Chilkat.BinData
Dim sbFilename As New Chilkat.StringBuilder
// Iterate over the certificates in the Current User store.
Dim cert As New Chilkat.Cert
Dim numCerts As Int32
numCerts = certStore.NumCertificates
Dim i As Int32
i = 0
While i < numCerts
success = certStore.GetCert(i,cert)
System.DebugLog("DN = " + cert.SubjectDN)
success = sbFilename.SetString("cert")
success = sbFilename.AppendInt(i + 1)
Dim bHasPrivateKey As Boolean
bHasPrivateKey = cert.HasPrivateKey()
If ((bHasPrivateKey = True) And (cert.PrivateKeyExportable = True)) Then
// Export to a .pfx
success = cert.ExportToPfxBd(pfxPassword,True,certData)
If (success = True) Then
success = sbFilename.Append(".pfx")
success = zip.AddBd(sbFilename.GetAsString(),certData)
End If
Else
// Export to a .cer
success = cert.ExportCertDerBd(certData)
If (success = True) Then
success = sbFilename.Append(".cer")
success = zip.AddBd(sbFilename.GetAsString(),certData)
End If
End If
If (success <> True) Then
allSuccess = False
Else
numSuccess = numSuccess + 1
End If
i = i + 1
Wend
If (numSuccess > 0) Then
success = zip.WriteZipAndClose()
If (success <> True) Then
System.DebugLog(zip.LastErrorText)
allSuccess = False
End If
End If
System.DebugLog("All success = " + Str(allSuccess))