30.08.2006 12:04:53CAPICOM проверка ЭЦП Ответов: 1
новичок
Здравствуйте.

В 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
то ошибки не возникает. Почему ?
 
Ответы:
30.08.2006 16:12:48Юрий Маслов
У вас отделенная подпись. При проверке в SigData.Content кладется оригинальный текст, а в качестве первого параметра метода Verify передается собственно подпись. Она в формате PKCS#7.
Поэтому когда вы делаете конкатенцию строк оригинального текста и "haba-haba", то вы его искажаете. А когда вы делаете конкатенцию строк подписи и "haba-haba", то вы подпись не искажаете. Просто эта добавка не в структуре (нотация ASN.1) и она "игнорируется" :-)