Re: Цифровая подпись PDF-файла в C#

Вы писали что

Работает только вариант с локальным входом и запуском приложения, в котором непосредственно находится код подписания.


В приложении для iis тот же код, насколько понимаю?

Можете прислать кусок кода, где вы вызываете dll?
Например, для нативных dll можно так:

 
[DllImport(_PATH_TO_DLL, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  private static extern IntPtr CreateCertificateFromPKCS10(....){
}

_PATH_TO_DLL - абсолютный путь к dll.

И кроме всего, если вы для iis пишете, вероятно студию используете? Там отлаживаться можно же, указав в настройках проекта iis (не iisexpress) сразу видно будет что не так.

Re: Цифровая подпись PDF-файла в C#

Arkadiy Vasilyev пишет:

В приложении для iis тот же код, насколько понимаю?

Можете прислать кусок кода, где вы вызываете dll?
Например, для нативных dll можно так:

 
[DllImport(_PATH_TO_DLL, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  private static extern IntPtr CreateCertificateFromPKCS10(....){
}

_PATH_TO_DLL - абсолютный путь к dll.

И кроме всего, если вы для iis пишете, вероятно студию используете? Там отлаживаться можно же, указав в настройках проекта iis (не iisexpress) сразу видно будет что не так.

да. код тот же.

[global::System.Runtime.InteropServices.DllImport("rtpkicoreCSharp", EntryPoint="CSharp_CryptoCore_getInstance")]
  public static extern global::System.IntPtr CryptoCore_getInstance();

у нас путь получается относительный, а не абсолютный.

в отладке рубится на этом методе.

Re: Цифровая подпись PDF-файла в C#

Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath,"директория в корне где dll","rtpkicoreCSharp.dll");

попробуйте абсолютный с указанием на файл.
А что в исключении пишет?

Re: Цифровая подпись PDF-файла в C#

Arkadiy Vasilyev пишет:

попробуйте абсолютный с указанием на файл.
А что в исключении пишет?

попробуем прописать абсолютный.

исключение:
Инициализатор типа "rtpkicorePINVOKE" выдал исключение.
Не удается загрузить DLL \"rtpkicoreCSharp\": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)"

StackTrace:
   в rtpkicorePINVOKE.SWIGExceptionHelper..ctor()
   в rtpkicorePINVOKE..cctor()

Re: Цифровая подпись PDF-файла в C#

a.pokrovsky пишет:
Arkadiy Vasilyev пишет:

попробуйте абсолютный с указанием на файл.

попробуем прописать абсолютный.

Прописали...
Другая ошибка - первая библиотека не видит вторую:

101:error:80001401:Vendor defined:PKCS11_CTX_load:Unable to load PKCS#11 module
в CryptoCore.getInstance()

Re: Цифровая подпись PDF-файла в C#

a.pokrovsky, отправил вам версию, которая может подгружать rtpkcs11ecp.dll из произвольной папки.

Re: Цифровая подпись PDF-файла в C#

Вечер добрый. Использую новую обертку для 64х архитектуры, в которой можно указывать путь к основной библиотеке. Вылезла новая ошибка:
1:error:80005006:Vendor defined:PKCS11_login:Function failed

На локальной версии х64 IIS все работает. На сервере возникает ошибка.
Пробовал на локальной повторить ошибку - для этого указал неправильный пароль, но возникает иная ошибка:
105:error:800050A0:Vendor defined:PKCS11_login:PIN incorrect

В чем может быть проблема?

Re: Цифровая подпись PDF-файла в C#

А у вас на сервере драйвера Рутокен установлены? Через Панель управления Рутокен можете залогиниться на токен на сервере?

Re: Цифровая подпись PDF-файла в C#

Только что проверили. Драйвера на сервере стоят, через Панель управления Рутокен логинится, через плагин браузера + SDK - тоже.

Re: Цифровая подпись PDF-файла в C#

А не могли бы вы попробовать сделать некое тестовое приложение на базе библиотеки для C# x64, которое бы логинило токен и запустить его на этом сервере?

(2016-04-15 11:17:20 отредактировано miron_valentin)

Re: Цифровая подпись PDF-файла в C#

Попробовал так делать. Просто в тестовом приложении с библиотеками x64 все работает - успешно получил подпись. Запуская через WCF-сервисы на сервере, появляется та же ошибка.

Re: Цифровая подпись PDF-файла в C#

Подсоединились отладчиком к процессу на сервере - на строчке core.login(dev, pass) происходит вышеуказанная ошибка. Пароль верный. Устройство определяется. Есть подозрение, что это IIS не дает достаточно прав библиотекам.

Re: Цифровая подпись PDF-файла в C#

Обошел ограничение на доступ к устройствам из IIS сервиса, создав отдельную службу windows, на которой производится подпись. Из сервисов подключаюсь к ней, передаю файл, получаю подписанный файл.

Re: Цифровая подпись PDF-файла в C#

А как это ограничение в IIS реализовано?

(2016-04-25 12:53:54 отредактировано a.pokrovsky)

Re: Цифровая подпись PDF-файла в C#

Виктор Ткаченко пишет:

А как это ограничение в IIS реализовано?

Это только предположение. Подтверждений, что такое ограничение существует, нет. Но код через IIS на сервере x64 не заработал. Пошли по пути наименьшего сопротивления - сделали службу, т.к. сроки. Может позже разберёмся.