Заголовочный файл: sadb.h
Библиотека: libike_gost.so (linux), cpike_api.dll (windows)
Библиотека: libike_gost.so (linux), cpike_api.dll (windows)
Функция создания закрытого и соответствующего ему открытого ключа на основе общего ключа.
Синтаксис
C/C++ | Copy Code |
---|---|
capi_result CAPI_EXTC CreatePSKFn ( HCRYPTMODULE hModule, HCRYPTPROV hProv, const vblob *SitePSK, const vblob *SiteNetID, const vblob *SiteID, unsigned uFlags, PRIVKEY & hPriv, unsigned char *pcsadbSA, unsigned *pusadbSALen ); |
Параметры
- hModule
- [in] Дескриптор CSP (используется только в ядре)
- hProv
- [in] Дескриптор контекста провайдера (CRYPT_VERIFYCONTEXT)
- SitePSK
- [in] PSK узла сети
- SiteNetID
- [in] Идентификатор канала связи
- SiteID
- [in] Уникальный идентификатор узла сети (например, fingerprint сертификата, серийный номер или аппаратный адрес)
- uFlags
- [in] Должен быть равен 0 или P1_SETPSK_HCRYPT. В случае P1_SETPSK_HCRYPT параметр SitePSK воспринимается как HCRYPTKEY (симметричный экспортируемый ключ), параметр SiteNetID как HCRYPTPROV провайдер, на котором получен ключ HCRYPTKEY в PSK, параметр SiteID игнорируется.
- hPriv
- [out] Закрытый ключ сериализации/десериализации
- pcsadbSA
- [out] Транспортное представление открытого ключа сериализации/десериализации
- pusadbSALen
- [in/out] Размер транспортного представления открытого ключа сериализации/десериализации
Возвращаемое значение
CAPI_NOERROR Успешное завершение
CAPI_CALL_ERROR Неверные входные аргументы
CAPI_PSK_TTL_EXPIRED_ERROR Срок действия PSK истёк
CAPI_IMITA_ERROR PSK искажён (или PSK не соответствует SiteID и SiteNetID)
CAPI_PSK_ERROR PSK искажён (или PSK не соответствует SiteID и SiteNetID)
CAPI_CSP_ERROR ошибка вызова CSP
Примечания
Вырабатываемые ключи используются для сериализации и десериализации IKE сессий фазы 1.
Для запроса необходимого размера буфера, указатель на выходной буфер должен быть равен 0.
Закрытый ключ сериализации/десериализации освобождается функцией DestroyPrivKeyFn.