Баха, сек, дай мне с Муратом прийти к тому же состоянию что и у тебя - пока всё равно ошибка.
Мурат, смотрите - вроде бы всё как вы написали + так же как у Бахи:
мой код
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");