1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00

docs/examples: demonstrate how to select SSL backends

The newly-introduced curl_global_sslset() function deserves to be
show-cased.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Johannes Schindelin 2017-07-15 22:30:42 +02:00 committed by Daniel Stenberg
parent 0fb4125554
commit a34e141c09
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
4 changed files with 80 additions and 1 deletions

View File

@ -222,6 +222,9 @@ subdirectory run following command from mentioned subdirectory:
In order to build sample program simplessl.c an SSL enabled libcurl is In order to build sample program simplessl.c an SSL enabled libcurl is
required, as well as the OpenSSL libeay32.lib and ssleay32.lib libraries. required, as well as the OpenSSL libeay32.lib and ssleay32.lib libraries.
In order to build sample program `sslbackend.c`, an SSL enabled libcurl
is required.
## Disabling Specific Protocols in Windows builds ## Disabling Specific Protocols in Windows builds
The configure utility, unfortunately, is not available for the Windows The configure utility, unfortunately, is not available for the Windows

View File

@ -70,6 +70,7 @@ smtp-multi
smtp-ssl smtp-ssl
smtp-tls smtp-tls
smtp-vrfy smtp-vrfy
sslbackend
url2file url2file
usercertinmem usercertinmem
xmlstream xmlstream

View File

@ -33,7 +33,7 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
imap-search imap-create imap-delete imap-copy imap-noop imap-ssl \ imap-search imap-create imap-delete imap-copy imap-noop imap-ssl \
imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \ imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
http2-upload http2-serverpush getredirect ftpuploadfrommem \ http2-upload http2-serverpush getredirect ftpuploadfrommem \
ftpuploadresume ftpuploadresume sslbackend
# These examples require external dependencies that may not be commonly # These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here. # available on POSIX systems, so don't bother attempting to compile them here.

View File

@ -0,0 +1,75 @@
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* 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 https://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.
*
***************************************************************************/
/* <DESC>
* Shows HTTPS usage with client certs and optional ssl engine use.
* </DESC>
*/
#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
/*
* An SSL-enabled libcurl is required for this sample to work (at least one
* SSL backend has to be configured).
*
* **** This example only works with libcurl 7.56.0 and later! ****
*/
int main(int argc, char **argv)
{
const char *name = argc > 1 ? argv[1] : "openssl";
CURLsslset result;
if(!strcmp("list", name)) {
const curl_ssl_backend **list;
int i;
result = curl_global_sslset(-1, NULL, &list);
assert(result == CURLSSLSET_UNKNOWN_BACKEND);
for(i = 0; list[i]; i++)
printf("SSL backend #%d: '%s' (ID: %d)\n",
i, list[i]->name, list[i]->id);
return 0;
} else if(isdigit(*name)) {
curl_sslbackend id = (curl_sslbackend)atoi(name);
result = curl_global_sslset(id, NULL, NULL);
} else
result = curl_global_sslset(-1, name, NULL);
if(result == CURLSSLSET_UNKNOWN_BACKEND) {
fprintf(stderr, "Unknown SSL backend id: %s\n", name);
return 1;
}
assert(result == CURLSSLSET_OK);
printf("Version with SSL backend '%s':\n\n\t%s\n", name, curl_version());
return 0;
}