0

こんにちは、Bouncy Castle Crypto ライブラリで Scala を使用して、ファイルから X.509 証明書を読み込みます。次のコードを使用して、一部の拡張機能の値を読み取ろうとしています。

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]
4

1 に答える 1

0

拡張機能 2.5.29.17 (サブジェクトの別名) のみに関心がある場合は、証明書を使用しないでください。getSubjectAlternativeNames ()? これにより、この特定の拡張機能への優れたオブジェクト指向アクセスが可能になります... もちろん、他の拡張機能用のヘルパー関数もあります。

于 2012-11-05T08:03:12.003 に答える