12.11.2004 14:13:57PKCS#7 SignedData Ответов: 11
Александр
Здравствуйте!
Как добавить к файлу подпись?
файл в формате PKCS#7 SignedData содержит подписанные данные размером 100Мб.
Функции CryptMsgControl(..., CMSG_CTRL_ADD_SIGNER, ...);
CryptMsgGetParam(..., CMSG_SIGNER_COUNT_PARAM, ...);
не помогают, потому что возвращается структура без данных.
Можно ли добавить в конец файла саму подпись и сертификат подписавшего?
Спасибо!
 
Ответы:
16.11.2004 17:05:00Александр
Проблема по прежнему не решена!
Буду благодарен за любые советы.
16.11.2004 17:55:18Kirill Sobolev
А какую ошибку возвращает CryptMsgControl(..., CMSG_CTRL_ADD_SIGNER, ...);?
17.11.2004 10:47:10александр
всё проходит без ошибок. просто файл большой и его нельзя полностью засосать в память, чтобы к нему добавить подпись а потом сохранить на диск. А при добавлении подписи в конец файла файл становиться битым
17.11.2004 11:17:38Kirill Sobolev
Если нельзя полностью - то используйте detached, засасывая его блоками по 1мб допустим. А потом уже добавляйте подпись.
17.11.2004 11:30:23александр
Это ясно.
После этого я имею структуру hMsg, содержащую два подписчика и файл немеренного размера с одной подписью.
Так вот вопрос заключался в следующем:
Как мне всё это дело собрать в один файл?
17.11.2004 11:34:42Kirill Sobolev
В один файл средствами CryptoAPI я думаю это собрать не получится. Да и смысла особого нет - detached подпись для того и прдумана, чтобы такие здоровые файлы подписывать. А если нужно все в одном файле - надо 100мб читать, по другому никак.
17.11.2004 11:48:16александр
спасибо за ответы.
18.11.2004 14:29:16Юрий
Действительно, по правилам CryptoAPI в случае аттаченных данных CryptMsgUpdate нужно вызывать лишь раз. Но, впринципе, у меня получалось (в первичных версиях КриптоАРМ) подписывать с атаченными данными оооочень большие файлы :) Потом от этого отказались (что-то там было с проверкой подписи в случае нескольких подписчиков в одном файле...)
Так что, впринципе, вызываете CryptMsgUpdate как в случае шифрования - для всего контента. Только потом туда же еще подписчиков не добавляйте :))
18.11.2004 14:40:53Юрий
...А если вопрос только в том, чтобы добавить подпись и сертификат в конец файла (на не получить PKCS-сообщение), то лучше не замарачивать голову и вызывать CryptHashData-CryptSignHash. А сертификат как-нибудь... Например, сделать отсоединенную подпись с любыми данными - получим PKCS-сообщение с сертификатом. Это сообщение и полученную выше как-нибудь засовываем в конец файла...
18.11.2004 15:00:46Юрий
...Ну а если проблема только в том, чтобы извлечь из файла с подписью огромного размера данные, то это только с помощью это параметра MsgToDecode - описателя потока...
18.11.2004 15:31:16александр
Спасибо!
С извлечением данных у меня проблем не было. А вот с добавлением..., видимо придётся как-то выкручиваться :). кто-то ведь может изъявит желание сделать такую вещь.