Статья: Секреты разработки CSP

Рисунок 4 - Импорт и экспорт открытых ключей в/из CSP

Функция A_ConvertPublicKeyInfo – на входе принимает ключ в формате ASN.1 DER и должна преобразовать его в формат, который “понимает” функция CSP CPImportKey

Функция A_EncodePublicKeyInfoAndParameters на входе принимает ключ в том формате, в котором ключ экспортирует CPExportKey. На выходе A_EncodePublicKeyInfoAndParameters должна сформировать ASN.1 DER структуру с ключом – ту же самую которая в случае импорта передается в A_ConvertPublicKeyInfo – на вход. Надеюсь, вы не запутались во всех этих входах Jи выходах

Вот сигнатуры и краткие описания параметров этих функций:

BOOL WINAPI A_ConvertPublicKeyInfo(

DWORD dwCertEncodingType, // IN -

VOID *EncodedKeyInfo, // IN – буферсключом - указатель

// наструктуру CERT_PUBLIC_KEY_INFO

DWORD dwAlg, // IN – AlgId ключа

DWORD dwFlags, // IN – обычно 0

BYTE **ppStructInfo, // OUT – двойной указатель на структуру

// в заголовке структуры идет сначала PUBLICKEYSTRUC, затем DSSPUBKEY,

// а затем сам ключ с параметрами

DWORD *StructLen // OUT – длиннаструктуры

);

BOOL WINAPI A_EncodePublicKeyAndParameters(

DWORD dwCertEncodingType, // IN

LPCSTR lpszStructType, // IN – OID алгоритма

const void* pvStructInfo, // IN – такаяжеструктуракак

// навыходе ConvertPublicKeyInfo

DWORD nStructLen, // IN – длиннавходнойструктуры

DWORD dwFlags, // IN – обычно 0

DWORD Unk, // ? - неизвестно

BYTE **pbPubKey, // OUT – открытый ключ в ASN.1 DER

DWORD* pcPubKeyLen, // OUT – длинна открытого ключа

BYTE **pbParams, // OUT – параметры открытого ключа

DWORD* pcParamsLen // OUT – длинна параметров

);

К-во Просмотров: 382
Бесплатно скачать Статья: Секреты разработки CSP