private CertificateBundle InputPfx(string sourcePath) { CertificateBundle bundle = null; string password = null; while (bundle == null) { bundle = CertificateBundle.LoadFromPfxFile(sourcePath, password); if (bundle == null) { PasswordPrompt pp = new PasswordPrompt("Enter the password", "The .pfx file requires a password:"); pp.ShowDialog(this); if (pp.OkWasClicked) { password = pp.EnteredPassword; } else { return(null); } } } return(bundle); }
private void MakeCertificate(object Argument) { try { MakeCertArgs args = (MakeCertArgs)Argument; // Verify that the files do not already exist string safeFileName = SafeFileName(args.domains[0]); if (args.saveCerAndKey) { if (File.Exists(safeFileName + ".cer")) { ShowFileExistsError(safeFileName + ".cer"); return; } else if (File.Exists(safeFileName + ".key")) { ShowFileExistsError(safeFileName + ".key"); return; } } else { if (File.Exists(safeFileName + ".pfx")) { ShowFileExistsError(safeFileName + ".pfx"); return; } } CertificateBundle certBundle; if (args.issuer == "*Self-Signed*") { certBundle = CertMaker.GetCertificateSignedBySelf(args.domains, args.keyStrength, args.validFrom, args.validTo); } else { CertificateBundle issuerBundle = null; if (args.issuer.EndsWith(".pfx", StringComparison.OrdinalIgnoreCase)) { string password = null; while (issuerBundle == null) { issuerBundle = CertificateBundle.LoadFromPfxFile(args.issuer, password); if (issuerBundle == null) { PasswordPrompt pp = new PasswordPrompt("CA file is protected", "The .pfx file requires a password:"******".key", StringComparison.OrdinalIgnoreCase) ? args.issuer.Remove(args.issuer.Length - 4) + ".cer" : null; issuerBundle = CertificateBundle.LoadFromCerAndKeyFiles(cerFile, args.issuer); } certBundle = CertMaker.GetCertificateSignedByCA(args.domains, args.keyStrength, args.validFrom, args.validTo, issuerBundle); } if (args.saveCerAndKey) { File.WriteAllBytes(safeFileName + ".cer", certBundle.GetPublicCertAsCerFile()); File.WriteAllBytes(safeFileName + ".key", certBundle.GetPrivateKeyAsKeyFile()); } else { if (args.password == "") { args.password = null; } File.WriteAllBytes(safeFileName + ".pfx", certBundle.GetPfx(true, args.password)); } } catch (ThreadAbortException) { } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { StopProgress(); } }