Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline Andrey Zhilov  
#11 Оставлено : 10 июня 2020 г. 23:26:29(UTC)
Andrey Zhilov

Статус: Участник

Группы: Участники
Зарегистрирован: 09.06.2020(UTC)
Сообщений: 18
Российская Федерация
Откуда: Тюмень

Сказал(а) «Спасибо»: 4 раз
Возможно необходимо сделать экспорт PRIVATEKEYBLOB с помошью функции CryptExportKey? Или я неверно мыслю?
Online Андрей *  
#12 Оставлено : 10 июня 2020 г. 23:32:37(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,678
Мужчина
Российская Федерация

Сказал «Спасибо»: 572 раз
Поблагодарили: 2302 раз в 1803 постах
Автор: Andrey Zhilov Перейти к цитате
Возможно необходимо сделать экспорт PRIVATEKEYBLOB с помошью функции CryptExportKey? Или я неверно мыслю?


CryptAcquireContext
CryptGetUserKey

CryptCreateHash

CryptHashData

CryptSignHash
выделить память и получить :
CryptSignHash

и проверить:
CryptVerifySignature

в конце:
CryptDestroyHash
CryptReleaseContext
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Andrey Zhilov оставлено 11.06.2020(UTC)
Offline Andrey Zhilov  
#13 Оставлено : 10 июня 2020 г. 23:35:28(UTC)
Andrey Zhilov

Статус: Участник

Группы: Участники
Зарегистрирован: 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): Операция успешно завершена.

Online Андрей *  
#14 Оставлено : 10 июня 2020 г. 23:36:30(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,678
Мужчина
Российская Федерация

Сказал «Спасибо»: 572 раз
Поблагодарили: 2302 раз в 1803 постах
CryptGetUserKey(Prov, AT_KEYEXCHANGE, hKey) - успешно?
Техническую поддержку оказываем тут
Наша база знаний
Offline Andrey Zhilov  
#15 Оставлено : 10 июня 2020 г. 23:43:30(UTC)
Andrey Zhilov

Статус: Участник

Группы: Участники
Зарегистрирован: 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: Операция успешно завершена.

Online Андрей *  
#16 Оставлено : 10 июня 2020 г. 23:45:42(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,678
Мужчина
Российская Федерация

Сказал «Спасибо»: 572 раз
Поблагодарили: 2302 раз в 1803 постах
getLastError вызывают если неуспешно выполнилась функция,
где проверки результатов выполняются, в Advapi32.INSTANCE.функция() ?
Техническую поддержку оказываем тут
Наша база знаний
Online Андрей *  
#17 Оставлено : 10 июня 2020 г. 23:57:13(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,678
Мужчина
Российская Федерация

Сказал «Спасибо»: 572 раз
Поблагодарили: 2302 раз в 1803 постах
в ЛС написал еще...
Техническую поддержку оказываем тут
Наша база знаний
Offline Andrey Zhilov  
#18 Оставлено : 11 июня 2020 г. 0:43:17(UTC)
Andrey Zhilov

Статус: Участник

Группы: Участники
Зарегистрирован: 09.06.2020(UTC)
Сообщений: 18
Российская Федерация
Откуда: Тюмень

Сказал(а) «Спасибо»: 4 раз
Вроде бы заработало. Получил 64 байта в подписи.
Но, для проверки мне нужно получить открытый ключ через CryptGetUserKey -> CryptExportKey.
В последней в качестве аргумента передаётся DWORD dwBlobType. Туда надо передать PUBLICKEYBLOB ссылку на структуру.
Вот это я пока не представляю как можно сделать в Java. Может есть другой способ получить сразу ссылку на публичный ключ?
Или вообще не надо делать это (я про экспорт)?

Отредактировано пользователем 11 июня 2020 г. 0:43:49(UTC)  | Причина: Не указана

Online Андрей *  
#19 Оставлено : 11 июня 2020 г. 1:13:44(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);



Техническую поддержку оказываем тут
Наша база знаний
Online Андрей *  
#20 Оставлено : 11 июня 2020 г. 1:14:26(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,678
Мужчина
Российская Федерация

Сказал «Спасибо»: 572 раз
Поблагодарили: 2302 раз в 1803 постах
Автор: Andrey Zhilov Перейти к цитате
Вроде бы заработало. Получил 64 байта в подписи.


а "почему" заработало, что исправлено было?




Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.