diff options
author | lloyd <[email protected]> | 2013-12-25 23:07:38 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2013-12-25 23:07:38 +0000 |
commit | 63ba27496318bb92f620a09ca69d40b1d617e927 (patch) | |
tree | 02a45d9e4835f1aabf3d1c7cc2741825dc682253 /src/asn1/oid_lookup | |
parent | a558fbfb082e1ee9ab77af46ea1d85049dda7028 (diff) |
Store OID info in a pair of maps in distinct storage rather than in
the library state. Remove library state config apis, as OIDS were the
last remaining user.
Diffstat (limited to 'src/asn1/oid_lookup')
-rw-r--r-- | src/asn1/oid_lookup/default.cpp | 243 | ||||
-rw-r--r-- | src/asn1/oid_lookup/info.txt | 5 | ||||
-rw-r--r-- | src/asn1/oid_lookup/oids.cpp | 128 | ||||
-rw-r--r-- | src/asn1/oid_lookup/oids.h | 63 |
4 files changed, 439 insertions, 0 deletions
diff --git a/src/asn1/oid_lookup/default.cpp b/src/asn1/oid_lookup/default.cpp new file mode 100644 index 000000000..e02ed84b9 --- /dev/null +++ b/src/asn1/oid_lookup/default.cpp @@ -0,0 +1,243 @@ +/* +* OID Registry +* (C) 1999-2010,2013 Jack Lloyd +* +* Distributed under the terms of the Botan license +*/ + +#include <botan/oids.h> + +namespace Botan { + +namespace OIDS { + +/* +* Load all of the default OIDs +*/ +void set_defaults() + { + /* Public key types */ + OIDS::add_oid(OID("1.2.840.113549.1.1.1"), "RSA"); + OIDS::add_oid(OID("2.5.8.1.1"), "RSA"); // RSA alternate + OIDS::add_oid(OID("1.2.840.10040.4.1"), "DSA"); + OIDS::add_oid(OID("1.2.840.10046.2.1"), "DH"); + OIDS::add_oid(OID("1.3.6.1.4.1.3029.1.2.1"), "ElGamal"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.1.1"), "RW"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.1.2"), "NR"); + + // X9.62 ecPublicKey, valid for ECDSA and ECDH (RFC 3279 sec 2.3.5) + OIDS::add_oid(OID("1.2.840.10045.2.1"), "ECDSA"); + + /* + * This is an OID defined for ECDH keys though rarely used for such. + * In this configuration it is accepted on decoding, but not used for + * encoding. You can enable it for encoding by calling + * OIDS::add_str2oid("ECDH", "1.3.132.1.12") + * from your application code. + */ + OIDS::add_oid2str(OID("1.3.132.1.12"), "ECDH"); + + OIDS::add_oid(OID("1.2.643.2.2.19"), "GOST-34.10"); // RFC 4491 + + /* Ciphers */ + OIDS::add_oid(OID("1.3.14.3.2.7"), "DES/CBC"); + OIDS::add_oid(OID("1.2.840.113549.3.7"), "TripleDES/CBC"); + OIDS::add_oid(OID("1.2.840.113549.3.2"), "RC2/CBC"); + OIDS::add_oid(OID("1.2.840.113533.7.66.10"), "CAST-128/CBC"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.1.2"), "AES-128/CBC"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.1.22"), "AES-192/CBC"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.1.42"), "AES-256/CBC"); + OIDS::add_oid(OID("1.2.410.200004.1.4"), "SEED/CBC"); // RFC 4010 + OIDS::add_oid(OID("1.3.6.1.4.1.25258.3.1"), "Serpent/CBC"); + + /* Hash Functions */ + OIDS::add_oid(OID("1.2.840.113549.2.5"), "MD5"); + OIDS::add_oid(OID("1.3.6.1.4.1.11591.12.2"), "Tiger(24,3)"); + + OIDS::add_oid(OID("1.3.14.3.2.26"), "SHA-160"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.2.4"), "SHA-224"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.2.1"), "SHA-256"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.2.2"), "SHA-384"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.2.3"), "SHA-512"); + + /* MACs */ + OIDS::add_oid(OID("1.2.840.113549.2.7"), "HMAC(SHA-160)"); + OIDS::add_oid(OID("1.2.840.113549.2.8"), "HMAC(SHA-224)"); + OIDS::add_oid(OID("1.2.840.113549.2.9"), "HMAC(SHA-256)"); + OIDS::add_oid(OID("1.2.840.113549.2.10"), "HMAC(SHA-384)"); + OIDS::add_oid(OID("1.2.840.113549.2.11"), "HMAC(SHA-512)"); + + /* Key Wrap */ + OIDS::add_oid(OID("1.2.840.113549.1.9.16.3.6"), "KeyWrap.TripleDES"); + OIDS::add_oid(OID("1.2.840.113549.1.9.16.3.7"), "KeyWrap.RC2"); + OIDS::add_oid(OID("1.2.840.113533.7.66.15"), "KeyWrap.CAST-128"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.1.5"), "KeyWrap.AES-128"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.1.25"), "KeyWrap.AES-192"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.1.45"), "KeyWrap.AES-256"); + + /* Compression */ + OIDS::add_oid(OID("1.2.840.113549.1.9.16.3.8"), "Compression.Zlib"); + + /* Public key signature schemes */ + OIDS::add_oid(OID("1.2.840.113549.1.1.1"), "RSA/EME-PKCS1-v1_5"); + OIDS::add_oid(OID("1.2.840.113549.1.1.2"), "RSA/EMSA3(MD2)"); + OIDS::add_oid(OID("1.2.840.113549.1.1.4"), "RSA/EMSA3(MD5)"); + OIDS::add_oid(OID("1.2.840.113549.1.1.5"), "RSA/EMSA3(SHA-160)"); + OIDS::add_oid(OID("1.2.840.113549.1.1.11"), "RSA/EMSA3(SHA-256)"); + OIDS::add_oid(OID("1.2.840.113549.1.1.12"), "RSA/EMSA3(SHA-384)"); + OIDS::add_oid(OID("1.2.840.113549.1.1.13"), "RSA/EMSA3(SHA-512)"); + OIDS::add_oid(OID("1.3.36.3.3.1.2"), "RSA/EMSA3(RIPEMD-160)"); + + OIDS::add_oid(OID("1.2.840.10040.4.3"), "DSA/EMSA1(SHA-160)"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.3.1"), "DSA/EMSA1(SHA-224)"); + OIDS::add_oid(OID("2.16.840.1.101.3.4.3.2"), "DSA/EMSA1(SHA-256)"); + + OIDS::add_oid(OID("0.4.0.127.0.7.1.1.4.1.1"), "ECDSA/EMSA1_BSI(SHA-160)"); + OIDS::add_oid(OID("0.4.0.127.0.7.1.1.4.1.2"), "ECDSA/EMSA1_BSI(SHA-224)"); + OIDS::add_oid(OID("0.4.0.127.0.7.1.1.4.1.3"), "ECDSA/EMSA1_BSI(SHA-256)"); + OIDS::add_oid(OID("0.4.0.127.0.7.1.1.4.1.4"), "ECDSA/EMSA1_BSI(SHA-384)"); + OIDS::add_oid(OID("0.4.0.127.0.7.1.1.4.1.5"), "ECDSA/EMSA1_BSI(SHA-512)"); + OIDS::add_oid(OID("0.4.0.127.0.7.1.1.4.1.6"), "ECDSA/EMSA1_BSI(RIPEMD-160)"); + + OIDS::add_oid(OID("1.2.840.10045.4.1"), "ECDSA/EMSA1(SHA-160)"); + OIDS::add_oid(OID("1.2.840.10045.4.3.1"), "ECDSA/EMSA1(SHA-224)"); + OIDS::add_oid(OID("1.2.840.10045.4.3.2"), "ECDSA/EMSA1(SHA-256)"); + OIDS::add_oid(OID("1.2.840.10045.4.3.3"), "ECDSA/EMSA1(SHA-384)"); + OIDS::add_oid(OID("1.2.840.10045.4.3.4"), "ECDSA/EMSA1(SHA-512)"); + + OIDS::add_oid(OID("1.2.643.2.2.3"), "GOST-34.10/EMSA1(GOST-R-34.11-94)"); + + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.1.1"), "RW/EMSA2(RIPEMD-160)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.1.2"), "RW/EMSA2(SHA-160)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.1.3"), "RW/EMSA2(SHA-224)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.1.4"), "RW/EMSA2(SHA-256)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.1.5"), "RW/EMSA2(SHA-384)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.1.6"), "RW/EMSA2(SHA-512)"); + + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.2.1"), "RW/EMSA4(RIPEMD-160)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.2.2"), "RW/EMSA4(SHA-160)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.2.3"), "RW/EMSA4(SHA-224)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.2.4"), "RW/EMSA4(SHA-256)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.2.5"), "RW/EMSA4(SHA-384)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.1.2.6"), "RW/EMSA4(SHA-512)"); + + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.2.1.1"), "NR/EMSA2(RIPEMD-160)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.2.1.2"), "NR/EMSA2(SHA-160)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.2.1.3"), "NR/EMSA2(SHA-224)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.2.1.4"), "NR/EMSA2(SHA-256)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.2.1.5"), "NR/EMSA2(SHA-384)"); + OIDS::add_oid(OID("1.3.6.1.4.1.25258.2.2.1.6"), "NR/EMSA2(SHA-512)"); + + OIDS::add_oid(OID("2.5.4.3"), "X520.CommonName"); + OIDS::add_oid(OID("2.5.4.4"), "X520.Surname"); + OIDS::add_oid(OID("2.5.4.5"), "X520.SerialNumber"); + OIDS::add_oid(OID("2.5.4.6"), "X520.Country"); + OIDS::add_oid(OID("2.5.4.7"), "X520.Locality"); + OIDS::add_oid(OID("2.5.4.8"), "X520.State"); + OIDS::add_oid(OID("2.5.4.10"), "X520.Organization"); + OIDS::add_oid(OID("2.5.4.11"), "X520.OrganizationalUnit"); + OIDS::add_oid(OID("2.5.4.12"), "X520.Title"); + OIDS::add_oid(OID("2.5.4.42"), "X520.GivenName"); + OIDS::add_oid(OID("2.5.4.43"), "X520.Initials"); + OIDS::add_oid(OID("2.5.4.44"), "X520.GenerationalQualifier"); + OIDS::add_oid(OID("2.5.4.46"), "X520.DNQualifier"); + OIDS::add_oid(OID("2.5.4.65"), "X520.Pseudonym"); + + OIDS::add_oid(OID("1.2.840.113549.1.5.12"), "PKCS5.PBKDF2"); + OIDS::add_oid(OID("1.2.840.113549.1.5.1"), "PBE-PKCS5v15(MD2,DES/CBC)"); + OIDS::add_oid(OID("1.2.840.113549.1.5.4"), "PBE-PKCS5v15(MD2,RC2/CBC)"); + OIDS::add_oid(OID("1.2.840.113549.1.5.3"), "PBE-PKCS5v15(MD5,DES/CBC)"); + OIDS::add_oid(OID("1.2.840.113549.1.5.6"), "PBE-PKCS5v15(MD5,RC2/CBC)"); + OIDS::add_oid(OID("1.2.840.113549.1.5.10"), "PBE-PKCS5v15(SHA-160,DES/CBC)"); + OIDS::add_oid(OID("1.2.840.113549.1.5.11"), "PBE-PKCS5v15(SHA-160,RC2/CBC)"); + OIDS::add_oid(OID("1.2.840.113549.1.5.13"), "PBE-PKCS5v20"); + + OIDS::add_oid(OID("1.2.840.113549.1.9.1"), "PKCS9.EmailAddress"); + OIDS::add_oid(OID("1.2.840.113549.1.9.2"), "PKCS9.UnstructuredName"); + OIDS::add_oid(OID("1.2.840.113549.1.9.3"), "PKCS9.ContentType"); + OIDS::add_oid(OID("1.2.840.113549.1.9.4"), "PKCS9.MessageDigest"); + OIDS::add_oid(OID("1.2.840.113549.1.9.7"), "PKCS9.ChallengePassword"); + OIDS::add_oid(OID("1.2.840.113549.1.9.14"), "PKCS9.ExtensionRequest"); + + OIDS::add_oid(OID("1.2.840.113549.1.7.1"), "CMS.DataContent"); + OIDS::add_oid(OID("1.2.840.113549.1.7.2"), "CMS.SignedData"); + OIDS::add_oid(OID("1.2.840.113549.1.7.3"), "CMS.EnvelopedData"); + OIDS::add_oid(OID("1.2.840.113549.1.7.5"), "CMS.DigestedData"); + OIDS::add_oid(OID("1.2.840.113549.1.7.6"), "CMS.EncryptedData"); + OIDS::add_oid(OID("1.2.840.113549.1.9.16.1.2"), "CMS.AuthenticatedData"); + OIDS::add_oid(OID("1.2.840.113549.1.9.16.1.9"), "CMS.CompressedData"); + + OIDS::add_oid(OID("2.5.29.14"), "X509v3.SubjectKeyIdentifier"); + OIDS::add_oid(OID("2.5.29.15"), "X509v3.KeyUsage"); + OIDS::add_oid(OID("2.5.29.17"), "X509v3.SubjectAlternativeName"); + OIDS::add_oid(OID("2.5.29.18"), "X509v3.IssuerAlternativeName"); + OIDS::add_oid(OID("2.5.29.19"), "X509v3.BasicConstraints"); + OIDS::add_oid(OID("2.5.29.20"), "X509v3.CRLNumber"); + OIDS::add_oid(OID("2.5.29.21"), "X509v3.ReasonCode"); + OIDS::add_oid(OID("2.5.29.23"), "X509v3.HoldInstructionCode"); + OIDS::add_oid(OID("2.5.29.24"), "X509v3.InvalidityDate"); + OIDS::add_oid(OID("2.5.29.31"), "X509v3.CRLDistributionPoints"); + OIDS::add_oid(OID("2.5.29.32"), "X509v3.CertificatePolicies"); + OIDS::add_oid(OID("2.5.29.35"), "X509v3.AuthorityKeyIdentifier"); + OIDS::add_oid(OID("2.5.29.36"), "X509v3.PolicyConstraints"); + OIDS::add_oid(OID("2.5.29.37"), "X509v3.ExtendedKeyUsage"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.1.1"), "PKIX.AuthorityInformationAccess"); + + OIDS::add_oid(OID("2.5.29.32.0"), "X509v3.AnyPolicy"); + + OIDS::add_oid(OID("1.3.6.1.5.5.7.3.1"), "PKIX.ServerAuth"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.3.2"), "PKIX.ClientAuth"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.3.3"), "PKIX.CodeSigning"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.3.4"), "PKIX.EmailProtection"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.3.5"), "PKIX.IPsecEndSystem"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.3.6"), "PKIX.IPsecTunnel"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.3.7"), "PKIX.IPsecUser"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.3.8"), "PKIX.TimeStamping"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.3.9"), "PKIX.OCSPSigning"); + + OIDS::add_oid(OID("1.3.6.1.5.5.7.8.5"), "PKIX.XMPPAddr"); + + OIDS::add_oid(OID("1.3.6.1.5.5.7.48.1"), "PKIX.OCSP"); + OIDS::add_oid(OID("1.3.6.1.5.5.7.48.1.1"), "PKIX.OCSP.BasicResponse"); + + /* ECC domain parameters */ + OIDS::add_oid(OID("1.3.132.0.6"), "secp112r1"); + OIDS::add_oid(OID("1.3.132.0.7"), "secp112r2"); + OIDS::add_oid(OID("1.3.132.0.8"), "secp160r1"); + OIDS::add_oid(OID("1.3.132.0.9"), "secp160k1"); + OIDS::add_oid(OID("1.3.132.0.10"), "secp256k1"); + OIDS::add_oid(OID("1.3.132.0.28"), "secp128r1"); + OIDS::add_oid(OID("1.3.132.0.29"), "secp128r2"); + OIDS::add_oid(OID("1.3.132.0.30"), "secp160r2"); + OIDS::add_oid(OID("1.3.132.0.31"), "secp192k1"); + OIDS::add_oid(OID("1.3.132.0.32"), "secp224k1"); + OIDS::add_oid(OID("1.3.132.0.33"), "secp224r1"); + OIDS::add_oid(OID("1.3.132.0.34"), "secp384r1"); + OIDS::add_oid(OID("1.3.132.0.35"), "secp521r1"); + + OIDS::add_oid(OID("1.2.840.10045.3.1.1"), "secp192r1"); + OIDS::add_oid(OID("1.2.840.10045.3.1.2"), "x962_p192v2"); + OIDS::add_oid(OID("1.2.840.10045.3.1.3"), "x962_p192v3"); + OIDS::add_oid(OID("1.2.840.10045.3.1.4"), "x962_p239v1"); + OIDS::add_oid(OID("1.2.840.10045.3.1.5"), "x962_p239v2"); + OIDS::add_oid(OID("1.2.840.10045.3.1.6"), "x962_p239v3"); + OIDS::add_oid(OID("1.2.840.10045.3.1.7"), "secp256r1"); + + OIDS::add_oid(OID("1.3.36.3.3.2.8.1.1.1"), "brainpool160r1"); + OIDS::add_oid(OID("1.3.36.3.3.2.8.1.1.3"), "brainpool192r1"); + OIDS::add_oid(OID("1.3.36.3.3.2.8.1.1.5"), "brainpool224r1"); + OIDS::add_oid(OID("1.3.36.3.3.2.8.1.1.7"), "brainpool256r1"); + OIDS::add_oid(OID("1.3.36.3.3.2.8.1.1.9"), "brainpool320r1"); + OIDS::add_oid(OID("1.3.36.3.3.2.8.1.1.11"), "brainpool384r1"); + OIDS::add_oid(OID("1.3.36.3.3.2.8.1.1.13"), "brainpool512r1"); + + OIDS::add_oid(OID("1.2.643.2.2.35.1"), "gost_256A"); + OIDS::add_oid(OID("1.2.643.2.2.36.0"), "gost_256A"); + + /* CVC */ + OIDS::add_oid(OID("0.4.0.127.0.7.3.1.2.1"), "CertificateHolderAuthorizationTemplate"); + } + +} + +} diff --git a/src/asn1/oid_lookup/info.txt b/src/asn1/oid_lookup/info.txt new file mode 100644 index 000000000..57b51e7d8 --- /dev/null +++ b/src/asn1/oid_lookup/info.txt @@ -0,0 +1,5 @@ +define OID_LOOKUP 20131128 + +<requires> +asn1 +</requires> diff --git a/src/asn1/oid_lookup/oids.cpp b/src/asn1/oid_lookup/oids.cpp new file mode 100644 index 000000000..2546e43f6 --- /dev/null +++ b/src/asn1/oid_lookup/oids.cpp @@ -0,0 +1,128 @@ +/* +* OID Registry +* (C) 1999-2008,2013 Jack Lloyd +* +* Distributed under the terms of the Botan license +*/ + +#include <botan/oids.h> +#include <mutex> + +namespace Botan { + +namespace OIDS { + +namespace { + +class OID_Map + { + public: + void add_oid(const OID& oid, const std::string& str) + { + add_str2oid(oid, str); + add_oid2str(oid, str); + } + + void add_str2oid(const OID& oid, const std::string& str) + { + std::lock_guard<std::mutex> lock(m_mutex); + auto i = m_str2oid.find(str); + if(i == m_str2oid.end()) + m_str2oid.insert(std::make_pair(str, oid)); + } + + void add_oid2str(const OID& oid, const std::string& str) + { + std::lock_guard<std::mutex> lock(m_mutex); + auto i = m_oid2str.find(oid); + if(i == m_oid2str.end()) + m_oid2str.insert(std::make_pair(oid, str)); + } + + std::string lookup(const OID& oid) + { + std::lock_guard<std::mutex> lock(m_mutex); + + auto i = m_oid2str.find(oid); + if(i != m_oid2str.end()) + return i->second; + + return ""; + } + + OID lookup(const std::string& str) + { + std::lock_guard<std::mutex> lock(m_mutex); + + auto i = m_str2oid.find(str); + if(i != m_str2oid.end()) + return i->second; + + // Try to parse as plain OID + try + { + return OID(str); + } + catch(...) {} + + throw Lookup_Error("No object identifier found for " + str); + } + + bool have_oid(const std::string& str) + { + std::lock_guard<std::mutex> lock(m_mutex); + return m_str2oid.find(str) != m_str2oid.end(); + } + + private: + std::mutex m_mutex; + std::map<std::string, OID> m_str2oid; + std::map<OID, std::string> m_oid2str; + }; + +OID_Map& global_oid_map() + { + static OID_Map map; + return map; + } + +} + +void add_oid(const OID& oid, const std::string& name) + { + global_oid_map().add_oid(oid, name); + } + +void add_oid2str(const OID& oid, const std::string& name) + { + global_oid_map().add_oid2str(oid, name); + } + +void add_str2oid(const OID& oid, const std::string& name) + { + global_oid_map().add_oid2str(oid, name); + } + +std::string lookup(const OID& oid) + { + return global_oid_map().lookup(oid); + } + +OID lookup(const std::string& name) + { + return global_oid_map().lookup(name); + } + +bool have_oid(const std::string& name) + { + return global_oid_map().have_oid(name); + } + +bool name_of(const OID& oid, const std::string& name) + { + return (oid == lookup(name)); + } + +} + +} diff --git a/src/asn1/oid_lookup/oids.h b/src/asn1/oid_lookup/oids.h new file mode 100644 index 000000000..386ce09ec --- /dev/null +++ b/src/asn1/oid_lookup/oids.h @@ -0,0 +1,63 @@ +/* +* OID Registry +* (C) 1999-2007 Jack Lloyd +* +* Distributed under the terms of the Botan license +*/ + +#ifndef BOTAN_OIDS_H__ +#define BOTAN_OIDS_H__ + +#include <botan/asn1_oid.h> + +namespace Botan { + +namespace OIDS { + +/** +* Register an OID to string mapping. +* @param oid the oid to register +* @param name the name to be associated with the oid +*/ +BOTAN_DLL void add_oid(const OID& oid, const std::string& name); + +BOTAN_DLL void add_oid2str(const OID& oid, const std::string& name); +BOTAN_DLL void add_str2oid(const OID& oid, const std::string& name); + +/** +* See if an OID exists in the internal table. +* @param oid the oid to check for +* @return true if the oid is registered +*/ +BOTAN_DLL bool have_oid(const std::string& oid); + +/** +* Resolve an OID +* @param oid the OID to look up +* @return name associated with this OID +*/ +BOTAN_DLL std::string lookup(const OID& oid); + +/** +* Find the OID to a name. The lookup will be performed in the +* general OID section of the configuration. +* @param name the name to resolve +* @return OID associated with the specified name +*/ +BOTAN_DLL OID lookup(const std::string& name); + +/** +* Tests whether the specified OID stands for the specified name. +* @param oid the OID to check +* @param name the name to check +* @return true if the specified OID stands for the specified name +*/ +BOTAN_DLL bool name_of(const OID& oid, const std::string& name); + +BOTAN_DLL void set_defaults(); + +} + +} + +#endif |