Статус: Участник
Группы: Участники
Зарегистрирован: 11.07.2012(UTC) Сообщений: 12 Откуда: Саяногорск
|
Андрей * написал:Bolt написал: SigParams.HashAlgorithm.pszObjId := szOID_RSA_MD5; как это относится к КРИПТО-ПРО \СКЗИ\ Встраивание не понятно прошу прощения что там должно быть? Я этот код в инете нарыл и теперь переписываю для себя исправляе неточности. А система у клиента стоит Крипто Про. АРМ видел но нестал им пользоваться т.к. клиент хочет полную автоматизацию.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
Bolt написал:Андрей * написал:Bolt написал: SigParams.HashAlgorithm.pszObjId := szOID_RSA_MD5; как это относится к КРИПТО-ПРО \СКЗИ\ Встраивание не понятно прошу прощения что там должно быть? Я этот код в инете нарыл и теперь переписываю для себя исправляе неточности. А система у клиента стоит Крипто Про. АРМ видел но нестал им пользоваться т.к. клиент хочет полную автоматизацию. должен быть наш алгоритм хеширования.... szOID_CP_ GOST_R3411 http://cpdn.cryptopro.ru...___pro_c_s_p_ex_DP8.html p.s. КриптоАРМ - имеет SDK и примеры по использованию - его можно задействовать через COM  и использовать "весь функционал криптографии без изучения тонкостей" ... Отредактировано пользователем 16 июля 2012 г. 13:37:49(UTC)
| Причина: Не указана |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.07.2012(UTC) Сообщений: 12 Откуда: Саяногорск
|
С подписанием разобрался теперь надо зашифровать с помощью сетрификатов. Нашол что то бодобное там код Код:OpenDlg.Title := 'Укажите файл с открытым ключом обмена ключами получателя';
if OpenDlg.Execute then begin
AssignFile(outfile, OpenDlg.FileName);
reset(outfile, 1);
keyLen := FileSize(outfile);
GetMem(tmp, keyLen);
BlockRead(outfile, tmp^, keyLen);
CloseFile(outfile);
end else exit;
насколько я понял для шифровки надо брать сетрификат и оттуда ключь попытался сделать так Код: hCertStoreHandle := CertOpenSystemStore( 0, PWideChar( CERT_STORE_NAME ));
if ( not assigned( hCertStoreHandle )) then
Err( Format( 'Ошибка при открытии хранилища: %s', [ CERT_STORE_NAME ] ));
try
pSignerCert := CertFindCertificateInStore( hCertStoreHandle, encType, 0, CERT_FIND_SUBJECT_STR, PWideChar( SignerNameOper ), nil );
try
if ( not assigned( pSignerCert )) then
Err( Format( 'Сертификат %s не найден', [ SignerName ] ));
keyLen := pSignerCert^.pCertInfo^.SubjectPublicKeyInfo.PublicKey.cbData;
GetMem(tmp, keyLen);
Move(pSignerCert^.pCertInfo^.SubjectPublicKeyInfo.PublicKey.pbData^, tmp^, keyLen);
finally
CertFreeCertificateContext(pSignerCert);
end;
finally
CertCloseStore( hCertStoreHandle, CERT_CLOSE_STORE_CHECK_FLAG );
end;
if not CryptImportKey(hProv, tmp, keyLen, 0, 0, KeyExchKey) then begin
Err('Ошибка импорта ключа: ');
exit;
end;
но получаю Ошибка импорта ключа: '#$A#$D'0x80090007 Плохая версия поставщика. снова в тупике как зашифровать сертификатом?
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.07.2012(UTC) Сообщений: 12 Откуда: Саяногорск
|
по поводу шифрования сказано
e. зашифровать ZIP-архив со следующими параметрами: - указать в качестве выходного формата PKCS#7 Message в DER-кодировке (.p7m или .enc) - в свойствах шифрования указать свой сертификат, а в списке сертификатов получателей выбрать сертификат «Оператор» f. в итоге должен получиться файл с именем КодУчастника_ГГГГММДД_ЧЧММСС.zip.p7m (или .enc)
нашол код использующий сертификат if (!CryptEncryptMessage(&EncryptPara, 1, &pCert, (BYTE*)string, strlen(string), NULL, count)) { Error("CryptEncryptMessage"); return; }
но вопрос как эти 2 сетрификата указывать? и какова структура файла .enc (я нашел примерчик шифровалки и там "размер ключа,ключь,длина salt-значения,salt-значение, может быть или не быть создание IV, тут зашифрованные данные" это оно?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
Bolt написал:по поводу шифрования сказано
e. зашифровать ZIP-архив со следующими параметрами: - указать в качестве выходного формата PKCS#7 Message в DER-кодировке (.p7m или .enc) - в свойствах шифрования указать свой сертификат, а в списке сертификатов получателей выбрать сертификат «Оператор» f. в итоге должен получиться файл с именем КодУчастника_ГГГГММДД_ЧЧММСС.zip.p7m (или .enc)
нашол код использующий сертификат if (!CryptEncryptMessage(&EncryptPara, 1, &pCert, (BYTE*)string, strlen(string), NULL, count)) { Error("CryptEncryptMessage"); return; }
но вопрос как эти 2 сетрификата указывать? и какова структура файла .enc (я нашел примерчик шифровалки и там "размер ключа,ключь,длина salt-значения,salt-значение, может быть или не быть создание IV, тут зашифрованные данные" это оно? Цитата: но вопрос как эти 2 сетрификата указывать?
в документации сказано как, заполнить массив получателей Цитата: и какова структура файла .enc
enc, p7s, p7b - PKCS#7 Отредактировано пользователем 19 июля 2012 г. 11:56:46(UTC)
| Причина: Не указана |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close