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;
        }
コード例 #2
0
        // 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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        // 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);
        }
コード例 #5
0
        // 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);
        }
コード例 #6
0
        // 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);
            }
        }
コード例 #7
0
        // 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);
            }
        }
コード例 #8
0
 // 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;
     }
 }
コード例 #9
0
        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;
        }
コード例 #11
0
 // Alicinin sertifiklarini disa aktarmasi
 private void buttonRecipientExport_Click(object sender, EventArgs e)
 {
     Directory.CreateDirectory(FileDirectory.Create("Sender\\") + "ReceivedCertificates\\");
     ExportCertificate(dataGridViewRecipient, users);
 }