2017-11-21 27 views
2

XDAES-EPESを使用して文書に署名する必要があり、その目的でPHPを使用しています。PHPを使用するXDAES-EPESでxmlに署名

以下のxmlを使用して、下記の例でダイジェスト値<ds:DigestValue>ql0urtXTsc9W0GMIhTdzYHXnQYfnieoIttOBn9fGw7A=</ds:DigestValue>を計算することができましたが、他の<ds:DigestValue>5JVZPTwN5Lj0sGTfFzaUeMKCo/xbCAj7fw6TLUFtZIk=</ds:DigestValue>がどのように計算されたのでしょうか。

私はテストケースとして、このXMLを使用しています:

<?xml version="1.0" encoding="UTF-8" xs:xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2016/v4.2/FacturaElectronica_V.4.2.xsd"?> 
<FacturaElectronica> 
    <Clave>1</Clave> 
    <NumeroConsecutivo>1</NumeroConsecutivo> 
    <FechaEmision>1</FechaEmision> 
    <Emisor>1</Emisor> 
    <Receptor>1</Receptor> 
    <CondicionVenta>1</CondicionVenta> 
    <CondicionVenta>1</CondicionVenta> 
    <MedioPago>1</MedioPago> 
    <DetalleServicio>1</DetalleServicio> 
    <ResumenFactura>1</ResumenFactura> 
    <Normativa>1</Normativa> 
</FacturaElectronica> 

を私はこれに類似したもの(注:SignatureValueとのX509Certificateが省略されている):でそれに署名することになっています

<ds:Signature Id="id-e34ffbff277e8d1432e864436aa11882" 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 Id="r-id-1" Type="" URI=""> 
      <ds:Transforms> 
       <ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"> 
        <ds:XPath>not(ancestor-or-self::ds:Signature)</ds:XPath> 
       </ds:Transform> 
       <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>ql0urtXTsc9W0GMIhTdzYHXnQYfnieoIttOBn9fGw7A=</ds:DigestValue> 
     </ds:Reference> 
     <ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#xades-ide34ffbff277e8d1432e864436aa11882"> 
      <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>5JVZPTwN5Lj0sGTfFzaUeMKCo/xbCAj7fw6TLUFtZIk=</ds:DigestValue> 
     </ds:Reference> 
    </ds:SignedInfo> 
    <ds:SignatureValue Id="value-ide34ffbff277e8d1432e864436aa11882">Mt1TUuPK3W8/0eRtJX5t45GV9bHvMjw....</ds:SignatureValue> 
    <ds:KeyInfo> 
     <ds:X509Data> 
<ds:X509Certificate>MIIFpTCCBI2gAwIBAgIKK+...</ds:X509Certificate> 
     </ds:X509Data> 
    </ds:KeyInfo> 
    <ds:Object> 
     <xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#ide34ffbff277e8d1432e864436aa11882"> 
      <xades:SignedProperties Id="xades-id-e34ffbff277e8d1432e864436aa11882"> 
       <xades:SignedSignatureProperties> 
        <xades:SigningTime>2016-11-25T16:35:06Z</xades:SigningTime> 
        <xades:SigningCertificate> 
         <xades:Cert> 
          <xades:CertDigest> 
           <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
           <ds:DigestValue>LoXZC86JwDL7zWC35qj7Q4AzrRQ=</ds:DigestValue> 
          </xades:CertDigest> 
          <xades:IssuerSerial> 
           <ds:X509IssuerName>CN=CA SINPE - PERSONA FISICA,OU=DIVISION DE SERVICIOS FINANCIEROS,O=BANCO CENTRAL DE COSTA RICA,C=CR,2.5.4.5=#130c342d3030302d303034303137</ds:X509IssuerName> 
           <ds:X509SerialNumber>207422209224813750547132</ds:X509SerialNumber> 
          </xades:IssuerSerial> 
         </xades:Cert> 
        </xades:SigningCertificate> 
        <xades:SignaturePolicyIdentifier> 
         <xades:SignaturePolicyId> 
          <xades:SigPolicyId> 
           <xades:Identifier>https://tribunet.hacienda.go.cr/docs/esquemas/2016/v4.1/Resolucion_Comprobantes_Electronicos_DGT-R-48-2016.pdf</xades:Identifier> 
          </xades:SigPolicyId> 
          <xades:SigPolicyHash> 
           <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> 
           <ds:DigestValue>NmI5Njk1ZThkNzI0MmIzMGJmZDAyNDc4YjUwNzkzODM2NTBiOWUxNTBkMmI2YjgzYzZjM2I5NTZlNDQ4OWQzMQ==</ds:DigestValue> 
          </xades:SigPolicyHash> 
         </xades:SignaturePolicyId> 
        </xades:SignaturePolicyIdentifier> 
       </xades:SignedSignatureProperties> 
       <xades:SignedDataObjectProperties> 
        <xades:DataObjectFormat ObjectReference="#r-id-1"> 
         <xades:MimeType>application/octet-stream</xades:MimeType> 
        </xades:DataObjectFormat> 
       </xades:SignedDataObjectProperties> 
      </xades:SignedProperties> 
     </xades:QualifyingProperties> 
    </ds:Object> 
</ds:Signature> 
+0

[OK]を取得することを確認してください。しかし、私は署名するためにどのような文書を送るのですか?最初の1つでは、XML全体を送信します。しかし、2番目のハッシュはどうですか? – awavi

答えて

0

私はちょうど同様の話題に読み始めました。それは単なるアイデアであり、試していませんが、ds:Objectの一部であるxades:SignedPropertiesノードから2番目のハッシュが来ると思います。

少なくともオブジェクトと参考文献のid(xades-id-e34ff...)は同一です。

これはあなたに(そして私:-D)ヒントを与えてくれることを願っています。

よろしく、 セバスチャン

+0

ありがとうございます。私はそれを把握するとすぐに私の答えを掲載します。あなたもそうしてください。 – awavi

1

私はherehere読んだものから、私は私が先に述べたものによって立つ:それはノードSignedPropertiesのハッシュです。このハッシュはSignedInfoノードの一部で、後で署名されます。最初のリンクは、磨かれたブログです。それは完璧ではありませんが、Google翻訳はかなりうまくやっていますし、ブログの情報がわかりやすくなりました。

は、ノード正規化とbase64_encode D

P.S:Suerte詐欺ラimplementaciónQUE ESTA desarrollandoパララfacturaエレクトロニカエンコスタリカ;-D

関連する問題