Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline miser  
#1 Оставлено : 6 августа 2015 г. 16:20:20(UTC)
miser

Статус: Активный участник

Группы: Участники
Зарегистрирован: 14.03.2011(UTC)
Сообщений: 152
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах
Окружение: Ubuntu 15.04 x64, CryptoPro CSP 4.0, Java 1.6/1.7/1.8
При не настроенном провайдере происходит падение на уровне XOrg X11 Window.

Код:

wchar_t* wcsProvider = L"Phoenix-CS PKCS11 GOST R 34.10-2001 Cryptographic Service Provider";
wchar_t* wcsContainer = NULL;

if(!CryptAcquireContextW(&hProv, wcsContainer, wcsProvider, type, flags)) {
    DWORD lastError = GetLastError();
    LPTSTR lpMsgBuf = NULL;

    DWORD dwFormatFlags =
            FORMAT_MESSAGE_ALLOCATE_BUFFER |
            FORMAT_MESSAGE_IGNORE_INSERTS;
    DWORD langID = 0;
    // пробуем получить текст из системы (kernel32.dll)
    FormatMessage(
            FORMAT_MESSAGE_ALLOCATE_BUFFER |
            FORMAT_MESSAGE_IGNORE_INSERTS |
            FORMAT_MESSAGE_FROM_SYSTEM, 
        NULL, errorCode, langID, (LPTSTR)&lpMsgBuf, 0, NULL);


    fprintf(stderr, "lastError:%X, message: %s\n", lastError, lpMsgBuf);
    LocalFree(lpMsgBuf);
}


Выдается ошибка:
errorCode: 8009001D message: Provider DLL failed to initialize correctly.

Самое интересное начинается дальше.
В Java машине, при закрытии диалогового окна происходит падение AWT окна

Цитата:

авг 06, 2015 4:05:15 PM com.myapp.auth.LoginPromptDlg close
SEVERE: close ret:1
авг 06, 2015 4:05:15 PM com.myapp.ui.OKCancelDlg close
SEVERE: hide dialog
авг 06, 2015 4:05:15 PM com.myapp.ui.OKCancelDlg close
SEVERE: dispose dialog
авг 06, 2015 4:05:15 PM com.myapp.ui.OKCancelDlg close
SEVERE: return close
The program 'java' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadWindow (invalid Window parameter)'.
(Details: serial 8966 error_code 3 request_code 20 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)


Java код:
Код:

// LoginPromptDlg
@Override
protected void close(int retStatus) {
    log.severe("close ret:" + retStatus);
    super.close(retStatus);
}

// OKCancelDlg
protected void close(int retStatus) {
    returnStatus = retStatus;
    if(isVisible()) {
        log.severe("hide dialog");
        setVisible(false);
        log.severe("dispose dialog");
        dispose();
        log.severe("return close");
    }
}


Добавляем проверку на имя провайдера

Код:

if(!wcscmp(L"Phoenix-CS PKCS11 GOST R 34.10-2001 Cryptographic Service Provider", wcsProvider)) {
    if(!CryptAcquireContextW(&hProv, wcsContainer, wcsProvider, type, flags)) {
    ...
    }
}


Данный провайдер не инициализируется. В Java AWT ошибки нет.

Да, провайдер инициализируется до создания и отображения первого диалогового окна LoginPromptDlg.
Offline Mironov  
#2 Оставлено : 3 сентября 2015 г. 12:21:48(UTC)
Mironov

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 16.10.2013(UTC)
Сообщений: 21
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 4 раз в 4 постах
Добрый день, miser!
Какая сборка CryptoPro CSP 4.0 установлена на машину?
Был ли когда-нибудь установлен КриптоПро JCP в одну из jre?
Offline miser  
#3 Оставлено : 11 сентября 2015 г. 17:30:14(UTC)
miser

Статус: Активный участник

Группы: Участники
Зарегистрирован: 14.03.2011(UTC)
Сообщений: 152
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах
Методом перебора и отсечения кучи функционала, удалось локализовать ошибку. Система X11 могла упасть после вызова метода CryptAcquireContext с флагом CRYPT_VERIFYCONTEXT. Указывал название провайдера и идентификатор провайдера.
Без указания названия провайдера, падения X11 отмечались, но не сразу.

Сегодня загрузил новую сборку CSP 4.0. Все файлы от 10 сентября.

КриптоПро CSP 4.0 для Linux (x64)
ГОСТ: 2FE422BFBEFC5765C5251884D22E98FCC278B38D5C8127BFDC3922DA6D0E3FB1
MD5: c9f1e8a27c72437f9a18b9c9d072db6b

Свершилось чудо - ошибок падения X11 больше не замечал. Буду тестировать функционал дальше.

Отредактировано пользователем 11 сентября 2015 г. 17:35:31(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.