Крипто-про

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4873
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 43 раза

Крипто-про

Сообщение finsoftrz »

Кто-нибудь работает с сабжем?
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

Крипто-про

Сообщение Игорь Столяров »

ДД !

Очень давно. Совсем. И мы делали шифрование / ЭЦП через запуск VBS скрипта.
Не знаю менял ли что-то там Заказчик самостоятельно или нет - но работает до сих пор ... :)
Прикрепил в архиве.

А вообще Крипто-Про ставит стандартный крипровайдер Microsoft и есть пример на Clarion из ClaMag по работе с ними через CryptoApi.
Мы так ещё кое-где шифруем данные и считаем хеш (но хотим избавиться от этой технологии).
Не вижу причин, почему не должно работать и с Крипто-Про ... Попробуйте ! :)
Вложения
WC.zip
(5.26 КБ) 102 скачивания
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4873
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 43 раза

Крипто-про

Сообщение finsoftrz »

Спасибо. Собираю информацию для работы с честным знаком. Разные примеры есть в сети, но простых решений как-то не находится. Я тоже хотел через vbscript. Там несколько подзадач получается. Преобразование в base64 и обмен с сервисом уже использовалось, а по крипто-про надо научиться подписать файл с подписью в отдельном файле и подписать строку, включив в нее подпись.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4873
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 43 раза

Крипто-про

Сообщение finsoftrz »

Причем, наверно, надо сервис организовывать, чтобы не устанавливать сертификаты и крипто-про в каждом магазине. Через кларионовский ip server.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

Крипто-про

Сообщение Игорь Столяров »

Игорь Столяров писал(а): 23 Январь 2024, 19:31 6 скачиваний
Кто ещё те 5 человек, которым потребовался мой 20 - летний VBS скрипт ?! Выйти из сумрака ! :)
Make Clarion Great Again ! 😎
IKSoft
Посетитель
Сообщения: 45
Зарегистрирован: 27 Май 2010, 13:38

Крипто-про

Сообщение IKSoft »

Добрый день.
КриптоПро

Добавление штампа времени в ЭЦП я сделал в Clarion-е через WinAPI, но вот ЦБ скоро перейдет на версию CADES_X_LONG_TYPE_1.

Кто-нибудь делал подобное?
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4873
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 43 раза

Крипто-про

Сообщение 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
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

Крипто-про

Сообщение Игорь Столяров »

Через CAPICOM юзаете ? Так он же околел давно ... :(
Да и при жизни был дополнительно устанавливаемой ActivX компонентой.
Мы тоже в своё время его юзали - там всё намного проще делается ...
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4873
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 43 раза

Крипто-про

Сообщение finsoftrz »

Нет, через "современный" CADESCOM.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4873
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 43 раза

Крипто-про

Сообщение finsoftrz »

Меня больше волнует проблема, почему из-под run скрипт не срабатывает, а напрямую работает...
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

Крипто-про

Сообщение Игорь Столяров »

finsoftrz писал(а): 25 Январь 2024, 15:50 почему из-под run скрипт не срабатывает
Потому, что приложение может ограничиваться на доступ к реестру (хранилищу сертификатов).
А через ShellExecute() ?
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4873
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 43 раза

Крипто-про

Сообщение finsoftrz »

Игорь Столяров писал(а): 25 Январь 2024, 15:55
finsoftrz писал(а): 25 Январь 2024, 15:50 почему из-под run скрипт не срабатывает
Потому, что приложение может ограничиваться на доступ к реестру (хранилищу сертификатов).
А через ShellExecute() ?
Та же фигня. Пробовал через прослойку cmd в качестве бреда, тоже не работает из-под run (напрямую работает).
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

Крипто-про

Сообщение Игорь Столяров »

А если щёлкнуть на прогармме правой кнопкой мышки и выполнить "Запустить от имени админстратора" ?
Я не припоминаю, что бы были какие-то проблемы с запуском скрипта из программы ... но и Windows была иная.
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4873
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 43 раза

Крипто-про

Сообщение finsoftrz »

Игорь Столяров писал(а): 25 Январь 2024, 16:48 А если щёлкнуть на прогармме правой кнопкой мышки и выполнить "Запустить от имени админстратора" ?
Я не припоминаю, что бы были какие-то проблемы с запуском скрипта из программы ... но и Windows была иная.
Пробовал, результат тот же. Я такое тоже первый раз вижу. Скрипт то запускается, ошибка при вызове метода конкретного объекта. Причем сам объект создается без ошибки -
Set Store = CreateObject ("CADESCOM.Store") ' ок
Store.Open CURRENT_USER_STORE, MY_STORE, STORE_OPEN_READ_ONLY 'на этой строке ошибка
Это что-то специфическое с CADESCOM.Store похоже. Сейчас компьютер с крипто-про у клиента занят, отчеты шлют, попозже еще поэкспериментирую.
C6/C11, ШВС, tps/btrieve.
gopstop2007
Полимат
Сообщения: 1739
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 14 раз
Поблагодарили: 10 раз

Крипто-про

Сообщение gopstop2007 »

А как вы запускаете скрипт в RUN? В run.cmd пишите так?

Код: Выделить всё

c:\windows\sysWow64\wscript.exe "полный путь в файлу test.vbs"
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить