Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.08.2010(UTC) Сообщений: 74 Откуда: Омск
Сказал(а) «Спасибо»: 2 раз
|
Добрый день. Пытаюсь получить текст зашифрованного сообщения, но в ответ выходит пустая строка. Подскажите, почему такое происходит? Что делаю: 1) на с++ формирую PKCS#7 сообщение. Пример его формирования нашел здесь, на форуме. Код: DWORD EncSize;//размер результирующего сообщения в BASE64
LPSTR certEnc;//результирующее сообщение
CRYPT_SIGN_MESSAGE_PARA SignPara;
DWORD cbSignedBlob;
BYTE * pbSignedBlob;
CString Result, csData;
CryptOpenCertificate(theApp.CSP, theApp.CSPtype, cert->ContainerName, cert->pCertContext);
memset(&SignPara,0,sizeof(CRYPT_SIGN_MESSAGE_PARA));
SignPara.cbSize = sizeof(CRYPT_SIGN_MESSAGE_PARA);
DWORD dwContentSize = csData.GetLength();
DWORD rgcbToBeSigned[] = {dwContentSize};
const BYTE * rgpbToBeSigned[] = {(BYTE*)csData.GetBuffer()};//Текст сообщения для подписи
SignPara.dwMsgEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;
SignPara.pSigningCert = cert->pCertContext;
SignPara.HashAlgorithm.pszObjId = szOID_CP_GOST_R3411;
SignPara.cMsgCert = 1;
SignPara.rgpMsgCert = &cert->pCertContext;
CryptSignMessage(&SignPara,FALSE,1,rgpbToBeSigned,rgcbToBeSigned,NULL,&cbSignedBlob);
pbSignedBlob = (BYTE *)malloc(cbSignedBlob);
CryptSignMessage(&SignPara,FALSE,1,rgpbToBeSigned,rgcbToBeSigned,pbSignedBlob,&cbSignedBlob);
//Base64
EncSize = Base64GetEncodeSize(cbSignedBlob);
certEnc = (LPSTR)malloc(EncSize*sizeof(char));
Base64Encode((CHAR*)pbSignedBlob,cbSignedBlob,certEnc);
//
Result = certEnc;
2) Затем отправляю HTTPS запрос на asp страницу. где на VBScript необходимо проверить подпись и извлечь данные из сообщения. Делаю так. Код:
Dim ReqSign
Dim Data
ReqSign = Request("Sign")
Dim Signobj: Set Signobj = CreateObject("CAPICOM.SignedData")
Data = Signobj.Verify(ReqSign)
Функция отрабатывает корректно, никакие ошибки не генерируются. Но вот в Data лежит пустая строка. Отредактировано пользователем 31 августа 2010 г. 16:32:02(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Выложите то, что приходит в Request("Sign"). |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.08.2010(UTC) Сообщений: 74 Откуда: Омск
Сказал(а) «Спасибо»: 2 раз
|
Приходит такая строка Код:MIIETQYJKoZIhvcNAQcCoIIEPjCCBDoCAQExDDAKBgYqhQMCAgkFADBkBgkqhkiG9w0BBwGgVwRV MS4yLjY0My4zLjE0MS4xLjI9NTU1NSwgSU5OPTEyMzQ1Njc4OTAxMiwgVD3E7uvm7e7x8vwsIDEu Mi42NDMuMy4xNDEuMS4xPTEyMzEyMzEyMzQ1NqCCAzswggM3MIIC5KADAgECAgoS1Q7bAAAAAAAH MAoGBiqFAwICAwUAMBIxEDAOBgNVBAMTB3Rlc3QtdWMwHhcNMTAwODE5MDcyMDAwWhcNMTEwODE5 MDcyOTAwWjCBwTEdMBsGCSqGSIb3DQEJARYOZW1haWxAZG9tZW4ucnUxCzAJBgNVBAYTAlJVMRcw FQYDVQQIHg4EHgQxBDsEMARBBEIETDETMBEGA1UEBx4KBBMEPgRABD4ENDEfMB0GA1UECh4WBB4E QAQzBDAEPQQ4BDcEMARGBDgETzEjMCEGA1UECx4aBB8EPgQ0BEAEMAQ3BDQENQQ7BDUEPQQ4BDUx HzAdBgNVBAMeFgQYBDwETwAgBBgEPARPACAEGAQ8BE8wYzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYH KoUDAgIeAQNDAARAoqQA0io163+GT4p6/gieieK8gocTMYozUtaiL1h61Q6CFCXFe5mFTOfpTu2e LEt/AZLGowv1m092BK2ENAoMEaOCAWYwggFiMA4GA1UdDwEB/wQEAwIE8DAdBgNVHQ4EFgQUK2EO eTR0Ca/JKHbCywBZ8iOcaqIwJgYDVR0lBB8wHQYHKoUDAgIiBgYIKwYBBQUHAwIGCCsGAQUFBwME MB8GA1UdIwQYMBaAFCswVHlNUwpyQT5vmpBDHe+DkIe+MF8GA1UdHwRYMFYwVKBSoFCGJWh0dHA6 Ly90ZXN0LXVjL0NlcnRFbnJvbGwvdGVzdC11Yy5jcmyGJ2ZpbGU6Ly9cXHRlc3QtdWNcQ2VydEVu cm9sbFx0ZXN0LXVjLmNybDCBhgYIKwYBBQUHAQEEejB4MDkGCCsGAQUFBzAChi1odHRwOi8vdGVz dC11Yy9DZXJ0RW5yb2xsL3Rlc3QtdWNfdGVzdC11Yy5jcnQwOwYIKwYBBQUHMAKGL2ZpbGU6Ly9c XHRlc3QtdWNcQ2VydEVucm9sbFx0ZXN0LXVjX3Rlc3QtdWMuY3J0MAoGBiqFAwICAwUAA0EAxyLE svKMU4hqvIC8ZDhEwz8O+wCDdiF43gOfgQa8tGsgkP51GD4Duw/jWa725SCMMZrpW6+nlCnueCh9 Cq/FMjGBgTB/AgEBMCAwEjEQMA4GA1UEAxMHdGVzdC11YwIKEtUO2wAAAAAABzAKBgYqhQMCAgkF ADAKBgYqhQMCAhMFAARAMAfNuo1hjnn2lAMjerfLsJTUrBRqJHozXbT6FgMaLigzmwIqR9aEL5MG QCmvM5pfIRAhaixOEUtYLzIR0/tnvA==
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Данные будут в Signobj.Content |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.08.2010(UTC) Сообщений: 74 Откуда: Омск
Сказал(а) «Спасибо»: 2 раз
|
Спасибо, действительно там лежат зашифрованные данные. А каким образом их можно расшифровать? Я так понимаю, нужно использовать EncryptedData, но не понятно, что следует передать в метод SetSecret ?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Нет, там данные уже лежат раскодированные - в Ваше случае это строка "1.2.643.3.141.1.2=5555, INN=123456789012, T=Должность, 1.2.643.3.141.1.1=123123123456", никаких дополнительных действий производить не надо. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.08.2010(UTC) Сообщений: 74 Откуда: Омск
Сказал(а) «Спасибо»: 2 раз
|
У меня там лежит строка вида "????????????????????6". Поэтому и подумал, что она закодирована. Но, если в этой строке сменить кодировку с "utf-16" на "win-1251", то получится та строка с исходными данными. Спасибо за помощь.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close