private void button_sign_Click(object sender, EventArgs e) { //определяем выбранный в выпадающем списке сертификат var certificate = this.SelectedCertificate; //если по какой-то причине сертификат не выбран if (certificate == null || certificate.CertificateX509 == null) { MessageBox.Show("Необходимо выбрать сертификат!"); return; } //проверяем, что указан файл, который будем подписывать if (this.textBox_sign_file.Text.Trim() == "") { MessageBox.Show("Необходимо выбрать файл для подписи"); return; } //читаем файл, который будем подписывать byte[] data_to_sign = File.ReadAllBytes(this.textBox_sign_file.Text); if (data_to_sign == null) { MessageBox.Show("Выбран не корректный файл для подписи"); return; } //определяем параметр подписания: // true - значит подпись будет отделенная (в файле с подписью будет только подпись) // false - значит подпись будет присоединенная (в файле с подписью будет и сама подпись и сами данные, которые подписывались) bool detached = this.checkBox_sign_detached.Checked; var signer = new CertificateSigner(data_to_sign, detached); // подписываем файл и сохраняем подпись byte[] signed_data = signer.Sign(certificate); //сохраняем файл с подпсиью if (this.saveFileDialog_sign.ShowDialog() == System.Windows.Forms.DialogResult.OK) { File.WriteAllBytes(this.saveFileDialog_sign.FileName, signed_data); MessageBox.Show("Файл с подписью сохранен успешно!"); return; } }
private void button_check_Click(object sender, EventArgs e) { this.textBox_check_result.Text = ""; //проверяем, что указан файл с подписью if (this.textBox_check_sign.Text.Trim() == "") { MessageBox.Show("Необходимо выбрать файл, содержащий подпись"); return; } //читаем файл с подписью byte[] signature = File.ReadAllBytes(this.textBox_check_sign.Text); if (signature == null) { MessageBox.Show("Выбран не корректный файл с подписью"); return; } //определяем параметр подписания: // true - значит подпись отделенная (в файле с подписью есть только подпись и содержимое нужно указывать отдельно) // false - значит подпись будет присоединенная (в файле с подписью будет и сама подпись и сами данные, которые подписывались) bool detached = this.checkBox_check_detached.Checked; byte[] original = null; if (detached) {//отсоединенная подпись //проверяем, что указан файл с оригинальными данными if (this.textBox_check_file.Text.Trim() == "") { MessageBox.Show("Необходимо выбрать файл, содержащий оригинальные данные, которые были подписаны"); return; } //читаем файл с подписью original = File.ReadAllBytes(this.textBox_check_file.Text); if (original == null) { MessageBox.Show("Выбран не корректный файл с оригинальными данными"); return; } } var signer = new CertificateSigner(signature, original); var verification = signer.Verify(); if (signer.Certificate != null) { this.FillCertificatesList(signer.Certificate); verification.AddNewLine(2); verification.AddRange(_validator.Validate(signer.Certificate)); } this.textBox_check_result.Text = verification.ToString(); }