EC_Group::EC_Group(const OID& domain_oid) { const std::string pem = PEM_for_named_group(OIDS::lookup(domain_oid)); if(pem == "") throw Lookup_Error("No ECC domain data for " + domain_oid.as_string()); *this = EC_Group(pem); m_oid = domain_oid.as_string(); }
std::string lookup(const OID& oid) { const std::string oid_str = oid.as_string(); if(oid_str == "1.0.14888.3.0.5") return "ECKCDSA"; if(oid_str == "1.2.156.10197.1.301") return "sm2p256v1"; if(oid_str == "1.2.156.10197.1.301.1") return "SM2_Sig"; if(oid_str == "1.2.156.10197.1.301.2") return "SM2_Kex"; if(oid_str == "1.2.156.10197.1.301.3") return "SM2_Enc"; if(oid_str == "1.2.156.10197.1.401") return "SM3"; if(oid_str == "1.2.156.10197.1.504") return "RSA/EMSA3(SM3)"; if(oid_str == "1.2.250.1.223.101.256.1") return "frp256v1"; if(oid_str == "1.2.410.200004.1.100.4.3") return "ECKCDSA/EMSA1(SHA-1)"; if(oid_str == "1.2.410.200004.1.100.4.4") return "ECKCDSA/EMSA1(SHA-224)"; if(oid_str == "1.2.410.200004.1.100.4.5") return "ECKCDSA/EMSA1(SHA-256)"; if(oid_str == "1.2.410.200004.1.4") return "SEED/CBC"; if(oid_str == "1.2.643.2.2.19") return "GOST-34.10"; if(oid_str == "1.2.643.2.2.3") return "GOST-34.10/EMSA1(GOST-R-34.11-94)"; if(oid_str == "1.2.643.2.2.35.1") return "gost_256A"; if(oid_str == "1.2.643.2.2.36.0") return "gost_256A"; if(oid_str == "1.2.643.7.1.1.2.2") return "Streebog-256"; if(oid_str == "1.2.643.7.1.1.2.3") return "Streebog-512"; if(oid_str == "1.2.840.10040.4.1") return "DSA"; if(oid_str == "1.2.840.10040.4.3") return "DSA/EMSA1(SHA-160)"; if(oid_str == "1.2.840.10045.2.1") return "ECDSA"; if(oid_str == "1.2.840.10045.3.1.1") return "secp192r1"; if(oid_str == "1.2.840.10045.3.1.2") return "x962_p192v2"; if(oid_str == "1.2.840.10045.3.1.3") return "x962_p192v3"; if(oid_str == "1.2.840.10045.3.1.4") return "x962_p239v1"; if(oid_str == "1.2.840.10045.3.1.5") return "x962_p239v2"; if(oid_str == "1.2.840.10045.3.1.6") return "x962_p239v3"; if(oid_str == "1.2.840.10045.3.1.7") return "secp256r1"; if(oid_str == "1.2.840.10045.4.1") return "ECDSA/EMSA1(SHA-160)"; if(oid_str == "1.2.840.10045.4.3.1") return "ECDSA/EMSA1(SHA-224)"; if(oid_str == "1.2.840.10045.4.3.2") return "ECDSA/EMSA1(SHA-256)"; if(oid_str == "1.2.840.10045.4.3.3") return "ECDSA/EMSA1(SHA-384)"; if(oid_str == "1.2.840.10045.4.3.4") return "ECDSA/EMSA1(SHA-512)"; if(oid_str == "1.2.840.10046.2.1") return "DH"; if(oid_str == "1.2.840.113533.7.66.10") return "CAST-128/CBC"; if(oid_str == "1.2.840.113533.7.66.15") return "KeyWrap.CAST-128"; if(oid_str == "1.2.840.113549.1.1.1") return "RSA"; if(oid_str == "1.2.840.113549.1.1.10") return "RSA/EMSA4"; if(oid_str == "1.2.840.113549.1.1.11") return "RSA/EMSA3(SHA-256)"; if(oid_str == "1.2.840.113549.1.1.12") return "RSA/EMSA3(SHA-384)"; if(oid_str == "1.2.840.113549.1.1.13") return "RSA/EMSA3(SHA-512)"; if(oid_str == "1.2.840.113549.1.1.14") return "RSA/EMSA3(SHA-224)"; if(oid_str == "1.2.840.113549.1.1.16") return "RSA/EMSA3(SHA-512-256)"; if(oid_str == "1.2.840.113549.1.1.4") return "RSA/EMSA3(MD5)"; if(oid_str == "1.2.840.113549.1.1.5") return "RSA/EMSA3(SHA-160)"; if(oid_str == "1.2.840.113549.1.1.7") return "RSA/OAEP"; if(oid_str == "1.2.840.113549.1.1.8") return "MGF1"; if(oid_str == "1.2.840.113549.1.5.12") return "PKCS5.PBKDF2"; if(oid_str == "1.2.840.113549.1.5.13") return "PBE-PKCS5v20"; if(oid_str == "1.2.840.113549.1.9.1") return "PKCS9.EmailAddress"; if(oid_str == "1.2.840.113549.1.9.14") return "PKCS9.ExtensionRequest"; if(oid_str == "1.2.840.113549.1.9.16.3.6") return "KeyWrap.TripleDES"; if(oid_str == "1.2.840.113549.1.9.16.3.7") return "KeyWrap.RC2"; if(oid_str == "1.2.840.113549.1.9.16.3.8") return "Compression.Zlib"; if(oid_str == "1.2.840.113549.1.9.2") return "PKCS9.UnstructuredName"; if(oid_str == "1.2.840.113549.1.9.3") return "PKCS9.ContentType"; if(oid_str == "1.2.840.113549.1.9.4") return "PKCS9.MessageDigest"; if(oid_str == "1.2.840.113549.1.9.7") return "PKCS9.ChallengePassword"; if(oid_str == "1.2.840.113549.2.10") return "HMAC(SHA-384)"; if(oid_str == "1.2.840.113549.2.11") return "HMAC(SHA-512)"; if(oid_str == "1.2.840.113549.2.5") return "MD5"; if(oid_str == "1.2.840.113549.2.7") return "HMAC(SHA-160)"; if(oid_str == "1.2.840.113549.2.8") return "HMAC(SHA-224)"; if(oid_str == "1.2.840.113549.2.9") return "HMAC(SHA-256)"; if(oid_str == "1.2.840.113549.3.2") return "RC2/CBC"; if(oid_str == "1.2.840.113549.3.7") return "TripleDES/CBC"; if(oid_str == "1.3.101.110") return "Curve25519"; if(oid_str == "1.3.101.112") return "Ed25519"; if(oid_str == "1.3.132.0.10") return "secp256k1"; if(oid_str == "1.3.132.0.30") return "secp160r2"; if(oid_str == "1.3.132.0.31") return "secp192k1"; if(oid_str == "1.3.132.0.32") return "secp224k1"; if(oid_str == "1.3.132.0.33") return "secp224r1"; if(oid_str == "1.3.132.0.34") return "secp384r1"; if(oid_str == "1.3.132.0.35") return "secp521r1"; if(oid_str == "1.3.132.0.8") return "secp160r1"; if(oid_str == "1.3.132.0.9") return "secp160k1"; if(oid_str == "1.3.132.1.12") return "ECDH"; if(oid_str == "1.3.14.3.2.26") return "SHA-160"; if(oid_str == "1.3.14.3.2.7") return "DES/CBC"; if(oid_str == "1.3.36.3.2.1") return "RIPEMD-160"; if(oid_str == "1.3.36.3.3.1.2") return "RSA/EMSA3(RIPEMD-160)"; if(oid_str == "1.3.36.3.3.2.5.2.1") return "ECGDSA"; if(oid_str == "1.3.36.3.3.2.5.4.1") return "ECGDSA/EMSA1(RIPEMD-160)"; if(oid_str == "1.3.36.3.3.2.5.4.2") return "ECGDSA/EMSA1(SHA-160)"; if(oid_str == "1.3.36.3.3.2.5.4.3") return "ECGDSA/EMSA1(SHA-224)"; if(oid_str == "1.3.36.3.3.2.5.4.4") return "ECGDSA/EMSA1(SHA-256)"; if(oid_str == "1.3.36.3.3.2.5.4.5") return "ECGDSA/EMSA1(SHA-384)"; if(oid_str == "1.3.36.3.3.2.5.4.6") return "ECGDSA/EMSA1(SHA-512)"; if(oid_str == "1.3.36.3.3.2.8.1.1.1") return "brainpool160r1"; if(oid_str == "1.3.36.3.3.2.8.1.1.11") return "brainpool384r1"; if(oid_str == "1.3.36.3.3.2.8.1.1.13") return "brainpool512r1"; if(oid_str == "1.3.36.3.3.2.8.1.1.3") return "brainpool192r1"; if(oid_str == "1.3.36.3.3.2.8.1.1.5") return "brainpool224r1"; if(oid_str == "1.3.36.3.3.2.8.1.1.7") return "brainpool256r1"; if(oid_str == "1.3.36.3.3.2.8.1.1.9") return "brainpool320r1"; if(oid_str == "1.3.6.1.4.1.11591.12.2") return "Tiger(24,3)"; if(oid_str == "1.3.6.1.4.1.25258.1.3") return "McEliece"; if(oid_str == "1.3.6.1.4.1.25258.1.5") return "XMSS"; if(oid_str == "1.3.6.1.4.1.25258.1.6.1") return "GOST-34.10/EMSA1(SHA-256)"; if(oid_str == "1.3.6.1.4.1.25258.3.1") return "Serpent/CBC"; if(oid_str == "1.3.6.1.4.1.25258.3.101") return "Serpent/GCM"; if(oid_str == "1.3.6.1.4.1.25258.3.102") return "Twofish/GCM"; if(oid_str == "1.3.6.1.4.1.25258.3.2") return "Threefish-512/CBC"; if(oid_str == "1.3.6.1.4.1.25258.3.2.1") return "AES-128/OCB"; if(oid_str == "1.3.6.1.4.1.25258.3.2.2") return "AES-192/OCB"; if(oid_str == "1.3.6.1.4.1.25258.3.2.3") return "AES-256/OCB"; if(oid_str == "1.3.6.1.4.1.25258.3.2.4") return "Serpent/OCB"; if(oid_str == "1.3.6.1.4.1.25258.3.2.5") return "Twofish/OCB"; if(oid_str == "1.3.6.1.4.1.25258.3.3") return "Twofish/CBC"; if(oid_str == "1.3.6.1.4.1.3029.1.2.1") return "ElGamal"; if(oid_str == "1.3.6.1.4.1.311.20.2.2") return "Microsoft SmartcardLogon"; if(oid_str == "1.3.6.1.4.1.8301.3.1.2.9.0.38") return "secp521r1"; if(oid_str == "1.3.6.1.5.5.7.1.1") return "PKIX.AuthorityInformationAccess"; if(oid_str == "1.3.6.1.5.5.7.3.1") return "PKIX.ServerAuth"; if(oid_str == "1.3.6.1.5.5.7.3.2") return "PKIX.ClientAuth"; if(oid_str == "1.3.6.1.5.5.7.3.3") return "PKIX.CodeSigning"; if(oid_str == "1.3.6.1.5.5.7.3.4") return "PKIX.EmailProtection"; if(oid_str == "1.3.6.1.5.5.7.3.5") return "PKIX.IPsecEndSystem"; if(oid_str == "1.3.6.1.5.5.7.3.6") return "PKIX.IPsecTunnel"; if(oid_str == "1.3.6.1.5.5.7.3.7") return "PKIX.IPsecUser"; if(oid_str == "1.3.6.1.5.5.7.3.8") return "PKIX.TimeStamping"; if(oid_str == "1.3.6.1.5.5.7.3.9") return "PKIX.OCSPSigning"; if(oid_str == "1.3.6.1.5.5.7.48.1") return "PKIX.OCSP"; if(oid_str == "1.3.6.1.5.5.7.48.1.1") return "PKIX.OCSP.BasicResponse"; if(oid_str == "1.3.6.1.5.5.7.48.2") return "PKIX.CertificateAuthorityIssuers"; if(oid_str == "1.3.6.1.5.5.7.8.5") return "PKIX.XMPPAddr"; if(oid_str == "2.16.840.1.101.3.4.1.2") return "AES-128/CBC"; if(oid_str == "2.16.840.1.101.3.4.1.22") return "AES-192/CBC"; if(oid_str == "2.16.840.1.101.3.4.1.25") return "KeyWrap.AES-192"; if(oid_str == "2.16.840.1.101.3.4.1.26") return "AES-192/GCM"; if(oid_str == "2.16.840.1.101.3.4.1.27") return "AES-192/CCM"; if(oid_str == "2.16.840.1.101.3.4.1.42") return "AES-256/CBC"; if(oid_str == "2.16.840.1.101.3.4.1.45") return "KeyWrap.AES-256"; if(oid_str == "2.16.840.1.101.3.4.1.46") return "AES-256/GCM"; if(oid_str == "2.16.840.1.101.3.4.1.47") return "AES-256/CCM"; if(oid_str == "2.16.840.1.101.3.4.1.5") return "KeyWrap.AES-128"; if(oid_str == "2.16.840.1.101.3.4.1.6") return "AES-128/GCM"; if(oid_str == "2.16.840.1.101.3.4.1.7") return "AES-128/CCM"; if(oid_str == "2.16.840.1.101.3.4.2.1") return "SHA-256"; if(oid_str == "2.16.840.1.101.3.4.2.10") return "SHA-3(512)"; if(oid_str == "2.16.840.1.101.3.4.2.11") return "SHAKE-128"; if(oid_str == "2.16.840.1.101.3.4.2.12") return "SHAKE-256"; if(oid_str == "2.16.840.1.101.3.4.2.2") return "SHA-384"; if(oid_str == "2.16.840.1.101.3.4.2.3") return "SHA-512"; if(oid_str == "2.16.840.1.101.3.4.2.4") return "SHA-224"; if(oid_str == "2.16.840.1.101.3.4.2.6") return "SHA-512-256"; if(oid_str == "2.16.840.1.101.3.4.2.7") return "SHA-3(224)"; if(oid_str == "2.16.840.1.101.3.4.2.8") return "SHA-3(256)"; if(oid_str == "2.16.840.1.101.3.4.2.9") return "SHA-3(384)"; if(oid_str == "2.16.840.1.101.3.4.3.1") return "DSA/EMSA1(SHA-224)"; if(oid_str == "2.16.840.1.101.3.4.3.10") return "ECDSA/EMSA1(SHA-3(256))"; if(oid_str == "2.16.840.1.101.3.4.3.11") return "ECDSA/EMSA1(SHA-3(384))"; if(oid_str == "2.16.840.1.101.3.4.3.12") return "ECDSA/EMSA1(SHA-3(512))"; if(oid_str == "2.16.840.1.101.3.4.3.13") return "RSA/EMSA3(SHA-3(224))"; if(oid_str == "2.16.840.1.101.3.4.3.14") return "RSA/EMSA3(SHA-3(256))"; if(oid_str == "2.16.840.1.101.3.4.3.15") return "RSA/EMSA3(SHA-3(384))"; if(oid_str == "2.16.840.1.101.3.4.3.16") return "RSA/EMSA3(SHA-3(512))"; if(oid_str == "2.16.840.1.101.3.4.3.2") return "DSA/EMSA1(SHA-256)"; if(oid_str == "2.16.840.1.101.3.4.3.3") return "DSA/EMSA1(SHA-384)"; if(oid_str == "2.16.840.1.101.3.4.3.4") return "DSA/EMSA1(SHA-512)"; if(oid_str == "2.16.840.1.101.3.4.3.5") return "DSA/EMSA1(SHA-3(224))"; if(oid_str == "2.16.840.1.101.3.4.3.6") return "DSA/EMSA1(SHA-3(256))"; if(oid_str == "2.16.840.1.101.3.4.3.7") return "DSA/EMSA1(SHA-3(384))"; if(oid_str == "2.16.840.1.101.3.4.3.8") return "DSA/EMSA1(SHA-3(512))"; if(oid_str == "2.16.840.1.101.3.4.3.9") return "ECDSA/EMSA1(SHA-3(224))"; if(oid_str == "2.5.29.14") return "X509v3.SubjectKeyIdentifier"; if(oid_str == "2.5.29.15") return "X509v3.KeyUsage"; if(oid_str == "2.5.29.17") return "X509v3.SubjectAlternativeName"; if(oid_str == "2.5.29.18") return "X509v3.IssuerAlternativeName"; if(oid_str == "2.5.29.19") return "X509v3.BasicConstraints"; if(oid_str == "2.5.29.20") return "X509v3.CRLNumber"; if(oid_str == "2.5.29.21") return "X509v3.ReasonCode"; if(oid_str == "2.5.29.23") return "X509v3.HoldInstructionCode"; if(oid_str == "2.5.29.24") return "X509v3.InvalidityDate"; if(oid_str == "2.5.29.28") return "X509v3.CRLIssuingDistributionPoint"; if(oid_str == "2.5.29.30") return "X509v3.NameConstraints"; if(oid_str == "2.5.29.31") return "X509v3.CRLDistributionPoints"; if(oid_str == "2.5.29.32") return "X509v3.CertificatePolicies"; if(oid_str == "2.5.29.32.0") return "X509v3.AnyPolicy"; if(oid_str == "2.5.29.35") return "X509v3.AuthorityKeyIdentifier"; if(oid_str == "2.5.29.36") return "X509v3.PolicyConstraints"; if(oid_str == "2.5.29.37") return "X509v3.ExtendedKeyUsage"; if(oid_str == "2.5.4.10") return "X520.Organization"; if(oid_str == "2.5.4.11") return "X520.OrganizationalUnit"; if(oid_str == "2.5.4.12") return "X520.Title"; if(oid_str == "2.5.4.3") return "X520.CommonName"; if(oid_str == "2.5.4.4") return "X520.Surname"; if(oid_str == "2.5.4.42") return "X520.GivenName"; if(oid_str == "2.5.4.43") return "X520.Initials"; if(oid_str == "2.5.4.44") return "X520.GenerationalQualifier"; if(oid_str == "2.5.4.46") return "X520.DNQualifier"; if(oid_str == "2.5.4.5") return "X520.SerialNumber"; if(oid_str == "2.5.4.6") return "X520.Country"; if(oid_str == "2.5.4.65") return "X520.Pseudonym"; if(oid_str == "2.5.4.7") return "X520.Locality"; if(oid_str == "2.5.4.8") return "X520.State"; if(oid_str == "2.5.8.1.1") return "RSA"; #if defined(BOTAN_HOUSE_ECC_CURVE_NAME) if(oid_str == BOTAN_HOUSE_ECC_CURVE_OID) return BOTAN_HOUSE_ECC_CURVE_NAME; #endif return std::string(); }