Я пытаюсь поставить цифровую подпись XML с помощью RSA SHA 256. Я успешно создал DigestValue, но не понимаю, как создать SignatureValue.
Я пробовал несколько ссылок, но не получил правильного значения. Может ли кто-нибудь подсказать мне, как я могу создать SignatureValue и что мне передать в теге сертификата X509.
Вот мой код.
<request><faxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CO_BDM.xsd" ID="TEST261535">
<txnlist>
<txndata>
<debit>
<stanext>1</stanext>
<accountno>0001545445454151545</accountno>
<amount>10</amount>
<txndesc>IMPS 33TF62697947820171114164820768</txndesc>
<rrnrefno>731903581738</rrnrefno>
<sendername>Vivek</sendername>
<sendermobile>8860745663</sendermobile>
<remarks>ALL RBI REPORTING TO BE COMPLIED AT YOUR END</remarks>
<interbranchifsc>HDFC0000240</interbranchifsc>
<exchname>TRANSFAST</exchname>
<originbankaccrefno>sdefdsfdsfdsf</originbankaccrefno>
<originadd>5513 Limeric Cir Apt 22 null null</originadd>
<remitteractype>43</remitteractype>
</debit>
<credit>
<stanext>2</stanext>
<accountno>30893214568</accountno>
<amount>10</amount>
<txndesc>IMPS P2A </txndesc>
<rrnrefno></rrnrefno>
<paymttype>P2A</paymttype>
<ifsc></ifsc>
<beneacc></beneacc>
<benename></benename>
<purposecode>Pmt to families of NRI</purposecode>
<beneacctype>10</beneacctype>
<beneid></beneid>
</credit>
</txndata>
</txnlist>
</faxml><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="'#'TEST261535">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>CpmtgK1PCVwnJe0EkL6FW175sE5JYltwYhY696OxSSM=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue> </ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>....</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</request>
<?php
//generated digest value like this
$xml = new DomDocument();
$xml->loadXML('file.xml');
$node = $xml->getElementsByTagName('faxml');
$digest_value = base64_encode(hash('SHA256', $node->item(0)->C14N(), true));
?>