Страница 1 из 2
Крипто-про
Добавлено: 23 Январь 2024, 14:54
finsoftrz
Кто-нибудь работает с сабжем?
Крипто-про
Добавлено: 23 Январь 2024, 19:31
Игорь Столяров
ДД !
Очень давно. Совсем. И мы делали шифрование / ЭЦП через запуск VBS скрипта.
Не знаю менял ли что-то там Заказчик самостоятельно или нет - но работает до сих пор ...
Прикрепил в архиве.
А вообще Крипто-Про ставит стандартный крипровайдер Microsoft и есть пример на Clarion из ClaMag по работе с ними через CryptoApi.
Мы так ещё кое-где шифруем данные и считаем хеш (но хотим избавиться от этой технологии).
Не вижу причин, почему не должно работать и с Крипто-Про ... Попробуйте !
Крипто-про
Добавлено: 23 Январь 2024, 20:05
finsoftrz
Спасибо. Собираю информацию для работы с честным знаком. Разные примеры есть в сети, но простых решений как-то не находится. Я тоже хотел через vbscript. Там несколько подзадач получается. Преобразование в base64 и обмен с сервисом уже использовалось, а по крипто-про надо научиться подписать файл с подписью в отдельном файле и подписать строку, включив в нее подпись.
Крипто-про
Добавлено: 23 Январь 2024, 20:08
finsoftrz
Причем, наверно, надо сервис организовывать, чтобы не устанавливать сертификаты и крипто-про в каждом магазине. Через кларионовский ip server.
Крипто-про
Добавлено: 24 Январь 2024, 8:28
Игорь Столяров
Кто ещё те 5 человек, которым потребовался мой 20 - летний VBS скрипт ?! Выйти из сумрака !
Крипто-про
Добавлено: 24 Январь 2024, 9:57
IKSoft
Добрый день.
КриптоПро
Добавление штампа времени в ЭЦП я сделал в Clarion-е через WinAPI, но вот ЦБ скоро перейдет на версию CADES_X_LONG_TYPE_1.
Кто-нибудь делал подобное?
Крипто-про
Добавлено: 25 Январь 2024, 15:30
finsoftrz
Вот такой скрипт рабочий. Но странное дело, при запуске из проводника все нормально, а если из приложения через run wscript то дает ошибку на строке Store.Open CURRENT_USER_STORE, MY_STORE, STORE_OPEN_READ_ONLY, что такой метод недоступен. С таким первый раз сталкиваюсь, как будто что-то с правами доступа.
Код: Выделить всё
CURRENT_USER_STORE = 2
MY_STORE = "My"
STORE_OPEN_READ_ONLY = 0
CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0
CertSHA1Hash = "........" 'отпечаток из свойств сертификата
CADES_BES = 1
CAPICOM_ENDCODE_BASE64 = 0 'преобразование выходного файла в base64
Set objArgs = WScript.Arguments 'получаем аргументы
InFileName = objArgs(0) 'имя подписываемого файла
OutFileName = objArgs(1) 'имя подписанного файла
bDetached = objArgs(2) '0 - совмещенная, 1 - отделенная подпись
'поиск сертификата в хранилище по отпечатку
Set Store = CreateObject ("CADESCOM.Store")
Store.Open CURRENT_USER_STORE, MY_STORE, STORE_OPEN_READ_ONLY
Set Certs = Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, CStr (CertSHA1Hash))
if Certs.Count > 0 Then
Set GetSigningCert = Certs.Item (1)
else
Set GetSigningCert = Nothing
end if
Store = Unassgned
if not GetSigningCert is nothing Then 'если сертификат найден, то подписываем
set InStream = CreateObject("AdoDB.Stream") 'читаем исходный файл
InStream.Type = 1
InStream.Mode = 3
InStream.Open()
InStream.LoadFromFile(InFileName)
InData = InStream.Read(-1)
Set Signer = CreateObject ("CADESCOM.CpSigner") 'подписываем
Signer.Certificate = GetSigningCert
Signer.Options = 2
Set SignedData = CreateObject ("CADESCOM.CadesSignedData")
SignedData.Content = InData
OutSignedData = SignedData.SignCades(Signer,CADES_BES,bDetached,CAPICOM_ENDCODE_BASE64)
set OutStream = CreateObject("AdoDB.Stream") 'сохраняем подписанный файл или подпись
OutStream.CharSet = "utf-8"
OutStream.Type = 2
OutStream.Mode = 3
OutStream.Open()
OutStream.WriteText(OutSignedData)
OutStream.SaveToFile OutFileName,2
OutStream.Close()
InStream.Close()
SignedData = Unassgned
Signer = Unassigned
FileIn = Unassigned
FileOut= Unassigned
end if
Крипто-про
Добавлено: 25 Январь 2024, 15:38
Игорь Столяров
Через CAPICOM юзаете ? Так он же околел давно ...
Да и при жизни был дополнительно устанавливаемой ActivX компонентой.
Мы тоже в своё время его юзали - там всё намного проще делается ...
Крипто-про
Добавлено: 25 Январь 2024, 15:48
finsoftrz
Нет, через "современный" CADESCOM.
Крипто-про
Добавлено: 25 Январь 2024, 15:50
finsoftrz
Меня больше волнует проблема, почему из-под run скрипт не срабатывает, а напрямую работает...
Крипто-про
Добавлено: 25 Январь 2024, 15:55
Игорь Столяров
finsoftrz писал(а): ↑25 Январь 2024, 15:50
почему из-под run скрипт не срабатывает
Потому, что приложение может ограничиваться на доступ к реестру (хранилищу сертификатов).
А через ShellExecute() ?
Крипто-про
Добавлено: 25 Январь 2024, 16:06
finsoftrz
Игорь Столяров писал(а): ↑25 Январь 2024, 15:55
finsoftrz писал(а): ↑25 Январь 2024, 15:50
почему из-под run скрипт не срабатывает
Потому, что приложение может ограничиваться на доступ к реестру (хранилищу сертификатов).
А через ShellExecute() ?
Та же фигня. Пробовал через прослойку cmd в качестве бреда, тоже не работает из-под run (напрямую работает).
Крипто-про
Добавлено: 25 Январь 2024, 16:48
Игорь Столяров
А если щёлкнуть на прогармме правой кнопкой мышки и выполнить "Запустить от имени админстратора" ?
Я не припоминаю, что бы были какие-то проблемы с запуском скрипта из программы ... но и Windows была иная.
Крипто-про
Добавлено: 25 Январь 2024, 16:54
finsoftrz
Игорь Столяров писал(а): ↑25 Январь 2024, 16:48
А если щёлкнуть на прогармме правой кнопкой мышки и выполнить "Запустить от имени админстратора" ?
Я не припоминаю, что бы были какие-то проблемы с запуском скрипта из программы ... но и Windows была иная.
Пробовал, результат тот же. Я такое тоже первый раз вижу. Скрипт то запускается, ошибка при вызове метода конкретного объекта. Причем сам объект создается без ошибки -
Set Store = CreateObject ("CADESCOM.Store") ' ок
Store.Open CURRENT_USER_STORE, MY_STORE, STORE_OPEN_READ_ONLY 'на этой строке ошибка
Это что-то специфическое с CADESCOM.Store похоже. Сейчас компьютер с крипто-про у клиента занят, отчеты шлют, попозже еще поэкспериментирую.
Крипто-про
Добавлено: 26 Январь 2024, 2:12
gopstop2007
А как вы запускаете скрипт в RUN? В run.cmd пишите так?
Код: Выделить всё
c:\windows\sysWow64\wscript.exe "полный путь в файлу test.vbs"