summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2017-08-09 16:47:18 +0000
committerjsing <>2017-08-09 16:47:18 +0000
commit37e8b9de52f84a8098f11fd24456d2ff2e8c56f3 (patch)
treea52150986179345a659419f19f7505c03ce685f5 /src/lib
parent2e73556f60f82f8dd63b25cecc8a45638e40ae96 (diff)
downloadopenbsd-37e8b9de52f84a8098f11fd24456d2ff2e8c56f3.tar.gz
openbsd-37e8b9de52f84a8098f11fd24456d2ff2e8c56f3.tar.bz2
openbsd-37e8b9de52f84a8098f11fd24456d2ff2e8c56f3.zip
Split out the remaining SSL controls into individual functions.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libssl/s3_lib.c139
1 files changed, 93 insertions, 46 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c
index f9364a4e02..b9e2d8d97d 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.149 2017/08/09 15:52:27 jsing Exp $ */ 1/* $OpenBSD: s3_lib.c,v 1.150 2017/08/09 16:47:18 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 *
@@ -1874,6 +1874,86 @@ _SSL_set_ecdh_auto(SSL *s, int state)
1874 return 1; 1874 return 1;
1875} 1875}
1876 1876
1877static int
1878_SSL_set_tlsext_host_name(SSL *s, const char *name)
1879{
1880 free(s->tlsext_hostname);
1881 s->tlsext_hostname = NULL;
1882
1883 if (name == NULL)
1884 return 1;
1885
1886 if (strlen(name) > TLSEXT_MAXLEN_host_name) {
1887 SSLerror(s, SSL_R_SSL3_EXT_INVALID_SERVERNAME);
1888 return 0;
1889 }
1890
1891 if ((s->tlsext_hostname = strdup(name)) == NULL) {
1892 SSLerror(s, ERR_R_INTERNAL_ERROR);
1893 return 0;
1894 }
1895
1896 return 1;
1897}
1898
1899static int
1900_SSL_set_tlsext_debug_arg(SSL *s, void *arg)
1901{
1902 s->internal->tlsext_debug_arg = arg;
1903 return 1;
1904}
1905
1906static int
1907_SSL_set_tlsext_status_type(SSL *s, int type)
1908{
1909 s->tlsext_status_type = type;
1910 return 1;
1911}
1912
1913static int
1914_SSL_get_tlsext_status_exts(SSL *s, STACK_OF(X509_EXTENSION) **exts)
1915{
1916 *exts = s->internal->tlsext_ocsp_exts;
1917 return 1;
1918}
1919
1920static int
1921_SSL_set_tlsext_status_exts(SSL *s, STACK_OF(X509_EXTENSION) *exts)
1922{
1923 s->internal->tlsext_ocsp_exts = exts;
1924 return 1;
1925}
1926
1927static int
1928_SSL_get_tlsext_status_ids(SSL *s, STACK_OF(OCSP_RESPID) **ids)
1929{
1930 *ids = s->internal->tlsext_ocsp_ids;
1931 return 1;
1932}
1933
1934static int
1935_SSL_set_tlsext_status_ids(SSL *s, STACK_OF(OCSP_RESPID) *ids)
1936{
1937 s->internal->tlsext_ocsp_ids = ids;
1938 return 1;
1939}
1940
1941static int
1942_SSL_get_tlsext_status_ocsp_resp(SSL *s, unsigned char **resp)
1943{
1944 *resp = s->internal->tlsext_ocsp_resp;
1945 return s->internal->tlsext_ocsp_resplen;
1946}
1947
1948static int
1949_SSL_set_tlsext_status_ocsp_resp(SSL *s, unsigned char *resp, int resp_len)
1950{
1951 free(s->internal->tlsext_ocsp_resp);
1952 s->internal->tlsext_ocsp_resp = resp;
1953 s->internal->tlsext_ocsp_resplen = resp_len;
1954 return 1;
1955}
1956
1877int 1957int
1878SSL_set1_groups(SSL *s, const int *groups, size_t groups_len) 1958SSL_set1_groups(SSL *s, const int *groups, size_t groups_len)
1879{ 1959{
@@ -1907,7 +1987,7 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
1907 return _SSL_total_renegotiations(s); 1987 return _SSL_total_renegotiations(s);
1908 1988
1909 case SSL_CTRL_SET_TMP_DH: 1989 case SSL_CTRL_SET_TMP_DH:
1910 return _SSL_set_tmp_dh(s, (DH *)parg); 1990 return _SSL_set_tmp_dh(s, parg);
1911 1991
1912 case SSL_CTRL_SET_TMP_DH_CB: 1992 case SSL_CTRL_SET_TMP_DH_CB:
1913 SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 1993 SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
@@ -1917,7 +1997,7 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
1917 return _SSL_set_dh_auto(s, larg); 1997 return _SSL_set_dh_auto(s, larg);
1918 1998
1919 case SSL_CTRL_SET_TMP_ECDH: 1999 case SSL_CTRL_SET_TMP_ECDH:
1920 return _SSL_set_tmp_ecdh(s, (EC_KEY *)parg); 2000 return _SSL_set_tmp_ecdh(s, parg);
1921 2001
1922 case SSL_CTRL_SET_TMP_ECDH_CB: 2002 case SSL_CTRL_SET_TMP_ECDH_CB:
1923 SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 2003 SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
@@ -1927,68 +2007,35 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
1927 return _SSL_set_ecdh_auto(s, larg); 2007 return _SSL_set_ecdh_auto(s, larg);
1928 2008
1929 case SSL_CTRL_SET_TLSEXT_HOSTNAME: 2009 case SSL_CTRL_SET_TLSEXT_HOSTNAME:
1930 if (larg == TLSEXT_NAMETYPE_host_name) { 2010 if (larg != TLSEXT_NAMETYPE_host_name) {
1931 free(s->tlsext_hostname);
1932 s->tlsext_hostname = NULL;
1933
1934 ret = 1;
1935 if (parg == NULL)
1936 break;
1937 if (strlen((char *)parg) > TLSEXT_MAXLEN_host_name) {
1938 SSLerror(s, SSL_R_SSL3_EXT_INVALID_SERVERNAME);
1939 return 0;
1940 }
1941 if ((s->tlsext_hostname = strdup((char *)parg))
1942 == NULL) {
1943 SSLerror(s, ERR_R_INTERNAL_ERROR);
1944 return 0;
1945 }
1946 } else {
1947 SSLerror(s, SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE); 2011 SSLerror(s, SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE);
1948 return 0; 2012 return 0;
1949 } 2013 }
1950 break; 2014 return _SSL_set_tlsext_host_name(s, parg);
1951 2015
1952 case SSL_CTRL_SET_TLSEXT_DEBUG_ARG: 2016 case SSL_CTRL_SET_TLSEXT_DEBUG_ARG:
1953 s->internal->tlsext_debug_arg = parg; 2017 return _SSL_set_tlsext_debug_arg(s, parg);
1954 ret = 1;
1955 break;
1956 2018
1957 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE: 2019 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
1958 s->tlsext_status_type = larg; 2020 return _SSL_set_tlsext_status_type(s, larg);
1959 ret = 1;
1960 break;
1961 2021
1962 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS: 2022 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS:
1963 *(STACK_OF(X509_EXTENSION) **)parg = s->internal->tlsext_ocsp_exts; 2023 return _SSL_get_tlsext_status_exts(s, parg);
1964 ret = 1;
1965 break;
1966 2024
1967 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS: 2025 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS:
1968 s->internal->tlsext_ocsp_exts = parg; 2026 return _SSL_set_tlsext_status_exts(s, parg);
1969 ret = 1;
1970 break;
1971 2027
1972 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS: 2028 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS:
1973 *(STACK_OF(OCSP_RESPID) **)parg = s->internal->tlsext_ocsp_ids; 2029 return _SSL_get_tlsext_status_ids(s, parg);
1974 ret = 1;
1975 break;
1976 2030
1977 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS: 2031 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS:
1978 s->internal->tlsext_ocsp_ids = parg; 2032 return _SSL_set_tlsext_status_ids(s, parg);
1979 ret = 1;
1980 break;
1981 2033
1982 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP: 2034 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP:
1983 *(unsigned char **)parg = s->internal->tlsext_ocsp_resp; 2035 return _SSL_get_tlsext_status_ocsp_resp(s, parg);
1984 return s->internal->tlsext_ocsp_resplen;
1985 2036
1986 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP: 2037 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP:
1987 free(s->internal->tlsext_ocsp_resp); 2038 return _SSL_set_tlsext_status_ocsp_resp(s, parg, larg);
1988 s->internal->tlsext_ocsp_resp = parg;
1989 s->internal->tlsext_ocsp_resplen = larg;
1990 ret = 1;
1991 break;
1992 2039
1993 case SSL_CTRL_SET_GROUPS: 2040 case SSL_CTRL_SET_GROUPS:
1994 return SSL_set1_groups(s, parg, larg); 2041 return SSL_set1_groups(s, parg, larg);