Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2019(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 1 раз
|
Добрый день! Подскажите, почему могут отличаться подписи с сайта и подпись, полученная с помощью cadescom.dll. Это нормально? Вопрос поднял в связи с тем, что не проходит верификация подписанного сообщения на стороннем сервисе (Честный знак). Тестовый сертификат, картинка ниже. 1. Подпись, полученная на сайте https://www.cryptopro.ru...ge/cades_bes_sample.html Podpis'_KriptoPro.PNG (76kb) загружен 12 раз(а).MII JmQYJKoZIhvcNAQcCoII JijCCCYYCAQExDjAMBggqhQMHAQECAwUAMC0GCSqGSIb3DQEHAaAg BB5BQUxDQlNEVkpQREZXR0FVSUtaWkNVWVZPR1BDVU+gggZmMIICczCCAiKgAwIBAgIQN0GIgvU5 pZJK1E494ALqPDAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8u cnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExD MSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMTkwNTI3MDcyNDI2WhcNMjQw NTI2MDczNDA1WjB/MSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkGA1UE BhMCUlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMT 2. Подпись, полученная с помощью cadescom.dll. Ниже часть кода: Код:byte[] bytes = Encoding.UTF8.GetBytes("AALCBSDVJPDFWGAUIKZZCUYVOGPCUO");
string base64String = Convert.ToBase64String(bytes);
signer.Certificate = certificate;
signedData.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
signedData.Content = base64String;
signedMessage = signedData.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, false, CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
signedData.VerifyCades(signedMessage, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, false);
Подпись присоединенная (bDettached = false) MII HIgYJKoZIhvcNAQcCoII HEzCCBw8CAQExDjAMBggqhQMHAQECAwUAMC0GCSqGSIb3DQEHAaAgBB5BQUxDQlNEVkpQREZXR0FVSUtaWkNVWVZPR1BDVU+gggPvMIID6zCCA5qgAwIBAgITEgA+I3UNZzKuNeMnegABAD4jdTAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMTkxMjEwMTQwMjA4WhcNMjAwMzEwMTQxMjA4WjCBqzEbMBkGCSqGSIb3DQEJARYMdGVzdEB0ZXN0LnJ1MS8wLQYDVQQDDCbQqNC70LXQsyDQkNC90L3QsCDQk
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 30.06.2016(UTC) Сообщений: 3,388 Сказал «Спасибо»: 53 раз Поблагодарили: 777 раз в 719 постах
|
Здравствуйте. См. информацию по ссылке. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2019(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 1 раз
|
Добрый день. Начальная часть (то что выделено желтым) постоянно такая, сколько бы раз ни нажимал "Подписать". И она отличается.То что меняется хвост - понятно
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2019(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 1 раз
|
Вопрос не в том, почему подпись каждый раз разная. А почему она отличается от подписи, полученной через cadescom.dll (используется тот же самый сертификат, те же параметры)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,701 Сказал «Спасибо»: 500 раз Поблагодарили: 2049 раз в 1589 постах
|
Здравствуйте. Опишите подробнее. Какой вариант принимает ЧЗ? Какая ошибка? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,701 Сказал «Спасибо»: 500 раз Поблагодарили: 2049 раз в 1589 постах
|
Желтым выделено - это разница в ASN.1.
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,701 Сказал «Спасибо»: 500 раз Поблагодарили: 2049 раз в 1589 постах
|
Snimok ehkrana ot 2019-12-12 18-59-02.png (51kb) загружен 12 раз(а). plugin.txt (5kb) загружен 2 раз(а). cades.txt (4kb) загружен 2 раз(а). |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,701 Сказал «Спасибо»: 500 раз Поблагодарили: 2049 раз в 1589 постах
|
p.s. Прикладывайте в дальнейшем файлы, а не часть текста из base64 |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2019(UTC) Сообщений: 12 Откуда: Москва Сказал(а) «Спасибо»: 1 раз
|
Добрый день! Спасибо всем за ответы, но мне так и не удалось получить токен авторизации от сервиса Честный знак. Написал им в поддержку,но пока молчат. И до конца так и не понятно, почему все-таки подпись с сайта https://www.cryptopro.ru...ge/cades_bes_sample.html отличается от подписи, полученной cadescom.dll (отличия уже в начальных символах) Во вложении обе подписи для сравнения для строки FEVXKQOJHBPSIWLHEEQUXVZIKFNFEI. Podpis' s sajjta.txt (7kb) загружен 3 раз(а). Podpis' cadescom.txt (5kb) загружен 3 раз(а).Что интересно, попытался передать в сервис подпись с сайта (предварительно удалив спецсимволы) - сервис ЧЗ все-равно говорит что "Несанкционированный доступ". Можно как-то убедиться что с тестовым сертификатом\сгенерированной подписью все ОК и проблема либо с кодом либо еще с чем-то. Спасибо! На всякий случай прикладываю код: Код://get random data
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://demo.fashion.crpt.ru/api/v3/auth/cert/key");
httpWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "GET";
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
jsonSettings.Formatting = Formatting.Indented;
RandomData randomData = JsonConvert.DeserializeObject<RandomData>(result, jsonSettings);
byte[] bytes = Encoding.UTF8.GetBytes(randomData.data);
string base64String = Convert.ToBase64String(bytes); //random data to base64 string
signer.Certificate = certificate;
//signer.Options = CAPICOM.CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY;
//sign by certificate
signedData.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
signedData.Content = base64String;
signedDataStr = signedData.SignCades(signer, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, false, CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
signedDataStr = Regex.Replace(signedDataStr, @"\n|\r", "");
//get auth token
var httpWebRequestSign = (HttpWebRequest)WebRequest.Create("https://demo.fashion.crpt.ru/api/v3/auth/cert");
httpWebRequestSign.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
httpWebRequestSign.ContentType = "application/json";
httpWebRequestSign.Method = "post";
//post data
message.uuid = randomData.uuid;
message.data = signedDataStr;
string json = JsonConvert.SerializeObject(message);
using (var streamWriter = new StreamWriter(httpWebRequestSign.GetRequestStream()))
{
streamWriter.Write(json);
}
var httpResponseSign = (HttpWebResponse)httpWebRequestSign.GetResponse();
using (var streamReader = new StreamReader(httpResponseSign.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,701 Сказал «Спасибо»: 500 раз Поблагодарили: 2049 раз в 1589 постах
|
Автор: skart84 Добрый день! Спасибо всем за ответы, но мне так и не удалось получить токен авторизации от сервиса Честный знак. Написал им в поддержку,но пока молчат. И до конца так и не понятно, почему все-таки подпись с сайта https://www.cryptopro.ru...ge/cades_bes_sample.html отличается от подписи, полученной cadescom.dll ( отличия уже в начальных символах) Ответ дан выше. Там не символы, а структура с описанием (ASN.1, предлагаю с теорией ознакомиться), указывается размер данных - он разный, поэтому байты в тех местах - разные и кодируются, соответственно, в base64 в "разные символы". |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close