• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 NET_CERT_PKI_CERT_ERROR_ID_H_
6 #define NET_CERT_PKI_CERT_ERROR_ID_H_
7 
8 #include "net/base/net_export.h"
9 
10 namespace net {
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 NET_EXPORT const char* CertErrorIdToDebugString(CertErrorId id);
34 
35 }  // namespace net
36 
37 #endif  // NET_CERT_PKI_CERT_ERROR_ID_H_
38