подписание SOAP message
(1 чел.) (1) гость
  • Страница:
  • 1
  • ...
  • 4
  • 5
  • 6
  • 7
  • 8
  • ...
  • 11

ТЕМА: подписание SOAP message

Re: подписание SOAP message 5 года, 8 мес. назад #704

  • vyarovoy
  • Новый участник
  • Постов: 18
  • Репутация: 0
Баха

Из твоего кода так и не видно keyId ) Ну ничего.

Мурат, вроде бы завелось...но: с кодом
            IIolaCOM2 iolaCrypt = new IolaCOM2();
            iolaCrypt.KeyType = iolaCrypt.CertType =  (int)IOLACOM_STORETYPE.ST_IOLA_PKCS12;
            iolaCrypt.KeyPath = iolaCrypt.CertPath = "c:\\dev\\Projects\\PF_direct\\";
            iolaCrypt.SetPIN("123456");
            string keyUIDs = iolaCrypt.GetKeyUids();
            string[] keyIds = keyUIDs.Split(new String[] { "\r\n" }, StringSplitOptions.None);

            int flag = (int)IOLACOM_OPERFLAGS.SF_DETACHED_DATA;
            string signedXML = iolaCrypt.SignXML(keyIds[0], flag, "utf-16", new StreamReader(newStream).ReadToEnd(), "Header http://schemas.xmlsoap.org/soap/envelope/ bff159a1-ad57-4a40-975d-8b639130f67a");


Получаю exception "Reference require context." (InnerException = null).

Попробовал
int flag = 0
- заработало, но ds:Signature проставляется отдельно, не как header.

Что за exception такой?

Re: подписание SOAP message 5 года, 8 мес. назад #705

  • Baha
  • Осваиваюсь на форуме
  • Постов: 20
  • Репутация: 0
сори
var f = new FileInfo(keyPath);
if (!f.Exists)
{
signature = string.Empty;
return SignatureStatus.KeyPathNotFound;
}
string fileName = f.Name;
string keyId = fileName.Replace(f.Extension, string.Empty);

Re: подписание SOAP message 5 года, 8 мес. назад #706

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Проверьте корректность имени тэга, id тэга и name space.
Модератор

Re: подписание SOAP message 5 года, 8 мес. назад #707

  • Baha
  • Осваиваюсь на форуме
  • Постов: 20
  • Репутация: 0
<responseCode>SIGNATURE_NOT_VALID</responseCode>
как решать эту проблему?
у меня все правильно в подписи?

Re: подписание SOAP message 5 года, 8 мес. назад #708

  • vyarovoy
  • Новый участник
  • Постов: 18
  • Репутация: 0
Баха, сек, дай мне с Муратом прийти к тому же состоянию что и у тебя - пока всё равно ошибка.

Мурат, смотрите - вроде бы всё как вы написали + так же как у Бахи:

мой код
string signedXML = iolaCrypt.SignXML(keyIds[0], flag, "utf-16", new StreamReader(newStream).ReadToEnd(), [b]"Header http://schemas.xmlsoap.org/soap/envelope/ bff159a1-ad57-4a40-975d-8b639130f67a"[/b]);


1. Вы писали

В параметре InSign функции SignXML передайте ParentSignNode ParentNameSpace SignNodeId
где:
ParentSignNode - имя родительского XML тега для размещения подписи
ParentNameSpace - name space этого тега. Если пространство имен есть, но не будет указано - то тег не найдется
SignNodeId - Id XML тега для вычисления подписи


ParentSignNode - я хочу чтобы подпись создалась в тэге Header. Согласно тому что сформировалось у Бахи (поставщик то у нас один и тот же, WSDL он нам дал одну и ту же) Header представлен как soap:Header

ParentNameSpace - у Header нэймспейс это soap и равен он xmlns:soap="schemas.xmlsoap.org/soap/envelope/". Я указал schemas.xmlsoap.org/soap/envelope/ + попробовал schemas.xmlsoap.org/soap/envelope/, не получилось

SignNodeId - а вот с этим вопрос. Я вижу это у вас GUID...это всегда так?

На всякий случай ещё раз свой кусок кода:
            IIolaCOM2 iolaCrypt = new IolaCOM2();
            iolaCrypt.KeyType = iolaCrypt.CertType =  (int)IOLACOM_STORETYPE.ST_IOLA_PKCS12;
            iolaCrypt.KeyPath = iolaCrypt.CertPath = "c:\\dev\\Projects\\PF_direct\\";
            iolaCrypt.SetPIN("123456");
            string keyUIDs = iolaCrypt.GetKeyUids();
            string[] keyIds = keyUIDs.Split(new String[] { "\r\n" }, StringSplitOptions.None);

            int flag = (int)IOLACOM_OPERFLAGS.SF_DETACHED_DATA;
            string signedXML = iolaCrypt.SignXML(keyIds[0], flag, "utf-16", new StreamReader(newStream).ReadToEnd(), "Header http://schemas.xmlsoap.org/soap/envelope/ bff159a1-ad57-4a40-975d-8b639130f67a");

Re: подписание SOAP message 5 года, 8 мес. назад #709

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Если Вам необходимо подписать Body, то это Id тэга Body:

<soap:Body Id="bff159a1-ad57-4a40-975d-8b639130f67a">
Модератор
  • Страница:
  • 1
  • ...
  • 4
  • 5
  • 6
  • 7
  • 8
  • ...
  • 11
FaLang translation system by Faboba