Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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);
        }