xref: /aosp_15_r20/external/cronet/net/cert/cert_status_flags.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2011 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "net/cert/cert_status_flags.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "base/check_op.h"
8*6777b538SAndroid Build Coastguard Worker #include "base/notreached.h"
9*6777b538SAndroid Build Coastguard Worker #include "net/base/net_errors.h"
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker namespace net {
12*6777b538SAndroid Build Coastguard Worker 
MapCertStatusToNetError(CertStatus cert_status)13*6777b538SAndroid Build Coastguard Worker int MapCertStatusToNetError(CertStatus cert_status) {
14*6777b538SAndroid Build Coastguard Worker   // A certificate may have multiple errors.  We report the most
15*6777b538SAndroid Build Coastguard Worker   // serious error.
16*6777b538SAndroid Build Coastguard Worker 
17*6777b538SAndroid Build Coastguard Worker   // Unrecoverable errors
18*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_INVALID)
19*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_INVALID;
20*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_PINNED_KEY_MISSING)
21*6777b538SAndroid Build Coastguard Worker     return ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN;
22*6777b538SAndroid Build Coastguard Worker 
23*6777b538SAndroid Build Coastguard Worker   // Potentially recoverable errors
24*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_KNOWN_INTERCEPTION_BLOCKED)
25*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_KNOWN_INTERCEPTION_BLOCKED;
26*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_REVOKED)
27*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_REVOKED;
28*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_AUTHORITY_INVALID)
29*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_AUTHORITY_INVALID;
30*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_COMMON_NAME_INVALID)
31*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_COMMON_NAME_INVALID;
32*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_CERTIFICATE_TRANSPARENCY_REQUIRED)
33*6777b538SAndroid Build Coastguard Worker     return ERR_CERTIFICATE_TRANSPARENCY_REQUIRED;
34*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_SYMANTEC_LEGACY)
35*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_SYMANTEC_LEGACY;
36*6777b538SAndroid Build Coastguard Worker   // CERT_STATUS_NON_UNIQUE_NAME is intentionally not mapped to an error.
37*6777b538SAndroid Build Coastguard Worker   // It is treated as just a warning and used to degrade the SSL UI.
38*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_NAME_CONSTRAINT_VIOLATION)
39*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_NAME_CONSTRAINT_VIOLATION;
40*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_WEAK_SIGNATURE_ALGORITHM)
41*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_WEAK_SIGNATURE_ALGORITHM;
42*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_WEAK_KEY)
43*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_WEAK_KEY;
44*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_DATE_INVALID)
45*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_DATE_INVALID;
46*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_VALIDITY_TOO_LONG)
47*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_VALIDITY_TOO_LONG;
48*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_UNABLE_TO_CHECK_REVOCATION)
49*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_UNABLE_TO_CHECK_REVOCATION;
50*6777b538SAndroid Build Coastguard Worker   if (cert_status & CERT_STATUS_NO_REVOCATION_MECHANISM)
51*6777b538SAndroid Build Coastguard Worker     return ERR_CERT_NO_REVOCATION_MECHANISM;
52*6777b538SAndroid Build Coastguard Worker 
53*6777b538SAndroid Build Coastguard Worker   // Unknown status. The assumption is 0 (an OK status) won't be used here.
54*6777b538SAndroid Build Coastguard Worker   NOTREACHED();
55*6777b538SAndroid Build Coastguard Worker   return ERR_UNEXPECTED;
56*6777b538SAndroid Build Coastguard Worker }
57*6777b538SAndroid Build Coastguard Worker 
58*6777b538SAndroid Build Coastguard Worker }  // namespace net
59