private void LoadCertificateButton_Click(object sender, EventArgs e) { using OpenFileDialog openFileDialog = new OpenFileDialog { InitialDirectory = "C:\\", Filter = "X509 Certificate|*.crt", FilterIndex = 1, RestoreDirectory = true }; if (openFileDialog.ShowDialog() == DialogResult.OK) { using var stream = openFileDialog.OpenFile(); if (stream != null) { using BinaryReader reader = new BinaryReader(stream); byte[] fileContent = reader.ReadBytes(Convert.ToInt32(stream.Length)); if (X509CertificateController.IsValid(fileContent)) { m_Certificate = fileContent; var signAlg = X509CertificateController.GetCertificateParameters(m_Certificate); X509CertificateParser parser = new X509CertificateParser(); CertificateRichTextBox.Text = parser.ReadCertificate(m_Certificate).ToString(); } else { DebugRichTextBox.Text = "Current certificate is not valid!"; } } } }
private void CalculateSignatureButton_Click(object sender, EventArgs e) { bool hasError = false; DebugRichTextBox.Text = string.Empty; if (m_Certificate == null || m_Certificate.Length == 0) { hasError = true; DebugRichTextBox.Text += "Choose Certificate!" + Environment.NewLine; } if (m_Message == null || m_Message.Length == 0) { hasError = true; DebugRichTextBox.Text += "Choose Message!" + Environment.NewLine; } if (!hasError) { m_Signature = X509CertificateController.GetMessageSignature(m_Message, m_Certificate); SignatureRichTextBox.Text = string.Join("", BitConverter.ToString(m_Signature).Split('-')); DebugRichTextBox.Text = "Success!"; } }
private void VerifyCertificateButton_Click(object sender, EventArgs e) { if (m_Certificate != null && m_Certificate.Length != 0) { if (X509CertificateController.IsValid(m_Certificate)) { Valid(); } else { Invalid(); } } }
private void VerifySignatureButton_Click(object sender, EventArgs e) { bool hasError = false; DebugRichTextBox.Text = string.Empty; if (m_Certificate == null || m_Certificate.Length == 0) { hasError = true; DebugRichTextBox.Text += "Choose Certificate!" + Environment.NewLine; } if (m_Message == null || m_Message.Length == 0) { hasError = true; DebugRichTextBox.Text += "Choose Message!" + Environment.NewLine; } if (m_Signature == null || m_Signature.Length == 0) { hasError = true; DebugRichTextBox.Text += "Choose Signature!" + Environment.NewLine; } if (!hasError) { try { if (X509CertificateController.IsSignatureValid(m_Message, m_Signature, m_Certificate)) { Valid(); DebugRichTextBox.Text = "Success!"; } else { Invalid(); } } catch (Exception) { Invalid(); } } }
private void GetRootCertificateButton_Click(object sender, EventArgs e) { var certificate = X509CertificateController.GetRootCertificate(); using SaveFileDialog saveFileDialog = new SaveFileDialog { Filter = "X509 Certificate|*.crt", FilterIndex = 1, Title = "Save a Certificate File", RestoreDirectory = true }; if (saveFileDialog.ShowDialog() == DialogResult.OK) { Stream dataStream; if ((dataStream = saveFileDialog.OpenFile()) != null) { dataStream.Write(certificate, 0, certificate.Length); dataStream.Close(); } } }
private void CreateButton_Click(object sender, EventArgs e) { bool hasError = false; DebugRichTextBox.Text = ""; m_Subject.Surname_Subj = GetUserSurname(); if (m_Subject.Surname_Subj.Length == 0) { hasError = true; DebugRichTextBox.Text += "Error occured in user name!" + Environment.NewLine; } m_Subject.Name_Subj = GetUserName(); if (m_Subject.Name_Subj.Length == 0) { hasError = true; DebugRichTextBox.Text += "Error occured in user name!" + Environment.NewLine; } m_Subject.BirthDate_Subj = GetUserBirthDate(); m_Subject.Phone_Subj = GetUserPhone(); if (m_Subject.Phone_Subj.Length == 0 || m_Subject.Phone_Subj.Count(elm => elm < '0' || elm > '9') > 0) { hasError = true; DebugRichTextBox.Text += "Error occured in user phone!" + Environment.NewLine; } m_Subject.EMail_Subj = GetUserEMail(); if (m_Subject.EMail_Subj.Length == 0 || m_Subject.EMail_Subj.Count(elm => elm == '@') == 0 || m_Subject.EMail_Subj.Count(elm => elm == '@') > 1 || m_Subject.EMail_Subj.Count(elm => elm == '.') == 0 || m_Subject.EMail_Subj.Count(elm => elm == '.') > 1 || m_Subject.EMail_Subj.IndexOf('.') - m_Subject.EMail_Subj.IndexOf('@') < 2 || m_Subject.EMail_Subj.IndexOf('.') == m_Subject.EMail_Subj.Length - 1) { hasError = true; DebugRichTextBox.Text += "Error occured in user email!" + Environment.NewLine; } m_Subject.Gender_Subj = DatabaseInstance.GetInstance().Genders.FirstOrDefault(elm => elm.Name_Gender == GetUserGender()); if (m_Subject.Gender_Subj == null) { hasError = true; DebugRichTextBox.Text += "Error occured in user gender!" + Environment.NewLine; } m_Subject.Citizen_Subj = DatabaseInstance.GetInstance().Citizens.FirstOrDefault(elm => elm.Name_Citizen == GetUserCitizenship()); if (m_Subject.Citizen_Subj == null) { hasError = true; DebugRichTextBox.Text += "Error occured in user citizenship!" + Environment.NewLine; } m_Subject.City_Subj = DatabaseInstance.GetInstance().Cities.FirstOrDefault(elm => elm.Name_City == GetUserCity()); if (m_Subject.City_Subj == null) { hasError = true; DebugRichTextBox.Text += "Error occured in user city!" + Environment.NewLine; } m_Subject.PassportSerias_Subj = GetUserPassportSerials(); if (m_Subject.PassportSerias_Subj.Length != 4 || m_Subject.PassportSerias_Subj.Count(elm => elm < '0' || elm > '9') > 0) { hasError = true; DebugRichTextBox.Text += "Error occured in user passport serias!" + Environment.NewLine; } m_Subject.PassportNumber_Subj = GetUserPassportNumber(); if (m_Subject.PassportNumber_Subj.Length != 6 || m_Subject.PassportNumber_Subj.Count(elm => elm < '0' || elm > '9') > 0) { hasError = true; DebugRichTextBox.Text += "Error occured in user passport number!" + Environment.NewLine; } m_Subject.INN_Subj = GetUserINN(); if (m_Subject.INN_Subj.Length != 12 || m_Subject.INN_Subj.Count(elm => elm < '0' || elm > '9') > 0) { hasError = true; DebugRichTextBox.Text += "Error occured in user INN!" + Environment.NewLine; } m_Subject.SNILS_Subj = GetUserSNILS(); if (m_Subject.SNILS_Subj.Length != 11 || m_Subject.SNILS_Subj.Count(elm => elm < '0' || elm > '9') > 0) { hasError = true; DebugRichTextBox.Text += "Error occured in user SNILS!" + Environment.NewLine; } m_AlgParSet = DatabaseInstance.GetInstance().AlgParSets .Include(elm => elm.AlgName_AlgParSet) .Include(elm => elm.HashType_AlgParSet) .Include(elm => elm.Len_AlgParSet) .FirstOrDefault(elm => elm.OID_AlgParSet == GetParametersOID()); if (m_AlgParSet == null) { hasError = true; DebugRichTextBox.Text += "Error occured in parameters OID!" + Environment.NewLine; } if (!hasError) { var certificate = X509CertificateController.GetSignedCertificate(m_AlgParSet, m_Subject); SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "X509 Certificate|*.crt"; saveFileDialog.FilterIndex = 1; saveFileDialog.Title = "Save a Certificate File"; saveFileDialog.RestoreDirectory = true; if (saveFileDialog.ShowDialog() == DialogResult.OK) { Stream dataStream; if ((dataStream = saveFileDialog.OpenFile()) != null) { dataStream.Write(certificate, 0, certificate.Length); dataStream.Close(); } X509CertificateParser parser = new X509CertificateParser(); DebugRichTextBox.Text = parser.ReadCertificate(certificate).ToString(); } } }