Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро УЦ 1.4
»
Запрос на приостановление действия сертификата
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.11.2009(UTC) Сообщений: 4
|
Добрый день. Пишу на C# библиотеку для работы с УЦ КриптоПро. Взаимодействие происходит через web-сервис RA.
Метод RevokeRequestSoapPort.SubmitHoldRequest(string request) Значение строки request = "SN=13FFA817000000000009, RR=Тестовый комментарий, RC=6, HD=0-0-0-42-0-0" При попытке отправить запрос сервер УЦ выдает ошибку:
The VB Application identified by the event source logged this Application Registration: Thread ID: 3804 ,Logged: Ошибка модуля удаленного доступа к ЦР КриптоПро УЦ: Метод: RevokeRequest.SubmitHoldRequest Источник: RegistrationCenter Номер: 0xD (13) Описание: Type mismatch
Вот стандарный код для создания запроса в формате PKCS7, передаваемого в метод: byte [] signedData=Encoding.Unicode.GetBytes(request);
ContentInfo content = new ContentInfo(signedData); SignedCms signedCms = new SignedCms(content, false); signedCms.Certificates.Add(certificate);
CmsSigner signer = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, certificate); signedCms.ComputeSignature(signer);
string resultRequest = Convert.ToBase64String(signedCms.Encode());
Судя по всему причина кроется в строке, которую я передаю в метод. В руководстве программиста написано, что "В поле ContentInfo этого документа должна находиться UNICODE-строка запроса". Но проблема в том, что конструктор ContentInfo принимает в качестве параметра только массив байт. Запрос на сертификат метода RevokeRequest.SumbitRequest принимается нормально после тех же действий.
Можно ли как-нибудь решить эту проблему?
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.11.2009(UTC) Сообщений: 4
|
Webster написал:Добрый день. Пишу на C# библиотеку для работы с УЦ КриптоПро. Взаимодействие происходит через web-сервис RA.
Метод RevokeRequestSoapPort.SubmitHoldRequest(string request) Значение строки request = "SN=13FFA817000000000009, RR=Тестовый комментарий, RC=6, HD=0-0-0-42-0-0" При попытке отправить запрос сервер УЦ выдает ошибку:
The VB Application identified by the event source logged this Application Registration: Thread ID: 3804 ,Logged: Ошибка модуля удаленного доступа к ЦР КриптоПро УЦ: Метод: RevokeRequest.SubmitHoldRequest Источник: RegistrationCenter Номер: 0xD (13) Описание: Type mismatch
Вот стандарный код для создания запроса в формате PKCS7, передаваемого в метод: byte [] signedData=Encoding.Unicode.GetBytes(request);
ContentInfo content = new ContentInfo(signedData); SignedCms signedCms = new SignedCms(content, false); signedCms.Certificates.Add(certificate);
CmsSigner signer = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, certificate); signedCms.ComputeSignature(signer);
string resultRequest = Convert.ToBase64String(signedCms.Encode());
Судя по всему причина кроется в строке, которую я передаю в метод. В руководстве программиста написано, что "В поле ContentInfo этого документа должна находиться UNICODE-строка запроса". Но проблема в том, что конструктор ContentInfo принимает в качестве параметра только массив байт. Запрос на сертификат метода RevokeRequest.SumbitRequest принимается нормально после тех же действий.
Можно ли как-нибудь решить эту проблему? Отбой, я конечно балбес :) В строке запроса перепутал поля "причина (RR)" с полем "комментарием (RC)". Бывает.
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.10.2009(UTC) Сообщений: 121
Сказал(а) «Спасибо»: 2 раз Поблагодарили: 3 раз в 3 постах
|
пытаюсь сделать подпись Код: ContentInfo ci = new ContentInfo( Encoding.Unicode.GetBytes( stringData ) );
SignedCms sig = new SignedCms( ci, true );
if( certs.Count > 0 ) {
X509Certificate2 cert = certs[0];
sig.Certificates.Add( cert );
CmsSigner signer = new CmsSigner( SubjectIdentifierType.IssuerAndSerialNumber, cert );
sig.ComputeSignature( signer, false );
str_sign = Convert.ToBase64String( sig.Encode() );
}
сам свою подпись проверяю нормально? если сразу проверяю, но если проверяю подпись КриптоАрмом - то проверку подпись не проходит и если сохранить base64 строку полученную, а потом через frombase64string() sig.decode(teaxt); sig.checkSignature(true); - тут получаю ошибку ... Отредактировано пользователем 24 ноября 2010 г. 18:53:11(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.10.2009(UTC) Сообщений: 121
Сказал(а) «Спасибо»: 2 раз Поблагодарили: 3 раз в 3 постах
|
так, если lineBreak параметр ставлю, то сам у себя проверяю, но АРМ не проверяет Код:str_sign = Convert.ToBase64String( sig.Encode(),Base64FormattingOptions.InsertLineBreaks );
|
|
|
|
|
|
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро УЦ 1.4
»
Запрос на приостановление действия сертификата
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close