Поделиться через


Функция CryptImportPKCS8 (wincrypt.h)

[Функция CryptImportPKCS8 больше не доступна для использования в Windows Server 2008 и Windows Vista. Вместо этого используйте функцию PFXImportCertStore .]

Важно Этот API не рекомендуется использовать. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
 
Функция CryptImportPKCS8 импортирует закрытый ключ в формате PKCS 8 в поставщик служб шифрования (CSP). CryptImportPKCS8 вернет дескриптор поставщику и используемый keySpec импорта.

Синтаксис

BOOL CryptImportPKCS8(
  [in]            CRYPT_PKCS8_IMPORT_PARAMS sPrivateKeyAndParams,
  [in]            DWORD                     dwFlags,
  [out, optional] HCRYPTPROV                *phCryptProv,
  [in, optional]  void                      *pvAuxInfo
);

Параметры

[in] sPrivateKeyAndParams

Структура CRYPT_PKCS8_IMPORT_PARAMS , содержащая BLOB-объект закрытого ключа и соответствующие параметры.

[in] dwFlags

Значение DWORD . Этот параметр может быть одним из следующих значений, их сочетанием или значением NULL.

Значение Значение
CRYPT_EXPORTABLE
В конечном итоге импортируемый ключ будет реэкспортирован. Если этот флаг не используется, вызовы CryptExportKey с дескриптором ключа завершаются ошибкой.
CRYPT_USER_PROTECTED
Если этот флаг установлен, поставщик CSP уведомляет пользователя с помощью диалогового окна или другого метода при попытке выполнения определенных действий с помощью этого ключа. Точное поведение определяется CSP или используемым типом CSP. Если контекст поставщика был получен с CRYPT_SILENT задан, использование этого флага приводит к сбою, а для последней ошибки задано значение NTE_SILENT_CONTEXT.

[out, optional] phCryptProv

Указатель на HCRYPTPROV для получения дескриптора поставщика, в который импортируется ключ путем вызова функции CryptImportPKCS8 .

Завершив использование дескриптора, освободите дескриптор, вызвав CryptReleaseContext.

Этот параметр может иметь значение NULL, в этом случае дескриптор поставщика не возвращается.

[in, optional] pvAuxInfo

Этот параметр должен иметь значение NULL.

Возвращаемое значение

Если функция выполняется успешно, функция возвращает ненулевое значение (TRUE).

Если функция завершается сбоем, она возвращает ноль (FALSE). Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.

Следующий код ошибки связан с этой функцией.

Код возврата Описание
ERROR_UNSUPPORTED_TYPE
Идентификатор объекта алгоритма (OID) закрытого ключа не поддерживается.
 

В случае сбоя функции GetLastError может вернуть ошибку кодирования и декодирования абстрактного синтаксиса (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.

Комментарии

CryptImportPKCS8 вызывает функцию PCRYPT_RESOLVE_HCRYPTPROV_FUNC , используя структуру CRYPT_PKCS8_IMPORT_PARAMS , содержащуюся в параметре sPrivateKeyAndParams , чтобы получить дескриптор поставщика, в который импортируется ключ. Если PCRYPT_RESOLVE_HCRYPTPROV_FUNC имеет значение NULL, используется поставщик по умолчанию.

Эта функция поддерживается только для асимметричных ключей.

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

CRYPT_PKCS8_IMPORT_PARAMS

CryptExportPKCS8Ex

CryptReleaseContext

PCRYPT_DECRYPT_PRIVATE_KEY_FUNC

PCRYPT_RESOLVE_HCRYPTPROV_FUNC