Статус: Участник
Группы: Участники
Зарегистрирован: 09.06.2020(UTC) Сообщений: 18  Откуда: Тюмень Сказал(а) «Спасибо»: 4 раз
|
Возможно необходимо сделать экспорт PRIVATEKEYBLOB с помошью функции CryptExportKey? Или я неверно мыслю?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,678   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
Автор: Andrey Zhilov  Возможно необходимо сделать экспорт PRIVATEKEYBLOB с помошью функции CryptExportKey? Или я неверно мыслю? CryptAcquireContext CryptGetUserKey CryptCreateHash CryptHashData CryptSignHash выделить память и получить : CryptSignHash и проверить: CryptVerifySignature в конце: CryptDestroyHash CryptReleaseContext |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.06.2020(UTC) Сообщений: 18  Откуда: Тюмень Сказал(а) «Спасибо»: 4 раз
|
Автор: Андрей *  в CryptAcquireContext "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" почему не указывается? Пробывал указывать: Код:
String provider = "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider";
LPWSTR ntProvider = new LPWSTR(provider);
Advapi32.INSTANCE.CryptAcquireContext(hProv, ntContainerName, ntProvider, Advapi32.PROV_GOST_2012_256, 0);
Результат тот же: Код:
Container name: FAT12\B013797D\NEdomag2.000\2B5E
CryptAcquireContext: Операция успешно завершена.
CryptSetProvParam (PP_KEYEXCHANGE_PIN): Операция успешно завершена.
CryptCreateHash: Операция успешно завершена.
CryptHashData: Операция успешно завершена.
CryptSignHash: Ключ не существует.
CryptSetProvParam (PP_USE_HARDWARE_RNG): Операция успешно завершена.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,678   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
CryptGetUserKey(Prov, AT_KEYEXCHANGE, hKey) - успешно? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.06.2020(UTC) Сообщений: 18  Откуда: Тюмень Сказал(а) «Спасибо»: 4 раз
|
Автор: Андрей *  CryptGetUserKey(Prov, AT_KEYEXCHANGE, hKey) - успешно? Да Код:
IntByReference hKey = new IntByReference(0);
Advapi32.INSTANCE.CryptGetUserKey(hProv.getValue(), Advapi32.AT_KEYEXCHANGE, hKey);
Вывод getLastError: Код:CryptGetUserKey: Операция успешно завершена.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,678   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
getLastError вызывают если неуспешно выполнилась функция, где проверки результатов выполняются, в Advapi32.INSTANCE.функция() ? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,678   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.06.2020(UTC) Сообщений: 18  Откуда: Тюмень Сказал(а) «Спасибо»: 4 раз
|
Вроде бы заработало. Получил 64 байта в подписи. Но, для проверки мне нужно получить открытый ключ через CryptGetUserKey -> CryptExportKey. В последней в качестве аргумента передаётся DWORD dwBlobType. Туда надо передать PUBLICKEYBLOB ссылку на структуру. Вот это я пока не представляю как можно сделать в Java. Может есть другой способ получить сразу ссылку на публичный ключ? Или вообще не надо делать это (я про экспорт)? Отредактировано пользователем 11 июня 2020 г. 0:43:49(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,678   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
главные шаги (публичный ключ из сертификата читается):
CERT_CONTEXT = Get_CertificateContextFromFile(FileCertificate)
CryptAcquireContext(Prov,null,null,ProvType, CRYPT_VERIFYCONTEXT)
CryptImportPublicKeyInfoEx (Prov, ENCODING_TYPE, @CERT_CONTEXT^.pCertInfo^.SubjectPublicKeyInfo, 0, 0, nil, hKey)
CryptCreateHash(Prov, Alg, 0, 0, Hash) CryptHashData
CryptVerifySignature(Hash, RawSign.Memory, RawSign.Size, hKey, nil, 0);
CertFreeCertificateContext(CERT_CONTEXT); CryptDestroyHash(Hash); CryptDestroyKey(hKey); CryptReleaseContext(Prov, 0);
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,678   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
Автор: Andrey Zhilov  Вроде бы заработало. Получил 64 байта в подписи. а "почему" заработало, что исправлено было? |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close