public Form5SignEncrypt(string filepath, List <Certificate> currentUsers, List <Certificate> currentImportedUsers) { InitializeComponent(); this.filepath = filepath; if (filepath.Equals("")) { Close(); } fileName = filepath.Split('\\').Last(); string dirName = ""; string[] temp = fileName.Split('.'); for (int i = 0; i < temp.Length - 2; i++) { dirName += temp[i] + "."; } dirName += temp[temp.Length - 2]; signedEncryptedDirectory = FileDirectory.Create("Recipient\\ReceivedFiles\\" + dirName + "\\"); outputPath = signedEncryptedDirectory + fileName; CheckBoxControl(); this.currentUsers = currentUsers; this.currentImportedUsers = currentImportedUsers; }
// RSA private key'lerin dosyaya yazilmasi public void SavePrivateKey(string dirName, byte[] passphrase) { RSAParametersSerializable rsaPrivateKeyInfoSerializable = new RSAParametersSerializable(rsaPrivateKeyInfo); rsaPrivateKeyInfoSerializable.Encrypt(passphrase); Directory.CreateDirectory(FileDirectory.Create(dirName) + "Keys\\"); Serialization.WriteToBinaryFile(FileDirectory.Create(dirName) + "Keys\\" + ID, rsaPrivateKeyInfoSerializable, false); }
public Form2User(bool isSender) { InitializeComponent(); this.isSender = isSender; if (isSender) { groupBoxSender.Visible = true; groupBoxRecipient.Visible = false; dataGridViewUser = dataGridViewSender; dataGridViewImported = dataGridViewSenderImported; this.Text = "Gönderen"; directoryName = "Sender\\"; filePath = FileDirectory.Create("Sender\\") + "Senders.txt"; importedFilePath = FileDirectory.Create("Sender\\") + "ImportedRecipients.txt"; } else { groupBoxSender.Visible = false; groupBoxRecipient.Visible = true; dataGridViewUser = dataGridViewRecipient; dataGridViewImported = dataGridViewRecipientImported; this.Text = "Alıcı"; directoryName = "Recipient\\"; filePath = FileDirectory.Create("Recipient\\") + "Recipients.txt"; importedFilePath = FileDirectory.Create("Recipient\\") + "ImportedSenders.txt"; } // Aktif kullanicinin (gonderen / alici) sertifikalarinin listelenmesi ve passphrase'lerinin dosyadan okunmasi users = File.Exists(filePath) ? Serialization.ReadFromBinaryFile <List <Certificate> >(filePath) : new List <Certificate>(); importedUsers = File.Exists(importedFilePath) ? Serialization.ReadFromBinaryFile <List <Certificate> >(importedFilePath) : new List <Certificate>(); foreach (Certificate cert in users) { DirectoryInfo dirInfo = new DirectoryInfo(FileDirectory.Create(directoryName) + "Passphrases\\"); // try catch FileInfo[] files = dirInfo.GetFiles(); foreach (FileInfo file in files) { if (file.Name.Equals(cert.ID)) { cert.hashedPassphrase = File.ReadAllBytes(FileDirectory.Create(directoryName) + "Passphrases\\" + cert.ID); break; } } int dgvColumnIndex = isSender ? 0 : 5; ListCertsOnDataGrid(cert, dataGridViewUser, dgvColumnIndex); } foreach (Certificate cert in importedUsers) { int dgvColumnIndex = isSender ? 10 : 15; ListCertsOnDataGrid(cert, dataGridViewImported, dgvColumnIndex); } }
// RSA private key'lerin dosyadan okunmasi public RSAParameters GetPrivateKey(string dirName, Form form) { RSAParametersSerializable rsaPrivateKeyInfoSerializable = null; DirectoryInfo dirInfo = new DirectoryInfo(FileDirectory.Create(dirName) + "Keys\\"); FileInfo[] files = dirInfo.GetFiles(); foreach (FileInfo file in files) { if (file.Name.Equals(ID)) { rsaPrivateKeyInfoSerializable = Serialization.ReadFromBinaryFile <RSAParametersSerializable>(FileDirectory.Create(dirName) + "Keys\\" + ID); } } Form8Passphrase formPassphrase = new Form8Passphrase(Name); bool invalidPass = true; int tryCount = 1; while (invalidPass && tryCount <= 3) { formPassphrase.labelTry.Visible = (tryCount == 2 || tryCount == 3) ? true : false; formPassphrase.labelTry.Text = "Yanlış parola. Deneme: " + tryCount + " / 3."; formPassphrase.ShowDialog(form); byte[] passphrase = null; if (formPassphrase.DialogResult == DialogResult.OK) { passphrase = Encoding.ASCII.GetBytes(formPassphrase.textBoxPassphrase.Text); byte[] hashedInputPassphrase = SHA256Salted.GenerateSaltedHash(passphrase, salt); if (SHA256Salted.CompareByteArrays(hashedInputPassphrase, hashedPassphrase)) { rsaPrivateKeyInfoSerializable.Decrypt(passphrase); invalidPass = false; } else { invalidPass = true; tryCount++; } } else { break; } } if (tryCount > 3) { return(new RSAParameters()); } return(rsaPrivateKeyInfoSerializable.RSAParameters); }
// Secilen sertifikayi ice aktar private Certificate ImportCertificate() { OpenFileDialog openFileDialog = new OpenFileDialog { Title = "İçe Aktar", Filter = "(*.asc) | *.asc", InitialDirectory = FileDirectory.Create(directoryName) + "ReceivedCertificates\\", }; Certificate user = null; if (openFileDialog.ShowDialog() == DialogResult.OK) { user = Serialization.ReadFromBinaryFile <Certificate>(openFileDialog.FileName); } return(user); }
// Secilen sertifikayi disa aktar private void ExportCertificate(DataGridView dataGridView, List <Certificate> users) { int index = dataGridView.CurrentCell.RowIndex; string sendTo = isSender ? "Recipient\\" : "Sender\\"; SaveFileDialog saveFileDialog = new SaveFileDialog { Title = "Dışa Aktar", InitialDirectory = FileDirectory.Create(sendTo) + "ReceivedCertificates\\", FileName = users[index].ID + ".asc", //Filter = "(*.asc) | *.asc" }; if (saveFileDialog.ShowDialog() == DialogResult.OK) { Serialization.WriteToBinaryFile(saveFileDialog.FileName, users[index], false); } }
// Desifrelenecek / dogrulanacak dosyanin secilmesi private void buttonVerifyDecrypt_Click(object sender, EventArgs e) { string filepathToDecrypt = ""; OpenFileDialog openFileDialog = new OpenFileDialog { Title = "Deşifrelemek / Doğrulamak İçin Dosya Seçiniz", Filter = "(*.enc, *.sig) | *.enc; *.sig", InitialDirectory = FileDirectory.Create(@"Recipient\ReceivedFiles") }; if (openFileDialog.ShowDialog() == DialogResult.OK) { filepathToDecrypt = openFileDialog.FileName; Form6VerifyDecrypt formVerifyDecrypt = new Form6VerifyDecrypt(filepathToDecrypt, users, importedUsers); formVerifyDecrypt.Show(this); } }
// Alicinin mevcut sertifikalari ice aktarmasi private void buttonRecipientImport_Click(object sender, EventArgs e) { try { Certificate user = ImportCertificate(); if (user != null) { importedUsers.Add(user); Serialization.WriteToBinaryFile(FileDirectory.Create("Recipient\\") + "ImportedSenders.txt", importedUsers, false); int columnIndex = isSender ? 10 : 15; ListCertsOnDataGrid(user, dataGridViewImported, columnIndex); } } catch { return; } }
private void formPersonalDetails_FormClosed(object sender, FormClosedEventArgs e) { if (formPersonalDetails.DialogResult == DialogResult.OK) { string name = formPersonalDetails.textBoxName.Text; string email = formPersonalDetails.textBoxEmail.Text; string comment = formPersonalDetails.textBoxComment.Text; string passphrase = formPersonalDetails.textBoxPassphrase.Text; user = new Certificate(name, email, comment, passphrase); users.Add(user); Serialization.WriteToBinaryFile(filePath, users, false); user.SavePrivateKey(directoryName, Encoding.ASCII.GetBytes(passphrase)); Directory.CreateDirectory(FileDirectory.Create(directoryName) + "Passphrases\\"); File.WriteAllBytes(FileDirectory.Create(directoryName) + "Passphrases\\" + user.ID, user.hashedPassphrase); int dgvColumnIndex = isSender ? 0 : 5; ListCertsOnDataGrid(user, dataGridViewUser, dgvColumnIndex); } }
public Form6VerifyDecrypt(string filepath, List <Certificate> currentUsers, List <Certificate> currentImportedUsers) { InitializeComponent(); this.filepath = filepath; string[] pathSplit = filepath.Split('\\').Last().Split('.'); fileName = ""; for (int i = 0; i < pathSplit.Length - 2; i++) { fileName += pathSplit[i] + "."; } fileName += pathSplit[pathSplit.Length - 2]; string[] temp = filepath.Split('\\'); signedEncryptedDir = FileDirectory.Create("Recipient\\ReceivedFiles\\") + temp[temp.Length - 2] + "\\"; verifiedDecryptedDir = FileDirectory.Create("Recipient\\VerifiedDecryptedFiles\\"); outputPath = verifiedDecryptedDir + fileName; textBoxPath.Text = outputPath; this.currentUsers = currentUsers; this.currentImportedUsers = currentImportedUsers; }
// Alicinin sertifiklarini disa aktarmasi private void buttonRecipientExport_Click(object sender, EventArgs e) { Directory.CreateDirectory(FileDirectory.Create("Sender\\") + "ReceivedCertificates\\"); ExportCertificate(dataGridViewRecipient, users); }