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鏈接)? –