I have a government-issued document with the following format (much was redacted as it contained some personal information), which contains a doc/docx file and a certificate, encoded in base64:
<?xml version="1.0" encoding="UTF-8"?>
<gov.il:SignedRoot xmlns:gov.il="http://www.gov.il/xmldigsig/v_1_0_0" version="1.0.0">
<gov.il:SigningAppInfo>
<gov.il:ApplicationName>Sign and Verify</gov.il:ApplicationName>
<gov.il:ApplicationVersion>2.0.0</gov.il:ApplicationVersion>
</gov.il:SigningAppInfo>
<gov.il:SignedObject Id="il-ae******-****-****-****-***********" MimeType="multipart/form-data">
<gov.il:SignedInfo Id="il-ea******-****-****-****-***********">
<gov.il:Data MimeType="multipart/form-data" DataEncodingType="base64">UkVEQUNURUQgV09SRCBET0NVTUVOVA==</gov.il:Data>
<gov.il:OptionalDataParams>
<gov.il:FileName>*****.DOCX</gov.il:FileName>
<gov.il:ContentCreationTime>2018-06-**T**:**:**Z</gov.il:ContentCreationTime>
</gov.il:OptionalDataParams>
</gov.il:SignedInfo>
</gov.il:SignedObject>
<gov.il:Signature xmlns:gov.il="http://www.w3.org/2000/09/xmldsig#" Id="il-********-****-****-****-************">
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="#il-********-****-****-****-************">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>/DJC0pAZUaSAQGe1Pl1eDlap75E=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">UkVEQUNURUQ=</SignatureValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509SubjectName>CN=REDACTED, OU=REDACTED, O=Gov, C=IL</X509SubjectName>
<X509Certificate>UkVEQUNURUQ=</X509Certificate>
</X509Data>
</KeyInfo>
</gov.il:Signature>
</gov.il:SignedRoot>
Whoever sent me this document is expecting me to download and install a "special program" that is able to open the file and validate the signature.
Since this "mysterious format" is a simple XML, I would like to convert the information found in it into some other format, which can be opened or validated without their dedicated software. Ideally the output would be one of these:
- Separate document and certificate files.
- A signed document with an embedded certificate openable in e.g. MS Word.
From what I gathered so far, these are the fields of interest:
<gov.il:Data MimeType="multipart/form-data" DataEncodingType="base64">...</gov.il:Data>
<DigestValue>/DJC0pAZUaSAQGe1Pl1eDlap75E=</DigestValue>
<SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">...</SignatureValue>
<X509Data>
...
</X509Data>
but I don't know what to do from here.
My questions:
- What are the steps I need to take to validate the document manually, using well-known tools, based on the contents of the XML given above? If it matters, I'd appreciate steps that are applicable to Windows. Verbal and pseudocode solutions are welcome!
- Is it possible to re-assemble this information into a valid, signed, MS Word document? If so - how?
P.S.
If this question is a better fit for Information Security, please comment, and I'll flag it for migration.