Крипто-Про CSP |
BOOL WINAPI CPSetKeyParam( HCRYPTPROV hProv, HCRYPTKEY hKey, DWORD dwParam, BYTE * pbData, DWORD dwFlags );
Значение dwParam | Содержимое буфера pbData | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
KP_ALGID | Идентификатор алгоритма ключа (ALG_ID ), соответствующий
данному ключу. Передаётся функции через буфер pbData .
Возможо установить значение CALG_G28147 для ключей класса
ALG_CLASS_DATA_ENCRYPT (сессионных ключей).
|
||||||||||||||
KP_IV | Начальный вектор (IV). Последовательность байтов, содержащая IV, передаётся функции через буфер pbData . | ||||||||||||||
KP_CERTIFICATE | Установка сертификата в контейнер (на носитель). | ||||||||||||||
KP_PADDING | Способ дополнения. Величина DWORD, содержащая метод дополнения,
используемый шифром ключа, передаётся функции через буфер pbData. В
настоящее время определены следующие способы дополнения:
|
||||||||||||||
KP_MODE | Режим шифра. Переменная типа DWORD. Передаётся функции через
буфер pbData. В следующем списке приведены режимы шифрования,
доступные в настоящее время:
|
||||||||||||||
KP_MODE_BITS | Глубина обратной связи. Переменная типа DWORD. Значение этой величины равно 64, что соответствует режиму гаммирования с обратной связью ГОСТ 28147-89. | ||||||||||||||
KP_MIXMODE | Дополнительный параметр ключа. Устанавливает режим преобразования ключа после зашифрования каждых 1024 байт информации. Режим преобразования ключа установлен по умолчанию. Выйти из этого режима можно, если для этого параметра pbData будет установлена в FALSE. Если pbData установлена в TRUE, устанавливается режим преобразования ключа. Размер pbData - 4 байта. Может быть установлен для ключей типа CALG_G28147. Возвращается в виде переменной типа DWORD. | ||||||||||||||
KP_CIPHEROID | Идентификатор узла замены. Строка, заканчивающаяся нулем. | ||||||||||||||
KP_DHOID | Идентификатор параметров ключа ГОСТ Р 34.10-94 и ГОСТ Р 34.10-2001 применяемых в алгоритме Диффи-Хеллмана. Строка, заканчивающаяся нулем. | ||||||||||||||
KP_HASHOID | Идентификатор функции хеширования. Строка, заканчивающаяся нулем. | ||||||||||||||
KP_CLIENT_RANDOM | Идентификатор величины ClientRandom, используемой с ключами типа CALG_TLS1_MASTER. Размер ClientRandom - 32 байта. Используется при преобразовании premaster_secret в master_secret и при генерации ключевой информации в момент создания хеша CALG_TLS1_MASTER_HASH. | ||||||||||||||
KP_SERVER_RANDOM | Идентификатор величины ServerRandom, используемой с ключами типа CALG_TLS1_MASTER.Размер ServerRandom - 32 байта. Используется при преобразовании premaster_secret в master_secret и при генерации ключевой информации в момент создания хеша CALG_TLS1_MASTER_HASH. | ||||||||||||||
KP_PREHASH |
Идентификатор, используемый ключами типа CALG_TLS1_MASTER. Предварительно требуется установить KP_CLIENT_RANDOM и KP_SERVER_RANDOM. Вызов функции преобразует premaster_secret в master_secret. |
||||||||||||||
KP_X | Закрытый ключ в ключевой паре. 32 байта в форме little endian. Данные передаются в форме BLOB структуры, где член структуры pbData указавает на данные, а cbData передаёт длину данных. |
Коды возврата | Описание |
---|---|
NTE_BAD_FLAGS | Параметр dwFlags имеет ненулевое значение. |
NTE_BAD_TYPE | Параметр dwParam передаёт неизвестное значение параметра. |
NTE_PERM | Попытка чтения ключевых параметров, когда право чтения криптопровайдером не предоставлено. |
NTE_FIXEDPARAMETER | Была произведена попытка установить параметры, постоянные для данного криптопровайдера. |
ДОПОЛНЕНИЕ PKCS #5 Эта схема дополнения определена RSA Data Security, Inc. и описана в "Public-Key Cryptography Standards (PKCS)", PKCS #5, раздел 6.2. При использовании данной схемы, последовательность всегда дополняется знаками, даже в случае, когда её длина кратна длине блока шифрования. Последовательность дополнения состоит из байтов, каждый из которых равен числу дополнительных байтов. Если дополняется последовательность из 24 бит, последовательность дополнения равна “05 05 05 05 05”. Если дополняется 64 бита, последовательность дополнения равна “08 08 08 08 08 08 08 08”. При расшифровании, если расширение блока удовлетворяет условиям дополнения PKCS #5, функция CPDecrypt() в переменной pdwDataLen, возвращает истинное значение длины открытого текста. Если расширение блока не удовлетворяет условиям дополнения PKCS #5, функция CPDecrypt() возвращет ошибку NTE_BAD_DATA,а в переменной pdeDataLen значение длины шифрованного текста. Дополнение PKCS #5 не обеспечивает контроль целостности данных. ДОПОЛНЕНИЕ ZERO При использовании данной схемы, последовательность дополняется нулевыми байтами до наименьшей длины, кратной длине блока шифрования. ДОПОЛНЕНИЕ RANDOM При использовании данной схемы, последовательность дополняется случайными байтами до наименьшей длины, кратной длине блока шифрования.
РЕЖИМ CRYPT_MODE_ECB В соответствии с требованиями ГОСТ 28147-89 режим шифрования простой заменой CRYPT_MODE_ECB может использоваться только для шифрования ключевой информации.
Windows
2000/XP/2003: Необходимо Windows 2000 SP4 или старше с Internet
Explorer 6.0 или старше.
Windows
NT/95/98/ME: CSP 3.0 не поддерживает (см. КриптоПро CSP
2.0 ).
Solaris: 9
Update 4 или выше.
FreeBSD:
FreeBSD 5.2 или выше
Linux: RedHat
7.3, RedHad 9.0.
Файл описания:
Прототип описан в файле wincsp.h.
Ядро Windows
NT: IRQL < DISPATCH_LEVEL
CPGenKey() ,CPGetKeyParam() ,CPSetKeyParam в MS CSP ,CryptSetKeyParam в MS CryptoAPI 2.0
Что Вы
думаете по поводу данной статьи? |
Закажите CD c Крипто-Про CSP |