1

我注意到使用 xades4j 进行 xades 签名时,元素 X509IssuerName 呈现格式错误的序列号颁发者值,它显示 PrintableString Hex 编码,我搜索 xades4j 代码,发现问题出在 DataGenBaseCertRefs 类中,如果您设置

cert.getIssuerX500Principal().getName(X500Principal.RFC1779)

进入 generate 方法,您可以解决此问题并从中获取颁发者值:

2.5.4.5=#130b3037393435323131303036

对此

OID.2.5.4.5=07945211006

4

1 回答 1

1

我不确定更改是否正确。XML-DSIG 声明在对专有名称进行编码时应使用RFC 4514 。关于属性类型,在该 RFC 上写道:

如果 AttributeType 被定义为具有短名称 (...),则使用该短名称desc。否则,AttributeType 被编码为其 OBJECT IDENTIFIER的点分十进制编码,一个numericoid

反过来,numericoidRFC 4512中定义如下:

numericoid = number 1*( DOT number )

关于属性值,其中之一是:

如果 AttributeType 是点分十进制形式,则 AttributeValue 由数字符号 ('#' U+0023) 字符表示,后跟 X.500 AttributeValue 的 BER 编码的每个八位字节的十六进制编码。

我的理解是,由于不知道短名称,所以应该使用十六进制值。你怎么看?

这实际上让我意识到 xades4j 正在使用 RFC 2253,因为它是 getName() 的默认设置

  • 您是否还包括一个X509IssuerSerial元素KeyInfo/X509Data?那与证书参考不同吗?
  • 您能否通过其他渠道向我发送具有这些测试特征的证书?
于 2014-10-17T22:06:38.897 回答