Wai*_*iel 3 java x509certificate
我有一个变量访问的X509Certificate ...
当我尝试获取证书的详细信息时,我设法通过提供的功能轻松获得CriticalExtensions值.
但是我想要达到的是无关键扩展,它存储在certifcate中并由Object ID#2.5.29.32表示
我想要访问的是政策标识号,如下图所示:http://i.stack.imgur.com/xo8zX.png
我使用了以下功能
cert.getExtensionValue("2.5.29.32");
Run Code Online (Sandbox Code Playgroud)
但它没有给我价值..任何人都可以告诉我我做错了什么?
PS:我正在使用java.security.cert.X509Certificate;
Wai*_*iel 10
发现了这个问题.
返回值是需要解码的DER Octet编码值,这里是我用来解码值的代码:
import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.ASN1InputStream;
.
.
.
.
byte[] UID = cert.getExtensionValue("2.5.29.32");
DERObject derObject = toDERObject(UID);
if (derObject instanceof DEROctetString)
{
DEROctetString derOctetString = (DEROctetString)derObject;
derObject = toDERObject(derOctetString.getOctets());
}
System.out.println(derObject.toString());
Run Code Online (Sandbox Code Playgroud)
这是将DER转换为对象的功能.
Static public DERObject toDERObject(byte[] data) throws IOException
{
ByteArrayInputStream inStream = new ByteArrayInputStream(data);
ASN1InputStream DIS = new ASN1InputStream(inStream);
return DIS.readObject();
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助有需要的人.
| 归档时间: |
|
| 查看次数: |
5697 次 |
| 最近记录: |