207 {
208 if(group_name == "secp256r1") {
209 return Group_Params::SECP256R1;
210 }
211 if(group_name == "secp384r1") {
212 return Group_Params::SECP384R1;
213 }
214 if(group_name == "secp521r1") {
215 return Group_Params::SECP521R1;
216 }
217 if(group_name == "brainpool256r1") {
218 return Group_Params::BRAINPOOL256R1;
219 }
220 if(group_name == "brainpool384r1") {
221 return Group_Params::BRAINPOOL384R1;
222 }
223 if(group_name == "brainpool512r1") {
224 return Group_Params::BRAINPOOL512R1;
225 }
226 if(group_name == "x25519") {
227 return Group_Params::X25519;
228 }
229 if(group_name == "x448") {
230 return Group_Params::X448;
231 }
232
233 if(group_name == "ffdhe/ietf/2048") {
234 return Group_Params::FFDHE_2048;
235 }
236 if(group_name == "ffdhe/ietf/3072") {
237 return Group_Params::FFDHE_3072;
238 }
239 if(group_name == "ffdhe/ietf/4096") {
240 return Group_Params::FFDHE_4096;
241 }
242 if(group_name == "ffdhe/ietf/6144") {
243 return Group_Params::FFDHE_6144;
244 }
245 if(group_name == "ffdhe/ietf/8192") {
246 return Group_Params::FFDHE_8192;
247 }
248
249 if(group_name == "ML-KEM-512") {
250 return Group_Params::ML_KEM_512;
251 }
252 if(group_name == "ML-KEM-768") {
253 return Group_Params::ML_KEM_768;
254 }
255 if(group_name == "ML-KEM-1024") {
256 return Group_Params::ML_KEM_1024;
257 }
258
259 if(group_name == "eFrodoKEM-640-SHAKE") {
260 return Group_Params::eFRODOKEM_640_SHAKE_OQS;
261 }
262 if(group_name == "eFrodoKEM-976-SHAKE") {
263 return Group_Params::eFRODOKEM_976_SHAKE_OQS;
264 }
265 if(group_name == "eFrodoKEM-1344-SHAKE") {
266 return Group_Params::eFRODOKEM_1344_SHAKE_OQS;
267 }
268 if(group_name == "eFrodoKEM-640-AES") {
269 return Group_Params::eFRODOKEM_640_AES_OQS;
270 }
271 if(group_name == "eFrodoKEM-976-AES") {
272 return Group_Params::eFRODOKEM_976_AES_OQS;
273 }
274 if(group_name == "eFrodoKEM-1344-AES") {
275 return Group_Params::eFRODOKEM_1344_AES_OQS;
276 }
277
278 if(group_name == "x25519/ML-KEM-768") {
279 return Group_Params::HYBRID_X25519_ML_KEM_768;
280 }
281 if(group_name == "secp256r1/ML-KEM-768") {
282 return Group_Params::HYBRID_SECP256R1_ML_KEM_768;
283 }
284 if(group_name == "secp384r1/ML-KEM-1024") {
285 return Group_Params::HYBRID_SECP384R1_ML_KEM_1024;
286 }
287
288 if(group_name == "x25519/eFrodoKEM-640-SHAKE") {
289 return Group_Params::HYBRID_X25519_eFRODOKEM_640_SHAKE_OQS;
290 }
291 if(group_name == "x25519/eFrodoKEM-640-AES") {
292 return Group_Params::HYBRID_X25519_eFRODOKEM_640_AES_OQS;
293 }
294 if(group_name == "x448/eFrodoKEM-976-SHAKE") {
295 return Group_Params::HYBRID_X448_eFRODOKEM_976_SHAKE_OQS;
296 }
297 if(group_name == "x448/eFrodoKEM-976-AES") {
298 return Group_Params::HYBRID_X448_eFRODOKEM_976_AES_OQS;
299 }
300
301 if(group_name == "secp256r1/eFrodoKEM-640-SHAKE") {
302 return Group_Params::HYBRID_SECP256R1_eFRODOKEM_640_SHAKE_OQS;
303 }
304 if(group_name == "secp256r1/eFrodoKEM-640-AES") {
305 return Group_Params::HYBRID_SECP256R1_eFRODOKEM_640_AES_OQS;
306 }
307
308 if(group_name == "secp384r1/eFrodoKEM-976-SHAKE") {
309 return Group_Params::HYBRID_SECP384R1_eFRODOKEM_976_SHAKE_OQS;
310 }
311 if(group_name == "secp384r1/eFrodoKEM-976-AES") {
312 return Group_Params::HYBRID_SECP384R1_eFRODOKEM_976_AES_OQS;
313 }
314
315 if(group_name == "secp521r1/eFrodoKEM-1344-SHAKE") {
316 return Group_Params::HYBRID_SECP521R1_eFRODOKEM_1344_SHAKE_OQS;
317 }
318 if(group_name == "secp521r1/eFrodoKEM-1344-AES") {
319 return Group_Params::HYBRID_SECP521R1_eFRODOKEM_1344_AES_OQS;
320 }
321
322 return std::nullopt;
323}