예제 #1
0
        /// <summary>
        /// Пакетное расшифрование файлов
        /// </summary>
        /// <param name="pathIn">Папка с исходными файлами</param>
        /// <param name="mask">Маска файлов для обработки (*.*)</param>
        /// <param name="pathOut">Папка для расшифрованных файлов (d)</param>
        /// <param name="ext">Новое расширение для расшифрованных файлов (.*)</param>
        /// <param name="pub">Строка пути к каталогу c OPENKEY (\Pub)</param>
        /// <param name="id">Номер отправителя (XXXXSSSSSS)</param>
        /// <param name="to">Номер получателя (XXXXSSSSSS)</param>
        /// <param name="move">Удалять исходные файлы в случае успеха</param>
        /// <returns>0 или код последней ошибки</returns>
        public static int BulkDecrypt(string pathIn, string mask, string pathOut, string ext, string pub, string id, string to, bool move)
        {
            Wbotho.CryptoInit(pub, pub);

            int ret;

            byte[] key = new byte[304];
            if ((ret = Wbotho.ExtractKey(pub, id, key)) > 0)
            {
                return(ret);
            }

            Directory.CreateDirectory(pathOut);
            bool changeExt = !ext.Equals(".*");

            foreach (string file in Directory.GetFiles(pathIn, mask))
            {
                string fileOut = Path.Combine(pathOut, changeExt ?
                                              Path.GetFileNameWithoutExtension(file) + ext :
                                              Path.GetFileName(file));
                int r = Wbotho.DeCryptFileEx(file, fileOut, to, key);
                if (r == 0 && move && File.Exists(fileOut))
                {
                    File.Delete(file);
                }
                else
                {
                    ret = r;
                }
            }

            Wbotho.CryptoDone();
            return(ret);
        }
예제 #2
0
        /// <summary>
        /// Расшифрование файла (расширенное)
        /// </summary>
        /// <param name="fileIn">Исходный зашифрованный файл</param>
        /// <param name="fileOut">Расшифрованный файл</param>
        /// <param name="pub">Строка пути к каталогу c OPENKEY</param>
        /// <param name="id">Номер отправителя (XXXXSSSSSS)</param>
        /// <param name="to">Номер получателя (XXXXSSSSSS)</param>
        public static int DecryptEx(string fileIn, string fileOut, string pub, string id, string to)
        {
            int ret;

            byte[] key = new byte[304];
            if ((ret = Wbotho.ExtractKey(pub, id, key)) > 0)
            {
                return(ret);
            }

            return(Wbotho.DeCryptFileEx(fileIn, fileOut, to, key));
        }
예제 #3
0
        /// <summary>
        /// Зашифрование файла (расширенное)
        /// </summary>
        /// <param name="fileIn">Исходный файл</param>
        /// <param name="fileOut">Зашифрованный файл</param>
        /// <param name="pub">Строка пути к каталогу c OPENKEY</param>
        /// <param name="id">Номер отправителя (XXXXSSSSSS)</param>
        /// <param name="to">Номер получателя (XXXXSSSSSS)</param>
        /// <returns>0 или код ошибки</returns>
        public static int EncryptEx(string fileIn, string fileOut, string pub, string id, string to)
        {
            int ret;

            byte[] key = new byte[304];
            if ((ret = Wbotho.ExtractKey(pub, to, key)) > 0)
            {
                return(ret);
            }

            IntPtr[] ptr = new IntPtr[] { Marshal.AllocHGlobal(304) };
            Marshal.Copy(key, 0, ptr[0], 304);

            ret = Wbotho.EnCryptFileEx(fileIn, fileOut, id, ptr, 1, 0);

            Marshal.FreeHGlobal(ptr[0]);
            return(ret);
        }
예제 #4
0
        /// <summary>
        /// Пакетное зашифрование файлов
        /// </summary>
        /// <param name="pathIn">Папка с исходными файлами</param>
        /// <param name="mask">Маска файлов для обработки (*.*)</param>
        /// <param name="pathOut">Папка для зашифрованных файлов (e)</param>
        /// <param name="ext">Новое расширение для зашифрованных файлов (.*)</param>
        /// <param name="pub">Строка пути к каталогу c OPENKEY (\Pub)</param>
        /// <param name="id">Номер отправителя (XXXXSSSSSS)</param>
        /// <param name="to">Номер получателя (XXXXSSSSSS)</param>
        /// <param name="move">Удалять исходные файлы в случае успеха</param>
        /// <returns>0 или код последней ошибки</returns>
        public static int BulkEncrypt(string pathIn, string mask, string pathOut, string ext, string pub, string id, string to, bool move)
        {
            Wbotho.CryptoInit(pub, pub);

            int ret;

            byte[] key = new byte[304];
            if ((ret = Wbotho.ExtractKey(pub, to, key)) > 0)
            {
                return(ret);
            }

            IntPtr[] ptr = new IntPtr[] { Marshal.AllocHGlobal(304) };
            Marshal.Copy(key, 0, ptr[0], 304);

            Directory.CreateDirectory(pathOut);
            bool changeExt = !ext.Equals(".*");

            foreach (string file in Directory.GetFiles(pathIn, mask))
            {
                string fileOut = Path.Combine(pathOut, changeExt ?
                                              Path.GetFileNameWithoutExtension(file) + ext :
                                              Path.GetFileName(file));
                int r = Wbotho.EnCryptFileEx(file, fileOut, id, ptr, 1, 0);
                if (r == 0 && move && File.Exists(fileOut))
                {
                    File.Delete(file);
                }
                else
                {
                    ret = r;
                }
            }

            Marshal.FreeHGlobal(ptr[0]);

            Wbotho.CryptoDone();
            return(ret);
        }