• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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