9#include <botan/mutex.h>
18 void add_oid(
const OID& oid,
const std::string& str)
24 void add_str2oid(
const OID& oid,
const std::string& str)
26 lock_guard_type<mutex_type> lock(m_mutex);
27 auto i = m_str2oid.find(str);
28 if(i == m_str2oid.end())
29 m_str2oid.insert(std::make_pair(str, oid));
32 void add_oid2str(
const OID& oid,
const std::string& str)
34 const std::string oid_str = oid.to_string();
35 lock_guard_type<mutex_type> lock(m_mutex);
36 auto i = m_oid2str.find(oid_str);
37 if(i == m_oid2str.end())
38 m_oid2str.insert(std::make_pair(oid_str, str));
41 std::string oid2str(
const OID& oid)
43 const std::string oid_str = oid.to_string();
45 lock_guard_type<mutex_type> lock(m_mutex);
47 auto i = m_oid2str.find(oid_str);
48 if(i != m_oid2str.end())
54 OID str2oid(
const std::string& str)
56 lock_guard_type<mutex_type> lock(m_mutex);
57 auto i = m_str2oid.find(str);
58 if(i != m_str2oid.end())
64 static OID_Map& global_registry()
79 std::unordered_map<std::string, OID> m_str2oid;
80 std::unordered_map<std::string, std::string> m_oid2str;
87 OID_Map::global_registry().add_oid(oid,
name);
97 OID_Map::global_registry().add_oid2str(oid,
name);
102 OID_Map::global_registry().add_str2oid(oid,
name);
107 return OID_Map::global_registry().oid2str(oid);
112 return OID_Map::global_registry().str2oid(
name);
std::string to_string() const
int(* final)(unsigned char *, CTX *)
BOTAN_UNSTABLE_API std::string oid2str_or_throw(const OID &oid)
BOTAN_UNSTABLE_API void add_str2oid(const OID &oid, const std::string &name)
BOTAN_UNSTABLE_API void add_oidstr(const char *oidstr, const char *name)
BOTAN_UNSTABLE_API void add_oid2str(const OID &oid, const std::string &name)
std::unordered_map< std::string, OID > load_str2oid_map()
BOTAN_UNSTABLE_API std::string oid2str_or_empty(const OID &oid)
BOTAN_UNSTABLE_API void add_oid(const OID &oid, const std::string &name)
BOTAN_UNSTABLE_API OID str2oid_or_empty(const std::string &name)
std::unordered_map< std::string, std::string > load_oid2str_map()