我注意到用xades4j标记xades签名元素X509IssuerName提供了一个格式错误的序列号发布者值,它显示了一个PrintableString Hex编码,我搜索xades4j代码,我发现问题是进入DataGenBaseCertRefs类,如果你设置
cert.getIssuerX500Principal()。的getName(X500Principal.RFC1779)
进入generate方法,您可以解决此问题并从中获取发布者值:
2.5.4.5 =#130b3037393435323131303036
到这个
OID.2.5.4.5 = 07945211006
答案 0 :(得分:1)
我不确定改变是否正确。 XML-DSIG声明在编码专有名称时应使用RFC 4514。关于属性类型,在RFC上读取:
如果AttributeType被定义为具有短名称的短名称(...),则使用 descr 。否则,AttributeType被编码为其OBJECT IDENTIFIER的点分十进制编码,数字,。
反过来, numericoid 在RFC 4512上定义如下:
numericoid =数字1 *(DOT编号)
关于属性值,可以读取:
如果AttributeType是点分十进制形式,则AttributeValue由数字符号('#'U + 0023)字符表示,后跟每个八位字节的十六进制编码对X.500 AttributeValue进行BER编码。
我的理解是,由于未知短名称,因此应使用十六进制值。你觉得怎么样?
这实际上让我意识到xades4j正在使用RFC 2253,因为it is the default on getName()。
X509IssuerSerial
上添加了KeyInfo/X509Data
元素?这与cert ref不同吗?