xref: /aosp_15_r20/external/cronet/third_party/boringssl/src/pki/cert_error_id.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2016 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 #ifndef BSSL_PKI_CERT_ERROR_ID_H_
6 #define BSSL_PKI_CERT_ERROR_ID_H_
7 
8 #include <openssl/base.h>
9 
10 namespace bssl {
11 
12 // Each "class" of certificate error/warning has its own unique ID. This is
13 // essentially like an error code, however the value is not stable. Under the
14 // hood these IDs are pointers and use the process's address space to ensure
15 // uniqueness.
16 //
17 // Equality of CertErrorId can be done using the == operator.
18 //
19 // To define new error IDs use the macro DEFINE_CERT_ERROR_ID().
20 using CertErrorId = const void *;
21 
22 // DEFINE_CERT_ERROR_ID() creates a CertErrorId given a non-null C-string
23 // literal. The string should be a textual name for the error which will appear
24 // when pretty-printing errors for debugging. It should be ASCII.
25 //
26 // TODO(crbug.com/634443): Implement this -- add magic to ensure that storage
27 //                         of identical strings isn't pool.
28 #define DEFINE_CERT_ERROR_ID(name, c_str_literal) \
29   const CertErrorId name = c_str_literal
30 
31 // Returns a debug string for a CertErrorId. In practice this returns the
32 // string literal given to DEFINE_CERT_ERROR_ID(), which is human-readable.
33 OPENSSL_EXPORT const char *CertErrorIdToDebugString(CertErrorId id);
34 
35 }  // namespace bssl
36 
37 #endif  // BSSL_PKI_CERT_ERROR_ID_H_
38