Библиотека: libike_gost.so, esp_gost.o (linux), cpike_api.dll, cpesp_api.dll, cpesp_drv.sys (windows)
Функция создания эфемерального закрытого и соответствующего ему открытого ключа.
Синтаксис
C/C++ | Copy Code |
---|---|
capi_result CAPI_EXTC CreateEphemFn ( HCRYPTMODULE hModule, HCRYPTPROV hProv, unsigned uFlags, PRIVKEY *hPriv, unsigned char *pcsadbSA, unsigned *pusadbSALen ); |
Параметры
- hModule
- [in] Дескриптор CSP (используется только в ядре)
- hProv
- [in] Дескриптор контекста провайдера, в котором будет создан закрытый ключ
- uFlags
- [in] Должен быть равен 0 или FLAG_SADB_DUPLICATE_EPHEM. В случае FLAG_SADB_DUPLICATE_EPHEM параметр pusadbSALen воспринимается как дублируемый PRIVKEY.
- hPriv
- [out] Закрытый ключ сериализации/десериализации
- pcsadbSA
- [out] Транспортное представление открытого ключа сериализации/десериализации
- pusadbSALen
- [in/out] Размер транспортного представления открытого ключа сериализации/десериализации (Закрытый ключ сериализации/десериализации при использовании FLAG_SADB_DUPLICATE_EPHEM)
Возвращаемое значение
CAPI_NOERROR Успешное завершение
CAPI_CALL_ERROR Неверные входные аргументы
CAPI_CSP_ERROR Криптографическая ошибка обработки входных данных
Примечания
Вырабатываемые ключи используются для сериализации и десериализации IKE сессий фазы 1 и SPI сессий.
Для запроса необходимого размера буфера, указатель на выходной буфер должен быть равен 0.
Данная функция может быть использована для дублирования существующего закрытого ключа сериализации/десериализации (PRIVKEY) для различных дескрипторов контекста провайдера (hProv). Удобство состоит в том, что при сериализации в функции spiSerializeFn будет использовать один открытый ключ сериализации/десериализации для всех провайдеров.
Закрытый ключ сериализации/десериализации освобождается функцией DestroyPrivKeyFn.