mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-23 01:58:24 +08:00

Commit ID: 97959e77. Using submodule instead of source code. It is brought from esp-idf, and some origin dependent code or configuration of hardware have not been removed. But it maybe not affect using at the ESP8266 platform.
1798 lines
30 KiB
ReStructuredText
1798 lines
30 KiB
ReStructuredText
OpenSSL-APIs
|
|
------------
|
|
|
|
This directory does not contain OpenSSL itself, but the code here can be used as a wrapper for applications using the OpenSSL API.
|
|
It uses mbedTLS to do the actual work, so anyone compiling openssl code needs the mbedtls library and header file.
|
|
|
|
OpenSSL APIs not mentioned in this article are not open to public for the time,
|
|
also do not have the corresponding function.
|
|
If user calls it directly, it will always return an error or may show cannot link at compiling time.
|
|
|
|
Chapter Introduction
|
|
====================
|
|
|
|
- Chapter 1. SSL Context Method Create
|
|
- Chapter 2. SSL Context Fucntion
|
|
- Chapter 3. SSL Fucntion
|
|
- Chapter 4. SSL X509 Certification and Private Key Function
|
|
|
|
|
|
Chapter 1. SSL Context Method Create
|
|
====================================
|
|
|
|
1.1 const SSL_METHOD* ``SSLv3_client_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
SSLV3.0 version SSL context client method point
|
|
|
|
Description::
|
|
|
|
create the target SSL context method
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = SSLv3_client_method();
|
|
|
|
...
|
|
}
|
|
|
|
1.2 const SSL_METHOD* ``TLSv1_client_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
TLSV1.0 version SSL context client method point
|
|
|
|
Description::
|
|
|
|
create the target SSL context method
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = TLSv1_client_method();
|
|
|
|
...
|
|
}
|
|
|
|
1.3 const SSL_METHOD* ``TLSv1_1_client_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
TLSV1.1 version SSL context client method point
|
|
|
|
Description::
|
|
|
|
create the target SSL context method
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = TLSv1_1_client_method();
|
|
|
|
...
|
|
}
|
|
|
|
1.4 const SSL_METHOD* ``TLSv1_2_client_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
TLSV1.2 version SSL context client method point
|
|
|
|
Description::
|
|
|
|
create the target SSL context method
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = TLSv1_2_client_method();
|
|
|
|
...
|
|
}
|
|
|
|
1.5 const SSL_METHOD* ``TLS_client_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
TLSV1.2 version SSL context client method point
|
|
|
|
Description::
|
|
|
|
create the default SSL context method, it's always to be TLSV1.2
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = TLSv1_2_client_method();
|
|
|
|
...
|
|
}
|
|
|
|
1.6 const SSL_METHOD* ``SSLv3_server_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
SSLV3.0 version SSL context server method point
|
|
|
|
Description::
|
|
|
|
create the target SSL context method
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = SSLv3_server_method();
|
|
|
|
...
|
|
}
|
|
|
|
1.7 const SSL_METHOD* ``TLSv1_server_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
TLSV1.0 version SSL context server method point
|
|
|
|
Description::
|
|
|
|
create the target SSL context method
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = TLSv1_server_method();
|
|
|
|
...
|
|
}
|
|
|
|
1.8 const SSL_METHOD* ``TLSv1_1_server_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
TLSV1.1 version SSL context server method point
|
|
|
|
Description::
|
|
|
|
create the target SSL context method
|
|
|
|
Example :
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = TLSv1_1_server_method();
|
|
|
|
...
|
|
}
|
|
|
|
|
|
1.9 const SSL_METHOD* ``TLSv1_2_server_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
TLSV1.2 version SSL context server method point
|
|
|
|
Description::
|
|
|
|
create the target SSL context method
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = TLSv1_2_server_method();
|
|
|
|
...
|
|
}
|
|
|
|
1.10 const SSL_METHOD* ``TLS_server_method`` (void)
|
|
|
|
Arguments::
|
|
|
|
none
|
|
|
|
Return::
|
|
|
|
TLSV1.2 version SSL context server method point
|
|
|
|
Description::
|
|
|
|
create the default SSL context method, it's always to be TLSV1.2
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method = TLSv1_2_server_method();
|
|
|
|
...
|
|
}
|
|
|
|
|
|
Chapter 2. SSL Context Fucntion
|
|
===============================
|
|
|
|
|
|
2.1 SSL_CTX* ``SSL_CTX_new`` (const SSL_METHOD *method)
|
|
|
|
Arguments::
|
|
|
|
method - the SSL context method point
|
|
|
|
Return::
|
|
|
|
context point
|
|
|
|
Description::
|
|
|
|
create a SSL context
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL_CTX *ctx = SSL_CTX_new(SSLv3_server_method());
|
|
|
|
...
|
|
}
|
|
|
|
|
|
2.2 ``void SSL_CTX_free`` (SSL_CTX *ctx)
|
|
|
|
Arguments::
|
|
|
|
ctx - the SSL context point
|
|
|
|
Return::
|
|
|
|
none
|
|
|
|
Description::
|
|
|
|
free a SSL context
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL_CTX *ctx;
|
|
|
|
... ...
|
|
|
|
SSL_CTX_free(ctx);
|
|
}
|
|
|
|
|
|
2.3 ``int SSL_CTX_set_ssl_version`` (SSL_CTX *ctx, const SSL_METHOD *meth)
|
|
|
|
Arguments::
|
|
|
|
ctx - SSL context point
|
|
meth - SSL method point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
set the SSL context version
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL_CTX *ctx;
|
|
const SSL_METHOD *meth;
|
|
|
|
... ...
|
|
|
|
SSL_CTX_set_ssl_version(ctx, meth);
|
|
}
|
|
|
|
|
|
2.4 const SSL_METHOD* ``SSL_CTX_get_ssl_method`` (SSL_CTX *ctx)
|
|
|
|
Arguments::
|
|
|
|
ctx - SSL context point
|
|
|
|
Return::
|
|
|
|
SSL context method
|
|
|
|
Description::
|
|
|
|
get the SSL context method
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
const SSL_METHOD *method;
|
|
SSL_CTX *ctx;
|
|
|
|
... ...
|
|
|
|
method = SSL_CTX_get_ssl_method(ctx);
|
|
}
|
|
|
|
|
|
|
|
Chapter 3. SSL Fucntion
|
|
=======================
|
|
|
|
|
|
3.1 SSL* ``SSL_new`` (SSL_CTX *ctx)
|
|
|
|
Arguments::
|
|
|
|
ctx - SSL context point
|
|
|
|
Return::
|
|
|
|
SSL method
|
|
|
|
Description::
|
|
|
|
create a SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
SSL_CTX *ctx;
|
|
|
|
... ...
|
|
|
|
ssl = SSL_new(ctx);
|
|
}
|
|
|
|
|
|
3.2 void ``SSL_free`` (SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
none
|
|
|
|
Description::
|
|
|
|
free SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
|
|
... ...
|
|
|
|
SSL_free(ssl);
|
|
}
|
|
|
|
|
|
3.3 int ``SSL_do_handshake`` (SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed, connect is close by remote
|
|
-1 : a error catch
|
|
|
|
Description::
|
|
|
|
perform the SSL handshake
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_do_handshake(ssl);
|
|
}
|
|
|
|
|
|
3.4 int ``SSL_connect`` (SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed, connect is close by remote
|
|
-1 : a error catch
|
|
|
|
Description::
|
|
|
|
connect to the remote SSL server
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_connect(ssl);
|
|
}
|
|
|
|
|
|
3.5 int ``SSL_accept`` (SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed, connect is close by remote
|
|
-1 : a error catch
|
|
|
|
Description::
|
|
|
|
accept the remote connection
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_accept(ssl);
|
|
}
|
|
|
|
|
|
3.6 int ``SSL_shutdown`` (SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed, connect is close by remote
|
|
-1 : a error catch
|
|
|
|
Description::
|
|
|
|
shutdown the connection
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_shutdown(ssl);
|
|
}
|
|
|
|
|
|
3.7 int ``SSL_clear`` (SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
shutdown the connection
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_clear(ssl);
|
|
}
|
|
|
|
|
|
3.8 int ``SSL_read`` (SSL *ssl, void *buffer, int len)
|
|
|
|
Arguments::
|
|
|
|
ssl - point
|
|
buffer - data buffer point
|
|
len - data length
|
|
|
|
Return::
|
|
|
|
> 0 : OK, and return received data bytes
|
|
= 0 : no data received or connection is closed
|
|
< 0 : an error catch
|
|
|
|
Description::
|
|
|
|
read data from remote
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
char *buf;
|
|
int len;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_read(ssl, buf, len);
|
|
}
|
|
|
|
3.9 int ``SSL_write`` (SSL *ssl, const void *buffer, int len)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
buffer - data buffer point
|
|
len - data length
|
|
|
|
Return::
|
|
|
|
> 0 : OK, and return received data bytes
|
|
= 0 : no data sent or connection is closed
|
|
< 0 : an error catch
|
|
|
|
Description::
|
|
|
|
send the data to remote
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
char *buf;
|
|
int len;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_write(ssl, buf, len);
|
|
}
|
|
|
|
|
|
3.10 ``SSL_CTX *SSL_get_SSL_CTX`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
SSL context
|
|
|
|
Description::
|
|
|
|
get SSL context of the SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
SSL_CTX *ctx;
|
|
|
|
... ...
|
|
|
|
ctx = SSL_get_SSL_CTX(ssl);
|
|
}
|
|
|
|
|
|
3.11 int ``SSL_get_shutdown`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
shutdown mode
|
|
|
|
Description::
|
|
|
|
get SSL shutdown mode
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int mode;
|
|
|
|
... ...
|
|
|
|
mode = SSL_get_SSL_CTX(ssl);
|
|
}
|
|
|
|
|
|
3.12 void ``SSL_set_shutdown`` (SSL *ssl, int mode)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
shutdown mode
|
|
|
|
Description::
|
|
|
|
set SSL shutdown mode
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int mode = 0;
|
|
|
|
... ...
|
|
|
|
SSL_set_shutdown(ssl, mode);
|
|
}
|
|
|
|
|
|
3.13 const SSL_METHOD* ``SSL_get_ssl_method`` (SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
SSL method
|
|
|
|
Description::
|
|
|
|
set SSL shutdown mode
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
const SSL_METHOD *method;
|
|
|
|
... ...
|
|
|
|
method = SSL_get_ssl_method(ssl);
|
|
}
|
|
|
|
|
|
3.14 int ``SSL_set_ssl_method`` (SSL *ssl, const SSL_METHOD *method)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
meth - SSL method point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
set the SSL method
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
const SSL_METHOD *method;
|
|
|
|
... ...
|
|
|
|
ret = SSL_set_ssl_method(ssl, method);
|
|
}
|
|
|
|
|
|
3.15 int ``SSL_pending`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
data bytes
|
|
|
|
Description::
|
|
|
|
get received data bytes
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
|
|
... ...
|
|
|
|
ret = SSL_pending(ssl);
|
|
}
|
|
|
|
|
|
3.16 int ``SSL_has_pending`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
1 : Yes
|
|
0 : No
|
|
|
|
Description::
|
|
|
|
check if data is received
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
|
|
... ...
|
|
|
|
ret = SSL_has_pending(ssl);
|
|
}
|
|
|
|
|
|
3.17 int ``SSL_get_fd`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
>= 0 : socket id
|
|
< 0 : a error catch
|
|
|
|
Description::
|
|
|
|
get the socket of the SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
|
|
... ...
|
|
|
|
ret = SSL_get_fd(ssl);
|
|
}
|
|
|
|
|
|
3.18 int ``SSL_get_rfd`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
>= 0 : socket id
|
|
< 0 : a error catch
|
|
|
|
Description::
|
|
|
|
get the read only socket of the SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
|
|
... ...
|
|
|
|
ret = SSL_get_rfd(ssl);
|
|
}
|
|
|
|
|
|
3.19 int ``SSL_get_wfd`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
>= 0 : socket id
|
|
< 0 : a error catch
|
|
|
|
Description::
|
|
|
|
get the write only socket of the SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
|
|
... ...
|
|
|
|
ret = SSL_get_wfd(ssl);
|
|
}
|
|
|
|
|
|
3.20 int ``SSL_set_fd`` (SSL *ssl, int fd)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
fd - socket id
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
set socket to SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
int socket;
|
|
|
|
... ...
|
|
|
|
ret = SSL_set_fd(ssl, socket);
|
|
}
|
|
|
|
|
|
3.21 int ``SSL_set_rfd`` (SSL *ssl, int fd)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
fd - socket id
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
set read only socket to SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
int socket;
|
|
|
|
... ...
|
|
|
|
ret = SSL_set_rfd(ssl, socket);
|
|
}
|
|
|
|
|
|
3.22 int ``SSL_set_wfd`` (SSL *ssl, int fd)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
fd - socket id
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
set write only socket to SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
int socket;
|
|
|
|
... ...
|
|
|
|
ret = SSL_set_wfd(ssl, socket);
|
|
}
|
|
|
|
|
|
3.23 int ``SSL_version`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
SSL version
|
|
|
|
Description::
|
|
|
|
get SSL version
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int version;
|
|
SSL *ssl;
|
|
|
|
... ...
|
|
|
|
version = SSL_version(ssl);
|
|
}
|
|
|
|
|
|
3.24 const char* ``SSL_get_version`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
SSL version string
|
|
|
|
Description::
|
|
|
|
get the SSL current version string
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
char *version;
|
|
SSL *ssl;
|
|
|
|
... ...
|
|
|
|
version = SSL_get_version(ssl);
|
|
}
|
|
|
|
|
|
3.25 OSSL_HANDSHAKE_STATE ``SSL_get_state`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
SSL state
|
|
|
|
Description::
|
|
|
|
get the SSL state
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
OSSL_HANDSHAKE_STATE state;
|
|
SSL *ssl;
|
|
|
|
... ...
|
|
|
|
state = SSL_get_state(ssl);
|
|
}
|
|
|
|
|
|
3.26 const char* ``SSL_alert_desc_string`` (int value)
|
|
|
|
Arguments::
|
|
|
|
value - SSL description
|
|
|
|
Return::
|
|
|
|
alert value string
|
|
|
|
Description::
|
|
|
|
get alert description string
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int val;
|
|
char *str;
|
|
|
|
... ...
|
|
|
|
str = SSL_alert_desc_string(val);
|
|
}
|
|
|
|
|
|
3.27 const char* ``SSL_alert_desc_string_long`` (int value)
|
|
|
|
Arguments::
|
|
|
|
value - SSL description
|
|
|
|
Return::
|
|
|
|
alert value long string
|
|
|
|
Description::
|
|
|
|
get alert description long string
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int val;
|
|
char *str;
|
|
|
|
... ...
|
|
|
|
str = SSL_alert_desc_string_long(val);
|
|
}
|
|
|
|
|
|
3.28 const char* ``SSL_alert_type_string`` (int value)
|
|
|
|
Arguments::
|
|
|
|
value - SSL type description
|
|
|
|
Return::
|
|
|
|
alert type string
|
|
|
|
Description::
|
|
|
|
get alert type string
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int val;
|
|
char *str;
|
|
|
|
... ...
|
|
|
|
str = SSL_alert_type_string(val);
|
|
}
|
|
|
|
|
|
3.29 const char* ``SSL_alert_type_string_long`` (int value)
|
|
|
|
Arguments::
|
|
|
|
value - SSL type description
|
|
|
|
Return::
|
|
|
|
alert type long string
|
|
|
|
Description::
|
|
|
|
get alert type long string
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int val;
|
|
char *str;
|
|
|
|
... ...
|
|
|
|
str = SSL_alert_type_string_long(val);
|
|
}
|
|
|
|
3.30 const char* ``SSL_rstate_string`` (SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
state string
|
|
|
|
Description::
|
|
|
|
get the state string where SSL is reading
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
char *str;
|
|
|
|
... ...
|
|
|
|
str = SSL_rstate_string(ssl);
|
|
}
|
|
|
|
|
|
3.31 const char* ``SSL_rstate_string_long`` (SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
state long string
|
|
|
|
Description::
|
|
|
|
get the state long string where SSL is reading
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
char *str;
|
|
|
|
... ...
|
|
|
|
str = SSL_rstate_string_long(ssl);
|
|
}
|
|
|
|
|
|
3.32 const char* ``SSL_state_string`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
state string
|
|
|
|
Description::
|
|
|
|
get the state string
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
const char *str;
|
|
|
|
... ...
|
|
|
|
str = SSL_state_string(ssl);
|
|
}
|
|
|
|
|
|
3.33 char* ``SSL_state_string_long`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
state long string
|
|
|
|
Description::
|
|
|
|
get the state long string
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
char *str;
|
|
|
|
... ...
|
|
|
|
str = SSL_state_string(ssl);
|
|
}
|
|
|
|
|
|
3.34 int ``SSL_get_error`` (const SSL *ssl, int ret_code)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
ret_code - SSL return code
|
|
|
|
Return::
|
|
|
|
SSL error number
|
|
|
|
Description::
|
|
|
|
get SSL error code
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int ret;
|
|
int err;
|
|
|
|
... ...
|
|
|
|
err = SSL_get_error(ssl, ret);
|
|
}
|
|
|
|
3.35 int ``SSL_want`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
specifical statement
|
|
|
|
Description::
|
|
|
|
get the SSL specifical statement
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int state;
|
|
|
|
... ...
|
|
|
|
state = SSL_want(ssl);
|
|
}
|
|
|
|
|
|
3.36 int ``SSL_want_nothing`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
0 : false
|
|
1 : true
|
|
|
|
Description::
|
|
|
|
check if SSL want nothing
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_want(ssl);
|
|
}
|
|
|
|
|
|
3.37 int ``SSL_want_read`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
0 : false
|
|
1 : true
|
|
|
|
Description::
|
|
|
|
check if SSL want to read
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_want_read(ssl);
|
|
}
|
|
|
|
|
|
3.38 int ``SSL_want_write`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
0 : false
|
|
1 : true
|
|
|
|
Description::
|
|
|
|
check if SSL want to write
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
int ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_want_write(ssl);
|
|
}
|
|
|
|
|
|
Chapter 4. SSL X509 Certification and Private Key Function
|
|
==========================================================
|
|
|
|
|
|
4.1 X509* ``d2i_X509`` (X509 **cert, const unsigned char *buffer, long len)
|
|
|
|
Arguments::
|
|
|
|
cert - a point pointed to X509 certification
|
|
buffer - a point pointed to the certification context memory point
|
|
length - certification bytes
|
|
|
|
Return::
|
|
|
|
X509 certification object point
|
|
|
|
Description::
|
|
|
|
load a character certification context into system context. If '*cert' is pointed to the
|
|
certification, then load certification into it. Or create a new X509 certification object
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
X509 *new;
|
|
X509 *cert;
|
|
unsigned char *buffer;
|
|
long len;
|
|
... ...
|
|
|
|
new = d2i_X509(&cert, buffer, len);
|
|
}
|
|
|
|
|
|
4.2 int ``SSL_add_client_CA`` (SSL *ssl, X509 *x)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
x - CA certification point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
add CA client certification into the SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
X509 *new;
|
|
|
|
... ...
|
|
|
|
ret = SSL_add_client_CA(ssl, new);
|
|
}
|
|
|
|
|
|
4.3 int ``SSL_CTX_add_client_CA`` (SSL_CTX *ctx, X509 *x)
|
|
|
|
Arguments::
|
|
|
|
ctx - SSL context point
|
|
x - CA certification point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
add CA client certification into the SSL context
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL_CTX *ctx;
|
|
X509 *new;
|
|
|
|
... ...
|
|
|
|
ret = SSL_add_clSSL_CTX_add_client_CAient_CA(ctx, new);
|
|
}
|
|
|
|
|
|
4.4 X509* ``SSL_get_certificate`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
SSL certification point
|
|
|
|
Description::
|
|
|
|
get the SSL certification point
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
X509 *cert;
|
|
|
|
... ...
|
|
|
|
cert = SSL_get_certificate(ssl);
|
|
}
|
|
|
|
|
|
4.5 long ``SSL_get_verify_result`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
the result of verifying
|
|
|
|
Description::
|
|
|
|
get the verifying result of the SSL certification
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
long ret;
|
|
|
|
... ...
|
|
|
|
ret = SSL_get_verify_result(ssl);
|
|
}
|
|
|
|
|
|
4.6 int ``SSL_CTX_use_certificate`` (SSL_CTX *ctx, X509 *x)
|
|
|
|
Arguments::
|
|
|
|
ctx - the SSL context point
|
|
pkey - certification object point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
load the certification into the SSL_CTX or SSL object
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL_CTX *ctx
|
|
X509 *new;
|
|
|
|
... ...
|
|
|
|
ret = SSL_CTX_use_certificate(ctx, new);
|
|
}
|
|
|
|
|
|
4.7 int ``SSL_CTX_use_certificate_ASN1`` (SSL_CTX *ctx, int len, const unsigned char *d)
|
|
|
|
Arguments::
|
|
|
|
ctx - SSL context point
|
|
len - certification length
|
|
d - data point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
load the ASN1 certification into SSL context
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL_CTX *ctx;
|
|
const unsigned char *buf;
|
|
int len;
|
|
|
|
... ...
|
|
|
|
ret = SSL_CTX_use_certificate_ASN1(ctx, len, buf);
|
|
}
|
|
|
|
|
|
4.8 int ``SSL_CTX_use_PrivateKey`` (SSL_CTX *ctx, EVP_PKEY *pkey)
|
|
|
|
Arguments::
|
|
|
|
ctx - SSL context point
|
|
pkey - private key object point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
load the private key into the context object
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL_CTX *ctx;
|
|
EVP_PKEY *pkey;
|
|
|
|
... ...
|
|
|
|
ret = SSL_CTX_use_PrivateKey(ctx, pkey);
|
|
}
|
|
|
|
|
|
4.9 int ``SSL_CTX_use_PrivateKey_ASN1`` (int pk, SSL_CTX *ctx, const unsigned char *d, long len)
|
|
|
|
Arguments::
|
|
|
|
ctx - SSL context point
|
|
d - data point
|
|
len - private key length
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
load the ASN1 private key into SSL context
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
int pk;
|
|
SSL_CTX *ctx;
|
|
const unsigned char *buf;
|
|
long len;
|
|
|
|
... ...
|
|
|
|
ret = SSL_CTX_use_PrivateKey_ASN1(pk, ctx, buf, len);
|
|
}
|
|
|
|
|
|
4.10 int ``SSL_CTX_use_RSAPrivateKey_ASN1`` (SSL_CTX *ctx, const unsigned char *d, long len)
|
|
|
|
Arguments::
|
|
|
|
ctx - SSL context point
|
|
d - data point
|
|
len - private key length
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
load the RSA ASN1 private key into SSL context
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL_CTX *ctx;
|
|
const unsigned char *buf;
|
|
long len;
|
|
|
|
... ...
|
|
|
|
ret = SSL_CTX_use_RSAPrivateKey_ASN1(ctx, buf, len);
|
|
}
|
|
|
|
|
|
4.11 int ``SSL_use_certificate_ASN1`` (SSL *ssl, int len, const unsigned char *d)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
len - data bytes
|
|
d - data point
|
|
|
|
Return::
|
|
|
|
1 : OK
|
|
0 : failed
|
|
|
|
Description::
|
|
|
|
load certification into the SSL
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
int ret;
|
|
SSL *ssl;
|
|
const unsigned char *buf;
|
|
long len;
|
|
|
|
... ...
|
|
|
|
ret = SSL_use_certificate_ASN1(ssl, len, buf);
|
|
}
|
|
|
|
|
|
4.12 X509* ``SSL_get_peer_certificate`` (const SSL *ssl)
|
|
|
|
Arguments::
|
|
|
|
ssl - SSL point
|
|
|
|
Return::
|
|
|
|
peer certification
|
|
|
|
Description::
|
|
|
|
get peer certification
|
|
|
|
Example::
|
|
|
|
void example(void)
|
|
{
|
|
SSL *ssl;
|
|
X509 *peer;
|
|
|
|
... ...
|
|
|
|
peer = SSL_get_peer_certificate(ssl);
|
|
}
|
|
|