如何计算XAdES签名的SignedProperties的摘要?

时间:2015-09-24 09:07:38

标签: digital-signature digest xml-signature

关于如何计算XAdES签名中SignedProperties元素的摘要,我几天都在苦苦挣扎。我有一个参考XML文件,其中计算了两个摘要值(正在签名的文件和签名的属性),我知道它很好,因为它通过了验证程序。我为正在签名的文件计算了正确的摘要值,但无论我作为摘要方法的输入(我使用OpenSSL),我都无法获得与参考文件中相同的值。当然,我自己的文件在此之后不会通过验证程序。我使用以下命令来计算摘要:

openssl dgst -sha256 -binary myfile.xml | openssl base64

我通过提取引用文件的SignedProperties元素并将其保存原样来记录文件myfile.xml。

<xades:SignedProperties Id="xmldsig-f6a6a2a1-87af-4720-8eed-cf4532e99106-signedprops"><xades:SignedSignatureProperties><xades:SigningTime>2015-09-22T09:02:48.624+02:00</xades:SigningTime><xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>cAJECbIzXZiLH+ILWPrM5jfA13GKcEC8t1qe7/BxqBM=</ds:DigestValue></xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>CN=thawte SHA256 Code Signing CA,O=thawte\, Inc.,C=US</ds:X509IssuerName><ds:X509SerialNumber>13010307134774063901853305426952669967</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#xmldsig-f6a6a2a1-87af-4720-8eed-cf4532e99106-ref0"><xades:Description>signature détachée du fichier indexfile.txt</xades:Description><xades:MimeType>text/plain</xades:MimeType></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:SignedProperties>

显然,我应该得到价值:

6JK3GHDL25+EIRefNMQJ3SOGSI8uzQ45PiziMomZkYs=

但我无法得到它。我不知道是否必须应用某些转换或规范化,规范对此部分非常模糊。它以UTF-8编码,没有换行符。

有人怎么做?任何伎俩?

1 个答案:

答案 0 :(得分:4)

我终于找到了如何获得正确的摘要值。显然,必须将相同的规范化算法应用于SignedProperties元素,尽管在建议中没有对此进行精确描述。我在生成封装形式时错过了两件重要的事情:

  1. 必须明确打开和关闭自动关闭的代码:变为
  2. 祖先元素中声明的任何名称空间必须在文档子集的根元素中报告,即使它未在此特定子集中使用,我发现这很奇怪。
  3. 无论如何,该子集的正确册选形式是:

    <xades:SignedProperties xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:xades141="http://uri.etsi.org/01903/v1.4.1#" Id="SignedProperties"><xades:SignedSignatureProperties><xades:SigningTime>2015-09-22T09:02:48.624+02:00</xades:SigningTime><xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod><ds:DigestValue>cAJECbIzXZiLH+ILWPrM5jfA13GKcEC8t1qe7/BxqBM=</ds:DigestValue></xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>CN=thawte SHA256 Code Signing CA,O=thawte\, Inc.,C=US</ds:X509IssuerName><ds:X509SerialNumber>13010307134774063901853305426952669967</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#SignedFile"><xades:Description>signature détachée du fichier indexfile.txt</xades:Description><xades:MimeType>text/plain</xades:MimeType></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties>
    
相关问题