2012-02-27 1 views
2

この例では、コードの一部が欠落しているのだろうかと思います。このclass.IFのcertHeader、certFooterでコンパイル時にエラーが発生しました。 。またはいくつかの場合は、証明書パーサーのより良い例が役立つでしょう。 この例を使用して証明書を解析しています。証明書パーサーin android

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

certHeadercertFooterはint型の変数であるために仮定されています。あなたが私たちに示したことから、どこにでも宣言したようには見えません。

指定された文字が最初に出現する、この文字列内のインデックスを返します

String.indexOfドキュメントから

。このStringオブジェクトによって表される文字列 に値chの文字が含まれている場合、最初のそのようなオカレンスのインデックス (Unicodeコード単位)が返されます。私は(certHeader.lengthにいくつかのコンパイル時のエラーを取得しています

this.charAt(k) == ch 
+0

Thanku Marvin.Again:0から0xFFFFの範囲(両端を含む)中のCHの 値の場合、これは、そのようなこと 最小値kです); (プリミティブ型intにlength()を呼び出せません)。あなたが私にリンクを与える前に証明書パーサーを実装していれば、私はこのプログラムにいくつかの他のエラーがあると思います。 – John

+0

@saurabhverma私はあなたが 'certHeader.length()'で達成しようとしていることを理解していません。あなたが探している_char_の適切なint値として 'certHeader'をすでに宣言していて、' headerIndex'にその文字のインデックスがあると仮定すると、 'certHeader.length'には何が必要でしたか? –

+0

Marvinでも、私はこのコードをhttp://markmail.org/message/ppykrk2mhq5pediq.Evenからコピーしました。私はこのコードが証明書の詳細をどのように返すかを理解しようとしています。 – John