|
|
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Не нашел нигде готового текста, а сам туповат, помогите разобраться, пож-та? Как создать sig файл для одной подписи, я нашел, работает четко. Текст с просторов для одной подписи, рабочий Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. Чтобы прицепить доп. подпись, решил, что в SignPara.rgpMsgCert нужно подать список тех сетрификатов, что уже есть в файле (плюс новую). Не претендую на правильность, сделал так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Процедура SignStreamSeveral Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. В итоге размер sig файла увеличивается, как будто дописалось что-то, но при проверке криптопро выдает правильной только последнюю подпись (остальные не видит, и CryptGetMessageSignerCount тоже видит только 1 подпись (и она правильная)). Подскажите, как правильно добавить подписи в sig-файл? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 17:26 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
Devillio Код: sql 1. Лично мне очень подозрительна эта единичка. Не пробовал почитать документацию что она значит? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 17:51 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
Devillio, авторSignPara.HashAlgorithm.pszObjId := '1.2.643.100.113.1'; Идентификатор алгоритма хеширования = Идентификатор политики (Класс средства ЭП КС1)? Сам так решил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 23:45 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
Devillio, а подпись вообще кому нужна, только "честно". Для суда... А суд что требует в своём документе? Каждой подписи по файлу... Зовите юриста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 23:46 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
hMsg:=CryptMsgOpenToDecode ( ... ) если загружается отсоединенная ЭП: в Buffer - загружается отсоединенная ЭП и CryptMsgUpdate(hMsg, Buffer, размер Buffer, true); читаем в цикле файле и вызываем CryptMsgUpdate ( false или true (если последний блок) ) Добавляем: CryptMsgControl(hMsg, 0, CMSG_CTRL_ADD_SIGNER, ... @X : CMSG_SIGNER_ENCODE_INFO )\ в X - предварительно заполняем (атрибуты\алгоритм) Добавляем цепочку сертификатов: CryptMsgControl(hMsg, 0, CMSG_CTRL_ADD_CERT @Z : массив CERT_BLOB ... CryptMsgGetParam(hMsg, CMSG_ENCODED_MESSAGE ... nil, cbEncodedBlob) выделение памяти для pbEncodedBlob CryptMsgGetParam(hMsg, CMSG_ENCODED_MESSAGE ... pbEncodedBlob, cbEncodedBlob) в pbEncodedBlob - будет CMS с нужными подписями и сертификатами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 23:58 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
На форумах можно найти примеры\описание в данном случае поискать: CMSG_CTRL_ADD_SIGNER https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=90428#post90428 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2018, 00:00 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
sql2012, благодарю за помощь! Вот что получилось Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. На CryptMsgControl(hMsg, 0, CMSG_CTRL_ADD_SIGNER, @cib) вываливается ошибка "неизвестный криптографический алгоритм". Очень подозреваю, что связано с замечанием "Идентификатор алгоритма хеширования = Идентификатор политики (Класс средства ЭП КС1)? Сам так решил? " :) Пробовал менять на другие типа szOID_OIWSEC_sha1 (не уверен, что понимаю, что делаю), ошибка та же. Подскажите, что не так? Спасибо! PS и еще момент не пойму, зачем вызывать CryptMsgUpdate в цикле? И если все таки вызывать, то как определять, что параметр fFinal пора ставить в true? :( тоже не понимаю этот момент. У меня сейчас для разработки всего 2 подписи, а в итоге будет подписывать намного больше, говорят, и до 10 будет. PPS насчет алгоритма. Внедрили регистрацию входящих/исходящих, сама программа готова, все работает; поставлена цель уйти от бумаги и отправлять исходящие с sig файлами. Подскажите, пожта, для этой задачи какой надо ставить? Криптопро проверяет, пишет ок и при SignPara.HashAlgorithm.pszObjId := '1.2.643.100.113.1' (это просто в интернете нашел такой текст). Еще раз благодарю за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2018, 19:11 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
Ой блин я вместо CMSG_SIGNER_ENCODE_INFO саму подпись передаю, сори ))) Но другие вопросы все равно в силе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2018, 19:23 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
HashAlgorithm.pszObjId - это алгоритм шифрования. Поиск (строки HashAlgorithm.pszObjId) по документации\форуму\поддерживаемым алгоритмам самого CSP - решит задачу. Либо прописать "константой", как "обычно делают". Пример - здесь . Правильный вариант: по алгоритму подписи владельца сертификата - определять алгоритм хеширования. В текущем состоянии необходимо различать алгоритмы ГОСТ-2001 и ГОСТ-2012 и выставлять соответствующий алгоритм хеширования. >зачем вызывать CryptMsgUpdate в цикле Чтобы читать и иметь возможность подписывать файлы любого размера, а не те, что помещаются в ОЗУ + можно сделать прогресс процесса подписания (актуально, при подписании файлов больше 100 мб). Когда файлы не большие - можно, конечно, и сразу прочитать в память и передать в CryptMsgUpdate с флагом fFinal = true. По ссылке на форум Крипто-ПРО - есть ссылки на документацию от КРИПТО-ПРО и на MSDN, а в сообщении ниже приведен листинг с кодом. >>Криптопро проверяет, пишет ок и при >> SignPara.HashAlgorithm.pszObjId := '1.2.643.100.113.1' (это просто в интернете нашел такой текст). Известная проблема, кто-то не так давно "прописал" и теперь все тиражируют. Попадется другая сборка (или под другую платформу код переносить будешь) или другой CSP (ViPNet\SignalCom\Lissi..) - могут не пропустить "такую ошибку". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2018, 21:09 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
sql2012, >HashAlgorithm.pszObjId - это алгоритм шифрования. * ХЕШИРОВАНИЯ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2018, 21:09 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
не получается никак Готовая функция, как получилось Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. CryptMsgControl(hMsg, 0, CMSG_CTRL_ADD_SIGNER, @SignerEncodeInfo) возвращает "неизвестный криптографический алгоритм" все время (( Направьте дальше, будьте добры! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 11:43 |
|
||
|
Как добавить еще одну подпись в sig-файл?
|
|||
|---|---|---|---|
|
#18+
Devillio, конечно не получится так. OID хеша не может быть равен OID алгоритма подписи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 12:34 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39651647&tid=2040828]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 509ms |

| 0 / 0 |
