1 // Copyright 2014 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.net; 6 7 import org.jni_zero.CalledByNative; 8 import org.jni_zero.JNINamespace; 9 10 import java.security.cert.CertificateEncodingException; 11 import java.security.cert.X509Certificate; 12 import java.util.ArrayList; 13 import java.util.Collections; 14 import java.util.List; 15 16 /** The result of a certification verification. */ 17 @JNINamespace("net::android") 18 public class AndroidCertVerifyResult { 19 20 /** The verification status. One of the values in CertVerifyStatusAndroid. */ 21 private final int mStatus; 22 23 /** True if the root CA in the chain is in the system store. */ 24 private final boolean mIsIssuedByKnownRoot; 25 26 /** The properly ordered certificate chain used for verification. */ 27 private final List<X509Certificate> mCertificateChain; 28 AndroidCertVerifyResult( int status, boolean isIssuedByKnownRoot, List<X509Certificate> certificateChain)29 public AndroidCertVerifyResult( 30 int status, boolean isIssuedByKnownRoot, List<X509Certificate> certificateChain) { 31 mStatus = status; 32 mIsIssuedByKnownRoot = isIssuedByKnownRoot; 33 mCertificateChain = new ArrayList<X509Certificate>(certificateChain); 34 } 35 AndroidCertVerifyResult(int status)36 public AndroidCertVerifyResult(int status) { 37 mStatus = status; 38 mIsIssuedByKnownRoot = false; 39 mCertificateChain = Collections.<X509Certificate>emptyList(); 40 } 41 42 @CalledByNative getStatus()43 public int getStatus() { 44 return mStatus; 45 } 46 47 @CalledByNative isIssuedByKnownRoot()48 public boolean isIssuedByKnownRoot() { 49 return mIsIssuedByKnownRoot; 50 } 51 52 @CalledByNative getCertificateChainEncoded()53 public byte[][] getCertificateChainEncoded() { 54 byte[][] verifiedChainArray = new byte[mCertificateChain.size()][]; 55 try { 56 for (int i = 0; i < mCertificateChain.size(); i++) { 57 verifiedChainArray[i] = mCertificateChain.get(i).getEncoded(); 58 } 59 } catch (CertificateEncodingException e) { 60 return new byte[0][]; 61 } 62 return verifiedChainArray; 63 } 64 } 65