/// <summary> /// Пакетная проверка подписей файлов /// </summary> /// <param name="pathIn">Папка с исходными файлами</param> /// <param name="mask">Маска файлов для обработки (*.*)</param> /// <param name="pathOut">Папка для проверенных файлов (v)</param> /// <param name="pub">Строка пути к каталогу c OPENKEY (\Pub)</param> /// <param name="move">Удалять исходные файлы в случае успеха</param> /// <returns>0 или код последней ошибки</returns> public static int BulkVerify(string pathIn, string mask, string pathOut, string pub, bool move) { Wbotho.SignInit(pub, pub); Wbotho.SignLogIn(pub); Directory.CreateDirectory(pathOut); int ret = 0; foreach (string file in Directory.GetFiles(pathIn, mask)) { string fileOut = Path.Combine(pathOut, Path.GetFileName(file)); File.Copy(file, fileOut, true); int r = Posh.Verify(fileOut); //TODO Wbotho.CheckFileSignEx() if (r == 0 && move && File.Exists(fileOut)) { File.Delete(file); } else { File.Delete(fileOut); ret = r; } } Wbotho.SignLogOut(); Wbotho.SignDone(); return(ret); }
/// <summary> /// Пакетное подписывание файлов /// </summary> /// <param name="pathIn">Папка с исходными файлами</param> /// <param name="mask">Маска файлов для обработки (*.*)</param> /// <param name="pathOut">Папка для подписанных файлов (s)</param> /// <param name="pub">Строка пути к каталогу c OPENKEY (\Pub)</param> /// <param name="id">Код аутентификации - КА (XXXXSSSSSSYY)</param> /// <param name="move">Удалять исходные файлы в случае успеха</param> /// <returns>0 или код последней ошибки</returns> public static int BulkSign(string pathIn, string mask, string pathOut, string pub, string id, bool move) { Wbotho.SignInit(pub, pub); Wbotho.SignLogIn(pub); Directory.CreateDirectory(pathOut); int ret = 0; foreach (string file in Directory.GetFiles(pathIn, mask)) { string fileOut = Path.Combine(pathOut, Path.GetFileName(file)); int r = Wbotho.SignFile(file, fileOut, id); if (r == 0 && move && File.Exists(fileOut)) { File.Delete(file); } else { ret = r; } } Wbotho.SignLogOut(); Wbotho.SignDone(); return(ret); }
/// <summary> /// Удалить все подписи в конце файла (новое: без параметра с числом их) /// </summary> /// <param name="file">Файл с подписями</param> /// <remarks>wftesto.exe u file.txt</remarks> public static int Unsign(string file) { int ret; if ((ret = Wbotho.SignInit("", "")) > 0) { Console.WriteLine("SignInit error : {0}", ret); return(ret); } if ((ret = Posh.Unsign(file)) > 0) { Console.WriteLine("DelSign error : {0}", ret); return(ret); } Wbotho.SignDone(); Console.WriteLine("Sign deleted in file {0}", file); return(ret); }
/// <summary> /// Подписать файл с подписью в отдельном файле (новое) /// </summary> /// <param name="file">Исходный файл</param> /// <param name="fileSig">Файл с подписями</param> /// <param name="sec">Путь к секретному ключу</param> /// <param name="id">Код аутентификации (КА)</param> /// <remarks>wftesto.exe s2 file.txt file.sig a: 000122222201</remarks> public static int SignSeparate(string file, string fileSig, string sec, string id) { int ret; if ((ret = Wbotho.SignInit(sec, "")) > 0) { Console.WriteLine("SignInit error : {0}", ret); return(ret); } if ((ret = Posh.SignSeparate(file, id, fileSig)) > 0) { Console.WriteLine("SignFileSeparate error : {0}", ret); return(ret); } Wbotho.SignDone(); Console.WriteLine("File {0} signed to {1}", file, fileSig); return(ret); }
/// <summary> /// Подписать файл /// </summary> /// <param name="fileIn">Исходный файл</param> /// <param name="fileOut">Подписанный файл</param> /// <param name="sec">Путь к секретному ключу</param> /// <param name="id">Код аутентификации (КА)</param> /// <remarks>wftesto.exe s file.txt file.sig a: 000122222201</remarks> public static int Sign(string fileIn, string fileOut, string sec, string id) { int ret; if ((ret = Wbotho.SignInit(sec, "")) > 0) { Console.WriteLine("SignInit error : {0}", ret); return(ret); } if ((ret = Posh.Sign(fileIn, fileOut, id)) > 0) { Console.WriteLine("SignFile error : {0}", ret); return(ret); } Wbotho.SignDone(); Console.WriteLine("File {0} signed to {1}", fileIn, fileOut); return(ret); }
/// <summary> /// Проверить все подписи в конце файла (новое: они реально проверяются) /// </summary> /// <param name="file">Подписанный файл</param> /// <param name="fileSig">Файл с подписями</param> /// <param name="pub">Путь к открытым ключам</param> /// <remarks>wftesto.exe v2 file.txt file.sig c:\pub</remarks> public static int VerifySeparate(string file, string fileSig, string pub) { int ret; if ((ret = Wbotho.SignInit("", pub)) > 0) { Console.WriteLine("SignInit error : {0}", ret); return(ret); } byte count; CheckList list; if ((ret = Wbotho.CheckFileSeparate(file, out count, out list, fileSig)) > 0) { Console.WriteLine("CheckFileSeparate error : {0}", ret); return(ret); } Wbotho.SignDone(); for (int i = 0; i < count; i++) { Console.Write("{0} - ", list.Signs[i].Alias); switch (list.Signs[i].Status) { case 0: //CORRECT Console.WriteLine("sign is OK"); break; case 1: //NOT_CORRECT Console.WriteLine("sign is corrupted"); ret = 26; break; case 2: //OKEY_NOT_FOUND Console.WriteLine("key not found"); ret = 6; break; } } Wbotho.FreeMemory(list); Console.WriteLine("File {0} verified with {1}", file, fileSig); return(ret); }