помогите разобраться снепонятной проблемой. Почему то при попытке получить контент из сообщения, он у меня нулевой длины
Делаю аналогично как показывал Pashk88 в #44 в этой же теме, но почему то CMSG_CONTENT_PARAM пустой
1.1 Ищу контейнер закрытого ключа
1.1 Получаю закрытый ключ CryptAcquireCertificatePrivateKey()
1.2 Заполняю структуры CRYPT_ALGORITHM_IDENTIFIER, CMSG_SIGNER_ENCODE_INFO
1.3 Структуру CMSG_SIGNER_ENCODE_INFO помещаю в массив структур CMSG_SIGNER_ENCODE_INFO (массив csei)
1.4 Заполняю структуры CERT_BLOB
1.5 Структуру CERT_BLOB помещаю в массив структур CERT_BLOB (массив cb)
1.6 Заполняю структуру CMSG_SIGNED_ENCODE_INFO (csedei) с учетом массивов csei и cb
1.7 Получаю сообщение CryptMsgOpenToEncode(MY_ENCODING_TYPE, CMSG_DETACHED_FLAG, CMSG_SIGNED, &csedei, NULL, NULL)
1.8 Копирую подготовленный блоб c данными в сообщение CryptMsgUpdate(..., TRUE)
1.9 Получаю сообщение CryptMsgGetParam(hMsg, CMSG_CONTENT_PARAM, 0, &blob, &i)
1.10 Записываю блоб &blob в поле таблицы.
2.1 Загружаю содержимое поля таблицы (криптографическое сообщения) в память
2.2 Получаю сообщение CryptMsgOpenToDecode(MY_ENCODING_TYPE, CMSG_DETACHED_FLAG, 0, NULL, NULL, NULL)
2.3 Копирую в сообщение содержимое содержимое поля (крипт. сообщения) CryptMsgUpdate(..., TRUE)
2.4 Получаю сообщение CryptMsgGetParam(hMsg, CMSG_CONTENT_PARAM, 0, &blob, &i)
и вот здесь i=0. Почему????
если в п.1.7 и 2.4 вместо CMSG_DETACHED_FLAG поставить 0, то все отлично, блоб из п.2.4 тот, что надо. Но мне нужно загрузить после 2.3 измененное содержание, сохранив при этом подпись прежнего блоба, а сделать это насколько я понимаю возможно только с помощью CMSG_DETACHED_FLAG.
Отредактировано пользователем 29 марта 2015 г. 21:01:44(UTC)
| Причина: Не указана