7#include <botan/internal/oid_map.h>
12 m_str2oid = OID_Map::load_str2oid_map();
13 m_oid2str = OID_Map::load_oid2str_map();
26 if(
auto name = lookup_static_oid(oid)) {
28 throw Invalid_State(
"Cannot register two different names to a single OID");
36 auto o2s = m_oid2str.find(oid);
38 if(o2s == m_oid2str.end()) {
39 m_oid2str.insert(std::make_pair(oid, str));
40 }
else if(o2s->second != str) {
41 throw Invalid_State(
"Cannot register two different names to a single OID");
44 auto s2o = m_str2oid.find(std::string(str));
46 if(s2o == m_str2oid.end()) {
47 m_str2oid.insert(std::make_pair(str, oid));
52 if(lookup_static_oid_name(str).has_value()) {
57 if(!m_str2oid.contains(std::string(str))) {
58 m_str2oid.insert(std::make_pair(str, oid));
63 if(lookup_static_oid(oid).has_value()) {
68 if(!m_oid2str.contains(oid)) {
69 m_oid2str.insert(std::make_pair(oid, str));
74 if(
auto name = lookup_static_oid(oid)) {
75 return std::string(*name);
80 auto i = m_oid2str.find(oid);
81 if(i != m_oid2str.end()) {
89 if(
auto oid = lookup_static_oid_name(str)) {
90 return std::move(*oid);
94 auto i = m_str2oid.find(std::string(str));
95 if(i != m_str2oid.end()) {
void add_oid(const OID &oid, std::string_view str)
static OID_Map & global_registry()
std::optional< std::string > oid2str(const OID &oid)
void add_str2oid(const OID &oid, std::string_view str)
void add_oid2str(const OID &oid, std::string_view str)
OID str2oid(std::string_view str)
secure_vector< T > lock(const std::vector< T > &in)
lock_guard< T > lock_guard_type