XAdES 是否支持评论字段?

Does XAdES support a comment field?

我正在研究 XML 签名模块,至少由于时间戳,我投票选择了标准 (XAdES) 并以类似的方式实施它。

我能够深入了解某人可能拥有的角色列表。

不过好像标准里没有角色名的定义?

我遇到的实际问题是:有没有签名? XAdES 的子树支持添加任意评论文本?人们只想在签名时添加一些备注。标准是否预见到了某些事情?

我认为你是对的,标准中没有角色名称的定义。

关于您要添加的 "remark",这似乎是特定于应用程序的。因此,我建议使用 ds:Object 元素,将您的内容放入其中,并对其进行签名。在 xades4j 中,您可以使用 EnvelopedXmlObject.

执行此操作

我找到了我的问题的部分答案:

所以 XAdES 似乎没有预见到要使用的 comment/reason 标签。 Dsig 也不是。因此,人们可能被迫发明自己的东西。为要签名的另一个 <Object> 标签创建自己的架构。

但是Dsig还有一个隐藏的功能:标签<SignatureProperties>

https://blogs.msdn.microsoft.com/shawnfa/2005/11/03/adding-signatureproperties-to-signedxml/ lines out. There is this basically un-connected specified type <SignatureProperties> in the xsd。这意味着在 <Object> 标签内使用以提供 "standardized" 信息。

Backdraw:仍然没有标准化的 id 用于 reason[=29 等标准字段=].

我发现另一个有趣的问题是 comment/reason 使用当前的 MS-Office 版本。例如。一种文件格式为 OfficeOpenXML

office blog 中所述,他们确实也决定使用 XAdES。因此,查看已签名和未压缩的 docx 文件会提供一个 _xmlsignatures/sig1.xml 文件,其中部分内容描述如下:

<Object Id="idOfficeObject">
    <SignatureProperties>
        <SignatureProperty Id="idOfficeV1Details" Target="#idPackageSignature">
            <SignatureInfoV1 xmlns="http://schemas.microsoft.com/office/2006/digsig">
                <SetupID/>
                <SignatureText/>
                <SignatureImage/>
                <SignatureComments>bfghfghf</SignatureComments>
                <WindowsVersion>6.1</WindowsVersion>
                <OfficeVersion>15.0</OfficeVersion>
                <ApplicationVersion>15.0</ApplicationVersion>
                <Monitors>3</Monitors>
                <HorizontalResolution>1920</HorizontalResolution>
                <VerticalResolution>1200</VerticalResolution>
                <ColorDepth>32</ColorDepth>
                <SignatureProviderId>{00000000-0000-0000-0000-000000000000}</SignatureProviderId>
                <SignatureProviderUrl/>
                <SignatureProviderDetails>9</SignatureProviderDetails>
                <SignatureType>1</SignatureType>
            </SignatureInfoV1>
        </SignatureProperty>
    </SignatureProperties>
</Object>
<Object>
    <xd:QualifyingProperties xmlns:xd="http://uri.etsi.org/01903/v1.3.2#" Target="#idPackageSignature">
        <xd:SignedProperties Id="idSignedProperties">
            <xd:SignedSignatureProperties>
                <xd:SigningTime>2016-10-11T11:35:03Z</xd:SigningTime>
                <xd:SigningCertificate>
                    <xd:Cert>
                        <xd:CertDigest>
                            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                            <DigestValue>YBmOrWhKAPGgIl1wrGEI0NrC92Q=</DigestValue>
                        </xd:CertDigest>
                        <xd:IssuerSerial>
                            <X509IssuerName>CN=xxxxxxx DC=xxx, DC=xxx, DC=org</X509IssuerName>
                            <X509SerialNumber>1225454644xxx099413888</X509SerialNumber>
                        </xd:IssuerSerial>
                    </xd:Cert>
                </xd:SigningCertificate>
                <xd:SignaturePolicyIdentifier>
                    <xd:SignaturePolicyImplied/>
                </xd:SignaturePolicyIdentifier>
            </xd:SignedSignatureProperties>
            <xd:SignedDataObjectProperties>
                <xd:CommitmentTypeIndication>
                    <xd:CommitmentTypeId>
                        <xd:Identifier>http://uri.etsi.org/01903/v1.2.2#ProofOfOrigin</xd:Identifier>
                        <xd:Description>Hat dieses Dokument erstellt und genehmigt</xd:Description>
                    </xd:CommitmentTypeId>
                    <xd:AllSignedDataObjects/>
                    <xd:CommitmentTypeQualifiers>
                        <xd:CommitmentTypeQualifier>bfghfghf</xd:CommitmentTypeQualifier>
                    </xd:CommitmentTypeQualifiers>
                </xd:CommitmentTypeIndication>
            </xd:SignedDataObjectProperties>
        </xd:SignedProperties>
        <xd:UnsignedProperties>
          ...
        </xd:UnsignedProperties>
    </xd:QualifyingProperties>
</Object>

我们认识到这一点:

  • 签名中嵌入了对象
  • 一个签名的 属性 (idOfficeV1Details) 在自定义命名空间中是自定义的。
  • 但它包含明文注释。
  • 然而 <xd:CommitmentTypeIndication>
  • 中还有更多内容
  • 它有这个 <xd:CommitmentTypeQualifier>bfghfghf</xd:CommitmentTypeQualifier> 重复评论。

因此可以假设:"Maybe it is enough to just include the CommitmentTypeQualifier as a container for the comment/reason and that's it"。如果您可以不使用自定义信息类型 -​​ 就这样。