From 6d1ea388cbd9de7f2a944a0c64f5feaec1b1904a Mon Sep 17 00:00:00 2001 From: Nick Zitzmann Date: Tue, 26 Jun 2012 14:01:51 +0200 Subject: darwinssl: add support for native Mac OS X/iOS SSL --- lib/curl_darwinssl.h | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 lib/curl_darwinssl.h (limited to 'lib/curl_darwinssl.h') diff --git a/lib/curl_darwinssl.h b/lib/curl_darwinssl.h new file mode 100644 index 000000000..6eb20cc0f --- /dev/null +++ b/lib/curl_darwinssl.h @@ -0,0 +1,62 @@ +#ifndef HEADER_CURL_DARWINSSL_H +#define HEADER_CURL_DARWINSSL_H +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 2012, Nick Zitzmann, . + * + * This software is licensed as described in the file COPYING, which + * you should have received as part of this distribution. The terms + * are also available at http://curl.haxx.se/docs/copyright.html. + * + * You may opt to use, copy, modify, merge, publish, distribute and/or sell + * copies of the Software, and permit persons to whom the Software is + * furnished to do so, under the terms of the COPYING file. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ***************************************************************************/ +#include "setup.h" + +#ifdef USE_DARWINSSL + +CURLcode Curl_st_connect(struct connectdata *conn, int sockindex); + +CURLcode Curl_st_connect_nonblocking(struct connectdata *conn, + int sockindex, + bool *done); + +/* this function doesn't actually do anything */ +void Curl_st_close_all(struct SessionHandle *data); + +/* close a SSL connection */ +void Curl_st_close(struct connectdata *conn, int sockindex); + +size_t Curl_st_version(char *buffer, size_t size); +int Curl_st_shutdown(struct connectdata *conn, int sockindex); +int Curl_st_check_cxn(struct connectdata *conn); +bool Curl_st_data_pending(const struct connectdata *conn, int connindex); + +/* API setup for SecureTransport */ +#define curlssl_init() (1) +#define curlssl_cleanup() Curl_nop_stmt +#define curlssl_connect Curl_st_connect +#define curlssl_connect_nonblocking Curl_st_connect_nonblocking +#define curlssl_session_free(x) Curl_nop_stmt +#define curlssl_close_all Curl_st_close_all +#define curlssl_close Curl_st_close +#define curlssl_shutdown(x,y) 0 +#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_NOT_BUILT_IN) +#define curlssl_set_engine_default(x) (x=x, CURLE_NOT_BUILT_IN) +#define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL) +#define curlssl_version Curl_st_version +#define curlssl_check_cxn Curl_st_check_cxn +#define curlssl_data_pending(x,y) Curl_st_data_pending(x, y) + +#endif /* USE_DARWINSSL */ +#endif /* HEADER_CURL_DARWINSSL_H */ \ No newline at end of file -- cgit v1.2.1 From 3a4b28d473e7c02fe8d2e30c25861eea2d8d0d22 Mon Sep 17 00:00:00 2001 From: Nick Zitzmann Date: Tue, 26 Jun 2012 21:39:48 +0200 Subject: DarwinSSL: several adjustments - Renamed st_ function prefix to darwinssl_ - Renamed Curl_st_ function prefix to Curl_darwinssl_ - Moved the duplicated ssl_connect_done out of the #ifdef in lib/urldata.h - Fixed a teensy little bug that made non-blocking connection attempts block - Made it so that it builds cleanly against the iOS 5.1 SDK --- lib/curl_darwinssl.h | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'lib/curl_darwinssl.h') diff --git a/lib/curl_darwinssl.h b/lib/curl_darwinssl.h index 6eb20cc0f..a8d65d15e 100644 --- a/lib/curl_darwinssl.h +++ b/lib/curl_darwinssl.h @@ -25,38 +25,39 @@ #ifdef USE_DARWINSSL -CURLcode Curl_st_connect(struct connectdata *conn, int sockindex); +CURLcode Curl_darwinssl_connect(struct connectdata *conn, int sockindex); -CURLcode Curl_st_connect_nonblocking(struct connectdata *conn, - int sockindex, - bool *done); +CURLcode Curl_darwinssl_connect_nonblocking(struct connectdata *conn, + int sockindex, + bool *done); /* this function doesn't actually do anything */ -void Curl_st_close_all(struct SessionHandle *data); +void Curl_darwinssl_close_all(struct SessionHandle *data); /* close a SSL connection */ -void Curl_st_close(struct connectdata *conn, int sockindex); +void Curl_darwinssl_close(struct connectdata *conn, int sockindex); -size_t Curl_st_version(char *buffer, size_t size); -int Curl_st_shutdown(struct connectdata *conn, int sockindex); -int Curl_st_check_cxn(struct connectdata *conn); -bool Curl_st_data_pending(const struct connectdata *conn, int connindex); +size_t Curl_darwinssl_version(char *buffer, size_t size); +int Curl_darwinssl_shutdown(struct connectdata *conn, int sockindex); +int Curl_darwinssl_check_cxn(struct connectdata *conn); +bool Curl_darwinssl_data_pending(const struct connectdata *conn, + int connindex); /* API setup for SecureTransport */ #define curlssl_init() (1) #define curlssl_cleanup() Curl_nop_stmt -#define curlssl_connect Curl_st_connect -#define curlssl_connect_nonblocking Curl_st_connect_nonblocking +#define curlssl_connect Curl_darwinssl_connect +#define curlssl_connect_nonblocking Curl_darwinssl_connect_nonblocking #define curlssl_session_free(x) Curl_nop_stmt -#define curlssl_close_all Curl_st_close_all -#define curlssl_close Curl_st_close +#define curlssl_close_all Curl_darwinssl_close_all +#define curlssl_close Curl_darwinssl_close #define curlssl_shutdown(x,y) 0 #define curlssl_set_engine(x,y) (x=x, y=y, CURLE_NOT_BUILT_IN) #define curlssl_set_engine_default(x) (x=x, CURLE_NOT_BUILT_IN) #define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL) -#define curlssl_version Curl_st_version -#define curlssl_check_cxn Curl_st_check_cxn -#define curlssl_data_pending(x,y) Curl_st_data_pending(x, y) +#define curlssl_version Curl_darwinssl_version +#define curlssl_check_cxn Curl_darwinssl_check_cxn +#define curlssl_data_pending(x,y) Curl_darwinssl_data_pending(x, y) #endif /* USE_DARWINSSL */ #endif /* HEADER_CURL_DARWINSSL_H */ \ No newline at end of file -- cgit v1.2.1 From dc7dc9786f43484ca422c2505880b832dea0f4f1 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Wed, 27 Jun 2012 10:55:54 +0200 Subject: curl_darwinssl.h: add newline at end of file --- lib/curl_darwinssl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/curl_darwinssl.h') diff --git a/lib/curl_darwinssl.h b/lib/curl_darwinssl.h index a8d65d15e..6c4f3289c 100644 --- a/lib/curl_darwinssl.h +++ b/lib/curl_darwinssl.h @@ -60,4 +60,4 @@ bool Curl_darwinssl_data_pending(const struct connectdata *conn, #define curlssl_data_pending(x,y) Curl_darwinssl_data_pending(x, y) #endif /* USE_DARWINSSL */ -#endif /* HEADER_CURL_DARWINSSL_H */ \ No newline at end of file +#endif /* HEADER_CURL_DARWINSSL_H */ -- cgit v1.2.1 From 7aa95afadd39867dd95fd4f3df316f7e7decac7a Mon Sep 17 00:00:00 2001 From: Nick Zitzmann Date: Wed, 27 Jun 2012 11:57:31 +0200 Subject: DarwinSSL: allow using NTLM authentication Allow NTLM authentication when building using SecureTransport (Darwin) for SSL. This uses CommonCrypto, a cryptography library that ships with all versions of iOS and Mac OS X. It's like OpenSSL's libcrypto, except that it's missing a few less-common cyphers and doesn't have a big number data structure. --- lib/curl_darwinssl.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'lib/curl_darwinssl.h') diff --git a/lib/curl_darwinssl.h b/lib/curl_darwinssl.h index 6c4f3289c..53053edca 100644 --- a/lib/curl_darwinssl.h +++ b/lib/curl_darwinssl.h @@ -43,6 +43,14 @@ int Curl_darwinssl_check_cxn(struct connectdata *conn); bool Curl_darwinssl_data_pending(const struct connectdata *conn, int connindex); +void Curl_darwinssl_random(struct SessionHandle *data, + unsigned char *entropy, + size_t length); +void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */ + size_t tmplen, + unsigned char *md5sum, /* output */ + size_t md5len); + /* API setup for SecureTransport */ #define curlssl_init() (1) #define curlssl_cleanup() Curl_nop_stmt @@ -58,6 +66,8 @@ bool Curl_darwinssl_data_pending(const struct connectdata *conn, #define curlssl_version Curl_darwinssl_version #define curlssl_check_cxn Curl_darwinssl_check_cxn #define curlssl_data_pending(x,y) Curl_darwinssl_data_pending(x, y) +#define curlssl_random(x,y,z) Curl_darwinssl_random(x,y,z) +#define curlssl_md5sum(a,b,c,d) Curl_darwinssl_md5sum(a,b,c,d) #endif /* USE_DARWINSSL */ #endif /* HEADER_CURL_DARWINSSL_H */ -- cgit v1.2.1