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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline colty123  
#1 Оставлено : 24 ноября 2022 г. 12:55:06(UTC)
colty123

Статус: Новичок

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

Добрый день!
Пытаюсь сделать экспорт симметричного ключа по алгоритму KExp15 с помощью КриптоПро CSP 5.0.12000 KC1. Использую следующие функции:

Код:
//Получение дескриптора контекста криптографического провайдера для ГОСТ 34.10 - 2012_256
CryptAcquireContext(&hProv, CONTAINER, NULL, PROV_GOST_2012_256, 0);
//создаем контекст сертификата открытого ключа получателя
pCertContext = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, pbCert, cbCert);
// Импортируем открытый ключ
CryptImportPublicKeyInfoEx(hProv, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &(pCertContext->pCertInfo->SubjectPublicKeyInfo), 0, 0, NULL, &hPubKey);
// экспорт открытого ключа получателя в BLOB. Определяем размер BLOB
DWORD dwBlobLen = 0;
CryptExportKey(hPubKey, 0, PUBLICKEYBLOB, 0, NULL, &dwBlobLen);
BYTE *pbKeyBlob = (BYTE *)malloc(dwBlobLen * sizeof(BYTE));
//экспорт открытого ключа получателя в BLOB.
CryptExportKey(hPubKey, 0, PUBLICKEYBLOB, 0, pbKeyBlob, &dwBlobLen)
// генерация эфемерной ключевой пары
CryptGenKey(hProv, CALG_DH_GR3410_12_256_EPHEM, CRYPT_EXPORTABLE, &hEphemeralKey);
// Получение ключа согласования импортом открытого ключа получателя на эфемерном ключе
CryptImportKey(hProv, pbKeyBlob, dwBlobLen, hEphemeralKey, 0, &hAgreeKey)
// Установление CALG_KEXP_2015_M алгоритма ключа согласования
ALG_ID ke_alg = CALG_KEXP_2015_M;
CryptSetKeyParam(hAgreeKey, KP_ALGID, (LPBYTE)&ke_alg, 0)


На этапе установления параметра CALG_KEXP_2015_M через функцию CryptSetKeyParam возникает ошибка 0x80090020. Может ли кто-нибудь подсказать правильно ли я делаю все шаги перед вызовом функции CryptSetKeyParam? Как сделать экспорт симметричного ключа по алгоритму KExp15?

Отредактировано пользователем 24 ноября 2022 г. 22:13:57(UTC)  | Причина: Не указана

Offline Андрей Русев  
#2 Оставлено : 24 ноября 2022 г. 23:53:31(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,581

Сказал(а) «Спасибо»: 47 раз
Поблагодарили: 665 раз в 459 постах
Здравствуйте.
KExp15 требует на вход ключ длины 512 бит, так что напрямую в вашем примере им воспользоваться нельзя. Если бы реальный и эфемерный ключи у вас были 512 бит, то сработало бы. В CMS, например, ключ предварительно расширяется с помощью алгоритма KDF-tree.
Официальная техподдержка. Официальная база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.