android中的证书解析器

时间:2012-02-27 18:06:00

标签: android android-ndk android-logcat

我想知道我在这个例子中是否遗漏了一些代码。我在这个类中的certHeader,certFooter上遇到了编译时错误。有人可以给我一个简单的想法,这将有所帮助。或者如果有的话一个有更好的证书解析器示例将有所帮助。 我正在使用此示例来解析证书。

try 
{ 
    String abc = "-----BEGIN CERTIFICATE-----\n" + "ALneIwerZ5Nu+z1Yjvdco9sOHfkhYW4nL+FIlGDGIS +YsyevB8YN2hBnog7gtQ6PB+sVF6o/1UdU\n" + // lines deleted for brevity "rchFUEChHZ5G7AAk02K7/iyqITc/IPNHHpilTg/NB6QhF9s=\n" + "-----END CERTIFICATE-----";

int headerIndex = abc.indexOf(certHeader); 
    if (headerIndex == -1) 
    {
        throw new CertificateParsingException("cannot find BEGIN CERTIFICATE");
        }
    int startIndex = headerIndex + certHeader.length();

int endIndex = abc.indexOf(certFooter);
if (endIndex == -1) 
{
    throw new CertificateParsingException("cannot find END CERTIFICATE"); }

String cert = abc.substring(startIndex, endIndex);
byte[] certBytes = cert.getBytes();

InputStream in = new Base64InputStream(new ByteArrayInputStream(certBytes));

CertificateFactory certFact = CertificateFactory.getInstance ("X.509");
Certificate certGen = certFact.generateCertificate(in);
X509Certificate x509 = (X509Certificate)
certGen; 
}
catch (Exception e) 
{ 
    Log.e("testapp", "exception: " + e.getMessage());
    } 

1 个答案:

答案 0 :(得分:0)

certHeadercertFooter应该是int变量。从您向我们展示的内容来看,您看起来并不像是在任何地方宣布它们。

来自String.indexOf文档:

  

返回第一次出现的字符串中的索引   指定的字符。如果出现值为ch的字符   此String对象表示的字符序列,然后是索引   (以Unicode代码单位)返回第一个此类事件。对于   ch的值在0到0xFFFF(含)的范围内,这是   最小值k使得:

this.charAt(k) == ch