Как сгенерировать значение подписи XML в PHP - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь поставить цифровую подпись 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));
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...