2016-08-19 4 views
0

私はスポンジキャスルを使用しています。私はandroid app(私はbase64バイト配列だと思う)のwebserviceからバイト配列証明書をダウンロードし、それを画面上に表示したい。私は以下のコードを書いたが、それは動作せず、変数はnullである。 さらに、私はそれを画面に表示する方法を知らない。android appにx509certifcateを表示するには

SoapObject result = (SoapObject)envelope.bodyIn;   

        if(result != null) 
        { 
         Object cert= result.getProperty(0); 
         InputStream is = new ByteArrayInputStream(cert.toString().getBytes()); 
         CertificateFactory cf = CertificateFactory.getInstance("X.509","BC"); 
         java.security.cert.Certificate c = cf.generateCertificate(is); 
         X509Certificate t = (X509Certificate) c; 
         System.out.println("ca=" + t.getSubjectDN()); 


        } 

答えて

0

おそらくcert.toString().getBytes()が問題です。証明書はバイナリ形式でエンコードされます。それを構築するには、文字列をバイトに変換するのではなく、バイト配列が必要です。

証明書をバイナリに変換するために証明書を受け取っていることを確認してください。あなたが証明書をBASE64でエンコードされていると思われる場合は、

byte[] data = Base64.decode(base64, Base64.DEFAULT); 

注意もSpongyCastleためのJavaセキュリティAPIプロバイダ名がSCではなく、あなたがたとえば必要なテキストを表示するにはBC

である。この方法でそれをデコードActivityまたはFragment内のTextViewのcontentoを設定します。チュートリアルを最初に手に入れることをお勧めします

+0

ありがとうございます。私のコードを書いた "InputStream is = new ByteArrayInputStream(Base64.decode(cert.toString()、Base64.DEFAULT));"それは大丈夫です。しかし、私は "SC"に誤りがあり、私は "BC"を使用しました。私は画面にx509certificateファイルを表示したいとTextviewはテキストを表示するために使用されます。あなたは私を助けることができますか? –

+0

この簡単な例をあなたのアプリに追加してみてくださいhttps://www.mkyong.com/android/android-hello-world-example/ – pedrofb

+0

事前にpedrofbに感謝しますが、私は画面上にx509certificateファイルをロードしたいと思います。ユーザーは一般タブ、 Android Appの公開Google証明書のようなx509証明書ファイルのDetailtabと証明書パスのタブ。私はGoogle証明書よりもむしろ画面上に私の証明書を開きたい –

関連する問題