我想知道我在这个例子中是否遗漏了一些代码。我在这个类中的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());
}
答案 0 :(得分:0)
certHeader
和certFooter
应该是int变量。从您向我们展示的内容来看,您看起来并不像是在任何地方宣布它们。
来自String.indexOf文档:
返回第一次出现的字符串中的索引 指定的字符。如果出现值为ch的字符 此String对象表示的字符序列,然后是索引 (以Unicode代码单位)返回第一个此类事件。对于 ch的值在0到0xFFFF(含)的范围内,这是 最小值k使得:
this.charAt(k) == ch