public CodeSnippetCollection ReadCollection(string filename, out FileReadResult readResult) { SecureString password = _passwordHelper.Password; string usbKeyId = null; readResult = FileReadResult.Succes; string _fileData = string.Empty; SecureString _usbKeyPassword = null; VersionNumber _minimalVersion = new VersionNumber(3, 0, 0, 0); CodeSnippetCollection _resultCollection = new CodeSnippetCollection(); FileHeader _header = null; try { EncryptedBinaryFile <CodeSnippetCollection, FileHeader> _readHeader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, null); _header = _readHeader.ReadHeader(); if (!_header.Identifier.Equals(Constants.FILEHEADERIDENTIFIER)) { readResult = FileReadResult.ErrorUnknownIdentifier; return(null); } VersionNumber _fileVersion = new VersionNumber(_header.Version); if (_fileVersion < _minimalVersion) { readResult = FileReadResult.ErrorVersionToOld; return(null); } } catch { readResult = FileReadResult.ErrorReadingFile; return(null); } EncryptedBinaryFile <CodeSnippetCollection, FileHeader> _reader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, null); switch (_header.FileEncyptionMode) { case FileEncyptionMode.DefaultEncryption: _reader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, null); try { _passwordHelper.ClearPassWord(); _resultCollection = _reader.Read(); return(_resultCollection); // SUCCES } catch { readResult = FileReadResult.ErrorReadingFile; return(null); } case FileEncyptionMode.PasswordEncryption: retryPassword: _reader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, password); try { _resultCollection = _reader.Read(); _passwordHelper.Password = password; _passwordHelper.UsbKeyId = null; _passwordHelper.ShowKey(); return(_resultCollection); // SUCCES } catch (FileLoadException) { _passwordHelper.ClearPassWord(); readResult = FileReadResult.ErrorReadingFile; return(null); } catch (FileNotFoundException) { _passwordHelper.ClearPassWord(); readResult = FileReadResult.ErrorReadingFile; return(null); } catch (Exception) { goto setPassword; } setPassword: FormSetPassword _formSet = new FormSetPassword(); DialogResult _dg = _formSet.ShowDialog(); if (_dg == DialogResult.OK) { password = _formSet.Password; goto retryPassword; } else { readResult = FileReadResult.OpenCanceled; return(null); } case FileEncyptionMode.UsbKEYEncryption: bool _canceled; usbKeyId = _header.UsbKeyId; byte[] _key = _passwordHelper.GetUsbKey(_header.UsbKeyId, false, out _canceled); if (_canceled) { readResult = FileReadResult.OpenCanceled; return(null); } _usbKeyPassword = StringCipher.ToSecureString(Utils.ByteArrayToString(_key)); _reader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, _usbKeyPassword); try { _resultCollection = _reader.Read(); _passwordHelper.Password = null; _passwordHelper.UsbKeyId = _header.UsbKeyId; _passwordHelper.ShowKey(); return(_resultCollection); // SUCCES } catch { _passwordHelper.ClearPassWord(); readResult = FileReadResult.ErrorReadingFile; return(null); } } _passwordHelper.ClearPassWord(); readResult = FileReadResult.ErrorReadingFile; return(null); }
private void mnuClearPassword_Click(object sender, EventArgs e) => _passwordHelper.ClearPassWord();