public void ExportCertificate(string certRef, bool pfxOnly = false) { GetVaultPath(); if (!Directory.Exists(VaultFolderPath + "\\" + LocalDiskVault.ASSET)) { Directory.CreateDirectory(VaultFolderPath + "\\" + LocalDiskVault.ASSET); } if (UsePowershell) { powershellManager.ExportCertificate(certRef, this.VaultFolderPath, pfxOnly); } else { if (certRef.StartsWith("=")) { certRef = certRef.Replace("=", ""); } var cmd = new ACMESharp.POSH.GetCertificate(); cmd.CertificateRef = certRef; if (!pfxOnly) { cmd.ExportKeyPEM = vaultFolderPath + "\\" + LocalDiskVault.KEYPM + "\\" + certRef + "-key.pem"; cmd.ExportCsrPEM = vaultFolderPath + "\\" + LocalDiskVault.CSRPM + "\\" + certRef + "-csr.pem"; cmd.ExportCertificatePEM = vaultFolderPath + "\\" + LocalDiskVault.CRTPM + "\\" + certRef + "-crt.pem"; cmd.ExportCertificateDER = vaultFolderPath + "\\" + LocalDiskVault.CRTDR + "\\" + certRef + "-crt.der"; } cmd.ExportPkcs12 = vaultFolderPath + "\\" + LocalDiskVault.ASSET + "\\" + certRef + "-all.pfx"; cmd.Overwrite = new System.Management.Automation.SwitchParameter(true); cmd.ExecuteCommand(); } }
protected override void ProcessRecord() { using (var vlt = Util.VaultHelper.GetVault(VaultProfile)) { vlt.OpenStorage(); var v = vlt.LoadVault(); if (v.IssuerCertificates == null || v.IssuerCertificates.Count < 1) { throw new InvalidOperationException("No issuer certificates found"); } if (string.IsNullOrEmpty(SerialNumber)) { WriteObject(v.IssuerCertificates.Values, true); } else { if (!v.IssuerCertificates.ContainsKey(SerialNumber)) { throw new ItemNotFoundException("Unable to find an Issuer Certificate for the given serial number"); } var ic = v.IssuerCertificates[SerialNumber]; var mode = Overwrite ? FileMode.Create : FileMode.CreateNew; if (!string.IsNullOrEmpty(ExportCertificatePEM)) { if (string.IsNullOrEmpty(ic.CrtPemFile)) { throw new InvalidOperationException("Cannot export CRT; CRT hasn't been retrieved"); } GetCertificate.CopyTo(vlt, Vault.VaultAssetType.IssuerPem, ic.CrtPemFile, ExportCertificatePEM, mode); } if (!string.IsNullOrEmpty(ExportCertificateDER)) { if (string.IsNullOrEmpty(ic.CrtDerFile)) { throw new InvalidOperationException("Cannot export CRT; CRT hasn't been retrieved"); } GetCertificate.CopyTo(vlt, Vault.VaultAssetType.IssuerDer, ic.CrtDerFile, ExportCertificateDER, mode); } WriteObject(v.IssuerCertificates[SerialNumber]); } } }