12#include <botan/internal/oid_map.h>
13#include <unordered_map>
19std::vector<std::pair<const char*, std::vector<uint32_t>>> oid_maps() {
22 {
"AES-128/CBC", {2, 16, 840, 1, 101, 3, 4, 1, 2}},
23 {
"AES-128/CCM", {2, 16, 840, 1, 101, 3, 4, 1, 7}},
24 {
"AES-128/GCM", {2, 16, 840, 1, 101, 3, 4, 1, 6}},
25 {
"AES-128/OCB", {1, 3, 6, 1, 4, 1, 25258, 3, 2, 1}},
26 {
"AES-128/SIV", {1, 3, 6, 1, 4, 1, 25258, 3, 4, 1}},
27 {
"AES-192/CBC", {2, 16, 840, 1, 101, 3, 4, 1, 22}},
28 {
"AES-192/CCM", {2, 16, 840, 1, 101, 3, 4, 1, 27}},
29 {
"AES-192/GCM", {2, 16, 840, 1, 101, 3, 4, 1, 26}},
30 {
"AES-192/OCB", {1, 3, 6, 1, 4, 1, 25258, 3, 2, 2}},
31 {
"AES-192/SIV", {1, 3, 6, 1, 4, 1, 25258, 3, 4, 2}},
32 {
"AES-256/CBC", {2, 16, 840, 1, 101, 3, 4, 1, 42}},
33 {
"AES-256/CCM", {2, 16, 840, 1, 101, 3, 4, 1, 47}},
34 {
"AES-256/GCM", {2, 16, 840, 1, 101, 3, 4, 1, 46}},
35 {
"AES-256/OCB", {1, 3, 6, 1, 4, 1, 25258, 3, 2, 3}},
36 {
"AES-256/SIV", {1, 3, 6, 1, 4, 1, 25258, 3, 4, 3}},
37 {
"CAST-128/CBC", {1, 2, 840, 113533, 7, 66, 10}},
38 {
"Camellia-128/CBC", {1, 2, 392, 200011, 61, 1, 1, 1, 2}},
39 {
"Camellia-128/GCM", {0, 3, 4401, 5, 3, 1, 9, 6}},
40 {
"Camellia-128/OCB", {1, 3, 6, 1, 4, 1, 25258, 3, 2, 6}},
41 {
"Camellia-128/SIV", {1, 3, 6, 1, 4, 1, 25258, 3, 4, 6}},
42 {
"Camellia-192/CBC", {1, 2, 392, 200011, 61, 1, 1, 1, 3}},
43 {
"Camellia-192/GCM", {0, 3, 4401, 5, 3, 1, 9, 26}},
44 {
"Camellia-192/OCB", {1, 3, 6, 1, 4, 1, 25258, 3, 2, 7}},
45 {
"Camellia-192/SIV", {1, 3, 6, 1, 4, 1, 25258, 3, 4, 7}},
46 {
"Camellia-256/CBC", {1, 2, 392, 200011, 61, 1, 1, 1, 4}},
47 {
"Camellia-256/GCM", {0, 3, 4401, 5, 3, 1, 9, 46}},
48 {
"Camellia-256/OCB", {1, 3, 6, 1, 4, 1, 25258, 3, 2, 8}},
49 {
"Camellia-256/SIV", {1, 3, 6, 1, 4, 1, 25258, 3, 4, 8}},
50 {
"Certificate Comment", {2, 16, 840, 1, 113730, 1, 13}},
51 {
"ChaCha20Poly1305", {1, 2, 840, 113549, 1, 9, 16, 3, 18}},
52 {
"ClassicMcEliece_348864", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 1}},
53 {
"ClassicMcEliece_348864f", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 2}},
54 {
"ClassicMcEliece_460896", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 3}},
55 {
"ClassicMcEliece_460896f", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 4}},
56 {
"ClassicMcEliece_6688128", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 5}},
57 {
"ClassicMcEliece_6688128f", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 6}},
58 {
"ClassicMcEliece_6688128pc", {1, 3, 6, 1, 4, 1, 25258, 1, 18, 1}},
59 {
"ClassicMcEliece_6688128pcf", {1, 3, 6, 1, 4, 1, 25258, 1, 18, 2}},
60 {
"ClassicMcEliece_6960119", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 7}},
61 {
"ClassicMcEliece_6960119f", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 8}},
62 {
"ClassicMcEliece_6960119pc", {1, 3, 6, 1, 4, 1, 25258, 1, 18, 3}},
63 {
"ClassicMcEliece_6960119pcf", {1, 3, 6, 1, 4, 1, 25258, 1, 18, 4}},
64 {
"ClassicMcEliece_8192128", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 9}},
65 {
"ClassicMcEliece_8192128f", {1, 3, 6, 1, 4, 1, 22554, 5, 1, 10}},
66 {
"ClassicMcEliece_8192128pc", {1, 3, 6, 1, 4, 1, 25258, 1, 18, 5}},
67 {
"ClassicMcEliece_8192128pcf", {1, 3, 6, 1, 4, 1, 25258, 1, 18, 6}},
68 {
"Compression.Zlib", {1, 2, 840, 113549, 1, 9, 16, 3, 8}},
69 {
"DES/CBC", {1, 3, 14, 3, 2, 7}},
70 {
"DH", {1, 2, 840, 10046, 2, 1}},
71 {
"DSA", {1, 2, 840, 10040, 4, 1}},
72 {
"DSA/SHA-1", {1, 2, 840, 10040, 4, 3}},
73 {
"DSA/SHA-224", {2, 16, 840, 1, 101, 3, 4, 3, 1}},
74 {
"DSA/SHA-256", {2, 16, 840, 1, 101, 3, 4, 3, 2}},
75 {
"DSA/SHA-3(224)", {2, 16, 840, 1, 101, 3, 4, 3, 5}},
76 {
"DSA/SHA-3(256)", {2, 16, 840, 1, 101, 3, 4, 3, 6}},
77 {
"DSA/SHA-3(384)", {2, 16, 840, 1, 101, 3, 4, 3, 7}},
78 {
"DSA/SHA-3(512)", {2, 16, 840, 1, 101, 3, 4, 3, 8}},
79 {
"DSA/SHA-384", {2, 16, 840, 1, 101, 3, 4, 3, 3}},
80 {
"DSA/SHA-512", {2, 16, 840, 1, 101, 3, 4, 3, 4}},
81 {
"Dilithium-4x4-AES-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 10, 1}},
82 {
"Dilithium-4x4-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 9, 1}},
83 {
"Dilithium-6x5-AES-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 10, 2}},
84 {
"Dilithium-6x5-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 9, 2}},
85 {
"Dilithium-8x7-AES-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 10, 3}},
86 {
"Dilithium-8x7-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 9, 3}},
87 {
"ECDH", {1, 3, 132, 1, 12}},
88 {
"ECDSA", {1, 2, 840, 10045, 2, 1}},
89 {
"ECDSA/SHA-1", {1, 2, 840, 10045, 4, 1}},
90 {
"ECDSA/SHA-224", {1, 2, 840, 10045, 4, 3, 1}},
91 {
"ECDSA/SHA-256", {1, 2, 840, 10045, 4, 3, 2}},
92 {
"ECDSA/SHA-3(224)", {2, 16, 840, 1, 101, 3, 4, 3, 9}},
93 {
"ECDSA/SHA-3(256)", {2, 16, 840, 1, 101, 3, 4, 3, 10}},
94 {
"ECDSA/SHA-3(384)", {2, 16, 840, 1, 101, 3, 4, 3, 11}},
95 {
"ECDSA/SHA-3(512)", {2, 16, 840, 1, 101, 3, 4, 3, 12}},
96 {
"ECDSA/SHA-384", {1, 2, 840, 10045, 4, 3, 3}},
97 {
"ECDSA/SHA-512", {1, 2, 840, 10045, 4, 3, 4}},
98 {
"ECGDSA", {1, 3, 36, 3, 3, 2, 5, 2, 1}},
99 {
"ECGDSA/RIPEMD-160", {1, 3, 36, 3, 3, 2, 5, 4, 1}},
100 {
"ECGDSA/SHA-1", {1, 3, 36, 3, 3, 2, 5, 4, 2}},
101 {
"ECGDSA/SHA-224", {1, 3, 36, 3, 3, 2, 5, 4, 3}},
102 {
"ECGDSA/SHA-256", {1, 3, 36, 3, 3, 2, 5, 4, 4}},
103 {
"ECGDSA/SHA-384", {1, 3, 36, 3, 3, 2, 5, 4, 5}},
104 {
"ECGDSA/SHA-512", {1, 3, 36, 3, 3, 2, 5, 4, 6}},
105 {
"ECKCDSA", {1, 0, 14888, 3, 0, 5}},
106 {
"ECKCDSA/SHA-1", {1, 2, 410, 200004, 1, 100, 4, 3}},
107 {
"ECKCDSA/SHA-224", {1, 2, 410, 200004, 1, 100, 4, 4}},
108 {
"ECKCDSA/SHA-256", {1, 2, 410, 200004, 1, 100, 4, 5}},
109 {
"Ed25519", {1, 3, 101, 112}},
110 {
"Ed448", {1, 3, 101, 113}},
111 {
"ElGamal", {1, 3, 6, 1, 4, 1, 3029, 1, 2, 1}},
112 {
"FrodoKEM-1344-AES", {1, 3, 6, 1, 4, 1, 25258, 1, 15, 3}},
113 {
"FrodoKEM-1344-SHAKE", {1, 3, 6, 1, 4, 1, 25258, 1, 14, 3}},
114 {
"FrodoKEM-640-AES", {1, 3, 6, 1, 4, 1, 25258, 1, 15, 1}},
115 {
"FrodoKEM-640-SHAKE", {1, 3, 6, 1, 4, 1, 25258, 1, 14, 1}},
116 {
"FrodoKEM-976-AES", {1, 3, 6, 1, 4, 1, 25258, 1, 15, 2}},
117 {
"FrodoKEM-976-SHAKE", {1, 3, 6, 1, 4, 1, 25258, 1, 14, 2}},
118 {
"GOST-34.10", {1, 2, 643, 2, 2, 19}},
119 {
"GOST-34.10-2012-256", {1, 2, 643, 7, 1, 1, 1, 1}},
120 {
"GOST-34.10-2012-256/SHA-256", {1, 3, 6, 1, 4, 1, 25258, 1, 6, 1}},
121 {
"GOST-34.10-2012-256/Streebog-256", {1, 2, 643, 7, 1, 1, 3, 2}},
122 {
"GOST-34.10-2012-512", {1, 2, 643, 7, 1, 1, 1, 2}},
123 {
"GOST-34.10-2012-512/Streebog-512", {1, 2, 643, 7, 1, 1, 3, 3}},
124 {
"GOST-34.10/GOST-R-34.11-94", {1, 2, 643, 2, 2, 3}},
125 {
"GOST.INN", {1, 2, 643, 3, 131, 1, 1}},
126 {
"GOST.IssuerSigningTool", {1, 2, 643, 100, 112}},
127 {
"GOST.OGRN", {1, 2, 643, 100, 1}},
128 {
"GOST.SubjectSigningTool", {1, 2, 643, 100, 111}},
129 {
"HMAC(SHA-1)", {1, 2, 840, 113549, 2, 7}},
130 {
"HMAC(SHA-224)", {1, 2, 840, 113549, 2, 8}},
131 {
"HMAC(SHA-256)", {1, 2, 840, 113549, 2, 9}},
132 {
"HMAC(SHA-384)", {1, 2, 840, 113549, 2, 10}},
133 {
"HMAC(SHA-512)", {1, 2, 840, 113549, 2, 11}},
134 {
"HMAC(SHA-512-256)", {1, 2, 840, 113549, 2, 13}},
135 {
"HSS-LMS", {1, 2, 840, 113549, 1, 9, 16, 3, 17}},
136 {
"HSS-LMS-Private-Key", {1, 3, 6, 1, 4, 1, 25258, 1, 13}},
137 {
"KeyWrap.AES-128", {2, 16, 840, 1, 101, 3, 4, 1, 5}},
138 {
"KeyWrap.AES-192", {2, 16, 840, 1, 101, 3, 4, 1, 25}},
139 {
"KeyWrap.AES-256", {2, 16, 840, 1, 101, 3, 4, 1, 45}},
140 {
"KeyWrap.CAST-128", {1, 2, 840, 113533, 7, 66, 15}},
141 {
"KeyWrap.TripleDES", {1, 2, 840, 113549, 1, 9, 16, 3, 6}},
142 {
"Kyber-1024-90s-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 11, 3}},
143 {
"Kyber-1024-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 7, 3}},
144 {
"Kyber-512-90s-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 11, 1}},
145 {
"Kyber-512-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 7, 1}},
146 {
"Kyber-768-90s-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 11, 2}},
147 {
"Kyber-768-r3", {1, 3, 6, 1, 4, 1, 25258, 1, 7, 2}},
148 {
"MD5", {1, 2, 840, 113549, 2, 5}},
149 {
"MGF1", {1, 2, 840, 113549, 1, 1, 8}},
150 {
"ML-DSA-4x4", {2, 16, 840, 1, 101, 3, 4, 3, 17}},
151 {
"ML-DSA-6x5", {2, 16, 840, 1, 101, 3, 4, 3, 18}},
152 {
"ML-DSA-8x7", {2, 16, 840, 1, 101, 3, 4, 3, 19}},
153 {
"ML-KEM-1024", {2, 16, 840, 1, 101, 3, 4, 4, 3}},
154 {
"ML-KEM-512", {2, 16, 840, 1, 101, 3, 4, 4, 1}},
155 {
"ML-KEM-768", {2, 16, 840, 1, 101, 3, 4, 4, 2}},
156 {
"McEliece", {1, 3, 6, 1, 4, 1, 25258, 1, 3}},
157 {
"Microsoft SmartcardLogon", {1, 3, 6, 1, 4, 1, 311, 20, 2, 2}},
158 {
"Microsoft UPN", {1, 3, 6, 1, 4, 1, 311, 20, 2, 3}},
159 {
"OpenPGP.Curve25519", {1, 3, 6, 1, 4, 1, 3029, 1, 5, 1}},
160 {
"OpenPGP.Ed25519", {1, 3, 6, 1, 4, 1, 11591, 15, 1}},
161 {
"PBE-PKCS5v20", {1, 2, 840, 113549, 1, 5, 13}},
162 {
"PKCS5.PBKDF2", {1, 2, 840, 113549, 1, 5, 12}},
163 {
"PKCS9.ChallengePassword", {1, 2, 840, 113549, 1, 9, 7}},
164 {
"PKCS9.ContentType", {1, 2, 840, 113549, 1, 9, 3}},
165 {
"PKCS9.EmailAddress", {1, 2, 840, 113549, 1, 9, 1}},
166 {
"PKCS9.ExtensionRequest", {1, 2, 840, 113549, 1, 9, 14}},
167 {
"PKCS9.MessageDigest", {1, 2, 840, 113549, 1, 9, 4}},
168 {
"PKCS9.UnstructuredName", {1, 2, 840, 113549, 1, 9, 2}},
169 {
"PKIX.AuthorityInformationAccess", {1, 3, 6, 1, 5, 5, 7, 1, 1}},
170 {
"PKIX.CertificateAuthorityIssuers", {1, 3, 6, 1, 5, 5, 7, 48, 2}},
171 {
"PKIX.ClientAuth", {1, 3, 6, 1, 5, 5, 7, 3, 2}},
172 {
"PKIX.CodeSigning", {1, 3, 6, 1, 5, 5, 7, 3, 3}},
173 {
"PKIX.EmailProtection", {1, 3, 6, 1, 5, 5, 7, 3, 4}},
174 {
"PKIX.IPsecEndSystem", {1, 3, 6, 1, 5, 5, 7, 3, 5}},
175 {
"PKIX.IPsecTunnel", {1, 3, 6, 1, 5, 5, 7, 3, 6}},
176 {
"PKIX.IPsecUser", {1, 3, 6, 1, 5, 5, 7, 3, 7}},
177 {
"PKIX.OCSP", {1, 3, 6, 1, 5, 5, 7, 48, 1}},
178 {
"PKIX.OCSP.BasicResponse", {1, 3, 6, 1, 5, 5, 7, 48, 1, 1}},
179 {
"PKIX.OCSP.NoCheck", {1, 3, 6, 1, 5, 5, 7, 48, 1, 5}},
180 {
"PKIX.OCSPSigning", {1, 3, 6, 1, 5, 5, 7, 3, 9}},
181 {
"PKIX.ServerAuth", {1, 3, 6, 1, 5, 5, 7, 3, 1}},
182 {
"PKIX.TNAuthList", {1, 3, 6, 1, 5, 5, 7, 1, 26}},
183 {
"PKIX.TimeStamping", {1, 3, 6, 1, 5, 5, 7, 3, 8}},
184 {
"PKIX.XMPPAddr", {1, 3, 6, 1, 5, 5, 7, 8, 5}},
185 {
"RIPEMD-160", {1, 3, 36, 3, 2, 1}},
186 {
"RSA", {1, 2, 840, 113549, 1, 1, 1}},
187 {
"RSA/OAEP", {1, 2, 840, 113549, 1, 1, 7}},
188 {
"RSA/PKCS1v15(MD2)", {1, 2, 840, 113549, 1, 1, 2}},
189 {
"RSA/PKCS1v15(MD5)", {1, 2, 840, 113549, 1, 1, 4}},
190 {
"RSA/PKCS1v15(RIPEMD-160)", {1, 3, 36, 3, 3, 1, 2}},
191 {
"RSA/PKCS1v15(SHA-1)", {1, 2, 840, 113549, 1, 1, 5}},
192 {
"RSA/PKCS1v15(SHA-224)", {1, 2, 840, 113549, 1, 1, 14}},
193 {
"RSA/PKCS1v15(SHA-256)", {1, 2, 840, 113549, 1, 1, 11}},
194 {
"RSA/PKCS1v15(SHA-3(224))", {2, 16, 840, 1, 101, 3, 4, 3, 13}},
195 {
"RSA/PKCS1v15(SHA-3(256))", {2, 16, 840, 1, 101, 3, 4, 3, 14}},
196 {
"RSA/PKCS1v15(SHA-3(384))", {2, 16, 840, 1, 101, 3, 4, 3, 15}},
197 {
"RSA/PKCS1v15(SHA-3(512))", {2, 16, 840, 1, 101, 3, 4, 3, 16}},
198 {
"RSA/PKCS1v15(SHA-384)", {1, 2, 840, 113549, 1, 1, 12}},
199 {
"RSA/PKCS1v15(SHA-512)", {1, 2, 840, 113549, 1, 1, 13}},
200 {
"RSA/PKCS1v15(SHA-512-256)", {1, 2, 840, 113549, 1, 1, 16}},
201 {
"RSA/PKCS1v15(SM3)", {1, 2, 156, 10197, 1, 504}},
202 {
"RSA/PSS", {1, 2, 840, 113549, 1, 1, 10}},
203 {
"SEED/CBC", {1, 2, 410, 200004, 1, 4}},
204 {
"SHA-1", {1, 3, 14, 3, 2, 26}},
205 {
"SHA-224", {2, 16, 840, 1, 101, 3, 4, 2, 4}},
206 {
"SHA-256", {2, 16, 840, 1, 101, 3, 4, 2, 1}},
207 {
"SHA-3(224)", {2, 16, 840, 1, 101, 3, 4, 2, 7}},
208 {
"SHA-3(256)", {2, 16, 840, 1, 101, 3, 4, 2, 8}},
209 {
"SHA-3(384)", {2, 16, 840, 1, 101, 3, 4, 2, 9}},
210 {
"SHA-3(512)", {2, 16, 840, 1, 101, 3, 4, 2, 10}},
211 {
"SHA-384", {2, 16, 840, 1, 101, 3, 4, 2, 2}},
212 {
"SHA-512", {2, 16, 840, 1, 101, 3, 4, 2, 3}},
213 {
"SHA-512-256", {2, 16, 840, 1, 101, 3, 4, 2, 6}},
214 {
"SHAKE-128", {2, 16, 840, 1, 101, 3, 4, 2, 11}},
215 {
"SHAKE-256", {2, 16, 840, 1, 101, 3, 4, 2, 12}},
216 {
"SLH-DSA-SHA2-128f", {2, 16, 840, 1, 101, 3, 4, 3, 21}},
217 {
"SLH-DSA-SHA2-128s", {2, 16, 840, 1, 101, 3, 4, 3, 20}},
218 {
"SLH-DSA-SHA2-192f", {2, 16, 840, 1, 101, 3, 4, 3, 23}},
219 {
"SLH-DSA-SHA2-192s", {2, 16, 840, 1, 101, 3, 4, 3, 22}},
220 {
"SLH-DSA-SHA2-256f", {2, 16, 840, 1, 101, 3, 4, 3, 25}},
221 {
"SLH-DSA-SHA2-256s", {2, 16, 840, 1, 101, 3, 4, 3, 24}},
222 {
"SLH-DSA-SHAKE-128f", {2, 16, 840, 1, 101, 3, 4, 3, 27}},
223 {
"SLH-DSA-SHAKE-128s", {2, 16, 840, 1, 101, 3, 4, 3, 26}},
224 {
"SLH-DSA-SHAKE-192f", {2, 16, 840, 1, 101, 3, 4, 3, 29}},
225 {
"SLH-DSA-SHAKE-192s", {2, 16, 840, 1, 101, 3, 4, 3, 28}},
226 {
"SLH-DSA-SHAKE-256f", {2, 16, 840, 1, 101, 3, 4, 3, 31}},
227 {
"SLH-DSA-SHAKE-256s", {2, 16, 840, 1, 101, 3, 4, 3, 30}},
228 {
"SM2", {1, 2, 156, 10197, 1, 301, 1}},
229 {
"SM2_Enc", {1, 2, 156, 10197, 1, 301, 3}},
230 {
"SM2_Kex", {1, 2, 156, 10197, 1, 301, 2}},
231 {
"SM2_Sig/SM3", {1, 2, 156, 10197, 1, 501}},
232 {
"SM3", {1, 2, 156, 10197, 1, 401}},
233 {
"SM4/CBC", {1, 2, 156, 10197, 1, 104, 2}},
234 {
"SM4/GCM", {1, 2, 156, 10197, 1, 104, 8}},
235 {
"SM4/OCB", {1, 2, 156, 10197, 1, 104, 100}},
236 {
"SM4/SIV", {1, 3, 6, 1, 4, 1, 25258, 3, 4, 9}},
237 {
"Scrypt", {1, 3, 6, 1, 4, 1, 11591, 4, 11}},
238 {
"Serpent/CBC", {1, 3, 6, 1, 4, 1, 25258, 3, 1}},
239 {
"Serpent/GCM", {1, 3, 6, 1, 4, 1, 25258, 3, 101}},
240 {
"Serpent/OCB", {1, 3, 6, 1, 4, 1, 25258, 3, 2, 4}},
241 {
"Serpent/SIV", {1, 3, 6, 1, 4, 1, 25258, 3, 4, 4}},
242 {
"SphincsPlus-haraka-128f-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 3, 2}},
243 {
"SphincsPlus-haraka-128s-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 3, 1}},
244 {
"SphincsPlus-haraka-192f-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 3, 4}},
245 {
"SphincsPlus-haraka-192s-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 3, 3}},
246 {
"SphincsPlus-haraka-256f-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 3, 6}},
247 {
"SphincsPlus-haraka-256s-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 3, 5}},
248 {
"SphincsPlus-sha2-128f-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 2, 2}},
249 {
"SphincsPlus-sha2-128s-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 2, 1}},
250 {
"SphincsPlus-sha2-192f-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 2, 4}},
251 {
"SphincsPlus-sha2-192s-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 2, 3}},
252 {
"SphincsPlus-sha2-256f-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 2, 6}},
253 {
"SphincsPlus-sha2-256s-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 2, 5}},
254 {
"SphincsPlus-shake-128f-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 1, 2}},
255 {
"SphincsPlus-shake-128s-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 1, 1}},
256 {
"SphincsPlus-shake-192f-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 1, 4}},
257 {
"SphincsPlus-shake-192s-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 1, 3}},
258 {
"SphincsPlus-shake-256f-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 1, 6}},
259 {
"SphincsPlus-shake-256s-r3.1", {1, 3, 6, 1, 4, 1, 25258, 1, 12, 1, 5}},
260 {
"Streebog-256", {1, 2, 643, 7, 1, 1, 2, 2}},
261 {
"Streebog-512", {1, 2, 643, 7, 1, 1, 2, 3}},
262 {
"Threefish-512/CBC", {1, 3, 6, 1, 4, 1, 25258, 3, 2}},
263 {
"TripleDES/CBC", {1, 2, 840, 113549, 3, 7}},
264 {
"Twofish/CBC", {1, 3, 6, 1, 4, 1, 25258, 3, 3}},
265 {
"Twofish/GCM", {1, 3, 6, 1, 4, 1, 25258, 3, 102}},
266 {
"Twofish/OCB", {1, 3, 6, 1, 4, 1, 25258, 3, 2, 5}},
267 {
"Twofish/SIV", {1, 3, 6, 1, 4, 1, 25258, 3, 4, 5}},
268 {
"X25519", {1, 3, 101, 110}},
269 {
"X448", {1, 3, 101, 111}},
270 {
"X509v3.AnyPolicy", {2, 5, 29, 32, 0}},
271 {
"X509v3.AuthorityKeyIdentifier", {2, 5, 29, 35}},
272 {
"X509v3.BasicConstraints", {2, 5, 29, 19}},
273 {
"X509v3.CRLDistributionPoints", {2, 5, 29, 31}},
274 {
"X509v3.CRLIssuingDistributionPoint", {2, 5, 29, 28}},
275 {
"X509v3.CRLNumber", {2, 5, 29, 20}},
276 {
"X509v3.CertificatePolicies", {2, 5, 29, 32}},
277 {
"X509v3.ExtendedKeyUsage", {2, 5, 29, 37}},
278 {
"X509v3.HoldInstructionCode", {2, 5, 29, 23}},
279 {
"X509v3.InvalidityDate", {2, 5, 29, 24}},
280 {
"X509v3.IssuerAlternativeName", {2, 5, 29, 18}},
281 {
"X509v3.KeyUsage", {2, 5, 29, 15}},
282 {
"X509v3.NameConstraints", {2, 5, 29, 30}},
283 {
"X509v3.PolicyConstraints", {2, 5, 29, 36}},
284 {
"X509v3.PrivateKeyUsagePeriod", {2, 5, 29, 16}},
285 {
"X509v3.ReasonCode", {2, 5, 29, 21}},
286 {
"X509v3.SubjectAlternativeName", {2, 5, 29, 17}},
287 {
"X509v3.SubjectKeyIdentifier", {2, 5, 29, 14}},
288 {
"X520.CommonName", {2, 5, 4, 3}},
289 {
"X520.Country", {2, 5, 4, 6}},
290 {
"X520.DNQualifier", {2, 5, 4, 46}},
291 {
"X520.GenerationalQualifier", {2, 5, 4, 44}},
292 {
"X520.GivenName", {2, 5, 4, 42}},
293 {
"X520.Initials", {2, 5, 4, 43}},
294 {
"X520.Locality", {2, 5, 4, 7}},
295 {
"X520.Organization", {2, 5, 4, 10}},
296 {
"X520.OrganizationalUnit", {2, 5, 4, 11}},
297 {
"X520.Pseudonym", {2, 5, 4, 65}},
298 {
"X520.SerialNumber", {2, 5, 4, 5}},
299 {
"X520.State", {2, 5, 4, 8}},
300 {
"X520.StreetAddress", {2, 5, 4, 9}},
301 {
"X520.Surname", {2, 5, 4, 4}},
302 {
"X520.Title", {2, 5, 4, 12}},
303 {
"XMSS", {0, 4, 0, 127, 0, 15, 1, 1, 13, 0}},
304 {
"XMSS-draft12", {1, 3, 6, 1, 4, 1, 25258, 1, 8}},
305 {
"XMSS-draft6", {1, 3, 6, 1, 4, 1, 25258, 1, 5}},
306 {
"brainpool160r1", {1, 3, 36, 3, 3, 2, 8, 1, 1, 1}},
307 {
"brainpool192r1", {1, 3, 36, 3, 3, 2, 8, 1, 1, 3}},
308 {
"brainpool224r1", {1, 3, 36, 3, 3, 2, 8, 1, 1, 5}},
309 {
"brainpool256r1", {1, 3, 36, 3, 3, 2, 8, 1, 1, 7}},
310 {
"brainpool320r1", {1, 3, 36, 3, 3, 2, 8, 1, 1, 9}},
311 {
"brainpool384r1", {1, 3, 36, 3, 3, 2, 8, 1, 1, 11}},
312 {
"brainpool512r1", {1, 3, 36, 3, 3, 2, 8, 1, 1, 13}},
313 {
"eFrodoKEM-1344-AES", {1, 3, 6, 1, 4, 1, 25258, 1, 17, 3}},
314 {
"eFrodoKEM-1344-SHAKE", {1, 3, 6, 1, 4, 1, 25258, 1, 16, 3}},
315 {
"eFrodoKEM-640-AES", {1, 3, 6, 1, 4, 1, 25258, 1, 17, 1}},
316 {
"eFrodoKEM-640-SHAKE", {1, 3, 6, 1, 4, 1, 25258, 1, 16, 1}},
317 {
"eFrodoKEM-976-AES", {1, 3, 6, 1, 4, 1, 25258, 1, 17, 2}},
318 {
"eFrodoKEM-976-SHAKE", {1, 3, 6, 1, 4, 1, 25258, 1, 16, 2}},
319 {
"frp256v1", {1, 2, 250, 1, 223, 101, 256, 1}},
320 {
"gost_256A", {1, 2, 643, 7, 1, 2, 1, 1, 1}},
321 {
"gost_256B", {1, 2, 643, 7, 1, 2, 1, 1, 2}},
322 {
"gost_512A", {1, 2, 643, 7, 1, 2, 1, 2, 1}},
323 {
"gost_512B", {1, 2, 643, 7, 1, 2, 1, 2, 2}},
324 {
"numsp256d1", {1, 3, 6, 1, 4, 1, 25258, 4, 1}},
325 {
"numsp384d1", {1, 3, 6, 1, 4, 1, 25258, 4, 2}},
326 {
"numsp512d1", {1, 3, 6, 1, 4, 1, 25258, 4, 3}},
327 {
"secp160k1", {1, 3, 132, 0, 9}},
328 {
"secp160r1", {1, 3, 132, 0, 8}},
329 {
"secp160r2", {1, 3, 132, 0, 30}},
330 {
"secp192k1", {1, 3, 132, 0, 31}},
331 {
"secp192r1", {1, 2, 840, 10045, 3, 1, 1}},
332 {
"secp224k1", {1, 3, 132, 0, 32}},
333 {
"secp224r1", {1, 3, 132, 0, 33}},
334 {
"secp256k1", {1, 3, 132, 0, 10}},
335 {
"secp256r1", {1, 2, 840, 10045, 3, 1, 7}},
336 {
"secp384r1", {1, 3, 132, 0, 34}},
337 {
"secp521r1", {1, 3, 132, 0, 35}},
338 {
"sm2p256v1", {1, 2, 156, 10197, 1, 301}},
339 {
"x962_p192v2", {1, 2, 840, 10045, 3, 1, 2}},
340 {
"x962_p192v3", {1, 2, 840, 10045, 3, 1, 3}},
341 {
"x962_p239v1", {1, 2, 840, 10045, 3, 1, 4}},
342 {
"x962_p239v2", {1, 2, 840, 10045, 3, 1, 5}},
343 {
"x962_p239v3", {1, 2, 840, 10045, 3, 1, 6}}
350std::unordered_map<OID, std::string> OID_Map::load_oid2str_map() {
351 std::pair<const char*, std::vector<uint32_t>> dup_oids[] = {
353 {
"RSA", {2, 5, 8, 1, 1}},
354 {
"secp521r1", {1, 3, 6, 1, 4, 1, 8301, 3, 1, 2, 9, 0, 38}},
355 {
"gost_256A", {1, 2, 643, 2, 2, 35, 1}},
356 {
"gost_256A", {1, 2, 643, 2, 2, 36, 0}}
360 std::unordered_map<OID, std::string> map;
362 for(
auto& entry : oid_maps()) {
363 map.insert(std::make_pair(OID(std::move(entry.second)), std::string(entry.first)));
366 for(
auto& entry : dup_oids) {
367 map.insert(std::make_pair(OID(std::move(entry.second)), std::string(entry.first)));
373std::unordered_map<std::string, OID> OID_Map::load_str2oid_map() {
374 std::pair<const char*, std::vector<uint32_t>> aliases[] = {
376 {
"Curve25519", {1, 3, 101, 110}},
377 {
"SM2_Sig", {1, 2, 156, 10197, 1, 301, 1}},
378 {
"RSA/EMSA3(MD2)", {1, 2, 840, 113549, 1, 1, 2}},
379 {
"RSA/EMSA3(MD5)", {1, 2, 840, 113549, 1, 1, 4}},
380 {
"RSA/EMSA3(SHA-1)", {1, 2, 840, 113549, 1, 1, 5}},
381 {
"RSA/EMSA3(SHA-256)", {1, 2, 840, 113549, 1, 1, 11}},
382 {
"RSA/EMSA3(SHA-384)", {1, 2, 840, 113549, 1, 1, 12}},
383 {
"RSA/EMSA3(SHA-512)", {1, 2, 840, 113549, 1, 1, 13}},
384 {
"RSA/EMSA3(SHA-224)", {1, 2, 840, 113549, 1, 1, 14}},
385 {
"RSA/EMSA3(SHA-512-256)", {1, 2, 840, 113549, 1, 1, 16}},
386 {
"RSA/EMSA3(SHA-3(224))", {2, 16, 840, 1, 101, 3, 4, 3, 13}},
387 {
"RSA/EMSA3(SHA-3(256))", {2, 16, 840, 1, 101, 3, 4, 3, 14}},
388 {
"RSA/EMSA3(SHA-3(384))", {2, 16, 840, 1, 101, 3, 4, 3, 15}},
389 {
"RSA/EMSA3(SHA-3(512))", {2, 16, 840, 1, 101, 3, 4, 3, 16}},
390 {
"RSA/EMSA3(SM3)", {1, 2, 156, 10197, 1, 504}},
391 {
"RSA/EMSA3(RIPEMD-160)", {1, 3, 36, 3, 3, 1, 2}},
392 {
"RSA/EMSA4", {1, 2, 840, 113549, 1, 1, 10}},
393 {
"PBES2", {1, 2, 840, 113549, 1, 5, 13}}
397 std::unordered_map<std::string, OID> map;
399 for(
auto& entry : oid_maps()) {
400 map.insert(std::make_pair(std::string(entry.first), OID(std::move(entry.second))));
403 for(
auto& entry : aliases) {
404 map.insert(std::make_pair(std::string(entry.first), OID(std::move(entry.second))));