Ошибка при верификации подписи

Автор salem_vsem, 06 Май 2016, 09:35:13

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

Вниз

salem_vsem

Добрый день.
Пробую запустить верификацию подписи напрямую из БД Oracle (имеются base64 строки подписи и открытого ключа) с подключением java класса. Все либы закачал на сервер:
1. crypto.gammaprov.jar
2. crypto.tsp.jar
3. cmp.jar
4. xmlsec-1.3.0.jar
5. commons-logging.jar

Так же на этот сервер БД установил TumarCSP.
При запуске верификации выходит следующая ошибка: CSP library bit must be set. Please set CSP library bit to 32 or 64

stacktracke прилагаю:
java.lang.RuntimeException: CSP library bit must be set. Please set CSP library bit to 32 or 64
   at kz.gamma.tumarcsp.TumarCspFunctions.cpAcquireContext(TumarCspFunctions.java:68)
   at kz.gamma.tumarcsp.AlgParamUtil.getAttribute(AlgParamUtil.java:88)
   at kz.gamma.tumarcsp.AlgParamUtil.setKey(AlgParamUtil.java:112)
   at kz.gamma.tumarcsp.AlgParamUtil.<init>(AlgParamUtil.java:30)
   at kz.gamma.jce.provider.GammaTechProvider.setKeyAlgID(GammaTechProvider.java:164)
   at kz.gamma.jce.provider.GammaTechProvider.<init>(GammaTechProvider.java:137)

Почитал на форуме что такие ошибки возможны из-за отсутствия установленного TumarCSP, но я его установил.
Плюс добавил в код Security.addProvider(new GammaTechProvider()); перед запуском функции верификации.
Сам код функции верификации взял из SDK.
Прошу помочь, уже второй день мучаюсь

Sergey

Добрый день.

Данная ошибка означает что библиотека проинициализировалась некорректно.
Java машина не видит установленную в системе библиотеку libcptumar*, возможно не хватает прав, или в среде запуска отсутствует ссылки к каталогам в которых установлено приложение.
На какой операционной системе выходит данная ошибка?

salem_vsem


salem_vsem

Цитата: Sergey от 06 Май 2016, 13:02:39
Добрый день.

Данная ошибка означает что библиотека проинициализировалась некорректно.
Java машина не видит установленную в системе библиотеку libcptumar*, возможно не хватает прав, или в среде запуска отсутствует ссылки к каталогам в которых установлено приложение.
На какой операционной системе выходит данная ошибка?


А каким образом к каталогам ссылки настроить?

Sergey

Добрый день.

Что выводит вызовы:
System.out.println(System.getProperty("sun.arch.data.model"));
System.out.println(System.getProperty("os.name").toUpperCase());
System.out.println(System.getProperty("tumarcsp.32.library.path"));
System.out.println(System.getProperty("tumarcsp.64.library.path"));


salem_vsem

возвращает лишь LINUX по System.out.println(System.getProperty("os.name").toUpperCase());
по остальным свойствам пустая строка возвращается

salem_vsem

System.getProperty("os.arch") возвращает x86_64.
System.getProperty("os.version")  возвращает 3.10.0-229.14.1.el7.x86_64

Sergey

Какая версия crypto.gammaprov.jar?
Версию можно посмотреть в манифесте.
Есть ли линк:
/lib64/libcptumar_r.so.4.0

salem_vsem

Версия  crypto.gammaprov.jar 2.0.1.1135.
Есть две директории /lib32 и /lib. До обоих есть линк

salem_vsem

добавил в LD_LIBRARY_PATH сразу несколько директорий:
/lib
/lib64
/usr/lib
/usr/lib64
/TumarCSP/lib
/TumarCSP/lib32

Renat

25 Май 2016, 10:42:22 #10 Последнее редактирование: 25 Май 2016, 10:44:02 от Renat
Доброе утро.
В ваших логах также должна присутствовать запись, начинающаяся с "Trying to load". Можете выслать ее полностью?

salem_vsem

Здравствуйте.
Я по идее весь stack trace приложил, это все что было

Sergey

Данная запись выводиться не в StackTrace а на консоль, через метод System.out.printf

Renat

Также пришлите результат выполнения команд
ls -l /lib/libcptumar_r.so.4.0
ls -l /lib64/libcptumar_r.so.4.0

salem_vsem

Извиняюсь. вот:
/lib/libcptumar_r.so.4.0 -> /TumarCSP/lib32/libcptumar_r.4.0.so
/lib64/libcptumar_r.so.4.0 -> /TumarCSP/lib/libcptumar_r.4.0.so

И вот output:
Trying to load UNKNOWN-bit library on LINUX
Java properties:
- Java vendor URL: HTTP://WWW.ORACLE.COM/JAVA/
- Java VM name: JSERVER VM
- Java VM vendor: ORACLE CORPORATION
- Java vendor: ORACLE CORPORATION
- Java runtime name: UNKNOWN
java.security.AccessControlException: the Permission (java.lang.RuntimePermission loadLibrary./lib64/libcptumar_r.so.4.0) has not been granted to WF. The PL/SQL to grant this is dbms_java.grant_permission( 'WF', 'SYS:java.lang.RuntimePermission', 'loadLibrary./lib64/libcptumar_r.so.4.0', '' )
   at java.security.AccessControlContext.checkPermission(AccessControlContext.java)
   at java.security.AccessController.checkPermission(AccessController.java)
   at java.lang.SecurityManager.checkPermission(SecurityManager.java)
   at oracle.aurora.rdbms.SecurityManagerImpl.checkPermission(SecurityManagerImpl.java)
   at java.lang.SecurityManager.checkLink(SecurityManager.java:820)
   at java.lang.Runtime.load0(Runtime.java:764)
   at java.lang.System.load(System.java:1102)
   at kz.gamma.tumarcsp.LibraryWrapper.initialize(LibraryWrapper.java:2242)
   at kz.gamma.tumarcsp.TumarCspFunctions.initialize(TumarCspFunctions.java:1712)
   at kz.gamma.jce.provider.GammaTechProvider.<clinit>(GammaTechProvider.java:33)
   at SampleJCECSP_Signature.VerifySignBase64(GAMMA:378)
java.lang.RuntimeException: CSP library bit must be set. Please set CSP library bit to 32 or 64
   at kz.gamma.tumarcsp.TumarCspFunctions.cpAcquireContext(TumarCspFunctions.java:68)
   at kz.gamma.tumarcsp.AlgParamUtil.getAttribute(AlgParamUtil.java:88)
   at kz.gamma.tumarcsp.AlgParamUtil.setKey(AlgParamUtil.java:112)
   at kz.gamma.tumarcsp.AlgParamUtil.<init>(AlgParamUtil.java:30)
   at kz.gamma.jce.provider.GammaTechProvider.setKeyAlgID(GammaTechProvider.java:164)
   at kz.gamma.jce.provider.GammaTechProvider.<init>(GammaTechProvider.java:137)
   at SampleJCECSP_Signature.VerifySignBase64(GAMMA:378)



Вверх