【问题标题】:Certificate Parser in androidandroid中的证书解析器
【发布时间】:2012-02-27 18:06:00
【问题描述】:

我想知道在这个例子中我是否遗漏了一些代码。我在这个类中的 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());
    } 

【问题讨论】:

    标签: android android-ndk android-logcat


    【解决方案1】:

    certHeadercertFooter 应该是 int 变量。从您向我们展示的内容来看,您似乎没有在任何地方声明它们。

    来自String.indexOf 文档:

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

    this.charAt(k) == ch
    

    【讨论】:

    • Thanku Marvin.Again 我在 certHeader.length(); 上遇到一些编译时错误; (不能在原始类型 int 上调用 length())。如果你在给我链接之前已经实现了证书解析器。因为我认为我在这个程序中会有一些其他错误。
    • @saurabhverma 我不明白你想用certHeader.length() 实现什么。假设您已经将 certHeader 声明为您正在寻找的 char 的适当 int 值,并且您在 headerIndex 中有该 char 的索引,那么您需要 certHeader.length 做什么?
    • Marvin 即使我已经从markmail.org/message/ppykrk2mhq5pediq.Even 复制了这段代码,我也试图了解这段代码将如何返回我的证书详细信息。
    • Marvin 如果你想出了一些很好的例子或者能够实现这个例子来获取证书的详细信息,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2011-02-21
    相关资源
    最近更新 更多