using System; using System.Windows.Forms; using System.IO; using nsoftware.SecureBlackbox; namespace PKCS11CertificateStorage { /// /// Summary description for ProcessorForm. /// public class frmProcessor : System.Windows.Forms.Form { private System.Windows.Forms.Label lbInputFile; private System.Windows.Forms.TextBox edInputFile; private System.Windows.Forms.Button btnSelectInput; private System.Windows.Forms.Button btnSelectOutput; private System.Windows.Forms.TextBox edOutputFile; private System.Windows.Forms.Label lbOutputFile; private System.Windows.Forms.Button btnSign; private System.Windows.Forms.Button btnVerify; private System.Windows.Forms.OpenFileDialog dlgOpen; private System.Windows.Forms.SaveFileDialog dlgSave; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; public Certificate Cert; private PDFSigner signer; private Button btnClose; private PDFVerifier verifier; public frmProcessor() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // signer = new PDFSigner(); verifier = new PDFVerifier(); } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); signer.Dispose(); verifier.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.lbInputFile = new System.Windows.Forms.Label(); this.edInputFile = new System.Windows.Forms.TextBox(); this.btnSelectInput = new System.Windows.Forms.Button(); this.btnSelectOutput = new System.Windows.Forms.Button(); this.edOutputFile = new System.Windows.Forms.TextBox(); this.lbOutputFile = new System.Windows.Forms.Label(); this.btnSign = new System.Windows.Forms.Button(); this.btnVerify = new System.Windows.Forms.Button(); this.dlgOpen = new System.Windows.Forms.OpenFileDialog(); this.dlgSave = new System.Windows.Forms.SaveFileDialog(); this.btnClose = new System.Windows.Forms.Button(); this.SuspendLayout(); // // lbInputFile // this.lbInputFile.Location = new System.Drawing.Point(16, 16); this.lbInputFile.Name = "lbInputFile"; this.lbInputFile.Size = new System.Drawing.Size(100, 16); this.lbInputFile.TabIndex = 0; this.lbInputFile.Text = "Input File:"; // // edInputFile // this.edInputFile.Location = new System.Drawing.Point(16, 32); this.edInputFile.Name = "edInputFile"; this.edInputFile.Size = new System.Drawing.Size(261, 20); this.edInputFile.TabIndex = 1; // // btnSelectInput // this.btnSelectInput.Location = new System.Drawing.Point(283, 30); this.btnSelectInput.Name = "btnSelectInput"; this.btnSelectInput.Size = new System.Drawing.Size(75, 23); this.btnSelectInput.TabIndex = 2; this.btnSelectInput.Text = "Browse..."; this.btnSelectInput.Click += new System.EventHandler(this.btnSelectInput_Click); // // btnSelectOutput // this.btnSelectOutput.Location = new System.Drawing.Point(283, 78); this.btnSelectOutput.Name = "btnSelectOutput"; this.btnSelectOutput.Size = new System.Drawing.Size(75, 23); this.btnSelectOutput.TabIndex = 5; this.btnSelectOutput.Text = "Browse..."; this.btnSelectOutput.Click += new System.EventHandler(this.btnSelectOutput_Click); // // edOutputFile // this.edOutputFile.Location = new System.Drawing.Point(16, 80); this.edOutputFile.Name = "edOutputFile"; this.edOutputFile.Size = new System.Drawing.Size(261, 20); this.edOutputFile.TabIndex = 4; // // lbOutputFile // this.lbOutputFile.Location = new System.Drawing.Point(16, 64); this.lbOutputFile.Name = "lbOutputFile"; this.lbOutputFile.Size = new System.Drawing.Size(100, 16); this.lbOutputFile.TabIndex = 3; this.lbOutputFile.Text = "Output File:"; // // btnSign // this.btnSign.Location = new System.Drawing.Point(202, 125); this.btnSign.Name = "btnSign"; this.btnSign.Size = new System.Drawing.Size(75, 23); this.btnSign.TabIndex = 6; this.btnSign.Text = "Sign"; this.btnSign.Click += new System.EventHandler(this.btnSign_Click); // // btnVerify // this.btnVerify.Location = new System.Drawing.Point(283, 125); this.btnVerify.Name = "btnVerify"; this.btnVerify.Size = new System.Drawing.Size(75, 23); this.btnVerify.TabIndex = 7; this.btnVerify.Text = "Verify"; this.btnVerify.Click += new System.EventHandler(this.btnVerify_Click); // // dlgOpen // this.dlgOpen.Filter = "All files (*.*)|*.*"; // // dlgSave // this.dlgSave.DefaultExt = "All files (*.*)|*.*"; // // btnClose // this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnClose.Location = new System.Drawing.Point(283, 166); this.btnClose.Name = "btnClose"; this.btnClose.Size = new System.Drawing.Size(75, 23); this.btnClose.TabIndex = 10; this.btnClose.Text = "Close"; // // frmProcessor // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(375, 201); this.Controls.Add(this.btnClose); this.Controls.Add(this.btnVerify); this.Controls.Add(this.btnSign); this.Controls.Add(this.btnSelectOutput); this.Controls.Add(this.edOutputFile); this.Controls.Add(this.lbOutputFile); this.Controls.Add(this.btnSelectInput); this.Controls.Add(this.edInputFile); this.Controls.Add(this.lbInputFile); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.Name = "frmProcessor"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "File processor"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private void btnSelectInput_Click(object sender, System.EventArgs e) { if (dlgOpen.ShowDialog() == DialogResult.OK) edInputFile.Text = dlgOpen.FileName; } private void btnSelectOutput_Click(object sender, System.EventArgs e) { if (dlgSave.ShowDialog() == DialogResult.OK) edOutputFile.Text = dlgSave.FileName; } private void btnSign_Click(object sender, System.EventArgs e) { signer.InputFile = edInputFile.Text; signer.OutputFile = edOutputFile.Text; signer.SigningCertificate = Cert; if (signer.SigningCertificate.KeyAlgorithm.Contains("id-dsa")) { MessageBox.Show("The certificate was found to contain a DSA key. The hash algorithm has been switched to SHA1."); signer.NewSignature.HashAlgorithm = "SHA1"; } signer.NewSignature.Level = PAdESSignatureLevels.paslBES; signer.Widget.Invisible = false; signer.IgnoreChainValidationErrors = true; try { signer.Sign(); MessageBox.Show("PDF file successfully signed"); } catch (Exception ex) { MessageBox.Show(ex.Message); } signer.SigningCertificate = null; } private void btnVerify_Click(object sender, System.EventArgs e) { try { verifier.InputFile = edInputFile.Text; verifier.IgnoreChainValidationErrors = true; verifier.KnownCertificates.Clear(); verifier.KnownCertificates.Add(Cert); verifier.Verify(); DisplaySignaturesInfo(); } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void DisplaySignaturesInfo() { ValidationResultForm dlg = new ValidationResultForm(); dlg.Init(verifier); dlg.ShowDialog(); } } }