Мурат, я добавил Id к Body, теперь SignXML работает четко...но ds:Signature по прежнему не в Header. Описываю ниже всё детально, надеюсь на ваш совет.
Как я добавляю Id:
XDocument doc = XDocument.Load(newStream);
XElement body = doc.Element("{http://schemas.xmlsoap.org/soap/envelope/}Envelope").
Element("{http://schemas.xmlsoap.org/soap/envelope/}Body");
string bodyId = Guid.NewGuid().ToString();
body.SetAttributeValue("Id", bodyId);
string idValue = doc.Element("{http://schemas.xmlsoap.org/soap/envelope/}Envelope").
Element("{http://schemas.xmlsoap.org/soap/envelope/}Body").
Attribute("Id").Value;
newStream.SetLength(0);
doc.Save(newStream);
newStream.Position = 0;
После этого я выгнал stream в строку и удостоверился что там только 1 XML документ и в нем Body имеет Id.
// посмотрел что Id появился там где надо
string soapAfterBodyID = new StreamReader(newStream).ReadToEnd();
newStream.Position = 0;
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/ " + bodyId);
newStream.SetLength(0);
StreamWriter signedWriter = new StreamWriter(newStream);
signedWriter.Write(signedXML);
signedWriter.Flush();
newStream.Position = 0;
В результате вот что уходит в ГЦВП:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body Id="0b94d452-6402-4174-9f79-eed8273f3f59"><findInfo xmlns="http://ws.gcvp.idsoftware.kz/"><arg0 xmlns=""><birthdate>кк-кк</birthdate><fatherName>кк</fatherName><firstName>кк</firstName><iin>вв</iin><lastName>кк</lastName><period>6</period><requestNumber>55a27e93-ca85-4bdf-b239-6dfabe2a6a44</requestNumber></arg0></findInfo></soap:Body><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="1"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34310-gost34311"/><ds:Reference URI="#0b94d452-6402-4174-9f79-eed8273f3f59"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34311"/><ds:DigestValue>DqyG4v1npFsXJBfiJ8RmeDegv7M/cKUo5ufuNmZaAAg=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>XJmiCD+HB+y8dogTfivxNXXkrEBbD8ewdh9PqmMdqA6IRx8M4AUxIH6zY5pC1+QXZ3MqKpJIWIfZFgscEMPphw==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>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</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></soap:Envelope>