예제 #1
0
        public bool Generate()
        {
            using (var dlg = new SaveFileDialog())
            {
                dlg.Filter =
                    @"X.509 Certificate files (*.cer;*.crt;*.cert;*.pem)|*.cer;*.crt;*.cert;*.pem|Pem files (*.pem)|*.pem|Crt files (*.crt)|*.crt|All files (*.*)|*.*";
                dlg.FilterIndex      = 0;
                dlg.RestoreDirectory = true;

                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    var certificateGenerator = new DefaultServerCertificateGenerator(new DefaultUrlEvaluator());

                    DateTime beginDate = View.From;
                    DateTime endDate   = beginDate.AddDays(View.Duration);


                    X509Certificate         caFile         = IOPEMUtils.LoadPemCertificate(View.CAFile);
                    AsymmetricCipherKeyPair caPriveKeyFile = IOPEMUtils.LoadPemPrivateKey(View.CAPrivateKeyFile);


                    CertificateResult result = certificateGenerator.Create(
                        View.Algoritm,
                        View.KeyLength,
                        View.Subject,
                        View.AlternateNames,
                        beginDate,
                        endDate,
                        View.KeyUsage,
                        View.Purpose,
                        caFile,
                        caPriveKeyFile,
                        new CertificateEndPoints
                    {
                        CaDistributionEndPoint  = View.CaUri,
                        CrlDistributionEndPoint = View.CrlUri,
                        OcspEndPoint            = View.OcspUri
                    }
                        );

                    ResultFileNames files = IOPEMUtils.SaveCertificateAndPrivateKey(result.Certificate, result.KeyPair,
                                                                                    dlg.FileName);

                    MessageBox.Show(
                        String.Format("Foram gravados os ficheiros:\nCertificado como '{0}'\nChave privada como '{1}'",
                                      files.Certificate,
                                      files.PrivateKey), @"Informação",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information
                        );

                    return(true);
                }

                return(false);
            }
        }
        public bool Convert()
        {
            string password        = View.Pkcs12Password;
            string confirmPassword = View.Pkcs12PasswordConfirmation;

            if (String.CompareOrdinal(password, confirmPassword) != 0)
            {
                MessageBox.Show(@"A password e confirmação não coincidem", @"Passwords",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error
                                );

                return(false);
            }

            using (var dlg = new SaveFileDialog())
            {
                dlg.Filter           = @"Pfx files (*.pfx)|*.pfx|All files (*.*)|*.*";
                dlg.FilterIndex      = 0;
                dlg.RestoreDirectory = true;

                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    string file = dlg.FileName;

                    var storeGenerator = new DefaultPkcs12StoreGenerator();

                    X509Certificate         certificateFile         = IOPEMUtils.LoadPemCertificate(View.CertificateFile);
                    AsymmetricCipherKeyPair certificatePriveKeyFile =
                        IOPEMUtils.LoadPemPrivateKey(View.CertificatePrivateKeyFile);

                    try
                    {
                        byte[] result = storeGenerator.Create(certificateFile, certificatePriveKeyFile, password,
                                                              View.CasFiles);

                        File.WriteAllBytes(file, result);

                        MessageBox.Show(String.Format("Lista gravada em '{0}'", file), @"Informação",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Information
                                        );
                        return(true);
                    }
                    catch (Exception exp)
                    {
                        MessageBox.Show(exp.Message, @"Erro",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Error
                                        );
                    }
                }

                return(false);
            }
        }
        public bool Generate()
        {
            using (var dlg = new SaveFileDialog())
            {
                dlg.Filter           = @"X.509 Crl files (*.crl)|*.crl|All files (*.*)|*.*";
                dlg.FilterIndex      = 0;
                dlg.RestoreDirectory = true;

                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    string file = dlg.FileName;

                    var listGenerator = new DefaultCertificateRevocationListGenerator();

                    DateTime beginDate      = View.From;
                    DateTime nextUpdateDate = beginDate.AddDays(View.NextUpdate);

                    X509Crl                 crlFile        = IOPEMUtils.LoadPemCrl(View.CrlListFile);
                    X509Certificate         caFile         = IOPEMUtils.LoadPemCertificate(View.CAFile);
                    AsymmetricCipherKeyPair caPriveKeyFile = IOPEMUtils.LoadPemPrivateKey(View.CAPrivateKeyFile);

                    string[] certificatesFiles = View.CertificatesFilesToRevocate;
                    List <X509Certificate> certificatesToRevocate = null;
                    if (!certificatesFiles.IsStringListNullOrEmpty())
                    {
                        certificatesToRevocate = certificatesFiles.Select(IOPEMUtils.LoadPemCertificate).ToList();
                    }

                    X509Crl result = listGenerator.Update(
                        View.Algoritm,
                        crlFile,
                        certificatesToRevocate.IsNullOrEmpty() ? null : certificatesToRevocate.ToArray(),
                        caFile,
                        caPriveKeyFile,
                        beginDate,
                        nextUpdateDate,
                        View.Reason
                        );

                    IOPEMUtils.SavePemCrl(result, file);

                    MessageBox.Show(String.Format("Lista gravada em '{0}'", file), @"Informação",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Information
                                    );

                    return(true);
                }

                return(false);
            }
        }
        public bool Generate()
        {
            using (var dlg = new SaveFileDialog())
            {
                dlg.Filter           = @"Crl files (*.crl)|*.crl|All files (*.*)|*.*";
                dlg.FilterIndex      = 0;
                dlg.RestoreDirectory = true;

                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    string file = dlg.FileName;

                    var listGenerator = new DefaultCertificateRevocationListGenerator();

                    DateTime beginDate      = View.From;
                    DateTime nextUpdateDate = beginDate.AddDays(View.NextUpdate);

                    X509Certificate         caFile         = IOPEMUtils.LoadPemCertificate(View.CAFile);
                    AsymmetricCipherKeyPair caPriveKeyFile = IOPEMUtils.LoadPemPrivateKey(View.CAPrivateKeyFile);

                    X509Crl result = listGenerator.Create(
                        View.Algoritm,
                        caFile,
                        caPriveKeyFile,
                        beginDate,
                        nextUpdateDate
                        );

                    IOPEMUtils.SavePemCrl(result, file);

                    MessageBox.Show(String.Format("Lista gravada em '{0}'", file), @"Informação",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Information
                                    );

                    return(true);
                }

                return(false);
            }
        }