DWORD CPCAPI CPCAcquireContext( HCRYPTMODULE hCSP, HCRYPTPROV * phProv, CHAR * pszContainer, DWORD dwFlags, PVTABLEPROVSTRUC pVTable );
Значение dwFlags | Описание |
---|---|
CRYPT_VERIFYCONTEXT | Приложение не имеет доступа к закрытым ключам ключевого контейнера. Флаг используется в приложениях, в которых требуется только проверка цифровой подписи. Операции, обычно необходимые в этом случае, получение дескрипторов открытых ключей, хэширование и проверка подписи. При вызове функции CryptAcquireContext в MS CryptoAPI 2.0 с этим флагом криптопровайдер не требует от пользователя ввода ключевой информации. Параметр pszContainer игнорируется, но рекомендуется устанавливать его значение в NULL. |
CRYPT_SILENT | Флаг, запрещающий криптопровайдеру "КриптоПро CSP 5.0" использовать какой-либо пользовательский интерфейс (UI) при выполнении операций с данным контекстом. Если дальнейшие вызовы функций криптопровайдера требуют отображения графического интерфейса, то криптопровайдер возвратит ошибку NTE_SILENT_CONTEXT. |
CRYPT_NOSERIALIZE | Флаг, запрещающий криптопровайдеру "КриптоПро CSP 5.0" использовать ждущие блокировки при операциях создания/удаления объектов в данном контексте. При этом ответственность за недопущение параллельного вызова таких функций берёт на себя приложение. Параллельные обращения к таким функциям над одним и тем же контекстом возвращают ошибку. |
CRYPT_TOKEN_SHARED | Флаг контекста взаимодействия с ключевым носителем в режиме разделения секрета, флаг предназначен для взаимодействия с функциональными ключевыми носителями по протоколам, разработанным ООО "КРИПТО-ПРО". |
Коды возврата | Описание |
---|---|
ERROR_INVALID_PARAMETER | Один из параметров содержит некорректное значение. Чаще всего это некорректный указатель. |
ERROR_BUSY | Ключевой контейнер с данным именем был создан иным процессом и в настоящее время не может использоваться данным процессом. Если эта ошибка возникает при обработке контейнера в одном процессе, разрешить коллизию можно вызвав функцию CPCReleaseContext(). |
NTE_BAD_FLAGS | Некорректное значение параметра dwFlags. |
NTE_BAD_KEYSET | Ключевой контейнер не был открыт или не существует. |
NTE_BAD_KEYSET_PARAM | Используется некорректное значение параметра pszContainer. Ошибка также может возникнуть при открытии с флагом CRYPT_SILENT и неоднозначности в выборе носителя. |
NTE_BAD_SIGNATURE | Не прошла проверка цифровой подписи DLL криптопровайдера. DLL или цифровая подпись искажены. |
NTE_EXISTS | Параметр dwFlags установлен в CRYPT_NEWKEYSET, а ключевой контейнер уже существует. |
NTE_KEYSET_ENTRY_BAD | Ключевой контейнер, соответствующий pszContainer найден, но искажён. |
NTE_KEYSET_NOT_DEF | Ключевой контейнер, соответствующий pszContainer, не существует. |
NTE_NOT_SUPPORTED | Операция не поддерживается. |
NTE_NO_MEMORY | Криптопровайдер во время операции исчерпал память. |
NTE_TOKEN_KEYSET_STORAGE_FULL | Недостаточно места на носителе для сохранения информации. |
NTE_SILENT_CONTEXT | Операция не может быть выполнена без пользовательского интерфейса. |
SCARD_W_REMOVED_CARD | Носитель контейнера был удалён из считывателя. |
ERROR_PASSWORD_EXPIRED | Пароль данного носителя истек, необходимо его сменить. |
SCARD_E_READ_ONLY_CARD | Смарт-карта недоступна для использования из-за ограничений безопасности. |
SCARD_W_CANCELLED_BY_USER | Пользователь прервал операцию. |
SCARD_W_SECURITY_VIOLATION | Фукции безопасности токена или смарт-карты работают некорректно. |
SCARD_E_UNSUPPORTED_FEATURE | Указанная функция не поддерживается. |
SCARD_E_CARD_UNSUPPORTED | Формат имени контейнера не распознан. |
Внимание! Полученный дескриптор криптопровайдера должен быть в обязательном порядке освобождён с помощью вызова функции CPCReleaseContext() (за исключением вызовов с флагом CRYPT_DELETEKEYSET).
Ядро AIX: 6/7.
Ядро FreeBSD: 11/12.
Ядро Linux: 2.6.x и выше.
Ядро Solaris: 10/11.
Ядро Windows: 7/8/8.1/10, Server 2008/2008R2/2012/2012R2/2016/2019.
Файл описания: Прототип описан в файле wincspc.h.
Ядро ОС: При использовании в ядре ОС CPCAcquireContext допустимо вызывать только с флагами CRYPT_VERIFYCONTEXT|CRYPT_SILENT.
CPCReleaseContext() ,CPAcquireContext в MS CSP ,CryptAcquireContext в MS CryptoAPI 2.0 ,CryptSetProvParam в MS CryptoAPI 2.0