Добрый день.
При подписи Рутокен ЭЦП получаю сообщение формата #PKCS7. Необходимо сохранить чистую подпись без сертификатов и остальной информации, а затем проверить ее, имея данные для подписи, сертификат, с помощью Крипто Про CSP.
Получение чистой подписи (все проверки убрал):
hMsg = ::CryptMsgOpenToDecode(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, 0, 0, 0, 0);
::CryptMsgUpdate(hMsg, sign, signsize, TRUE);
::CryptMsgGetParam(hMsg, CMSG_ENCRYPTED_DIGEST, 0, PureSign, &cbData);
Проверка чистой подписи:
::CryptCreateHash(provider.Handle(), "1.2.643.2.2.9", 0, 0, &hHash))
::CryptHashData(hHash, msg, msgsize, 0))//msg = данные, которые подписывались
//certContext = PCCERT_CONTEXT сертификата ключа, которым подписывали
::CryptImportPublicKeyInfo(provider.Handle(), X509_ASN_ENCODING || PKCS_7_ASN_ENCODING, &certContext->pCertInfo->SubjectPublicKeyInfo, &hKey);
::CryptVerifySignature(hHash, PureSign, cbData, hKey, 0, 0)
DWORD dwErr = GetLastError();
Получается что
dwErr == NTE_BAD_SIGNATURE
Что здесь неправильно?
Файл подписи PKCS7 проверяется успешно средством cryptcp.
Прикладываю данные для подписи и файл PKCS7 подписи.

Data.txt
(1kb) загружен 2 раз(а).
Data.txt.sgn.rar
(1kb) загружен 2 раз(а).Отредактировано пользователем 27 сентября 2017 г. 14:23:30(UTC)
| Причина: Не указана