137 {
138 if(group_name == "secp256r1") {
139 return Group_Params::SECP256R1;
140 }
141 if(group_name == "secp384r1") {
142 return Group_Params::SECP384R1;
143 }
144 if(group_name == "secp521r1") {
145 return Group_Params::SECP521R1;
146 }
147 if(group_name == "brainpool256r1") {
148 return Group_Params::BRAINPOOL256R1;
149 }
150 if(group_name == "brainpool384r1") {
151 return Group_Params::BRAINPOOL384R1;
152 }
153 if(group_name == "brainpool512r1") {
154 return Group_Params::BRAINPOOL512R1;
155 }
156 if(group_name == "x25519") {
157 return Group_Params::X25519;
158 }
159 if(group_name == "x448") {
160 return Group_Params::X448;
161 }
162
163 if(group_name == "ffdhe/ietf/2048") {
164 return Group_Params::FFDHE_2048;
165 }
166 if(group_name == "ffdhe/ietf/3072") {
167 return Group_Params::FFDHE_3072;
168 }
169 if(group_name == "ffdhe/ietf/4096") {
170 return Group_Params::FFDHE_4096;
171 }
172 if(group_name == "ffdhe/ietf/6144") {
173 return Group_Params::FFDHE_6144;
174 }
175 if(group_name == "ffdhe/ietf/8192") {
176 return Group_Params::FFDHE_8192;
177 }
178
179 if(group_name == "Kyber-512-r3") {
180 return Group_Params::KYBER_512_R3_OQS;
181 }
182 if(group_name == "Kyber-768-r3") {
183 return Group_Params::KYBER_768_R3_OQS;
184 }
185 if(group_name == "Kyber-1024-r3") {
186 return Group_Params::KYBER_1024_R3_OQS;
187 }
188
189 if(group_name == "eFrodoKEM-640-SHAKE") {
190 return Group_Params::eFRODOKEM_640_SHAKE_OQS;
191 }
192 if(group_name == "eFrodoKEM-976-SHAKE") {
193 return Group_Params::eFRODOKEM_976_SHAKE_OQS;
194 }
195 if(group_name == "eFrodoKEM-1344-SHAKE") {
196 return Group_Params::eFRODOKEM_1344_SHAKE_OQS;
197 }
198 if(group_name == "eFrodoKEM-640-AES") {
199 return Group_Params::eFRODOKEM_640_AES_OQS;
200 }
201 if(group_name == "eFrodoKEM-976-AES") {
202 return Group_Params::eFRODOKEM_976_AES_OQS;
203 }
204 if(group_name == "eFrodoKEM-1344-AES") {
205 return Group_Params::eFRODOKEM_1344_AES_OQS;
206 }
207
208 if(group_name == "x25519/Kyber-512-r3/cloudflare") {
209 return Group_Params::HYBRID_X25519_KYBER_512_R3_CLOUDFLARE;
210 }
211 if(group_name == "x25519/Kyber-512-r3") {
212 return Group_Params::HYBRID_X25519_KYBER_512_R3_OQS;
213 }
214 if(group_name == "x25519/Kyber-768-r3") {
215 return Group_Params::HYBRID_X25519_KYBER_768_R3_OQS;
216 }
217
218 if(group_name == "x25519/ML-KEM-768") {
219 return Group_Params::HYBRID_X25519_ML_KEM_768;
220 }
221 if(group_name == "secp256r1/ML-KEM-768") {
222 return Group_Params::HYBRID_SECP256R1_ML_KEM_768;
223 }
224
225 if(group_name == "x448/Kyber-768-r3") {
226 return Group_Params::HYBRID_X448_KYBER_768_R3_OQS;
227 }
228 if(group_name == "x25519/eFrodoKEM-640-SHAKE") {
229 return Group_Params::HYBRID_X25519_eFRODOKEM_640_SHAKE_OQS;
230 }
231 if(group_name == "x25519/eFrodoKEM-640-AES") {
232 return Group_Params::HYBRID_X25519_eFRODOKEM_640_AES_OQS;
233 }
234 if(group_name == "x448/eFrodoKEM-976-SHAKE") {
235 return Group_Params::HYBRID_X448_eFRODOKEM_976_SHAKE_OQS;
236 }
237 if(group_name == "x448/eFrodoKEM-976-AES") {
238 return Group_Params::HYBRID_X448_eFRODOKEM_976_AES_OQS;
239 }
240
241 if(group_name == "secp256r1/Kyber-512-r3") {
242 return Group_Params::HYBRID_SECP256R1_KYBER_512_R3_OQS;
243 }
244 if(group_name == "secp256r1/Kyber-768-r3") {
245 return Group_Params::HYBRID_SECP256R1_KYBER_768_R3_OQS;
246 }
247 if(group_name == "secp256r1/eFrodoKEM-640-SHAKE") {
248 return Group_Params::HYBRID_SECP256R1_eFRODOKEM_640_SHAKE_OQS;
249 }
250 if(group_name == "secp256r1/eFrodoKEM-640-AES") {
251 return Group_Params::HYBRID_SECP256R1_eFRODOKEM_640_AES_OQS;
252 }
253
254 if(group_name == "secp384r1/Kyber-768-r3") {
255 return Group_Params::HYBRID_SECP384R1_KYBER_768_R3_OQS;
256 }
257 if(group_name == "secp384r1/eFrodoKEM-976-SHAKE") {
258 return Group_Params::HYBRID_SECP384R1_eFRODOKEM_976_SHAKE_OQS;
259 }
260 if(group_name == "secp384r1/eFrodoKEM-976-AES") {
261 return Group_Params::HYBRID_SECP384R1_eFRODOKEM_976_AES_OQS;
262 }
263
264 if(group_name == "secp521r1/Kyber-1024-r3") {
265 return Group_Params::HYBRID_SECP521R1_KYBER_1024_R3_OQS;
266 }
267 if(group_name == "secp521r1/eFrodoKEM-1344-SHAKE") {
268 return Group_Params::HYBRID_SECP521R1_eFRODOKEM_1344_SHAKE_OQS;
269 }
270 if(group_name == "secp521r1/eFrodoKEM-1344-AES") {
271 return Group_Params::HYBRID_SECP521R1_eFRODOKEM_1344_AES_OQS;
272 }
273
274 return std::nullopt;
275}