我需要一个OID来将自定义扩展(已经是ASN1.encoded)添加到X.509v3 / PKCS#7数字签名中。我不在乎它是否具有互操作性;这是一个私人专有应用程序(实际上是一个研究项目)。现在我甚至不关心它是否是某个专有应用程序中使用的OID,尽管显然我不能长时间使用该OID。
目前我一直在使用1.2.3.4.5,它位于我正在使用的加密库(cryptlib)的测试代码中。但是,签名创建崩溃了,我不知道这可能是原因。我知道在检查输入时,库至少拒绝了一些无效的OID。
答案 0 :(得分:3)
我怀疑问题是您没有正确编码您用作ASN.1 OBJECT ID对象的OID。我知道Cryptlib但没有使用它所以我不能确定它为什么会崩溃,但我怀疑原因是编码无效而不仅仅是选择不合适的OID值。我怀疑Cryptlib是否对您提供的OID值有任何重要性(除非您可能为已知证书扩展提供OID,例如具有意外值的“基本约束”)。
我从http://www.imc.org/ietf-pkix/pkix-oid.asn注意到PKIX定义了测试的OID范围,如果你(ab)在你的(内部,非官方)测试中使用oid,我希望你不会混淆任何人。测试OID是从1.3.6.1.5.5.7.13开始的。
我有点担心你的“X.509v3 / PKCS#7数字签名”... X.509和PKCS#7真的很不一样。我从你的定制“扩展”的谈话中收集到它是你正在尝试创建的X.509v3证书,而不是PKCS#7签名......这是正确的吗?
答案 1 :(得分:3)
您可以申请“官方”私人OID here,并确保将来发生碰撞安全。
答案 2 :(得分:2)
除了@dajames和@Ken Johnson的(正确)答案之外,如果你不想/需要注册UUID based OID,你也可以使用PEN OID(尽管PEN是从长远来看可能更好。)