19 if(optionName ==
"SSL_OP_ALL")
24 if(optionName ==
"SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION")
26 return SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
28 if(optionName ==
"SSL_OP_CIPHER_SERVER_PREFERENCE")
31 return SSL_OP_CIPHER_SERVER_PREFERENCE;
33#if defined SSL_OP_CISCO_ANYCONNECT
34 if(optionName ==
"SSL_OP_CISCO_ANYCONNECT")
37 return SSL_OP_CISCO_ANYCONNECT;
40 if(optionName ==
"SSL_OP_COOKIE_EXCHANGE")
43 return SSL_OP_COOKIE_EXCHANGE;
45#if defined SSL_OP_CRYPTOPRO_TLSEXT_BUG
46 if(optionName ==
"SSL_OP_CRYPTOPRO_TLSEXT_BUG")
51 return SSL_OP_CRYPTOPRO_TLSEXT_BUG;
54 if(optionName ==
"SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS")
61 return SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS;
63 if(optionName ==
"SSL_OP_EPHEMERAL_RSA")
66 return SSL_OP_EPHEMERAL_RSA;
68 if(optionName ==
"SSL_OP_LEGACY_SERVER_CONNECT")
71 return SSL_OP_LEGACY_SERVER_CONNECT;
73 if(optionName ==
"SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER")
76 return SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER;
78 if(optionName ==
"SSL_OP_MICROSOFT_SESS_ID_BUG")
81 return SSL_OP_MICROSOFT_SESS_ID_BUG;
83 if(optionName ==
"SSL_OP_MSIE_SSLV2_RSA_PADDING")
86 return SSL_OP_MSIE_SSLV2_RSA_PADDING;
88 if(optionName ==
"SSL_OP_NETSCAPE_CA_DN_BUG")
91 return SSL_OP_NETSCAPE_CA_DN_BUG;
93 if(optionName ==
"SSL_OP_NETSCAPE_CHALLENGE_BUG")
96 return SSL_OP_NETSCAPE_CHALLENGE_BUG;
98 if(optionName ==
"SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG")
101 return SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG;
103 if(optionName ==
"SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG")
106 return SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG;
108#if defined SSL_OP_NO_COMPRESSION
109 if(optionName ==
"SSL_OP_NO_COMPRESSION")
112 return SSL_OP_NO_COMPRESSION;
115 if(optionName ==
"SSL_OP_NO_QUERY_MTU")
118 return SSL_OP_NO_QUERY_MTU;
120 if(optionName ==
"SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION")
123 return SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION;
125 if(optionName ==
"SSL_OP_NO_SSLv2")
128 return SSL_OP_NO_SSLv2;
130 if(optionName ==
"SSL_OP_NO_SSLv3")
132 return SSL_OP_NO_SSLv3;
134 if(optionName ==
"SSL_OP_NO_TICKET")
137 return SSL_OP_NO_TICKET;
139 if(optionName ==
"SSL_OP_NO_TLSv1")
141 return SSL_OP_NO_TLSv1;
143#ifdef SSL_OP_NO_TLSv1_1
144 if(optionName ==
"SSL_OP_NO_TLSv1_1")
146 return SSL_OP_NO_TLSv1_1;
149#ifdef SSL_OP_NO_TLSv1_2
150 if(optionName ==
"SSL_OP_NO_TLSv1_2")
152 return SSL_OP_NO_TLSv1_2;
155 if(optionName ==
"SSL_OP_PKCS1_CHECK_1")
158 return SSL_OP_PKCS1_CHECK_1;
160 if(optionName ==
"SSL_OP_PKCS1_CHECK_2")
163 return SSL_OP_PKCS1_CHECK_2;
165#ifdef SSL_OP_SAFARI_ECDHE_ECDSA_BUG
166 if(optionName ==
"SSL_OP_SAFARI_ECDHE_ECDSA_BUG")
168 return SSL_OP_SAFARI_ECDHE_ECDSA_BUG;
171 if(optionName ==
"SSL_OP_SINGLE_DH_USE")
174 return SSL_OP_SINGLE_DH_USE;
176 if(optionName ==
"SSL_OP_SINGLE_ECDH_USE")
179 return SSL_OP_SINGLE_ECDH_USE;
181 if(optionName ==
"SSL_OP_SSLEAY_080_CLIENT_DH_BUG")
184 return SSL_OP_SSLEAY_080_CLIENT_DH_BUG;
186 if(optionName ==
"SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG")
189 return SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG;
191 if(optionName ==
"SSL_OP_TLS_BLOCK_PADDING_BUG")
194 return SSL_OP_TLS_BLOCK_PADDING_BUG;
196 if(optionName ==
"SSL_OP_TLS_D5_BUG")
199 return SSL_OP_TLS_D5_BUG;
201 if(optionName ==
"SSL_OP_TLS_ROLLBACK_BUG")
207 return SSL_OP_TLS_ROLLBACK_BUG;
209#ifdef SSL_OP_NO_EXTENDED_MASTER_SECRET
210 if (optionName ==
"SSL_OP_NO_EXTENDED_MASTER_SECRET")
212 return SSL_OP_NO_EXTENDED_MASTER_SECRET;
215#ifdef SSL_OP_CLEANSE_PLAINTEXT
216 if (optionName ==
"SSL_OP_CLEANSE_PLAINTEXT")
219 return SSL_OP_CLEANSE_PLAINTEXT;
222#ifdef SSL_OP_ENABLE_KTLS
223 if (optionName ==
"SSL_OP_ENABLE_KTLS")
225 return SSL_OP_ENABLE_KTLS;
228#ifdef SSL_OP_TLSEXT_PADDING
229 if (optionName ==
"SSL_OP_TLSEXT_PADDING")
231 return SSL_OP_TLSEXT_PADDING;
234#ifdef SSL_OP_IGNORE_UNEXPECTED_EOF
235 if (optionName ==
"SSL_OP_IGNORE_UNEXPECTED_EOF")
237 return SSL_OP_IGNORE_UNEXPECTED_EOF;
240#ifdef SSL_OP_ALLOW_CLIENT_RENEGOTIATION
241 if (optionName ==
"SSL_OP_ALLOW_CLIENT_RENEGOTIATION")
243 return SSL_OP_ALLOW_CLIENT_RENEGOTIATION;
246#ifdef SSL_OP_DISABLE_TLSEXT_CA_NAMES
247 if (optionName ==
"SSL_OP_DISABLE_TLSEXT_CA_NAMES")
249 return SSL_OP_DISABLE_TLSEXT_CA_NAMES;
252#ifdef SSL_OP_ALLOW_NO_DHE_KEX
253 if (optionName ==
"SSL_OP_ALLOW_NO_DHE_KEX")
256 return SSL_OP_ALLOW_NO_DHE_KEX;
259#ifdef SSL_OP_NO_ENCRYPT_THEN_MAC
260 if (optionName ==
"SSL_OP_NO_ENCRYPT_THEN_MAC")
262 return SSL_OP_NO_ENCRYPT_THEN_MAC;
265#ifdef SSL_OP_ENABLE_MIDDLEBOX_COMPAT
266 if (optionName ==
"SSL_OP_ENABLE_MIDDLEBOX_COMPAT")
270 return SSL_OP_ENABLE_MIDDLEBOX_COMPAT;
273#ifdef SSL_OP_PRIORITIZE_CHACHA
274 if (optionName ==
"SSL_OP_PRIORITIZE_CHACHA")
277 return SSL_OP_PRIORITIZE_CHACHA;
280#ifdef SSL_OP_NO_ANTI_REPLAY
281 if (optionName ==
"SSL_OP_NO_ANTI_REPLAY")
285 return SSL_OP_NO_ANTI_REPLAY;
288#ifdef SSL_OP_NO_TLSv1_3
289 if (optionName ==
"SSL_OP_NO_TLSv1_3")
291 return SSL_OP_NO_TLSv1_3;
294#ifdef SSL_OP_NO_DTLSv1
295 if (optionName ==
"SSL_OP_NO_DTLSv1")
297 return SSL_OP_NO_DTLSv1;
300#ifdef SSL_OP_NO_DTLSv1_2
301 if (optionName ==
"SSL_OP_NO_DTLSv1_2")
303 return SSL_OP_NO_DTLSv1_2;
306#ifdef SSL_OP_NO_RENEGOTIATION
307 if (optionName ==
"SSL_OP_NO_RENEGOTIATION")
309 return SSL_OP_NO_RENEGOTIATION;
312#ifdef SSL_OP_NO_TX_CERTIFICATE_COMPRESSION
313 if (optionName ==
"SSL_OP_NO_TX_CERTIFICATE_COMPRESSION")
317 return SSL_OP_NO_TX_CERTIFICATE_COMPRESSION;
320#ifdef SSL_OP_NO_RX_CERTIFICATE_COMPRESSION
321 if (optionName ==
"SSL_OP_NO_RX_CERTIFICATE_COMPRESSION")
325 return SSL_OP_NO_RX_CERTIFICATE_COMPRESSION;
328#ifdef SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE
329 if (optionName ==
"SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE")
331 return SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE;
334#ifdef SSL_OP_PREFER_NO_DHE_KEX
335 if (optionName ==
"SSL_OP_PREFER_NO_DHE_KEX")
337 return SSL_OP_PREFER_NO_DHE_KEX;
340#ifdef SSL_OP_NO_SSL_MASK
341 if (optionName ==
"SSL_OP_NO_SSL_MASK")
344 return SSL_OP_NO_SSL_MASK;
347#ifdef SSL_OP_NO_DTLS_MASK
348 if (optionName ==
"SSL_OP_NO_DTLS_MASK")
351 return SSL_OP_NO_DTLS_MASK;
354 Data error =
"Not a recognized OpenSSL option name: " + optionName;
355 throw invalid_argument(error.
c_str());