Статус: Участник
Группы: Участники
Зарегистрирован: 08.11.2010(UTC) Сообщений: 12
|
Нужно получить открытый ключ в виде строки. Делаю на обычном с++ (не .NET). Возможно, это можно сделать так:
DecodedAttr = CertFindRDNAttr(OID..) CertRDNValueToStr(..DecodedAttr->Value..)
Но я не знаю, какой OID нужен для открытого ключа. Пробовал сделать так: - делаю экспорт открытого ключа, получаю его длину блоба dwKeyBlobLen и сам ключевой блоб bKeyBlob; - потом просто:
CERT_RDN_VALUE_BLOB crvb; crvb.cbData = dwKeyBlobLen; crvb.pbData = &bKeyBlob; cbPubKeyStrSize = CertRDNValueToStr(CERT_RDN_ENCODED_BLOB, &crvb, NULL, 0); pbPubKeyStr = (LPWSTR)malloc(cbPubKeyStrSize*sizeof(WCHAR)); cbPubKeyStrSize = CertRDNValueToStr(CERT_RDN_ENCODED_BLOB, &crvb, pbPubKeyStr, cbPubKeyStrSize);
Все работает замечательно, но возвращаемый pbPubKeyStr просто совпадает с bKeyBlob, только в конце добавляется 0... Видимо, такой метод не подходит, но как добиться нужного результата?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Возможно, Вам подойдет строка, формируемая CryptBinaryToString. OID туда никакой передавать не нужно, только блоб ключа. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.11.2010(UTC) Сообщений: 12
|
Спасибо! Да, строка получилась... Потребовалось только удалить из нее символы перевода строки...
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close