Coverage Report

Created: 2026-06-16 07:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/botan/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
2
OID_Map::OID_Map() {
12
2
   m_str2oid = OID_Map::load_str2oid_map();
13
2
   m_oid2str = OID_Map::load_oid2str_map();
14
2
}
15
16
16
OID_Map& OID_Map::global_registry() {
17
16
   static OID_Map g_map;
18
16
   return g_map;
19
16
}
20
21
8
void OID_Map::add_oid(const OID& oid, std::string_view str) {
22
8
   lock_guard_type<mutex_type> lock(m_mutex);
23
24
8
   auto o2s = m_oid2str.find(oid);
25
26
8
   if(o2s == m_oid2str.end()) {
27
8
      m_oid2str.insert(std::make_pair(oid, str));
28
8
   } else if(o2s->second != str) {
29
0
      throw Invalid_State("Cannot register two different names to a single OID");
30
0
   }
31
32
8
   auto s2o = m_str2oid.find(std::string(str));
33
34
8
   if(s2o == m_str2oid.end()) {
35
8
      m_str2oid.insert(std::make_pair(str, oid));
36
8
   }
37
8
}
38
39
0
void OID_Map::add_str2oid(const OID& oid, std::string_view str) {
40
0
   lock_guard_type<mutex_type> lock(m_mutex);
41
0
   if(!m_str2oid.contains(std::string(str))) {
42
0
      m_str2oid.insert(std::make_pair(str, oid));
43
0
   }
44
0
}
45
46
0
void OID_Map::add_oid2str(const OID& oid, std::string_view str) {
47
0
   lock_guard_type<mutex_type> lock(m_mutex);
48
0
   if(!m_oid2str.contains(oid)) {
49
0
      m_oid2str.insert(std::make_pair(oid, str));
50
0
   }
51
0
}
52
53
8
std::string OID_Map::oid2str(const OID& oid) {
54
8
   lock_guard_type<mutex_type> lock(m_mutex);
55
56
8
   auto i = m_oid2str.find(oid);
57
8
   if(i != m_oid2str.end()) {
58
0
      return i->second;
59
0
   }
60
61
8
   return "";
62
8
}
63
64
0
OID OID_Map::str2oid(std::string_view str) {
65
0
   lock_guard_type<mutex_type> lock(m_mutex);
66
0
   auto i = m_str2oid.find(std::string(str));
67
0
   if(i != m_str2oid.end()) {
68
0
      return i->second;
69
0
   }
70
71
0
   return OID();
72
0
}
73
74
}  // namespace Botan