Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        private static X509Certificate2 SignIt(X509Certificate2 subordinate, X509Certificate2 CA)
        {
            var csr = new CertificateSigningRequest()
            {
                KeySpecification = CertificateSigner.AT_SIGNATURE,
                Certificate      = subordinate,
                ExpirationLength = subordinate.NotAfter - subordinate.NotBefore
            };

            return(CertificateSigner.SignCertificate(csr, CA));
        }
Esempio n. 3
0
        public static byte[] Seal(byte[] payload, MedikitCertificate senderCertificate, string keyId, SymmetricAlgorithm symmetricAlg)
        {
            var lst = new List <X509Certificate2>
            {
                senderCertificate.Certificate
            };
            var signer           = new CertificateSigner(senderCertificate);
            var inner            = Sign(payload, senderCertificate.Certificate, null, SigningPolicy.EHEALTH_CERT, signer);
            var envelopedMessage = Encrypt(inner, symmetricAlg, keyId);
            var outer            = Sign(envelopedMessage, senderCertificate.Certificate, lst, SigningPolicy.EHEALTH_CERT, signer);

            return(outer);
        }
Esempio n. 4
0
        public static byte[] Seal(byte[] payload, MedikitCertificate senderCertificate, X509Certificate2 recipientCertificate)
        {
            var lst = new List <X509Certificate2>
            {
                senderCertificate.Certificate
            };
            var signer           = new CertificateSigner(senderCertificate);
            var inner            = Sign(payload, senderCertificate.Certificate, null, SigningPolicy.EHEALTH_CERT, signer);
            var envelopedMessage = Encrypt(inner, recipientCertificate);
            var outer            = Sign(envelopedMessage, senderCertificate.Certificate, lst, SigningPolicy.EHEALTH_CERT, signer);

            return(outer);
        }
Esempio n. 5
0
        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;
            }
        }