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