2016-08-19 2 views
0

나는 스폰지 캐슬을 사용합니다. 안드로이드 애플 리케이션에서 webservice에서 바이트 배열 인증서를 다운로드 (내가 생각하는 base64 바이트 배열)이며 화면에 표시하고 싶습니다. 코드 아래에 썼지 만 작동하지 않으며 변수는 null입니다. 또한 화면에 표시하는 방법을 모르겠습니다.안드로이드 애플 리케이션에 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의 내용을 설정합니다. 튜토리얼을 먼저 얻으시기 바랍니다.

+0

고맙습니다. 내 코드를 썼습니다 "InputStream is = new ByteArrayInputStream (Base64.decode (cert.toString(), Base64.DEFAULT));" 그리고 괜찮아. 하지만 "SC"에 오류가 있었고 "BC"를 사용했습니다. x509certificate 파일을 화면에 표시하고 싶습니다. Textview는 텍스트를 표시하는 데 사용됩니다. 도와 주시겠습니까? –

+0

간단한 예제를 app에 추가하십시오. https://www.mkyong.com/android/android-hello-world-example/ – pedrofb

+0

미리 감사드립니다. pedrofb에 감사하지만 화면에 x509certificate 파일을로드하고 일반 탭을 볼 수 있습니다. 안드로이드 응용 프로그램에서 열린 Google 인증서와 같은 x509 인증서 파일의 Detailtab 및 인증서 경로 탭. 하지만 Google 인증서가 아닌 화면에 내 인증서를 열려고합니다 –