Подпись криптопровайдером выгруженного xml

rinsk

Lotus Team
12.11.2009
1 155
126
BIT
38
С сайтами то нет проблем, я хочу туда дотус док передать, или XML-ку передать, или же путь до XML-ки на винте.
Ну а кто мешает то сделать простейший автомат?
Прям в этой форме получить список файлов в переменной, сбегать navigate (url), в загруженной странице найти поле аплоада файла, сделать objbrowser.objdom.body.FieldName.Value=XmlFileAndPath, кликнуть кнопку подписи objbrowser.objdom.body.Butoon1.Click(), поглядеть результ, приаттачить в базу подписанный файл, Обработать следующий файл - и все на LS.
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
myURL$="c:\XML\....1718.xml"
Set browserobject=uidoc.GetObject("Browser")
browserobject.navigate myURL$

В браузере лотусовом открылся просто html код... хотя в IE, хроме - мой XML как html отрабатывает (<htmlx xmlns=" link removed" xml:lang="ru" lang="ru">)...

Код:
сделать objbrowser.objdom.body.FieldName.Value=XmlFileAndPath, кликнуть кнопку подписи objbrowser.objdom.body.Butoon1.Click()
- это не понял вообще..
 

rinsk

Lotus Team
12.11.2009
1 155
126
BIT
38
Есть лотус документ, я его выгружаю в XML-ку на винт в папочку.
Есть криптопровайдер (надстройка для браузера, работающая с криптопро) под браузер, он открывает XML-ку с папочки винта, подписывает её.
Потом надо подписанную XML-ку закинуть обратно в документ лотуса в атач.

Как бы сделать так, чтобы Lotus клиент сам закидывал в атач подписанную XML-ку?
Вообще интересует опыт в данном вопросе.
Вернемся к истокам...:)))
надстройка для браузера, работающая с криптопро - оно откуда берется?
надо было |C:\Prog...\java.exe -jar "C:\HTTPserver.jar" "|
Другой вопрос, запущен браузер, в нем в строке адреса:
как в него передать на порт http запрос?
- По моему из .
Т.е. опять таки - browserobject.navigate " " - это ответ на вопрос " как в него передать на порт http запрос? "
Далее : "он открывает XML-ку с папочки винта, подписывает её." - он сам подписывает или надо указать в браузере путь до файла? И нажать кнопку?

сделать objbrowser.objdom.body.FieldName.Value=XmlFileAndPath, кликнуть кнопку подписи objbrowser.objdom.body.Butoon1.Click()
ВОт это оно сделает вместо пользователя.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
я конечно все понимаю..., но за 9-дней (ну хорошо - неделю) можно написать "правильно"
без всех этих бровсеров и плугинов
ТС вопрошал аж с 30-го марта ;)
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
"работающая с криптопро - оно откуда берется?" - КриптоПро ЭЦП Browser plug-in.

за 9-дней (ну хорошо - неделю) можно написать "правильно"
сделал выгрузку XML в папку, открываю браузером XML, подписываю - нажав в браузере кнопку "подписать" - яваскрипт через плагин, далее явапрогу шлет серверу крипторо файл, потом через сервер -> явапрогу -> файл XML в папку. Но не нравиться.
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
Кстати, этот код работает нормально.
Код:
Set WShell = CreateObject("WScript.Shell") 
ReturnCode = WShell.Run("%windir%\notepad.exe", 1, True)
Msgbox "Нотпад закрыт"
А это выдает ошибку, не понимаю почему.
Код:
ReturnCode = WShell.Run("C:\Prog...\java.exe -jar C:\HTTPserver.jar", 1, True)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
слово виндовз происходит от окно ;)
программы без гуя могут не контролироваться подобным образом ;)
наслаждайтесь кастылями мира виндовз - ищите подпорки и свистоперделки, кот. смогут "решить" вашу странную схему взаимодействия :)
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
В моем примере в итоге открывается браузер, как бы есть окошко.

В любом случае - открывать браузер, передавать в него XML, подписыватьв браузере, потом всё закрыть и удалить - хоть и работает, но бред же.

Вот сейчас хочу разобраться, как с лотусскрипта подключаться к функциям криптопро через интерфейс CryptoAPI 2.0.
Не могу никаких примеров найти по связке лотус+криптопро.
Например, как в лотусе получить сертификаты с винды.
Исходники "локера" бы ))
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
ссылки были уже, в домину встраивается через java, как дернуть сертификаты - тоже ссылки были
[DOUBLEPOST=1430913612,1430913461][/DOUBLEPOST]а можно через openSSL - тамже (по ссылкам)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
Можете продублировать ссылки?
откройте 2-у страницу топика - мой пост со ссылками (одна из - на первую страницу - где выдергивание ключей)
[DOUBLEPOST=1430916041,1430915832][/DOUBLEPOST]на второй же странице и ссылка на java провайдер
 

seoman2

Green Team
17.02.2010
507
1
BIT
72

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
Не вариант, надо юр. значимую эцп.
ссылку, судя по словам, не читали - там ГОСТ есть
Мне бы как для чайника подробно объяснить, как прикрутить криптопро к лотусу.
Через "CreateObject" так понимаю.
ну прочитайте же ссылки уже!
сначала надо выкачать либу для java, потом написать код (можно через ЛС вызывать java)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
вот "ихниий"
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
есть link removed НО jvm у домины своя и качать системную не надо
в путях винды прописать jvm нотусни (и её класспаз) <notes program dir>\jvm\bin
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
как качать: регаемся на сайте, соглашаемся в условиями, качаем версию jcp_plus_jtls_1.0.54.zip
инсталяция:
-распаковываем к-л архив
-входим унутре распакованного в каталог jcp.1.0.54\lib
-запущаем батник с указанием путей для jvm нотусни
у меня так X:\mydata\Development\Java\Crypto\jcp_plus_jtls_1.0.54\jcp.1.0.54\lib> (это путь - откудова батник пущал)
install.bat "C:\Program Files\IBM\Notes\jvm"

переменные среды (кот. д.б. заполнены для нотусевой жвм, можно юзеровые):
CLASSPATH="C:\Program Files\IBM\Notes\jvm"
JAVACMD="C:\Program Files\IBM\Notes\jvm\bin\java.exe"
JAVA_HOME="C:\Program Files\IBM\Notes\jvm"
JREDIR=C:\Program Files\IBM\Notes\jvm
Path=C:\WINDOWS;C:\WINDOWS\system32;"C:\Program Files\IBM\Notes\jvm\bin";"C:\Program Files\IBM\Notes\jvm";"C:\Program Files\IBM\Notes"

оно ругнется на недостачу необязательных компонент и пропишет свои классы в jvm/lib/ext (что и нужно)
распаковываем jar с примерами (samples-sources.jar из jcp.1.0.54/Samples/)
создаем агент, в него имортим java (такой пункт есть)
cryptoimmportsource1.png

где выбираем верхним каталогом именно место куда распакован jar
cryptoimmportsource.png

если через брауз выбрать более высокий каталог - импорт будет неправильный (пакеджи не будут соответ. их пути)
далее
Java:
import lotus.domino.*;
import services.zapret_info.*;
public class JavaAgent extends AgentBase {
 
	public void NotesMain() {
 
	  try {
		  Session session = getSession();
		  AgentContext agentContext = session.getAgentContext();
 
		  // (Your code goes here)
		  ZapretInfoExample.main(new String[]{});
	  } catch(Exception e) {
		  e.printStackTrace();
	   }
   }
}
разумеется - надо в сторадж надо запихать свой приватный ключ
иначе будет
07.05.2015 17:05:59 ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 1.0.54 36641
07.05.2015 17:05:59 ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
java.security.InvalidKeyException: Private key is null
at java.security.Signature.initSign(Signature.java:229)
at services.zapret_info.ZapretInfoExample.createPKCS7(ZapretInfoExample.java:85)
at services.zapret_info.ZapretInfoExample.main(ZapretInfoExample.java:286)
at JavaAgent.NotesMain(JavaAgent.java:12)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
в Java Debug Console
в случае удачи - в корне C:\ будут созданы 2-а файла по коду:Array.writeFile(PATH_TO_SAVE + "request.xml", REQUEST.getBytes());
Array.writeFile(PATH_TO_SAVE + "pkcs7.p7s", pkcs7Sign);
ВСЁ!
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
совсем забыл... - в сорсах файлы в UTF-8, я лядский дизигнер, при импорте, плевать хотел на настройки проекта (там у меня тоже - UTF-8) и качает по системной локали (Windows-1251)
я с это сцукой боролся с пом iconv
find -name "*.java" -exec iconv -f utf8 -t cp1251 {} -o {} \;
т.е. рекодил сорц в виндятскую кодировку, иначе все каменты будут кракозябрами
как сделать в виндятко - не помню
м.б. в дизигнере есть скрытая опция для импорта - я её не знаю
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
еще особенность...
ибо агент запущается со своей спецификой - надо понимать - что треда умрет не совсем штатно ;)
отсюдова нужны к-л деструкторы объектов этих либ
я их не искал - а потому и работать агент будет только раз (для теста), апосля надо перепущать нотусню ;)
для создания контейнера:
X:\mydata\Development\Java\Crypto\jcp_plus_jtls_1.0.54\jcp.1.0.54\lib>
ControlPane.bat "C:\Program Files\IBM\Notes\jvm"
в тестах Alias (имя контейнера) и пароль должны соответствовать
* Алиас ключа в ключевом контейнере.
*/
private static final String ALIAS = "gost_exch";
/**
* Пароль для доступа к ключу в ключевом контейнере.
*/
private static final char[] PASSWORD = "Pass1234".toCharArray();
cryptostorage.png
 
Последнее редактирование модератором:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!