| ||||
| ||||
Здравствуйте. В Internet Explorere подписываю сообщение Set SignedData = CreateObject("CAPICOM.SignedData") Set Signer = CreateObject("CAPICOM.Signer") SignedData.Content = XmlText Signer.Certificate = Cert sign = SignedData.Sign(Signer, True, 0) и отправляю на сервер(IIS). На сервере проверяю подпись Dim SigData sign = Request.Form("Sign") Set SigData = CreateObject("CAPICOM.SignedData") SigData.Content = Request.Form("signedXml") SigData.Verify sign , True, 0 Всё проходит нормально. Если изменить SigData.Content = Request.Form("signedXml") & "haba-haba" возникает ошибка проверки ЭЦП, а вот если изменить SigData.Verify sign & "haba-haba", True, 0 то ошибки не возникает. Почему ? | ||||
Ответы: | ||||
| ||||
У вас отделенная подпись. При проверке в SigData.Content кладется оригинальный текст, а в качестве первого параметра метода Verify передается собственно подпись. Она в формате PKCS#7. Поэтому когда вы делаете конкатенцию строк оригинального текста и "haba-haba", то вы его искажаете. А когда вы делаете конкатенцию строк подписи и "haba-haba", то вы подпись не искажаете. Просто эта добавка не в структуре (нотация ASN.1) и она "игнорируется" :-) | ||||