Coverage Report

Created: 2025-12-14 06:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/Botan-3.4.0/src/lib/asn1/oid_map.cpp
Line
Count
Source
1
/*
2
* (C) 2023 Jack Lloyd
3
*
4
* Botan is released under the Simplified BSD License (see license.txt)
5
*/
6
7
#include <botan/internal/oid_map.h>
8
9
namespace Botan {
10
11
3
OID_Map::OID_Map() {
12
3
   m_str2oid = OID_Map::load_str2oid_map();
13
3
   m_oid2str = OID_Map::load_oid2str_map();
14
3
}
15
16
73.9k
OID_Map& OID_Map::global_registry() {
17
73.9k
   static OID_Map g_map;
18
73.9k
   return g_map;
19
73.9k
}
20
21
0
void OID_Map::add_oid(const OID& oid, std::string_view str) {
22
0
   const std::string oid_str = oid.to_string();
23
24
0
   lock_guard_type<mutex_type> lock(m_mutex);
25
26
0
   auto o2s = m_oid2str.find(oid_str);
27
28
0
   if(o2s == m_oid2str.end()) {
29
0
      m_oid2str.insert(std::make_pair(oid_str, str));
30
0
   } else if(o2s->second != str) {
31
0
      throw Invalid_State("Cannot register two different names to a single OID");
32
0
   }
33
34
0
   auto s2o = m_str2oid.find(std::string(str));
35
36
0
   if(s2o == m_str2oid.end()) {
37
0
      m_str2oid.insert(std::make_pair(str, oid));
38
0
   }
39
0
}
40
41
0
void OID_Map::add_str2oid(const OID& oid, std::string_view str) {
42
0
   lock_guard_type<mutex_type> lock(m_mutex);
43
0
   if(!m_str2oid.contains(std::string(str))) {
44
0
      m_str2oid.insert(std::make_pair(str, oid));
45
0
   }
46
0
}
47
48
0
void OID_Map::add_oid2str(const OID& oid, std::string_view str) {
49
0
   const std::string oid_str = oid.to_string();
50
0
   lock_guard_type<mutex_type> lock(m_mutex);
51
0
   if(!m_oid2str.contains(oid_str)) {
52
0
      m_oid2str.insert(std::make_pair(oid_str, str));
53
0
   }
54
0
}
55
56
0
std::string OID_Map::oid2str(const OID& oid) {
57
0
   const std::string oid_str = oid.to_string();
58
59
0
   lock_guard_type<mutex_type> lock(m_mutex);
60
61
0
   auto i = m_oid2str.find(oid_str);
62
0
   if(i != m_oid2str.end()) {
63
0
      return i->second;
64
0
   }
65
66
0
   return "";
67
0
}
68
69
73.9k
OID OID_Map::str2oid(std::string_view str) {
70
73.9k
   lock_guard_type<mutex_type> lock(m_mutex);
71
73.9k
   auto i = m_str2oid.find(std::string(str));
72
73.9k
   if(i != m_str2oid.end()) {
73
73.9k
      return i->second;
74
73.9k
   }
75
76
0
   return OID();
77
73.9k
}
78
79
}  // namespace Botan