Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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]);
                }
            }
        }