06.02.2005 21:41:50Как правильно воспользоваться алгоритмом CALG_SIMPLE_EXPORT? Ответов: 3
Артем
Пытаюсь экспортировать разовый ключ алгоритмом CALG_SIMPLE_EXPORT. Порядок действий, по модулю обработки ошибок, следующий:

CPGetUserKey(prov, AT_KEYEXCHANGE, &key);
CPImportKey(prov, keybuf, kblen, key, CRYPT_EXPORTABLE, &pairkey);
CPGenKey(prov, CALG_G28147, CRYPT_EXPORTABLE, &onekey);
CPEncrypt(prov, onekey, 0, TRUE, 0, data, &datalen, datalen);
DWORD exp_alg = CALG_SIMPLE_EXPORT;
CPSetKeyParam(prov, pairkey, KP_ALGID, (BYTE*)&exp_alg, 0);
CPExportKey(prov, onekey, pairkey, SIMPLEBLOB, 0, keybuf, &kblen);

Все отрабатывает без ошибок, и я получаю блоб вполне соответствующего документации формата, но

zsh% zsh% dumpasn1 -60 enckey
0 9: SEQUENCE {
2 7: OBJECT IDENTIFIER CP GOST 28147 default params (1 2 643 2 2 31 1)
: }
- OID тот же, что и при умолчательном запуске, и насколько я могу судить по документации, этот OID соответствует CALG_PRO_EXPORT. Начальный вектор ключа в блобе (байты 16-23) тоже ненулевой, а насколько я понимаю, при Simple его быть не должно.
 
Ответы:
07.02.2005 9:56:52Василий
А что есть при этом keybuf - как он был получен?
07.02.2005 13:05:34Артем
Результат экспорта (CPExportKey) другого открытого ключа. Кидается через файл.

Да, забыл версию CSP указать. 2.0 (Build 2049).
07.02.2005 15:20:38Артем
Да призадумался... Долговременные ключи - 94 года.