diff options
Diffstat (limited to 'src/lib/libssl/s3_lib.c')
| -rw-r--r-- | src/lib/libssl/s3_lib.c | 114 |
1 files changed, 113 insertions, 1 deletions
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 | ||
