0
你好我使用斯卡拉与充气城堡加密库从一个文件中的X.509证书阅读。我正尝试使用以下代码读取一些扩展的值:解码充气城堡ASN.1对象斯卡拉
val ext = JcaX509ExtensionUtils.parseExtensionValue(certificate.getExtensionValue("2.5.29.17"))
这将返回ASN.1对象,如下所示。
class org.bouncycastle.asn1.DLSequence
我现在需要解码ASN.1对象来获取值。但是,我似乎一轮兜兜,我想不出如何轻松无涉水虽然Java代码亩解码ASN.1对象。当然这不是那么困难?
这是我的代码,并正在努力至今:
import java.io._
import java.security.cert.CertificateFactory
import java.security.Security
import org.bouncycastle.jce.provider._
import org.bouncycastle.cert.jcajce.JcaX509ExtensionUtils
object Main extends App {
Security.addProvider(new BouncyCastleProvider)
val provider = new BouncyCastleProvider
val in = new FileInputStream("cert.cer")
var certificateFactory = CertificateFactory.getInstance("X509", provider)
val certificate = certificateFactory.generateCertificate(in).asInstanceOf[X509CertificateObject]
val ext = JcaX509ExtensionUtils.parseExtensionValue(certificate.getExtensionValue("2.5.29.17"))
println(ext)
}
输出:
[[2]#4c303037313035392e6d6e73756b2e6164726f6f742e6d61726b73616e647370656e6365722e636f6d]
呀 - 感谢。其实我也需要访问其他一些扩展。所以任何指针将不胜感激。我希望能有类似于certificate.getSubjectAlternativeNames函数的其他扩展,除了直接使用ASN.1函数之外,我还找不到任何东西。 – user1513388
那么,你对哪些扩展感兴趣,还没有被X509Certificate类支持(请参阅我的答案中的Javadoc链接)? –