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"。如果您可以不使用自定义信息类型 - 就这样。
我正在研究 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"。如果您可以不使用自定义信息类型 - 就这样。