private void btnVerify_Click(object sender, EventArgs e)
        {
            if (!File.Exists(txtFileToVerify.Text))
            {
                MessageBox.Show("Please select the file containing the signed content");
                return;
            }

            if (!File.Exists(txtSignatureFile.Text))
            {
                MessageBox.Show("Please select the file containing the PKCS#7 Signature");
                return;
            }

            try
            {
                using (Stream data = File.OpenRead(txtFileToVerify.Text),
                       sig = File.OpenRead(txtSignatureFile.Text))
                {
                    SAPIWrapper.SignatureDetails details =
                        SAPIWrapper.ValidateSignature(data, sig);


                    lblSignerName.Text  = details.SignerName;
                    lblSigningTime.Text = details.SignatureTimeTicks == 0 ?
                                          "Not Available" : string.Format("{0}, {1}",
                                                                          new DateTime(details.SignatureTimeTicks).ToShortDateString(),
                                                                          new DateTime(details.SignatureTimeTicks).ToShortTimeString());
                    lblEmail.Text      = details.SignerEmail;
                    chkIsValid.Checked = details.isValid;
                    lblShowCert.Tag    = details.SignerCertificate;

                    data.Close();
                    sig.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }
        private void btnSign_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtUsername.Text))
            {
                MessageBox.Show("Please provide Username");
                return;
            }

            if (string.IsNullOrEmpty(txtPassword.Text))
            {
                MessageBox.Show("Please provide Password");
                return;
            }

            if (!File.Exists(txtFile.Text))
            {
                MessageBox.Show(string.Format("The file '{0}' doesn't exist!",
                                              txtFile.Text));
                return;
            }

            try
            {
                using (Stream dataToSign = File.OpenRead(txtFile.Text),
                       Signature = new MemoryStream())
                {
                    //Sign Stream data
                    SAPIWrapper.SignStream(
                        txtUsername.Text,
                        txtDomain.Text,
                        txtPassword.Text,
                        dataToSign, Signature);

                    //Close input stream
                    dataToSign.Close();

                    //Save signature data to file
                    SaveFileDialog sfd = new SaveFileDialog();
                    sfd.Filter   = "Signature file (*.p7b)|*.p7b";
                    sfd.Title    = "Please select the file to save the signature to";
                    sfd.FileName = Path.GetFileNameWithoutExtension(txtFile.Text) + ".p7b";
                    if (sfd.ShowDialog() != DialogResult.OK)
                    {
                        Signature.Close();
                        return;
                    }


                    File.WriteAllBytes(sfd.FileName,
                                       (Signature as MemoryStream).ToArray());

                    txtSignatureFile.Text = sfd.FileName;

                    Signature.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }


            MessageBox.Show("The data was signed successfully");
        }