Статус: Участник
Группы: Участники
Зарегистрирован: 22.02.2012(UTC) Сообщений: 10 Откуда: Салават
|
подписываю с помощью capicom веб-форму JSом, подпись заноситься в hidden поле и отправляется по массиву POST, проверяю с помощью SignedCms, signedCms.Decode(encodedSignedCms); - получаю ошибку "Встречено неверное значение тега ASN1." в чём проблема и есть ли другие варианты реализации проверки подписи? Отредактировано пользователем 22 февраля 2012 г. 18:41:44(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
proger_brut написал:подписываю с помощью capicom веб-форму JSом, подпись заноситься в hidden поле и отправляется по массиву POST, проверяю с помощью SignedCms, signedCms.Decode(encodedSignedCms); - получаю ошибку "Встречено неверное значение тега ASN1." в чём проблема и есть ли другие варианты реализации проверки подписи? а где собственно текст\код\выложенные примеры файлов\ЭЦП ? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.02.2012(UTC) Сообщений: 10 Откуда: Салават
|
JS, подпись формы. Код: var CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;
var CAPICOM_CURRENT_USER_STORE = 2;
var CAPICOM_MY_STORE = "My";
var CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
var CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
function GetErrorMessage(e) {
var err = e.message;
if (!err) {
err = e;
} else if (e.number) {
err += " (" + e.number + ")";
}
return err;
}
function CreateObject(name) {
switch (navigator.appName) {
case "Microsoft Internet Explorer":
return new ActiveXObject(name);
default:
var cadesobject = document.getElementById("cadesplugin");
return cadesobject.CreateObject(name);
}
}
function GetVal() {
var str = '';
var elems = document.getElementById('signData').getElementsByTagName('INPUT');
for (var i = 0; i < elems.length; i++) {
str += elems[i].value;
}
alert(str);
}
function SignCreate(certSubjectName, dataToSign) {
var oStore = CreateObject("CAPICOM.Store");
oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var oCertificates = oStore.Certificates.Select();
if (oCertificates.Count == 0) {
alert("Certificate not found");
return;
}
var oCertificate = oCertificates.Item(1);
var oSigner = CreateObject("CAdESCOM.CPSigner");
oSigner.Certificate = oCertificate;
oSigner.TSAAddress = "http://cryptopro.ru/tsp/";
var oSignedData = CreateObject("CAdESCOM.CadesSignedData");
oSignedData.Content = dataToSign;
try {
var sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_X_LONG_TYPE_1);
} catch (err) {
alert("Failed to create signature. Error: " + GetErrorMessage(err));
return;
}
oStore.Close();
return sSignedMessage;
}
function Verify(sSignedMessage) {
var oSignedData = CreateObject("CAdESCOM.CadesSignedData");
try {
oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_X_LONG_TYPE_1);
} catch (err) {
alert("Failed to verify signature. Error: " + GetErrorMessage(err));
return false;
}
return true;
}
function run() {
var signedMessage = SignCreate("erwer", GetVal());
var verifyResult = Verify(signedMessage);
if (verifyResult) {
document.data.signedForm.value = signedMessage;
//alert("Signature verified");
}
}
function isPluginInstalled() {
switch (navigator.appName) {
case 'Microsoft Internet Explorer':
try {
var obj = new ActiveXObject("CAdESCOM.CPSigner");
return true;
}
catch (err) { }
break;
default:
var mimetype = navigator.mimeTypes["application/x-cades"];
if (mimetype) {
var plugin = mimetype.enabledPlugin;
if (plugin) {
return true;
}
}
}
return false;
}
файл .cs, весь код прикреплять не стал, т.к выходит ошибка. Код:byte[] encodedSignedCms = System.Text.Encoding.Default.GetBytes(Request.Params["SignedForm"]);
byte[] srcData = System.Text.Encoding.Default.GetBytes(Request.Params["user"]+Request.Params["name"]);
ContentInfo contentInfo = new ContentInfo(srcData);
SignedCms signedCms = new SignedCms(contentInfo, true);
signedCms.Decode(encodedSignedCms);
тут ошибка
сразу говорю, форма подписывается, пост массив приходит.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
файлы, файлы где?
"подписанные данные" |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.02.2012(UTC) Сообщений: 10 Откуда: Салават
|
не смог найти где прикреплять файлы а зачем вообще их прикреплять? весь код лежит тут
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
proger_brut написал:не смог найти где прикреплять файлы а зачем вообще их прикреплять? весь код лежит тут например http://rghost.ruсделай ЭЦП в base64 на клиенте.. на стороне сервера: cms.Decode(Convert.FromBase64String(Signed_Data)); Цитата:а зачем вообще их прикреплять? весь код лежит тут
и Цитата: "Встречено неверное значение тега ASN1.
интересно взглянуть на то, что "пришло" и в каком виде... Отредактировано пользователем 22 февраля 2012 г. 22:31:48(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Цитата:byte[] encodedSignedCms = System.Text.Encoding.Default.GetBytes(Request.Params["SignedForm"]);
byte[] srcData = System.Text.Encoding.Default.GetBytes(Request.Params["user"]+Request.Params["name"]);
ContentInfo contentInfo = new ContentInfo(srcData);
SignedCms signedCms = new SignedCms(contentInfo, true); signedCms.Decode(encodedSignedCms); тут ошибка здесь все понятно, что происходит? допустим encodedSignedCms = Цитата:на клиенте: var sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_X_LONG_TYPE_1); а зачем srcData (contentInfo) передается в SignedCms ( )? Отредактировано пользователем 22 февраля 2012 г. 22:40:29(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.02.2012(UTC) Сообщений: 10 Откуда: Салават
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
proger_brut написал:http://rghost.ru/36654872 http://rghost.ru/36654876Цитата:а зачем srcData (contentInfo) передается в SignedCms ( )? а с чем он будет сравнивать если подпись отделенная? не разглядел что-то... а где указано, что она отделенная?? у тебя же даже в коде (твой?) Цитата:function Verify(sSignedMessage) не передается исходный текст, т.к. ЭЦП - присоединенная Отредактировано пользователем 22 февраля 2012 г. 23:24:50(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.02.2012(UTC) Сообщений: 10 Откуда: Салават
|
Цитата:не разглядел что-то... а где указано, что она отделенная?? если подпись и данные передаются раздельно, то подпись считается отделенной?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close