Статус: Новичок
Группы: Участники
Зарегистрирован: 17.05.2010(UTC) Сообщений: 9 Откуда: Moscow
|
Код:
CK_BYTE pubKeyValue[64]; //64 байта ключа из eToken
BYTE keyParam = 1; // Здесь Вы устанавливаете параметр, который использовался при генерации ключа
// 1 - STR_CRYPTO_PRO_A
// 2 - STR_CRYPTO_PRO_B
// 3 - STR_CRYPTO_PRO_C
HCRYPTKEY cpPubKey;
// Это заготовка для ключевого блоба КриптоПро. Формат структуры есть в SDK
BYTE KeyBlob[100] = {
0x06, 0x20, 0x00, 0x00, 0x23, 0x2E, 0x00, 0x00, 0x4D, 0x41, 0x47, 0x31, 0x00, 0x02, 0x00, 0x00,
0x30, 0x12, 0x06, 0x07, 0x2A, 0x85, 0x03, 0x02, 0x02, 0x23, 0x00, 0x06, 0x07, 0x2A, 0x85, 0x03,
0x02, 0x02, 0x1E, 0x01
};
// Дополняем блоб параметром ключа и самим ключом
KeyBlob[26] = keyParam;
memcpy(KeyBlob + 36, pubKeyValue, 64);
// Импортируем ключ в КриптоПро
if(!CryptImportKey(cpProvHandle, (BYTE*)&KeyBlob, sizeof(KeyBlob), NULL, PUBLICKEYBLOB, &cpPubKey))
{
// Вывод ошибки
}
|