C# Digital Sign XADES BES sha256 Envelooping compute wrong digestvalue of Object

27 views Asked by At

I've got trouble with Computing digest value I'm testing simple XML

FILE

    //I read it 
    byte[] fileXML = File.ReadAllBytes(sFolder + "\\" + sFileName);
    //convert utf-8
    String myString = Encoding.UTF8.GetString(fileXML);
    fileXML = Encoding.UTF8.GetBytes(myString);
    //transform
    byte[] fileC14NXML = C14NTransform(fileXML);
    //add object node
    String doCument_object = "<" + pref_ds + ":Object Id=\"" + "ID-6eaa264f-7fde-4cd1-a9f7-b       f1edcc4029b" + "\" MimeType=\"text/xml\">" + System.Text.Encoding.UTF8.GetString(fileC14NXML) + "   </" + pref_ds + ":Object>";
    //change to array of bytes 
    fileC14NXML = System.Text.Encoding.UTF8.GetBytes(doCument_object);
    // Hash the data
    SHA256Managed sha256 = new SHA256Managed();
    byte[] hashFileXml = sha256.ComputeHash(fileC14NXML);
    sB64_digestvalue = System.Convert.ToBase64String(hashFileXml,   Base64FormattingOptions.InsertLineBreaks);

In signature file

    <ds:Reference Id="refdok-4857f146-c3aa-4abe-9160-8a95427da856" URI="#ID-6eaa264f-7fde-4cd1- a9f7-bf1edcc4029b"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>YQ/pge2Bm9h/ytOsDbB/YE0yGMrvqnfpkCpG9SL4ipQ=</ds:DigestValue></ds:Reference>

If I check signature dsig aplication tells mi that error in reference , the object could by change

    <ds:Object Id="ID-6eaa264f-7fde-4cd1-a9f7-bf1edcc4029b" MimeType="text/xml"><x a="1" b="2" c="3"></x></ds:Object>

when I'm using application for digital signature I get Referene like that (different digestvalue gqEIiDPlBh1YanMIcPG2upkkWzc7ValUNN9rkLjErnc=)

    <ds:Object Id="ID-6eaa264f-7fde-4cd1-a9f7-bf1edcc4029b" MimeType="text/xml"><x a="1" b="2" c="3"></x></ds:Object>
<ds:Reference Id="ID-e68e3d4c-227f-4ed4-8345-d7f9f72d5b46" URI="#ID-6eaa264f-7fde-4cd1-a9f7-bf1edcc4029b"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>gqEIiDPlBh1YanMIcPG2upkkWzc7ValUNN9rkLjErnc=</ds:DigestValue>
</ds:Reference>

And while verifing digital signature -telling me that's ok.

I need to know what i'm doing wrong

0

There are 0 answers