diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/Symbols.list | 12 | ||||
| -rw-r--r-- | src/lib/libssl/s3_lib.c | 114 | ||||
| -rw-r--r-- | src/lib/libssl/ssl.h | 37 |
3 files changed, 161 insertions, 2 deletions
diff --git a/src/lib/libssl/Symbols.list b/src/lib/libssl/Symbols.list index 425d71126b..e72616a779 100644 --- a/src/lib/libssl/Symbols.list +++ b/src/lib/libssl/Symbols.list | |||
| @@ -57,14 +57,18 @@ SSL_CIPHER_is_aead | |||
| 57 | SSL_COMP_add_compression_method | 57 | SSL_COMP_add_compression_method |
| 58 | SSL_COMP_get_compression_methods | 58 | SSL_COMP_get_compression_methods |
| 59 | SSL_COMP_get_name | 59 | SSL_COMP_get_name |
| 60 | SSL_CTX_add0_chain_cert | ||
| 61 | SSL_CTX_add1_chain_cert | ||
| 60 | SSL_CTX_add_client_CA | 62 | SSL_CTX_add_client_CA |
| 61 | SSL_CTX_add_session | 63 | SSL_CTX_add_session |
| 62 | SSL_CTX_callback_ctrl | 64 | SSL_CTX_callback_ctrl |
| 63 | SSL_CTX_check_private_key | 65 | SSL_CTX_check_private_key |
| 66 | SSL_CTX_clear_chain_certs | ||
| 64 | SSL_CTX_ctrl | 67 | SSL_CTX_ctrl |
| 65 | SSL_CTX_flush_sessions | 68 | SSL_CTX_flush_sessions |
| 66 | SSL_CTX_free | 69 | SSL_CTX_free |
| 67 | SSL_CTX_get0_certificate | 70 | SSL_CTX_get0_certificate |
| 71 | SSL_CTX_get0_chain_certs | ||
| 68 | SSL_CTX_get0_param | 72 | SSL_CTX_get0_param |
| 69 | SSL_CTX_get_cert_store | 73 | SSL_CTX_get_cert_store |
| 70 | SSL_CTX_get_ciphers | 74 | SSL_CTX_get_ciphers |
| @@ -93,6 +97,8 @@ SSL_CTX_sess_set_get_cb | |||
| 93 | SSL_CTX_sess_set_new_cb | 97 | SSL_CTX_sess_set_new_cb |
| 94 | SSL_CTX_sess_set_remove_cb | 98 | SSL_CTX_sess_set_remove_cb |
| 95 | SSL_CTX_sessions | 99 | SSL_CTX_sessions |
| 100 | SSL_CTX_set0_chain | ||
| 101 | SSL_CTX_set1_chain | ||
| 96 | SSL_CTX_set1_groups | 102 | SSL_CTX_set1_groups |
| 97 | SSL_CTX_set1_groups_list | 103 | SSL_CTX_set1_groups_list |
| 98 | SSL_CTX_set1_param | 104 | SSL_CTX_set1_param |
| @@ -164,6 +170,8 @@ SSL_SESSION_set_time | |||
| 164 | SSL_SESSION_set_timeout | 170 | SSL_SESSION_set_timeout |
| 165 | SSL_SESSION_up_ref | 171 | SSL_SESSION_up_ref |
| 166 | SSL_accept | 172 | SSL_accept |
| 173 | SSL_add0_chain_cert | ||
| 174 | SSL_add1_chain_cert | ||
| 167 | SSL_add_client_CA | 175 | SSL_add_client_CA |
| 168 | SSL_add_dir_cert_subjects_to_stack | 176 | SSL_add_dir_cert_subjects_to_stack |
| 169 | SSL_add_file_cert_subjects_to_stack | 177 | SSL_add_file_cert_subjects_to_stack |
| @@ -175,6 +183,7 @@ SSL_cache_hit | |||
| 175 | SSL_callback_ctrl | 183 | SSL_callback_ctrl |
| 176 | SSL_check_private_key | 184 | SSL_check_private_key |
| 177 | SSL_clear | 185 | SSL_clear |
| 186 | SSL_clear_chain_certs | ||
| 178 | SSL_connect | 187 | SSL_connect |
| 179 | SSL_copy_session_id | 188 | SSL_copy_session_id |
| 180 | SSL_ctrl | 189 | SSL_ctrl |
| @@ -184,6 +193,7 @@ SSL_dup_CA_list | |||
| 184 | SSL_export_keying_material | 193 | SSL_export_keying_material |
| 185 | SSL_free | 194 | SSL_free |
| 186 | SSL_get0_alpn_selected | 195 | SSL_get0_alpn_selected |
| 196 | SSL_get0_chain_certs | ||
| 187 | SSL_get0_next_proto_negotiated | 197 | SSL_get0_next_proto_negotiated |
| 188 | SSL_get0_param | 198 | SSL_get0_param |
| 189 | SSL_get1_session | 199 | SSL_get1_session |
| @@ -247,6 +257,8 @@ SSL_renegotiate_pending | |||
| 247 | SSL_rstate_string | 257 | SSL_rstate_string |
| 248 | SSL_rstate_string_long | 258 | SSL_rstate_string_long |
| 249 | SSL_select_next_proto | 259 | SSL_select_next_proto |
| 260 | SSL_set0_chain | ||
| 261 | SSL_set1_chain | ||
| 250 | SSL_set1_groups | 262 | SSL_set1_groups |
| 251 | SSL_set1_groups_list | 263 | SSL_set1_groups_list |
| 252 | SSL_set1_host | 264 | SSL_set1_host |
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index 49f402d065..0357a70ca3 100644 --- a/src/lib/libssl/s3_lib.c +++ b/src/lib/libssl/s3_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: s3_lib.c,v 1.185 2019/03/25 17:21:18 jsing Exp $ */ | 1 | /* $OpenBSD: s3_lib.c,v 1.186 2019/04/04 15:03:21 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -1876,6 +1876,47 @@ _SSL_set_tlsext_status_ocsp_resp(SSL *s, unsigned char *resp, int resp_len) | |||
| 1876 | } | 1876 | } |
| 1877 | 1877 | ||
| 1878 | int | 1878 | int |
| 1879 | SSL_set0_chain(SSL *ssl, STACK_OF(X509) *chain) | ||
| 1880 | { | ||
| 1881 | return ssl_cert_set0_chain(ssl->cert, chain); | ||
| 1882 | } | ||
| 1883 | |||
| 1884 | int | ||
| 1885 | SSL_set1_chain(SSL *ssl, STACK_OF(X509) *chain) | ||
| 1886 | { | ||
| 1887 | return ssl_cert_set1_chain(ssl->cert, chain); | ||
| 1888 | } | ||
| 1889 | |||
| 1890 | int | ||
| 1891 | SSL_add0_chain_cert(SSL *ssl, X509 *x509) | ||
| 1892 | { | ||
| 1893 | return ssl_cert_add0_chain_cert(ssl->cert, x509); | ||
| 1894 | } | ||
| 1895 | |||
| 1896 | int | ||
| 1897 | SSL_add1_chain_cert(SSL *ssl, X509 *x509) | ||
| 1898 | { | ||
| 1899 | return ssl_cert_add1_chain_cert(ssl->cert, x509); | ||
| 1900 | } | ||
| 1901 | |||
| 1902 | int | ||
| 1903 | SSL_get0_chain_certs(const SSL *ssl, STACK_OF(X509) **out_chain) | ||
| 1904 | { | ||
| 1905 | *out_chain = NULL; | ||
| 1906 | |||
| 1907 | if (ssl->cert->key != NULL) | ||
| 1908 | *out_chain = ssl->cert->key->chain; | ||
| 1909 | |||
| 1910 | return 1; | ||
| 1911 | } | ||
| 1912 | |||
| 1913 | int | ||
| 1914 | SSL_clear_chain_certs(SSL *ssl) | ||
| 1915 | { | ||
| 1916 | return ssl_cert_set0_chain(ssl->cert, NULL); | ||
| 1917 | } | ||
| 1918 | |||
| 1919 | int | ||
| 1879 | SSL_set1_groups(SSL *s, const int *groups, size_t groups_len) | 1920 | SSL_set1_groups(SSL *s, const int *groups, size_t groups_len) |
| 1880 | { | 1921 | { |
| 1881 | return tls1_set_groups(&s->internal->tlsext_supportedgroups, | 1922 | return tls1_set_groups(&s->internal->tlsext_supportedgroups, |
| @@ -1956,6 +1997,21 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 1956 | case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP: | 1997 | case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP: |
| 1957 | return _SSL_set_tlsext_status_ocsp_resp(s, parg, larg); | 1998 | return _SSL_set_tlsext_status_ocsp_resp(s, parg, larg); |
| 1958 | 1999 | ||
| 2000 | case SSL_CTRL_CHAIN: | ||
| 2001 | if (larg == 0) | ||
| 2002 | return SSL_set0_chain(s, (STACK_OF(X509) *)parg); | ||
| 2003 | else | ||
| 2004 | return SSL_set1_chain(s, (STACK_OF(X509) *)parg); | ||
| 2005 | |||
| 2006 | case SSL_CTRL_CHAIN_CERT: | ||
| 2007 | if (larg == 0) | ||
| 2008 | return SSL_add0_chain_cert(s, (X509 *)parg); | ||
| 2009 | else | ||
| 2010 | return SSL_add1_chain_cert(s, (X509 *)parg); | ||
| 2011 | |||
| 2012 | case SSL_CTRL_GET_CHAIN_CERTS: | ||
| 2013 | return SSL_get0_chain_certs(s, (STACK_OF(X509) **)parg); | ||
| 2014 | |||
| 1959 | case SSL_CTRL_SET_GROUPS: | 2015 | case SSL_CTRL_SET_GROUPS: |
| 1960 | return SSL_set1_groups(s, parg, larg); | 2016 | return SSL_set1_groups(s, parg, larg); |
| 1961 | 2017 | ||
| @@ -2127,6 +2183,47 @@ _SSL_CTX_set_tlsext_status_arg(SSL_CTX *ctx, void *arg) | |||
| 2127 | return 1; | 2183 | return 1; |
| 2128 | } | 2184 | } |
| 2129 | 2185 | ||
| 2186 | int | ||
| 2187 | SSL_CTX_set0_chain(SSL_CTX *ctx, STACK_OF(X509) *chain) | ||
| 2188 | { | ||
| 2189 | return ssl_cert_set0_chain(ctx->internal->cert, chain); | ||
| 2190 | } | ||
| 2191 | |||
| 2192 | int | ||
| 2193 | SSL_CTX_set1_chain(SSL_CTX *ctx, STACK_OF(X509) *chain) | ||
| 2194 | { | ||
| 2195 | return ssl_cert_set1_chain(ctx->internal->cert, chain); | ||
| 2196 | } | ||
| 2197 | |||
| 2198 | int | ||
| 2199 | SSL_CTX_add0_chain_cert(SSL_CTX *ctx, X509 *x509) | ||
| 2200 | { | ||
| 2201 | return ssl_cert_add0_chain_cert(ctx->internal->cert, x509); | ||
| 2202 | } | ||
| 2203 | |||
| 2204 | int | ||
| 2205 | SSL_CTX_add1_chain_cert(SSL_CTX *ctx, X509 *x509) | ||
| 2206 | { | ||
| 2207 | return ssl_cert_add1_chain_cert(ctx->internal->cert, x509); | ||
| 2208 | } | ||
| 2209 | |||
| 2210 | int | ||
| 2211 | SSL_CTX_get0_chain_certs(const SSL_CTX *ctx, STACK_OF(X509) **out_chain) | ||
| 2212 | { | ||
| 2213 | *out_chain = NULL; | ||
| 2214 | |||
| 2215 | if (ctx->internal->cert->key != NULL) | ||
| 2216 | *out_chain = ctx->internal->cert->key->chain; | ||
| 2217 | |||
| 2218 | return 1; | ||
| 2219 | } | ||
| 2220 | |||
| 2221 | int | ||
| 2222 | SSL_CTX_clear_chain_certs(SSL_CTX *ctx) | ||
| 2223 | { | ||
| 2224 | return ssl_cert_set0_chain(ctx->internal->cert, NULL); | ||
| 2225 | } | ||
| 2226 | |||
| 2130 | static int | 2227 | static int |
| 2131 | _SSL_CTX_add_extra_chain_cert(SSL_CTX *ctx, X509 *cert) | 2228 | _SSL_CTX_add_extra_chain_cert(SSL_CTX *ctx, X509 *cert) |
| 2132 | { | 2229 | { |
| @@ -2208,6 +2305,21 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2208 | case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG: | 2305 | case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG: |
| 2209 | return _SSL_CTX_set_tlsext_status_arg(ctx, parg); | 2306 | return _SSL_CTX_set_tlsext_status_arg(ctx, parg); |
| 2210 | 2307 | ||
| 2308 | case SSL_CTRL_CHAIN: | ||
| 2309 | if (larg == 0) | ||
| 2310 | return SSL_CTX_set0_chain(ctx, (STACK_OF(X509) *)parg); | ||
| 2311 | else | ||
| 2312 | return SSL_CTX_set1_chain(ctx, (STACK_OF(X509) *)parg); | ||
| 2313 | |||
| 2314 | case SSL_CTRL_CHAIN_CERT: | ||
| 2315 | if (larg == 0) | ||
| 2316 | return SSL_CTX_add0_chain_cert(ctx, (X509 *)parg); | ||
| 2317 | else | ||
| 2318 | return SSL_CTX_add1_chain_cert(ctx, (X509 *)parg); | ||
| 2319 | |||
| 2320 | case SSL_CTRL_GET_CHAIN_CERTS: | ||
| 2321 | return SSL_CTX_get0_chain_certs(ctx, (STACK_OF(X509) **)parg); | ||
| 2322 | |||
| 2211 | case SSL_CTRL_EXTRA_CHAIN_CERT: | 2323 | case SSL_CTRL_EXTRA_CHAIN_CERT: |
| 2212 | return _SSL_CTX_add_extra_chain_cert(ctx, parg); | 2324 | return _SSL_CTX_add_extra_chain_cert(ctx, parg); |
| 2213 | 2325 | ||
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h index 58b1be6d0d..fc89b0ef6e 100644 --- a/src/lib/libssl/ssl.h +++ b/src/lib/libssl/ssl.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl.h,v 1.165 2019/03/17 17:28:08 jsing Exp $ */ | 1 | /* $OpenBSD: ssl.h,v 1.166 2019/04/04 15:03:21 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -1118,6 +1118,9 @@ int PEM_write_SSL_SESSION(FILE *fp, SSL_SESSION *x); | |||
| 1118 | #define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 | 1118 | #define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 |
| 1119 | #define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 | 1119 | #define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 |
| 1120 | 1120 | ||
| 1121 | #define SSL_CTRL_CHAIN 88 | ||
| 1122 | #define SSL_CTRL_CHAIN_CERT 89 | ||
| 1123 | |||
| 1121 | #define SSL_CTRL_SET_GROUPS 91 | 1124 | #define SSL_CTRL_SET_GROUPS 91 |
| 1122 | #define SSL_CTRL_SET_GROUPS_LIST 92 | 1125 | #define SSL_CTRL_SET_GROUPS_LIST 92 |
| 1123 | 1126 | ||
| @@ -1125,6 +1128,8 @@ int PEM_write_SSL_SESSION(FILE *fp, SSL_SESSION *x); | |||
| 1125 | 1128 | ||
| 1126 | #define SSL_CTRL_GET_SERVER_TMP_KEY 109 | 1129 | #define SSL_CTRL_GET_SERVER_TMP_KEY 109 |
| 1127 | 1130 | ||
| 1131 | #define SSL_CTRL_GET_CHAIN_CERTS 115 | ||
| 1132 | |||
| 1128 | #define SSL_CTRL_SET_DH_AUTO 118 | 1133 | #define SSL_CTRL_SET_DH_AUTO 118 |
| 1129 | 1134 | ||
| 1130 | #define SSL_CTRL_SET_MIN_PROTO_VERSION 123 | 1135 | #define SSL_CTRL_SET_MIN_PROTO_VERSION 123 |
| @@ -1174,6 +1179,20 @@ int PEM_write_SSL_SESSION(FILE *fp, SSL_SESSION *x); | |||
| 1174 | #define SSL_set_ecdh_auto(s, onoff) \ | 1179 | #define SSL_set_ecdh_auto(s, onoff) \ |
| 1175 | SSL_ctrl(s,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) | 1180 | SSL_ctrl(s,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) |
| 1176 | 1181 | ||
| 1182 | int SSL_CTX_set0_chain(SSL_CTX *ctx, STACK_OF(X509) *chain); | ||
| 1183 | int SSL_CTX_set1_chain(SSL_CTX *ctx, STACK_OF(X509) *chain); | ||
| 1184 | int SSL_CTX_add0_chain_cert(SSL_CTX *ctx, X509 *x509); | ||
| 1185 | int SSL_CTX_add1_chain_cert(SSL_CTX *ctx, X509 *x509); | ||
| 1186 | int SSL_CTX_get0_chain_certs(const SSL_CTX *ctx, STACK_OF(X509) **out_chain); | ||
| 1187 | int SSL_CTX_clear_chain_certs(SSL_CTX *ctx); | ||
| 1188 | |||
| 1189 | int SSL_set0_chain(SSL *ssl, STACK_OF(X509) *chain); | ||
| 1190 | int SSL_set1_chain(SSL *ssl, STACK_OF(X509) *chain); | ||
| 1191 | int SSL_add0_chain_cert(SSL *ssl, X509 *x509); | ||
| 1192 | int SSL_add1_chain_cert(SSL *ssl, X509 *x509); | ||
| 1193 | int SSL_get0_chain_certs(const SSL *ssl, STACK_OF(X509) **out_chain); | ||
| 1194 | int SSL_clear_chain_certs(SSL *ssl); | ||
| 1195 | |||
| 1177 | int SSL_CTX_set1_groups(SSL_CTX *ctx, const int *groups, size_t groups_len); | 1196 | int SSL_CTX_set1_groups(SSL_CTX *ctx, const int *groups, size_t groups_len); |
| 1178 | int SSL_CTX_set1_groups_list(SSL_CTX *ctx, const char *groups); | 1197 | int SSL_CTX_set1_groups_list(SSL_CTX *ctx, const char *groups); |
| 1179 | 1198 | ||
| @@ -1215,14 +1234,30 @@ int SSL_set_max_proto_version(SSL *ssl, uint16_t version); | |||
| 1215 | * Also provide those functions as macros for compatibility with | 1234 | * Also provide those functions as macros for compatibility with |
| 1216 | * existing users. | 1235 | * existing users. |
| 1217 | */ | 1236 | */ |
| 1237 | #define SSL_CTX_set0_chain SSL_CTX_set0_chain | ||
| 1238 | #define SSL_CTX_set1_chain SSL_CTX_set1_chain | ||
| 1239 | #define SSL_CTX_add0_chain_cert SSL_CTX_add0_chain_cert | ||
| 1240 | #define SSL_CTX_add1_chain_cert SSL_CTX_add1_chain_cert | ||
| 1241 | #define SSL_CTX_get0_chain_certs SSL_CTX_get0_chain_certs | ||
| 1242 | #define SSL_CTX_clear_chain_certs SSL_CTX_clear_chain_certs | ||
| 1243 | |||
| 1244 | #define SSL_add0_chain_cert SSL_add0_chain_cert | ||
| 1245 | #define SSL_add1_chain_cert SSL_add1_chain_cert | ||
| 1246 | #define SSL_set0_chain SSL_set0_chain | ||
| 1247 | #define SSL_set1_chain SSL_set1_chain | ||
| 1248 | #define SSL_get0_chain_certs SSL_get0_chain_certs | ||
| 1249 | #define SSL_clear_chain_certs SSL_clear_chain_certs | ||
| 1250 | |||
| 1218 | #define SSL_CTX_set1_groups SSL_CTX_set1_groups | 1251 | #define SSL_CTX_set1_groups SSL_CTX_set1_groups |
| 1219 | #define SSL_CTX_set1_groups_list SSL_CTX_set1_groups_list | 1252 | #define SSL_CTX_set1_groups_list SSL_CTX_set1_groups_list |
| 1220 | #define SSL_set1_groups SSL_set1_groups | 1253 | #define SSL_set1_groups SSL_set1_groups |
| 1221 | #define SSL_set1_groups_list SSL_set1_groups_list | 1254 | #define SSL_set1_groups_list SSL_set1_groups_list |
| 1255 | |||
| 1222 | #define SSL_CTX_get_min_proto_version SSL_CTX_get_min_proto_version | 1256 | #define SSL_CTX_get_min_proto_version SSL_CTX_get_min_proto_version |
| 1223 | #define SSL_CTX_get_max_proto_version SSL_CTX_get_max_proto_version | 1257 | #define SSL_CTX_get_max_proto_version SSL_CTX_get_max_proto_version |
| 1224 | #define SSL_CTX_set_min_proto_version SSL_CTX_set_min_proto_version | 1258 | #define SSL_CTX_set_min_proto_version SSL_CTX_set_min_proto_version |
| 1225 | #define SSL_CTX_set_max_proto_version SSL_CTX_set_max_proto_version | 1259 | #define SSL_CTX_set_max_proto_version SSL_CTX_set_max_proto_version |
| 1260 | |||
| 1226 | #define SSL_get_min_proto_version SSL_get_min_proto_version | 1261 | #define SSL_get_min_proto_version SSL_get_min_proto_version |
| 1227 | #define SSL_get_max_proto_version SSL_get_max_proto_version | 1262 | #define SSL_get_max_proto_version SSL_get_max_proto_version |
| 1228 | #define SSL_set_min_proto_version SSL_set_min_proto_version | 1263 | #define SSL_set_min_proto_version SSL_set_min_proto_version |
