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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline astarukhin  
#1 Оставлено : 16 мая 2024 г. 13:17:21(UTC)
astarukhin

Статус: Участник

Группы: Участники
Зарегистрирован: 22.12.2021(UTC)
Сообщений: 26
Российская Федерация

Сказал(а) «Спасибо»: 3 раз
Здравствуйте!
Возникла необходимость использовать АПИ CSP на языке C. Решил попробовать примеры из SDK (SILENT.c)

Константы оставил такие

#define WRONG_PIN "1234"
#define RIGHT_PIN "1"
#ifdef _WIN32
#define CONTAINER _TEXT("\\\\.\\HDIMAGE\\CO_TEST1")
#else
#define CONTAINER _TEXT("\\\\.\\HDIMAGE\\CO_TEST1")
#endif

Имею ошибку 0x8009000d (то есть не находит контейнер?)

При этом попытка установить неправильный пароль как положено не проходит, а правильный пароль успешно устанавливается.

Может ошибка здесь
if(CryptAcquireContext(
&hProv,
CONTAINER,
NULL,
PROV_GOST_2012_256,
CRYPT_SILENT)) ... (У меня длина 512) - менял на PROV_GOST_2012_512, не помогает

ПРИЛОЖЕНИЕ ПАДАЕТ ВОТ ЗДЕСЬ
if(CryptGetUserKey(
hProv,
AT_SIGNATURE,
&hKey))
{
printf("CryptGetUserKey succeeded.\n");
}
else
{
HandleError("Error during CryptGetUserKey.");
}



Вот данные контейнера

Проверка завершена успешно ошибок не обнаружено
Контейнер закрытого ключа пользователя
Имя CO_TEST1
Уникальное имя HDIMAGE\\COrTEST1.000\6C5C
FQCN \\.\HDIMAGE\CO_TEST1
Проверка целостности контейнера успешно
Ключ обмена доступен
длина ключа 512 бит
экспорт открытого ключа успешно
вычисление открытого ключа успешно
импорт открытого ключа успешно
подпись успешно
проверка успешно
создание ключа обмена успешно
экспорт ключа разрешен
алгоритм ГОСТ Р 34.10-2012 DH 256 бит
ГОСТ Р 34.10 256 бит, параметры обмена по умолчанию
ГОСТ Р 34.11-2012 256 бит
ГОСТ 28147-89, параметры шифрования ТК26 Z
сертификат в контейнере соответствует закрытому ключу
имя сертификата CO
субъект C=RU, O=CryptoPro, CN=CO
поставщик E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
действителен с 16 апреля 2024 г. 15:43:31
действителен по 26 мая 2024 г. 14:34:05
серийный номер 1200 63C0 ABCF 132F 5A30 727D C800 0100 63C0 AB
сертификат в хранилище не установлен
cрок действия закрытого ключа 16 июля 2025 г. 15:43:31
использование ключа обмена разрешено до окончания срока действия закрытого ключа.
Ключ подписи отсутствует
Симметричный ключ отсутствует
Загрузка ключей успешно
Версия контейнера 2
Значение ControlKeyTimeValidity 1
Режим работы CSP библиотека
Расширения контейнера
некритическое Расширение контейнера КриптоПро CSP. Срок действия ключа обмена
действителен по 16 июля 2025 г. 15:51:32

Отредактировано пользователем 16 мая 2024 г. 13:23:04(UTC)  | Причина: Не указана

Offline Андрей *  
#2 Оставлено : 16 мая 2024 г. 13:54:51(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,018
Мужчина
Российская Федерация

Сказал «Спасибо»: 524 раз
Поблагодарили: 2144 раз в 1671 постах
Здравствуйте.

1.
Цитата:

PROV_GOST_2012_256,
CRYPT_SILENT)) ... (У меня длина 512) - менял на PROV_GOST_2012_512, не помогает


Что у кого там?
Это не размер открытого ключа же.

512 бит ОК => 256 бит
1024 бит ОК => 512 бит

Итого: не нужно исправлять

2.
Цитата:

ПРИЛОЖЕНИЕ ПАДАЕТ ВОТ ЗДЕСЬ
if(CryptGetUserKey(
hProv,
AT_SIGNATURE,
&hKey))


Конечно, запрошен ключ подписи, которого нет в контейнере.
Цитата:

Ключ подписи отсутствует

В большинстве случаев ключ обмена (и подписание и шифрование).

Это видно из результатов теста.


Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 16 мая 2024 г. 13:58:45(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,018
Мужчина
Российская Федерация

Сказал «Спасибо»: 524 раз
Поблагодарили: 2144 раз в 1671 постах
AT_KEYEXCHANGE = 1 - ключ обмена
AT_SIGNATURE = 2 - ключ подписи
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#4 Оставлено : 16 мая 2024 г. 14:01:05(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,018
Мужчина
Российская Федерация

Сказал «Спасибо»: 524 раз
Поблагодарили: 2144 раз в 1671 постах
0x8009000D (-2146893811) Ключ не существует.
вместо AT_SIGNATURE указать AT_KEYEXCHANGE
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.