Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline SuslegStyle  
#1 Оставлено : 31 августа 2010 г. 16:28:14(UTC)
SuslegStyle

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Kirill Sobolev  
#2 Оставлено : 31 августа 2010 г. 17:21:59(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Выложите то, что приходит в Request("Sign").
Техническую поддержку оказываем тут
Наша база знаний
Offline SuslegStyle  
#3 Оставлено : 31 августа 2010 г. 17:32:17(UTC)
SuslegStyle

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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==
Offline Kirill Sobolev  
#4 Оставлено : 31 августа 2010 г. 19:38:41(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Данные будут в Signobj.Content
Техническую поддержку оказываем тут
Наша база знаний
Offline SuslegStyle  
#5 Оставлено : 1 сентября 2010 г. 11:56:11(UTC)
SuslegStyle

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.08.2010(UTC)
Сообщений: 74
Откуда: Омск

Сказал(а) «Спасибо»: 2 раз
Спасибо, действительно там лежат зашифрованные данные.
А каким образом их можно расшифровать?
Я так понимаю, нужно использовать EncryptedData, но не понятно, что следует передать в метод SetSecret ?
Offline Kirill Sobolev  
#6 Оставлено : 1 сентября 2010 г. 13:57:26(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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", никаких дополнительных действий производить не надо.
Техническую поддержку оказываем тут
Наша база знаний
Offline SuslegStyle  
#7 Оставлено : 1 сентября 2010 г. 15:46:52(UTC)
SuslegStyle

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.08.2010(UTC)
Сообщений: 74
Откуда: Омск

Сказал(а) «Спасибо»: 2 раз
У меня там лежит строка вида "????????????????????6". Поэтому и подумал, что она закодирована.
Но, если в этой строке сменить кодировку с "utf-16" на "win-1251", то получится та строка с исходными данными.
Спасибо за помощь.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.