void SignAllSelectedFiles() { _nowSign = true; var errors = new List <string>(); foreach (var file in FilesForSign.Where(f => f.CanSign)) { try { var fileAsArray = file.GetFileAsByteArray(); var signAsArray = _quickSignum.Sign(fileAsArray); file.SaveSignature(signAsArray); } catch (Exception exception) { errors.Add(string.Format("При обработке файла: {0}\nвозникла следующая ошибка '{1}'", file.FilePath, exception.Message)); } } if (errors.Count == 0) { App.Current.Dispatcher.Invoke( new Action(() => MessageBox.Show(App.Current.MainWindow, String.Format("Все файлы успешно подписаны")))); } else { App.Current.Dispatcher.Invoke( new Action(() => MessageBox.Show(App.Current.MainWindow, String.Format("Успешно подписано {0} файлов, возникло ошибок {1}, ошибки: {2}", FilesForSign.Count - errors.Count, errors.Count, errors.Aggregate((s, s1) => s + "\n\n" + s1))))); } _nowSign = false; }
void VerifyAllSignatures() { _nowVerify = true; var errors = new List <string>(); int signend = 0; int unsigned = 0; foreach (var file in FilesForSign.Where(f => f.CanSign)) { try { var signatureArray = file.GetSignatureAsByteArray(); if (signatureArray == null) { file.IsSign = false; unsigned++; continue; } var sourceArray = file.GetFileAsByteArray(); file.IsSign = _quickSignum.Verify(sourceArray, signatureArray); if (file.IsSign) { signend++; } else { unsigned++; } } catch (Exception exception) { errors.Add(string.Format("При обработке файла: {0}\nвозникла следующая ошибка '{1}'", file.FilePath, exception.Message)); } } if (errors.Count == 0) { App.Current.Dispatcher.Invoke( new Action(() => MessageBox.Show(App.Current.MainWindow, String.Format("Все подписи успешно проверены, подписано {0} файлов, без подписи {1} файлов", signend, unsigned)))); } else { App.Current.Dispatcher.Invoke( new Action(() => MessageBox.Show(App.Current.MainWindow, String.Format("Подписано {0} файлов, не подписано {1}, возникло ошибок {2}, ошибки: {3}", signend, unsigned, errors.Count, errors.Aggregate((s, s1) => "\n" + s + "\n\n" + s1))))); } _nowVerify = false; }
private void UnCanSignAllThisExtensionExecuteCommand() { FilesForSign.Where(f => f.Extension.Equals(SelectedFileForSign.Extension)) .ToList() .ForEach(f => f.CanSign = false); }