1d4afb5ceSopenharmony_ci// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD 2d4afb5ceSopenharmony_ci// 3d4afb5ceSopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 4d4afb5ceSopenharmony_ci// you may not use this file except in compliance with the License. 5d4afb5ceSopenharmony_ci// You may obtain a copy of the License at 6d4afb5ceSopenharmony_ci 7d4afb5ceSopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 8d4afb5ceSopenharmony_ci// 9d4afb5ceSopenharmony_ci// Unless required by applicable law or agreed to in writing, software 10d4afb5ceSopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS, 11d4afb5ceSopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d4afb5ceSopenharmony_ci// See the License for the specific language governing permissions and 13d4afb5ceSopenharmony_ci// limitations under the License. 14d4afb5ceSopenharmony_ci 15d4afb5ceSopenharmony_ci#ifndef _SSL_H_ 16d4afb5ceSopenharmony_ci#define _SSL_H_ 17d4afb5ceSopenharmony_ci 18d4afb5ceSopenharmony_ci#ifdef __cplusplus 19d4afb5ceSopenharmony_ci extern "C" { 20d4afb5ceSopenharmony_ci#endif 21d4afb5ceSopenharmony_ci 22d4afb5ceSopenharmony_ci#include <stdlib.h> 23d4afb5ceSopenharmony_ci#include "ssl_x509.h" 24d4afb5ceSopenharmony_ci#include "ssl_pkey.h" 25d4afb5ceSopenharmony_ci 26d4afb5ceSopenharmony_ci/* 27d4afb5ceSopenharmony_ci{ 28d4afb5ceSopenharmony_ci*/ 29d4afb5ceSopenharmony_ci 30d4afb5ceSopenharmony_ci#define SSL_CB_ALERT 0x4000 31d4afb5ceSopenharmony_ci 32d4afb5ceSopenharmony_ci#define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT (1 << 0) 33d4afb5ceSopenharmony_ci#define X509_CHECK_FLAG_NO_WILDCARDS (1 << 1) 34d4afb5ceSopenharmony_ci#define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS (1 << 2) 35d4afb5ceSopenharmony_ci#define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS (1 << 3) 36d4afb5ceSopenharmony_ci#define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS (1 << 4) 37d4afb5ceSopenharmony_ci 38d4afb5ceSopenharmony_ci mbedtls_x509_crt * 39d4afb5ceSopenharmony_ci ssl_ctx_get_mbedtls_x509_crt(SSL_CTX *ssl_ctx); 40d4afb5ceSopenharmony_ci 41d4afb5ceSopenharmony_ci mbedtls_x509_crt * 42d4afb5ceSopenharmony_ci ssl_get_peer_mbedtls_x509_crt(SSL *ssl); 43d4afb5ceSopenharmony_ci 44d4afb5ceSopenharmony_ci int SSL_set_sni_callback(SSL *ssl, int(*cb)(void *, mbedtls_ssl_context *, 45d4afb5ceSopenharmony_ci const unsigned char *, size_t), void *param); 46d4afb5ceSopenharmony_ci 47d4afb5ceSopenharmony_ci void SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); 48d4afb5ceSopenharmony_ci 49d4afb5ceSopenharmony_ci int SSL_CTX_add_client_CA_ASN1(SSL_CTX *ssl, int len, 50d4afb5ceSopenharmony_ci const unsigned char *d); 51d4afb5ceSopenharmony_ci 52d4afb5ceSopenharmony_ci SSL *SSL_SSL_from_mbedtls_ssl_context(mbedtls_ssl_context *msc); 53d4afb5ceSopenharmony_ci 54d4afb5ceSopenharmony_ci mbedtls_ssl_context *SSL_mbedtls_ssl_context_from_SSL(SSL *ssl); 55d4afb5ceSopenharmony_ci 56d4afb5ceSopenharmony_ci/** 57d4afb5ceSopenharmony_ci * @brief create a SSL context 58d4afb5ceSopenharmony_ci * 59d4afb5ceSopenharmony_ci * @param method - the SSL context method point 60d4afb5ceSopenharmony_ci * 61d4afb5ceSopenharmony_ci * @return the context point 62d4afb5ceSopenharmony_ci */ 63d4afb5ceSopenharmony_ciSSL_CTX* SSL_CTX_new(const SSL_METHOD *method, void *rngctx); 64d4afb5ceSopenharmony_ci 65d4afb5ceSopenharmony_ci/** 66d4afb5ceSopenharmony_ci * @brief free a SSL context 67d4afb5ceSopenharmony_ci * 68d4afb5ceSopenharmony_ci * @param method - the SSL context point 69d4afb5ceSopenharmony_ci * 70d4afb5ceSopenharmony_ci * @return none 71d4afb5ceSopenharmony_ci */ 72d4afb5ceSopenharmony_civoid SSL_CTX_free(SSL_CTX *ctx); 73d4afb5ceSopenharmony_ci 74d4afb5ceSopenharmony_ci/** 75d4afb5ceSopenharmony_ci * @brief create a SSL 76d4afb5ceSopenharmony_ci * 77d4afb5ceSopenharmony_ci * @param ctx - the SSL context point 78d4afb5ceSopenharmony_ci * 79d4afb5ceSopenharmony_ci * @return the SSL point 80d4afb5ceSopenharmony_ci */ 81d4afb5ceSopenharmony_ciSSL* SSL_new(SSL_CTX *ctx); 82d4afb5ceSopenharmony_ci 83d4afb5ceSopenharmony_ci/** 84d4afb5ceSopenharmony_ci * @brief free the SSL 85d4afb5ceSopenharmony_ci * 86d4afb5ceSopenharmony_ci * @param ssl - the SSL point 87d4afb5ceSopenharmony_ci * 88d4afb5ceSopenharmony_ci * @return none 89d4afb5ceSopenharmony_ci */ 90d4afb5ceSopenharmony_civoid SSL_free(SSL *ssl); 91d4afb5ceSopenharmony_ci 92d4afb5ceSopenharmony_ci/** 93d4afb5ceSopenharmony_ci * @brief connect to the remote SSL server 94d4afb5ceSopenharmony_ci * 95d4afb5ceSopenharmony_ci * @param ssl - the SSL point 96d4afb5ceSopenharmony_ci * 97d4afb5ceSopenharmony_ci * @return result 98d4afb5ceSopenharmony_ci * 1 : OK 99d4afb5ceSopenharmony_ci * -1 : failed 100d4afb5ceSopenharmony_ci */ 101d4afb5ceSopenharmony_ciint SSL_connect(SSL *ssl); 102d4afb5ceSopenharmony_ci 103d4afb5ceSopenharmony_ci/** 104d4afb5ceSopenharmony_ci * @brief accept the remote connection 105d4afb5ceSopenharmony_ci * 106d4afb5ceSopenharmony_ci * @param ssl - the SSL point 107d4afb5ceSopenharmony_ci * 108d4afb5ceSopenharmony_ci * @return result 109d4afb5ceSopenharmony_ci * 1 : OK 110d4afb5ceSopenharmony_ci * -1 : failed 111d4afb5ceSopenharmony_ci */ 112d4afb5ceSopenharmony_ciint SSL_accept(SSL *ssl); 113d4afb5ceSopenharmony_ci 114d4afb5ceSopenharmony_ci/** 115d4afb5ceSopenharmony_ci * @brief read data from to remote 116d4afb5ceSopenharmony_ci * 117d4afb5ceSopenharmony_ci * @param ssl - the SSL point which has been connected 118d4afb5ceSopenharmony_ci * @param buffer - the received data buffer point 119d4afb5ceSopenharmony_ci * @param len - the received data length 120d4afb5ceSopenharmony_ci * 121d4afb5ceSopenharmony_ci * @return result 122d4afb5ceSopenharmony_ci * > 0 : OK, and return received data bytes 123d4afb5ceSopenharmony_ci * = 0 : connection is closed 124d4afb5ceSopenharmony_ci * < 0 : an error catch 125d4afb5ceSopenharmony_ci */ 126d4afb5ceSopenharmony_ciint SSL_read(SSL *ssl, void *buffer, int len); 127d4afb5ceSopenharmony_ci 128d4afb5ceSopenharmony_ci/** 129d4afb5ceSopenharmony_ci * @brief send the data to remote 130d4afb5ceSopenharmony_ci * 131d4afb5ceSopenharmony_ci * @param ssl - the SSL point which has been connected 132d4afb5ceSopenharmony_ci * @param buffer - the send data buffer point 133d4afb5ceSopenharmony_ci * @param len - the send data length 134d4afb5ceSopenharmony_ci * 135d4afb5ceSopenharmony_ci * @return result 136d4afb5ceSopenharmony_ci * > 0 : OK, and return sent data bytes 137d4afb5ceSopenharmony_ci * = 0 : connection is closed 138d4afb5ceSopenharmony_ci * < 0 : an error catch 139d4afb5ceSopenharmony_ci */ 140d4afb5ceSopenharmony_ciint SSL_write(SSL *ssl, const void *buffer, int len); 141d4afb5ceSopenharmony_ci 142d4afb5ceSopenharmony_ci/** 143d4afb5ceSopenharmony_ci * @brief get the verifying result of the SSL certification 144d4afb5ceSopenharmony_ci * 145d4afb5ceSopenharmony_ci * @param ssl - the SSL point 146d4afb5ceSopenharmony_ci * 147d4afb5ceSopenharmony_ci * @return the result of verifying 148d4afb5ceSopenharmony_ci */ 149d4afb5ceSopenharmony_cilong SSL_get_verify_result(const SSL *ssl); 150d4afb5ceSopenharmony_ci 151d4afb5ceSopenharmony_ci/** 152d4afb5ceSopenharmony_ci * @brief shutdown the connection 153d4afb5ceSopenharmony_ci * 154d4afb5ceSopenharmony_ci * @param ssl - the SSL point 155d4afb5ceSopenharmony_ci * 156d4afb5ceSopenharmony_ci * @return result 157d4afb5ceSopenharmony_ci * 1 : OK 158d4afb5ceSopenharmony_ci * 0 : shutdown is not finished 159d4afb5ceSopenharmony_ci * -1 : an error catch 160d4afb5ceSopenharmony_ci */ 161d4afb5ceSopenharmony_ciint SSL_shutdown(SSL *ssl); 162d4afb5ceSopenharmony_ci 163d4afb5ceSopenharmony_ci/** 164d4afb5ceSopenharmony_ci * @brief bind the socket file description into the SSL 165d4afb5ceSopenharmony_ci * 166d4afb5ceSopenharmony_ci * @param ssl - the SSL point 167d4afb5ceSopenharmony_ci * @param fd - socket handle 168d4afb5ceSopenharmony_ci * 169d4afb5ceSopenharmony_ci * @return result 170d4afb5ceSopenharmony_ci * 1 : OK 171d4afb5ceSopenharmony_ci * 0 : failed 172d4afb5ceSopenharmony_ci */ 173d4afb5ceSopenharmony_ciint SSL_set_fd(SSL *ssl, int fd); 174d4afb5ceSopenharmony_ci 175d4afb5ceSopenharmony_ci/** 176d4afb5ceSopenharmony_ci * @brief These functions load the private key into the SSL_CTX or SSL object 177d4afb5ceSopenharmony_ci * 178d4afb5ceSopenharmony_ci * @param ctx - the SSL context point 179d4afb5ceSopenharmony_ci * @param pkey - private key object point 180d4afb5ceSopenharmony_ci * 181d4afb5ceSopenharmony_ci * @return result 182d4afb5ceSopenharmony_ci * 1 : OK 183d4afb5ceSopenharmony_ci * 0 : failed 184d4afb5ceSopenharmony_ci */ 185d4afb5ceSopenharmony_ciint SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); 186d4afb5ceSopenharmony_ci 187d4afb5ceSopenharmony_ci/** 188d4afb5ceSopenharmony_ci * @brief These functions load the certification into the SSL_CTX or SSL object 189d4afb5ceSopenharmony_ci * 190d4afb5ceSopenharmony_ci * @param ctx - the SSL context point 191d4afb5ceSopenharmony_ci * @param pkey - certification object point 192d4afb5ceSopenharmony_ci * 193d4afb5ceSopenharmony_ci * @return result 194d4afb5ceSopenharmony_ci * 1 : OK 195d4afb5ceSopenharmony_ci * 0 : failed 196d4afb5ceSopenharmony_ci */ 197d4afb5ceSopenharmony_ciint SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); 198d4afb5ceSopenharmony_ci 199d4afb5ceSopenharmony_ci/** 200d4afb5ceSopenharmony_ci * @brief create the target SSL context client method 201d4afb5ceSopenharmony_ci * 202d4afb5ceSopenharmony_ci * @param none 203d4afb5ceSopenharmony_ci * 204d4afb5ceSopenharmony_ci * @return the SSLV2.3 version SSL context client method 205d4afb5ceSopenharmony_ci */ 206d4afb5ceSopenharmony_ciconst SSL_METHOD* SSLv23_client_method(void); 207d4afb5ceSopenharmony_ci 208d4afb5ceSopenharmony_ci/** 209d4afb5ceSopenharmony_ci * @brief create the target SSL context client method 210d4afb5ceSopenharmony_ci * 211d4afb5ceSopenharmony_ci * @param none 212d4afb5ceSopenharmony_ci * 213d4afb5ceSopenharmony_ci * @return the TLSV1.0 version SSL context client method 214d4afb5ceSopenharmony_ci */ 215d4afb5ceSopenharmony_ciconst SSL_METHOD* TLSv1_client_method(void); 216d4afb5ceSopenharmony_ci 217d4afb5ceSopenharmony_ci/** 218d4afb5ceSopenharmony_ci * @brief create the target SSL context client method 219d4afb5ceSopenharmony_ci * 220d4afb5ceSopenharmony_ci * @param none 221d4afb5ceSopenharmony_ci * 222d4afb5ceSopenharmony_ci * @return the SSLV1.0 version SSL context client method 223d4afb5ceSopenharmony_ci */ 224d4afb5ceSopenharmony_ciconst SSL_METHOD* SSLv3_client_method(void); 225d4afb5ceSopenharmony_ci 226d4afb5ceSopenharmony_ci/** 227d4afb5ceSopenharmony_ci * @brief create the target SSL context client method 228d4afb5ceSopenharmony_ci * 229d4afb5ceSopenharmony_ci * @param none 230d4afb5ceSopenharmony_ci * 231d4afb5ceSopenharmony_ci * @return the TLSV1.1 version SSL context client method 232d4afb5ceSopenharmony_ci */ 233d4afb5ceSopenharmony_ciconst SSL_METHOD* TLSv1_1_client_method(void); 234d4afb5ceSopenharmony_ci 235d4afb5ceSopenharmony_ci/** 236d4afb5ceSopenharmony_ci * @brief create the target SSL context client method 237d4afb5ceSopenharmony_ci * 238d4afb5ceSopenharmony_ci * @param none 239d4afb5ceSopenharmony_ci * 240d4afb5ceSopenharmony_ci * @return the TLSV1.2 version SSL context client method 241d4afb5ceSopenharmony_ci */ 242d4afb5ceSopenharmony_ciconst SSL_METHOD* TLSv1_2_client_method(void); 243d4afb5ceSopenharmony_ci 244d4afb5ceSopenharmony_ci/** 245d4afb5ceSopenharmony_ci * @brief create the target SSL context server method 246d4afb5ceSopenharmony_ci * 247d4afb5ceSopenharmony_ci * @param none 248d4afb5ceSopenharmony_ci * 249d4afb5ceSopenharmony_ci * @return the TLS any version SSL context client method 250d4afb5ceSopenharmony_ci */ 251d4afb5ceSopenharmony_ciconst SSL_METHOD* TLS_client_method(void); 252d4afb5ceSopenharmony_ci 253d4afb5ceSopenharmony_ci/** 254d4afb5ceSopenharmony_ci * @brief create the target SSL context server method 255d4afb5ceSopenharmony_ci * 256d4afb5ceSopenharmony_ci * @param none 257d4afb5ceSopenharmony_ci * 258d4afb5ceSopenharmony_ci * @return the SSLV2.3 version SSL context server method 259d4afb5ceSopenharmony_ci */ 260d4afb5ceSopenharmony_ciconst SSL_METHOD* SSLv23_server_method(void); 261d4afb5ceSopenharmony_ci 262d4afb5ceSopenharmony_ci/** 263d4afb5ceSopenharmony_ci * @brief create the target SSL context server method 264d4afb5ceSopenharmony_ci * 265d4afb5ceSopenharmony_ci * @param none 266d4afb5ceSopenharmony_ci * 267d4afb5ceSopenharmony_ci * @return the TLSV1.1 version SSL context server method 268d4afb5ceSopenharmony_ci */ 269d4afb5ceSopenharmony_ciconst SSL_METHOD* TLSv1_1_server_method(void); 270d4afb5ceSopenharmony_ci 271d4afb5ceSopenharmony_ci/** 272d4afb5ceSopenharmony_ci * @brief create the target SSL context server method 273d4afb5ceSopenharmony_ci * 274d4afb5ceSopenharmony_ci * @param none 275d4afb5ceSopenharmony_ci * 276d4afb5ceSopenharmony_ci * @return the TLSV1.2 version SSL context server method 277d4afb5ceSopenharmony_ci */ 278d4afb5ceSopenharmony_ciconst SSL_METHOD* TLSv1_2_server_method(void); 279d4afb5ceSopenharmony_ci 280d4afb5ceSopenharmony_ci/** 281d4afb5ceSopenharmony_ci * @brief create the target SSL context server method 282d4afb5ceSopenharmony_ci * 283d4afb5ceSopenharmony_ci * @param none 284d4afb5ceSopenharmony_ci * 285d4afb5ceSopenharmony_ci * @return the TLSV1.0 version SSL context server method 286d4afb5ceSopenharmony_ci */ 287d4afb5ceSopenharmony_ciconst SSL_METHOD* TLSv1_server_method(void); 288d4afb5ceSopenharmony_ci 289d4afb5ceSopenharmony_ci/** 290d4afb5ceSopenharmony_ci * @brief create the target SSL context server method 291d4afb5ceSopenharmony_ci * 292d4afb5ceSopenharmony_ci * @param none 293d4afb5ceSopenharmony_ci * 294d4afb5ceSopenharmony_ci * @return the SSLV3.0 version SSL context server method 295d4afb5ceSopenharmony_ci */ 296d4afb5ceSopenharmony_ciconst SSL_METHOD* SSLv3_server_method(void); 297d4afb5ceSopenharmony_ci 298d4afb5ceSopenharmony_ci/** 299d4afb5ceSopenharmony_ci * @brief create the target SSL context server method 300d4afb5ceSopenharmony_ci * 301d4afb5ceSopenharmony_ci * @param none 302d4afb5ceSopenharmony_ci * 303d4afb5ceSopenharmony_ci * @return the TLS any version SSL context server method 304d4afb5ceSopenharmony_ci */ 305d4afb5ceSopenharmony_ciconst SSL_METHOD* TLS_server_method(void); 306d4afb5ceSopenharmony_ci 307d4afb5ceSopenharmony_ci 308d4afb5ceSopenharmony_ci/** 309d4afb5ceSopenharmony_ci * @brief set the SSL context ALPN select callback function 310d4afb5ceSopenharmony_ci * 311d4afb5ceSopenharmony_ci * @param ctx - SSL context point 312d4afb5ceSopenharmony_ci * @param cb - ALPN select callback function 313d4afb5ceSopenharmony_ci * @param arg - ALPN select callback function entry private data point 314d4afb5ceSopenharmony_ci * 315d4afb5ceSopenharmony_ci * @return none 316d4afb5ceSopenharmony_ci */ 317d4afb5ceSopenharmony_civoid SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, next_proto_cb cb, 318d4afb5ceSopenharmony_ci void *arg); 319d4afb5ceSopenharmony_ci 320d4afb5ceSopenharmony_civoid SSL_set_alpn_select_cb(SSL *ssl, void *arg); 321d4afb5ceSopenharmony_ci 322d4afb5ceSopenharmony_ci/** 323d4afb5ceSopenharmony_ci * @brief set the SSL context ALPN select protocol 324d4afb5ceSopenharmony_ci * 325d4afb5ceSopenharmony_ci * @param ctx - SSL context point 326d4afb5ceSopenharmony_ci * @param protos - ALPN protocol name 327d4afb5ceSopenharmony_ci * @param protos_len - ALPN protocol name bytes 328d4afb5ceSopenharmony_ci * 329d4afb5ceSopenharmony_ci * @return result 330d4afb5ceSopenharmony_ci * 0 : OK 331d4afb5ceSopenharmony_ci * 1 : failed 332d4afb5ceSopenharmony_ci */ 333d4afb5ceSopenharmony_ciint SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, unsigned int protos_len); 334d4afb5ceSopenharmony_ci 335d4afb5ceSopenharmony_ci/** 336d4afb5ceSopenharmony_ci * @brief set the SSL context next ALPN select callback function 337d4afb5ceSopenharmony_ci * 338d4afb5ceSopenharmony_ci * @param ctx - SSL context point 339d4afb5ceSopenharmony_ci * @param cb - ALPN select callback function 340d4afb5ceSopenharmony_ci * @param arg - ALPN select callback function entry private data point 341d4afb5ceSopenharmony_ci * 342d4afb5ceSopenharmony_ci * @return none 343d4afb5ceSopenharmony_ci */ 344d4afb5ceSopenharmony_civoid SSL_CTX_set_next_proto_select_cb(SSL_CTX *ctx, 345d4afb5ceSopenharmony_ci int (*cb) (SSL *ssl, 346d4afb5ceSopenharmony_ci unsigned char **out, 347d4afb5ceSopenharmony_ci unsigned char *outlen, 348d4afb5ceSopenharmony_ci const unsigned char *in, 349d4afb5ceSopenharmony_ci unsigned int inlen, 350d4afb5ceSopenharmony_ci void *arg), 351d4afb5ceSopenharmony_ci void *arg); 352d4afb5ceSopenharmony_ci 353d4afb5ceSopenharmony_civoid SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, 354d4afb5ceSopenharmony_ci unsigned int *len); 355d4afb5ceSopenharmony_ci 356d4afb5ceSopenharmony_civoid _ssl_set_alpn_list(const SSL *ssl); 357d4afb5ceSopenharmony_ci 358d4afb5ceSopenharmony_ci/** 359d4afb5ceSopenharmony_ci * @brief get SSL error code 360d4afb5ceSopenharmony_ci * 361d4afb5ceSopenharmony_ci * @param ssl - SSL point 362d4afb5ceSopenharmony_ci * @param ret_code - SSL return code 363d4afb5ceSopenharmony_ci * 364d4afb5ceSopenharmony_ci * @return SSL error number 365d4afb5ceSopenharmony_ci */ 366d4afb5ceSopenharmony_ciint SSL_get_error(const SSL *ssl, int ret_code); 367d4afb5ceSopenharmony_ci 368d4afb5ceSopenharmony_ci/** 369d4afb5ceSopenharmony_ci * @brief clear the SSL error code 370d4afb5ceSopenharmony_ci * 371d4afb5ceSopenharmony_ci * @param none 372d4afb5ceSopenharmony_ci * 373d4afb5ceSopenharmony_ci * @return none 374d4afb5ceSopenharmony_ci */ 375d4afb5ceSopenharmony_civoid ERR_clear_error(void); 376d4afb5ceSopenharmony_ci 377d4afb5ceSopenharmony_ci/** 378d4afb5ceSopenharmony_ci * @brief get the current SSL error code 379d4afb5ceSopenharmony_ci * 380d4afb5ceSopenharmony_ci * @param none 381d4afb5ceSopenharmony_ci * 382d4afb5ceSopenharmony_ci * @return current SSL error number 383d4afb5ceSopenharmony_ci */ 384d4afb5ceSopenharmony_ciint ERR_get_error(void); 385d4afb5ceSopenharmony_ci 386d4afb5ceSopenharmony_ci/** 387d4afb5ceSopenharmony_ci * @brief register the SSL error strings 388d4afb5ceSopenharmony_ci * 389d4afb5ceSopenharmony_ci * @param none 390d4afb5ceSopenharmony_ci * 391d4afb5ceSopenharmony_ci * @return none 392d4afb5ceSopenharmony_ci */ 393d4afb5ceSopenharmony_civoid ERR_load_SSL_strings(void); 394d4afb5ceSopenharmony_ci 395d4afb5ceSopenharmony_ci/** 396d4afb5ceSopenharmony_ci * @brief initialize the SSL library 397d4afb5ceSopenharmony_ci * 398d4afb5ceSopenharmony_ci * @param none 399d4afb5ceSopenharmony_ci * 400d4afb5ceSopenharmony_ci * @return none 401d4afb5ceSopenharmony_ci */ 402d4afb5ceSopenharmony_civoid SSL_library_init(void); 403d4afb5ceSopenharmony_ci 404d4afb5ceSopenharmony_ci/** 405d4afb5ceSopenharmony_ci * @brief generates a human-readable string representing the error code e 406d4afb5ceSopenharmony_ci * and store it into the "ret" point memory 407d4afb5ceSopenharmony_ci * 408d4afb5ceSopenharmony_ci * @param e - error code 409d4afb5ceSopenharmony_ci * @param ret - memory point to store the string 410d4afb5ceSopenharmony_ci * 411d4afb5ceSopenharmony_ci * @return the result string point 412d4afb5ceSopenharmony_ci */ 413d4afb5ceSopenharmony_cichar *ERR_error_string(unsigned long e, char *ret); 414d4afb5ceSopenharmony_ci 415d4afb5ceSopenharmony_ci/** 416d4afb5ceSopenharmony_ci * @brief add the SSL context option 417d4afb5ceSopenharmony_ci * 418d4afb5ceSopenharmony_ci * @param ctx - SSL context point 419d4afb5ceSopenharmony_ci * @param opt - new SSL context option 420d4afb5ceSopenharmony_ci * 421d4afb5ceSopenharmony_ci * @return the SSL context option 422d4afb5ceSopenharmony_ci */ 423d4afb5ceSopenharmony_ciunsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long opt); 424d4afb5ceSopenharmony_ci 425d4afb5ceSopenharmony_ci/** 426d4afb5ceSopenharmony_ci * @brief add the SSL context mode 427d4afb5ceSopenharmony_ci * 428d4afb5ceSopenharmony_ci * @param ctx - SSL context point 429d4afb5ceSopenharmony_ci * @param mod - new SSL context mod 430d4afb5ceSopenharmony_ci * 431d4afb5ceSopenharmony_ci * @return result 432d4afb5ceSopenharmony_ci * 1 : OK 433d4afb5ceSopenharmony_ci * 0 : failed 434d4afb5ceSopenharmony_ci */ 435d4afb5ceSopenharmony_ciint SSL_CTX_set_mode(SSL_CTX *ctx, int mod); 436d4afb5ceSopenharmony_ci 437d4afb5ceSopenharmony_ci/* 438d4afb5ceSopenharmony_ci} 439d4afb5ceSopenharmony_ci*/ 440d4afb5ceSopenharmony_ci 441d4afb5ceSopenharmony_ci/** 442d4afb5ceSopenharmony_ci * @brief perform the SSL handshake 443d4afb5ceSopenharmony_ci * 444d4afb5ceSopenharmony_ci * @param ssl - SSL point 445d4afb5ceSopenharmony_ci * 446d4afb5ceSopenharmony_ci * @return result 447d4afb5ceSopenharmony_ci * 1 : OK 448d4afb5ceSopenharmony_ci * 0 : failed 449d4afb5ceSopenharmony_ci * -1 : a error catch 450d4afb5ceSopenharmony_ci */ 451d4afb5ceSopenharmony_ciint SSL_do_handshake(SSL *ssl); 452d4afb5ceSopenharmony_ci 453d4afb5ceSopenharmony_ci/** 454d4afb5ceSopenharmony_ci * @brief get the SSL current version 455d4afb5ceSopenharmony_ci * 456d4afb5ceSopenharmony_ci * @param ssl - SSL point 457d4afb5ceSopenharmony_ci * 458d4afb5ceSopenharmony_ci * @return the version string 459d4afb5ceSopenharmony_ci */ 460d4afb5ceSopenharmony_ciconst char *SSL_get_version(const SSL *ssl); 461d4afb5ceSopenharmony_ci 462d4afb5ceSopenharmony_ci/** 463d4afb5ceSopenharmony_ci * @brief set the SSL context version 464d4afb5ceSopenharmony_ci * 465d4afb5ceSopenharmony_ci * @param ctx - SSL context point 466d4afb5ceSopenharmony_ci * @param meth - SSL method point 467d4afb5ceSopenharmony_ci * 468d4afb5ceSopenharmony_ci * @return result 469d4afb5ceSopenharmony_ci * 1 : OK 470d4afb5ceSopenharmony_ci * 0 : failed 471d4afb5ceSopenharmony_ci */ 472d4afb5ceSopenharmony_ciint SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); 473d4afb5ceSopenharmony_ci 474d4afb5ceSopenharmony_ci/** 475d4afb5ceSopenharmony_ci * @brief get the bytes numbers which are to be read 476d4afb5ceSopenharmony_ci * 477d4afb5ceSopenharmony_ci * @param ssl - SSL point 478d4afb5ceSopenharmony_ci * 479d4afb5ceSopenharmony_ci * @return bytes number 480d4afb5ceSopenharmony_ci */ 481d4afb5ceSopenharmony_ciint SSL_pending(const SSL *ssl); 482d4afb5ceSopenharmony_ci 483d4afb5ceSopenharmony_ci/** 484d4afb5ceSopenharmony_ci * @brief check if SSL want nothing 485d4afb5ceSopenharmony_ci * 486d4afb5ceSopenharmony_ci * @param ssl - SSL point 487d4afb5ceSopenharmony_ci * 488d4afb5ceSopenharmony_ci * @return result 489d4afb5ceSopenharmony_ci * 0 : false 490d4afb5ceSopenharmony_ci * 1 : true 491d4afb5ceSopenharmony_ci */ 492d4afb5ceSopenharmony_ciint SSL_want_nothing(const SSL *ssl); 493d4afb5ceSopenharmony_ci 494d4afb5ceSopenharmony_ci/** 495d4afb5ceSopenharmony_ci * @brief check if SSL want to read 496d4afb5ceSopenharmony_ci * 497d4afb5ceSopenharmony_ci * @param ssl - SSL point 498d4afb5ceSopenharmony_ci * 499d4afb5ceSopenharmony_ci * @return result 500d4afb5ceSopenharmony_ci * 0 : false 501d4afb5ceSopenharmony_ci * 1 : true 502d4afb5ceSopenharmony_ci */ 503d4afb5ceSopenharmony_ciint SSL_want_read(const SSL *ssl); 504d4afb5ceSopenharmony_ci 505d4afb5ceSopenharmony_ci/** 506d4afb5ceSopenharmony_ci * @brief check if SSL want to write 507d4afb5ceSopenharmony_ci * 508d4afb5ceSopenharmony_ci * @param ssl - SSL point 509d4afb5ceSopenharmony_ci * 510d4afb5ceSopenharmony_ci * @return result 511d4afb5ceSopenharmony_ci * 0 : false 512d4afb5ceSopenharmony_ci * 1 : true 513d4afb5ceSopenharmony_ci */ 514d4afb5ceSopenharmony_ciint SSL_want_write(const SSL *ssl); 515d4afb5ceSopenharmony_ci 516d4afb5ceSopenharmony_ci/** 517d4afb5ceSopenharmony_ci * @brief get the SSL context current method 518d4afb5ceSopenharmony_ci * 519d4afb5ceSopenharmony_ci * @param ctx - SSL context point 520d4afb5ceSopenharmony_ci * 521d4afb5ceSopenharmony_ci * @return the SSL context current method 522d4afb5ceSopenharmony_ci */ 523d4afb5ceSopenharmony_ciconst SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx); 524d4afb5ceSopenharmony_ci 525d4afb5ceSopenharmony_ci/** 526d4afb5ceSopenharmony_ci * @brief get the SSL current method 527d4afb5ceSopenharmony_ci * 528d4afb5ceSopenharmony_ci * @param ssl - SSL point 529d4afb5ceSopenharmony_ci * 530d4afb5ceSopenharmony_ci * @return the SSL current method 531d4afb5ceSopenharmony_ci */ 532d4afb5ceSopenharmony_ciconst SSL_METHOD *SSL_get_ssl_method(SSL *ssl); 533d4afb5ceSopenharmony_ci 534d4afb5ceSopenharmony_ci/** 535d4afb5ceSopenharmony_ci * @brief set the SSL method 536d4afb5ceSopenharmony_ci * 537d4afb5ceSopenharmony_ci * @param ssl - SSL point 538d4afb5ceSopenharmony_ci * @param meth - SSL method point 539d4afb5ceSopenharmony_ci * 540d4afb5ceSopenharmony_ci * @return result 541d4afb5ceSopenharmony_ci * 1 : OK 542d4afb5ceSopenharmony_ci * 0 : failed 543d4afb5ceSopenharmony_ci */ 544d4afb5ceSopenharmony_ciint SSL_set_ssl_method(SSL *ssl, const SSL_METHOD *method); 545d4afb5ceSopenharmony_ci 546d4afb5ceSopenharmony_ci/** 547d4afb5ceSopenharmony_ci * @brief add CA client certification into the SSL 548d4afb5ceSopenharmony_ci * 549d4afb5ceSopenharmony_ci * @param ssl - SSL point 550d4afb5ceSopenharmony_ci * @param x - CA certification point 551d4afb5ceSopenharmony_ci * 552d4afb5ceSopenharmony_ci * @return result 553d4afb5ceSopenharmony_ci * 1 : OK 554d4afb5ceSopenharmony_ci * 0 : failed 555d4afb5ceSopenharmony_ci */ 556d4afb5ceSopenharmony_ciint SSL_add_client_CA(SSL *ssl, X509 *x); 557d4afb5ceSopenharmony_ci 558d4afb5ceSopenharmony_ci/** 559d4afb5ceSopenharmony_ci * @brief add CA client certification into the SSL context 560d4afb5ceSopenharmony_ci * 561d4afb5ceSopenharmony_ci * @param ctx - SSL context point 562d4afb5ceSopenharmony_ci * @param x - CA certification point 563d4afb5ceSopenharmony_ci * 564d4afb5ceSopenharmony_ci * @return result 565d4afb5ceSopenharmony_ci * 1 : OK 566d4afb5ceSopenharmony_ci * 0 : failed 567d4afb5ceSopenharmony_ci */ 568d4afb5ceSopenharmony_ciint SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); 569d4afb5ceSopenharmony_ci 570d4afb5ceSopenharmony_ci/** 571d4afb5ceSopenharmony_ci * @brief set the SSL CA certification list 572d4afb5ceSopenharmony_ci * 573d4afb5ceSopenharmony_ci * @param ssl - SSL point 574d4afb5ceSopenharmony_ci * @param name_list - CA certification list 575d4afb5ceSopenharmony_ci * 576d4afb5ceSopenharmony_ci * @return none 577d4afb5ceSopenharmony_ci */ 578d4afb5ceSopenharmony_civoid SSL_set_client_CA_list(SSL *ssl, STACK_OF(X509_NAME) *name_list); 579d4afb5ceSopenharmony_ci 580d4afb5ceSopenharmony_ci/** 581d4afb5ceSopenharmony_ci * @brief set the SSL context CA certification list 582d4afb5ceSopenharmony_ci * 583d4afb5ceSopenharmony_ci * @param ctx - SSL context point 584d4afb5ceSopenharmony_ci * @param name_list - CA certification list 585d4afb5ceSopenharmony_ci * 586d4afb5ceSopenharmony_ci * @return none 587d4afb5ceSopenharmony_ci */ 588d4afb5ceSopenharmony_civoid SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); 589d4afb5ceSopenharmony_ci 590d4afb5ceSopenharmony_ci/** 591d4afb5ceSopenharmony_ci * @briefget the SSL CA certification list 592d4afb5ceSopenharmony_ci * 593d4afb5ceSopenharmony_ci * @param ssl - SSL point 594d4afb5ceSopenharmony_ci * 595d4afb5ceSopenharmony_ci * @return CA certification list 596d4afb5ceSopenharmony_ci */ 597d4afb5ceSopenharmony_ciSTACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *ssl); 598d4afb5ceSopenharmony_ci 599d4afb5ceSopenharmony_ci/** 600d4afb5ceSopenharmony_ci * @brief get the SSL context CA certification list 601d4afb5ceSopenharmony_ci * 602d4afb5ceSopenharmony_ci * @param ctx - SSL context point 603d4afb5ceSopenharmony_ci * 604d4afb5ceSopenharmony_ci * @return CA certification list 605d4afb5ceSopenharmony_ci */ 606d4afb5ceSopenharmony_ciSTACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *ctx); 607d4afb5ceSopenharmony_ci 608d4afb5ceSopenharmony_ci/** 609d4afb5ceSopenharmony_ci * @brief get the SSL certification point 610d4afb5ceSopenharmony_ci * 611d4afb5ceSopenharmony_ci * @param ssl - SSL point 612d4afb5ceSopenharmony_ci * 613d4afb5ceSopenharmony_ci * @return SSL certification point 614d4afb5ceSopenharmony_ci */ 615d4afb5ceSopenharmony_ciX509 *SSL_get_certificate(const SSL *ssl); 616d4afb5ceSopenharmony_ci 617d4afb5ceSopenharmony_ci/** 618d4afb5ceSopenharmony_ci * @brief get the SSL private key point 619d4afb5ceSopenharmony_ci * 620d4afb5ceSopenharmony_ci * @param ssl - SSL point 621d4afb5ceSopenharmony_ci * 622d4afb5ceSopenharmony_ci * @return SSL private key point 623d4afb5ceSopenharmony_ci */ 624d4afb5ceSopenharmony_ciEVP_PKEY *SSL_get_privatekey(const SSL *ssl); 625d4afb5ceSopenharmony_ci 626d4afb5ceSopenharmony_ci/** 627d4afb5ceSopenharmony_ci * @brief set the SSL information callback function 628d4afb5ceSopenharmony_ci * 629d4afb5ceSopenharmony_ci * @param ssl - SSL point 630d4afb5ceSopenharmony_ci * @param cb - information callback function 631d4afb5ceSopenharmony_ci * 632d4afb5ceSopenharmony_ci * @return none 633d4afb5ceSopenharmony_ci */ 634d4afb5ceSopenharmony_civoid SSL_set_info_callback(SSL *ssl, void (*cb) (const SSL *ssl, int type, int val)); 635d4afb5ceSopenharmony_ci 636d4afb5ceSopenharmony_ci/** 637d4afb5ceSopenharmony_ci * @brief get the SSL state 638d4afb5ceSopenharmony_ci * 639d4afb5ceSopenharmony_ci * @param ssl - SSL point 640d4afb5ceSopenharmony_ci * 641d4afb5ceSopenharmony_ci * @return SSL state 642d4afb5ceSopenharmony_ci */ 643d4afb5ceSopenharmony_ciOSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); 644d4afb5ceSopenharmony_ci 645d4afb5ceSopenharmony_ci/** 646d4afb5ceSopenharmony_ci * @brief set the SSL context read buffer length 647d4afb5ceSopenharmony_ci * 648d4afb5ceSopenharmony_ci * @param ctx - SSL context point 649d4afb5ceSopenharmony_ci * @param len - read buffer length 650d4afb5ceSopenharmony_ci * 651d4afb5ceSopenharmony_ci * @return none 652d4afb5ceSopenharmony_ci */ 653d4afb5ceSopenharmony_civoid SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); 654d4afb5ceSopenharmony_ci 655d4afb5ceSopenharmony_ci/** 656d4afb5ceSopenharmony_ci * @brief set the SSL read buffer length 657d4afb5ceSopenharmony_ci * 658d4afb5ceSopenharmony_ci * @param ssl - SSL point 659d4afb5ceSopenharmony_ci * @param len - read buffer length 660d4afb5ceSopenharmony_ci * 661d4afb5ceSopenharmony_ci * @return none 662d4afb5ceSopenharmony_ci */ 663d4afb5ceSopenharmony_civoid SSL_set_default_read_buffer_len(SSL *ssl, size_t len); 664d4afb5ceSopenharmony_ci 665d4afb5ceSopenharmony_ci/** 666d4afb5ceSopenharmony_ci * @brief set the SSL security level 667d4afb5ceSopenharmony_ci * 668d4afb5ceSopenharmony_ci * @param ssl - SSL point 669d4afb5ceSopenharmony_ci * @param level - security level 670d4afb5ceSopenharmony_ci * 671d4afb5ceSopenharmony_ci * @return none 672d4afb5ceSopenharmony_ci */ 673d4afb5ceSopenharmony_civoid SSL_set_security_level(SSL *ssl, int level); 674d4afb5ceSopenharmony_ci 675d4afb5ceSopenharmony_ci/** 676d4afb5ceSopenharmony_ci * @brief get the SSL security level 677d4afb5ceSopenharmony_ci * 678d4afb5ceSopenharmony_ci * @param ssl - SSL point 679d4afb5ceSopenharmony_ci * 680d4afb5ceSopenharmony_ci * @return security level 681d4afb5ceSopenharmony_ci */ 682d4afb5ceSopenharmony_ciint SSL_get_security_level(const SSL *ssl); 683d4afb5ceSopenharmony_ci 684d4afb5ceSopenharmony_ci/** 685d4afb5ceSopenharmony_ci * @brief get the SSL verifying mode of the SSL context 686d4afb5ceSopenharmony_ci * 687d4afb5ceSopenharmony_ci * @param ctx - SSL context point 688d4afb5ceSopenharmony_ci * 689d4afb5ceSopenharmony_ci * @return verifying mode 690d4afb5ceSopenharmony_ci */ 691d4afb5ceSopenharmony_ciint SSL_CTX_get_verify_mode(const SSL_CTX *ctx); 692d4afb5ceSopenharmony_ci 693d4afb5ceSopenharmony_ci/** 694d4afb5ceSopenharmony_ci * @brief get the SSL verifying depth of the SSL context 695d4afb5ceSopenharmony_ci * 696d4afb5ceSopenharmony_ci * @param ctx - SSL context point 697d4afb5ceSopenharmony_ci * 698d4afb5ceSopenharmony_ci * @return verifying depth 699d4afb5ceSopenharmony_ci */ 700d4afb5ceSopenharmony_ciint SSL_CTX_get_verify_depth(const SSL_CTX *ctx); 701d4afb5ceSopenharmony_ci 702d4afb5ceSopenharmony_ci/** 703d4afb5ceSopenharmony_ci * @brief set the SSL context verifying of the SSL context 704d4afb5ceSopenharmony_ci * 705d4afb5ceSopenharmony_ci * @param ctx - SSL context point 706d4afb5ceSopenharmony_ci * @param mode - verifying mode 707d4afb5ceSopenharmony_ci * @param verify_callback - verifying callback function 708d4afb5ceSopenharmony_ci * 709d4afb5ceSopenharmony_ci * @return none 710d4afb5ceSopenharmony_ci */ 711d4afb5ceSopenharmony_civoid SSL_CTX_set_verify(SSL_CTX *ctx, int mode, int (*verify_callback)(SSL *, mbedtls_x509_crt *)); 712d4afb5ceSopenharmony_ci 713d4afb5ceSopenharmony_ci/** 714d4afb5ceSopenharmony_ci * @brief set the SSL verifying of the SSL context 715d4afb5ceSopenharmony_ci * 716d4afb5ceSopenharmony_ci * @param ctx - SSL point 717d4afb5ceSopenharmony_ci * @param mode - verifying mode 718d4afb5ceSopenharmony_ci * @param verify_callback - verifying callback function 719d4afb5ceSopenharmony_ci * 720d4afb5ceSopenharmony_ci * @return none 721d4afb5ceSopenharmony_ci */ 722d4afb5ceSopenharmony_civoid SSL_set_verify(SSL *s, int mode, int (*verify_callback)(SSL *, mbedtls_x509_crt *)); 723d4afb5ceSopenharmony_ci 724d4afb5ceSopenharmony_ci/** 725d4afb5ceSopenharmony_ci * @brief set the SSL verify depth of the SSL context 726d4afb5ceSopenharmony_ci * 727d4afb5ceSopenharmony_ci * @param ctx - SSL context point 728d4afb5ceSopenharmony_ci * @param depth - verifying depth 729d4afb5ceSopenharmony_ci * 730d4afb5ceSopenharmony_ci * @return none 731d4afb5ceSopenharmony_ci */ 732d4afb5ceSopenharmony_civoid SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); 733d4afb5ceSopenharmony_ci 734d4afb5ceSopenharmony_ci/** 735d4afb5ceSopenharmony_ci * @brief certification verifying callback function 736d4afb5ceSopenharmony_ci * 737d4afb5ceSopenharmony_ci * @param preverify_ok - verifying result 738d4afb5ceSopenharmony_ci * @param x509_ctx - X509 certification point 739d4afb5ceSopenharmony_ci * 740d4afb5ceSopenharmony_ci * @return verifying result 741d4afb5ceSopenharmony_ci */ 742d4afb5ceSopenharmony_ciint verify_callback(SSL *, mbedtls_x509_crt *); 743d4afb5ceSopenharmony_ci 744d4afb5ceSopenharmony_ci/** 745d4afb5ceSopenharmony_ci * @brief set the session timeout time 746d4afb5ceSopenharmony_ci * 747d4afb5ceSopenharmony_ci * @param ctx - SSL context point 748d4afb5ceSopenharmony_ci * @param t - new session timeout time 749d4afb5ceSopenharmony_ci * 750d4afb5ceSopenharmony_ci * @return old session timeout time 751d4afb5ceSopenharmony_ci */ 752d4afb5ceSopenharmony_cilong SSL_CTX_set_timeout(SSL_CTX *ctx, long t); 753d4afb5ceSopenharmony_ci 754d4afb5ceSopenharmony_ci/** 755d4afb5ceSopenharmony_ci * @brief get the session timeout time 756d4afb5ceSopenharmony_ci * 757d4afb5ceSopenharmony_ci * @param ctx - SSL context point 758d4afb5ceSopenharmony_ci * 759d4afb5ceSopenharmony_ci * @return current session timeout time 760d4afb5ceSopenharmony_ci */ 761d4afb5ceSopenharmony_cilong SSL_CTX_get_timeout(const SSL_CTX *ctx); 762d4afb5ceSopenharmony_ci 763d4afb5ceSopenharmony_ci/** 764d4afb5ceSopenharmony_ci * @brief set the SSL context cipher through the list string 765d4afb5ceSopenharmony_ci * 766d4afb5ceSopenharmony_ci * @param ctx - SSL context point 767d4afb5ceSopenharmony_ci * @param str - cipher controller list string 768d4afb5ceSopenharmony_ci * 769d4afb5ceSopenharmony_ci * @return result 770d4afb5ceSopenharmony_ci * 1 : OK 771d4afb5ceSopenharmony_ci * 0 : failed 772d4afb5ceSopenharmony_ci */ 773d4afb5ceSopenharmony_ciint SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str); 774d4afb5ceSopenharmony_ci 775d4afb5ceSopenharmony_ci/** 776d4afb5ceSopenharmony_ci * @brief set the SSL cipher through the list string 777d4afb5ceSopenharmony_ci * 778d4afb5ceSopenharmony_ci * @param ssl - SSL point 779d4afb5ceSopenharmony_ci * @param str - cipher controller list string 780d4afb5ceSopenharmony_ci * 781d4afb5ceSopenharmony_ci * @return result 782d4afb5ceSopenharmony_ci * 1 : OK 783d4afb5ceSopenharmony_ci * 0 : failed 784d4afb5ceSopenharmony_ci */ 785d4afb5ceSopenharmony_ciint SSL_set_cipher_list(SSL *ssl, const char *str); 786d4afb5ceSopenharmony_ci 787d4afb5ceSopenharmony_ci/** 788d4afb5ceSopenharmony_ci * @brief get the SSL cipher list string 789d4afb5ceSopenharmony_ci * 790d4afb5ceSopenharmony_ci * @param ssl - SSL point 791d4afb5ceSopenharmony_ci * 792d4afb5ceSopenharmony_ci * @return cipher controller list string 793d4afb5ceSopenharmony_ci */ 794d4afb5ceSopenharmony_ciconst char *SSL_get_cipher_list(const SSL *ssl, int n); 795d4afb5ceSopenharmony_ci 796d4afb5ceSopenharmony_ci/** 797d4afb5ceSopenharmony_ci * @brief get the SSL cipher 798d4afb5ceSopenharmony_ci * 799d4afb5ceSopenharmony_ci * @param ssl - SSL point 800d4afb5ceSopenharmony_ci * 801d4afb5ceSopenharmony_ci * @return current cipher 802d4afb5ceSopenharmony_ci */ 803d4afb5ceSopenharmony_ciconst SSL_CIPHER *SSL_get_current_cipher(const SSL *ssl); 804d4afb5ceSopenharmony_ci 805d4afb5ceSopenharmony_ci/** 806d4afb5ceSopenharmony_ci * @brief get the SSL cipher string 807d4afb5ceSopenharmony_ci * 808d4afb5ceSopenharmony_ci * @param ssl - SSL point 809d4afb5ceSopenharmony_ci * 810d4afb5ceSopenharmony_ci * @return cipher string 811d4afb5ceSopenharmony_ci */ 812d4afb5ceSopenharmony_ciconst char *SSL_get_cipher(const SSL *ssl); 813d4afb5ceSopenharmony_ci 814d4afb5ceSopenharmony_ci/** 815d4afb5ceSopenharmony_ci * @brief get the SSL context object X509 certification storage 816d4afb5ceSopenharmony_ci * 817d4afb5ceSopenharmony_ci * @param ctx - SSL context point 818d4afb5ceSopenharmony_ci * 819d4afb5ceSopenharmony_ci * @return x509 certification storage 820d4afb5ceSopenharmony_ci */ 821d4afb5ceSopenharmony_ciX509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx); 822d4afb5ceSopenharmony_ci 823d4afb5ceSopenharmony_ci/** 824d4afb5ceSopenharmony_ci * @brief set the SSL context object X509 certification store 825d4afb5ceSopenharmony_ci * 826d4afb5ceSopenharmony_ci * @param ctx - SSL context point 827d4afb5ceSopenharmony_ci * @param store - X509 certification store 828d4afb5ceSopenharmony_ci * 829d4afb5ceSopenharmony_ci * @return none 830d4afb5ceSopenharmony_ci */ 831d4afb5ceSopenharmony_civoid SSL_CTX_set_cert_store(SSL_CTX *ctx, X509_STORE *store); 832d4afb5ceSopenharmony_ci 833d4afb5ceSopenharmony_ci/** 834d4afb5ceSopenharmony_ci * @brief get the SSL specifical statement 835d4afb5ceSopenharmony_ci * 836d4afb5ceSopenharmony_ci * @param ssl - SSL point 837d4afb5ceSopenharmony_ci * 838d4afb5ceSopenharmony_ci * @return specifical statement 839d4afb5ceSopenharmony_ci */ 840d4afb5ceSopenharmony_ciint SSL_want(const SSL *ssl); 841d4afb5ceSopenharmony_ci 842d4afb5ceSopenharmony_ci/** 843d4afb5ceSopenharmony_ci * @brief check if the SSL is SSL_X509_LOOKUP state 844d4afb5ceSopenharmony_ci * 845d4afb5ceSopenharmony_ci * @param ssl - SSL point 846d4afb5ceSopenharmony_ci * 847d4afb5ceSopenharmony_ci * @return result 848d4afb5ceSopenharmony_ci * 1 : OK 849d4afb5ceSopenharmony_ci * 0 : failed 850d4afb5ceSopenharmony_ci */ 851d4afb5ceSopenharmony_ciint SSL_want_x509_lookup(const SSL *ssl); 852d4afb5ceSopenharmony_ci 853d4afb5ceSopenharmony_ci/** 854d4afb5ceSopenharmony_ci * @brief reset the SSL 855d4afb5ceSopenharmony_ci * 856d4afb5ceSopenharmony_ci * @param ssl - SSL point 857d4afb5ceSopenharmony_ci * 858d4afb5ceSopenharmony_ci * @return result 859d4afb5ceSopenharmony_ci * 1 : OK 860d4afb5ceSopenharmony_ci * 0 : failed 861d4afb5ceSopenharmony_ci */ 862d4afb5ceSopenharmony_ciint SSL_clear(SSL *ssl); 863d4afb5ceSopenharmony_ci 864d4afb5ceSopenharmony_ci/** 865d4afb5ceSopenharmony_ci * @brief get the socket handle of the SSL 866d4afb5ceSopenharmony_ci * 867d4afb5ceSopenharmony_ci * @param ssl - SSL point 868d4afb5ceSopenharmony_ci * 869d4afb5ceSopenharmony_ci * @return result 870d4afb5ceSopenharmony_ci * >= 0 : yes, and return socket handle 871d4afb5ceSopenharmony_ci * < 0 : a error catch 872d4afb5ceSopenharmony_ci */ 873d4afb5ceSopenharmony_ciint SSL_get_fd(const SSL *ssl); 874d4afb5ceSopenharmony_ci 875d4afb5ceSopenharmony_ci/** 876d4afb5ceSopenharmony_ci * @brief get the read only socket handle of the SSL 877d4afb5ceSopenharmony_ci * 878d4afb5ceSopenharmony_ci * @param ssl - SSL point 879d4afb5ceSopenharmony_ci * 880d4afb5ceSopenharmony_ci * @return result 881d4afb5ceSopenharmony_ci * >= 0 : yes, and return socket handle 882d4afb5ceSopenharmony_ci * < 0 : a error catch 883d4afb5ceSopenharmony_ci */ 884d4afb5ceSopenharmony_ciint SSL_get_rfd(const SSL *ssl); 885d4afb5ceSopenharmony_ci 886d4afb5ceSopenharmony_ci/** 887d4afb5ceSopenharmony_ci * @brief get the write only socket handle of the SSL 888d4afb5ceSopenharmony_ci * 889d4afb5ceSopenharmony_ci * @param ssl - SSL point 890d4afb5ceSopenharmony_ci * 891d4afb5ceSopenharmony_ci * @return result 892d4afb5ceSopenharmony_ci * >= 0 : yes, and return socket handle 893d4afb5ceSopenharmony_ci * < 0 : a error catch 894d4afb5ceSopenharmony_ci */ 895d4afb5ceSopenharmony_ciint SSL_get_wfd(const SSL *ssl); 896d4afb5ceSopenharmony_ci 897d4afb5ceSopenharmony_ci/** 898d4afb5ceSopenharmony_ci * @brief set the SSL if we can read as many as data 899d4afb5ceSopenharmony_ci * 900d4afb5ceSopenharmony_ci * @param ssl - SSL point 901d4afb5ceSopenharmony_ci * @param yes - enable the function 902d4afb5ceSopenharmony_ci * 903d4afb5ceSopenharmony_ci * @return none 904d4afb5ceSopenharmony_ci */ 905d4afb5ceSopenharmony_civoid SSL_set_read_ahead(SSL *s, int yes); 906d4afb5ceSopenharmony_ci 907d4afb5ceSopenharmony_ci/** 908d4afb5ceSopenharmony_ci * @brief set the SSL context if we can read as many as data 909d4afb5ceSopenharmony_ci * 910d4afb5ceSopenharmony_ci * @param ctx - SSL context point 911d4afb5ceSopenharmony_ci * @param yes - enbale the function 912d4afb5ceSopenharmony_ci * 913d4afb5ceSopenharmony_ci * @return none 914d4afb5ceSopenharmony_ci */ 915d4afb5ceSopenharmony_civoid SSL_CTX_set_read_ahead(SSL_CTX *ctx, int yes); 916d4afb5ceSopenharmony_ci 917d4afb5ceSopenharmony_ci/** 918d4afb5ceSopenharmony_ci * @brief get the SSL ahead signal if we can read as many as data 919d4afb5ceSopenharmony_ci * 920d4afb5ceSopenharmony_ci * @param ssl - SSL point 921d4afb5ceSopenharmony_ci * 922d4afb5ceSopenharmony_ci * @return SSL context ahead signal 923d4afb5ceSopenharmony_ci */ 924d4afb5ceSopenharmony_ciint SSL_get_read_ahead(const SSL *ssl); 925d4afb5ceSopenharmony_ci 926d4afb5ceSopenharmony_ci/** 927d4afb5ceSopenharmony_ci * @brief get the SSL context ahead signal if we can read as many as data 928d4afb5ceSopenharmony_ci * 929d4afb5ceSopenharmony_ci * @param ctx - SSL context point 930d4afb5ceSopenharmony_ci * 931d4afb5ceSopenharmony_ci * @return SSL context ahead signal 932d4afb5ceSopenharmony_ci */ 933d4afb5ceSopenharmony_cilong SSL_CTX_get_read_ahead(SSL_CTX *ctx); 934d4afb5ceSopenharmony_ci 935d4afb5ceSopenharmony_ci/** 936d4afb5ceSopenharmony_ci * @brief check if some data can be read 937d4afb5ceSopenharmony_ci * 938d4afb5ceSopenharmony_ci * @param ssl - SSL point 939d4afb5ceSopenharmony_ci * 940d4afb5ceSopenharmony_ci * @return 941d4afb5ceSopenharmony_ci * 1 : there are bytes to be read 942d4afb5ceSopenharmony_ci * 0 : no data 943d4afb5ceSopenharmony_ci */ 944d4afb5ceSopenharmony_ciint SSL_has_pending(const SSL *ssl); 945d4afb5ceSopenharmony_ci 946d4afb5ceSopenharmony_ci/** 947d4afb5ceSopenharmony_ci * @brief load the X509 certification into SSL context 948d4afb5ceSopenharmony_ci * 949d4afb5ceSopenharmony_ci * @param ctx - SSL context point 950d4afb5ceSopenharmony_ci * @param x - X509 certification point 951d4afb5ceSopenharmony_ci * 952d4afb5ceSopenharmony_ci * @return result 953d4afb5ceSopenharmony_ci * 1 : OK 954d4afb5ceSopenharmony_ci * 0 : failed 955d4afb5ceSopenharmony_ci */ 956d4afb5ceSopenharmony_ciint SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);//loads the certificate x into ctx 957d4afb5ceSopenharmony_ci 958d4afb5ceSopenharmony_ci/** 959d4afb5ceSopenharmony_ci * @brief load the ASN1 certification into SSL context 960d4afb5ceSopenharmony_ci * 961d4afb5ceSopenharmony_ci * @param ctx - SSL context point 962d4afb5ceSopenharmony_ci * @param len - certification length 963d4afb5ceSopenharmony_ci * @param d - data point 964d4afb5ceSopenharmony_ci * 965d4afb5ceSopenharmony_ci * @return result 966d4afb5ceSopenharmony_ci * 1 : OK 967d4afb5ceSopenharmony_ci * 0 : failed 968d4afb5ceSopenharmony_ci */ 969d4afb5ceSopenharmony_ciint SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, const unsigned char *d); 970d4afb5ceSopenharmony_ci 971d4afb5ceSopenharmony_ci/** 972d4afb5ceSopenharmony_ci * @brief load the certification file into SSL context 973d4afb5ceSopenharmony_ci * 974d4afb5ceSopenharmony_ci * @param ctx - SSL context point 975d4afb5ceSopenharmony_ci * @param file - certification file name 976d4afb5ceSopenharmony_ci * @param type - certification encoding type 977d4afb5ceSopenharmony_ci * 978d4afb5ceSopenharmony_ci * @return result 979d4afb5ceSopenharmony_ci * 1 : OK 980d4afb5ceSopenharmony_ci * 0 : failed 981d4afb5ceSopenharmony_ci */ 982d4afb5ceSopenharmony_ciint SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); 983d4afb5ceSopenharmony_ci 984d4afb5ceSopenharmony_ci/** 985d4afb5ceSopenharmony_ci * @brief load the certification chain file into SSL context 986d4afb5ceSopenharmony_ci * 987d4afb5ceSopenharmony_ci * @param ctx - SSL context point 988d4afb5ceSopenharmony_ci * @param file - certification chain file name 989d4afb5ceSopenharmony_ci * 990d4afb5ceSopenharmony_ci * @return result 991d4afb5ceSopenharmony_ci * 1 : OK 992d4afb5ceSopenharmony_ci * 0 : failed 993d4afb5ceSopenharmony_ci */ 994d4afb5ceSopenharmony_ciint SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); 995d4afb5ceSopenharmony_ci 996d4afb5ceSopenharmony_ci 997d4afb5ceSopenharmony_ci/** 998d4afb5ceSopenharmony_ci * @brief load the ASN1 private key into SSL context 999d4afb5ceSopenharmony_ci * 1000d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1001d4afb5ceSopenharmony_ci * @param d - data point 1002d4afb5ceSopenharmony_ci * @param len - private key length 1003d4afb5ceSopenharmony_ci * 1004d4afb5ceSopenharmony_ci * @return result 1005d4afb5ceSopenharmony_ci * 1 : OK 1006d4afb5ceSopenharmony_ci * 0 : failed 1007d4afb5ceSopenharmony_ci */ 1008d4afb5ceSopenharmony_ciint SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, const unsigned char *d, long len);//adds the private key of type pk stored at memory location d (length len) to ctx 1009d4afb5ceSopenharmony_ci 1010d4afb5ceSopenharmony_ci/** 1011d4afb5ceSopenharmony_ci * @brief load the private key file into SSL context 1012d4afb5ceSopenharmony_ci * 1013d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1014d4afb5ceSopenharmony_ci * @param file - private key file name 1015d4afb5ceSopenharmony_ci * @param type - private key encoding type 1016d4afb5ceSopenharmony_ci * 1017d4afb5ceSopenharmony_ci * @return result 1018d4afb5ceSopenharmony_ci * 1 : OK 1019d4afb5ceSopenharmony_ci * 0 : failed 1020d4afb5ceSopenharmony_ci */ 1021d4afb5ceSopenharmony_ciint SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type); 1022d4afb5ceSopenharmony_ci 1023d4afb5ceSopenharmony_ci/** 1024d4afb5ceSopenharmony_ci * @brief load the RSA private key into SSL context 1025d4afb5ceSopenharmony_ci * 1026d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1027d4afb5ceSopenharmony_ci * @param x - RSA private key point 1028d4afb5ceSopenharmony_ci * 1029d4afb5ceSopenharmony_ci * @return result 1030d4afb5ceSopenharmony_ci * 1 : OK 1031d4afb5ceSopenharmony_ci * 0 : failed 1032d4afb5ceSopenharmony_ci */ 1033d4afb5ceSopenharmony_ciint SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); 1034d4afb5ceSopenharmony_ci 1035d4afb5ceSopenharmony_ci/** 1036d4afb5ceSopenharmony_ci * @brief load the RSA ASN1 private key into SSL context 1037d4afb5ceSopenharmony_ci * 1038d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1039d4afb5ceSopenharmony_ci * @param d - data point 1040d4afb5ceSopenharmony_ci * @param len - RSA private key length 1041d4afb5ceSopenharmony_ci * 1042d4afb5ceSopenharmony_ci * @return result 1043d4afb5ceSopenharmony_ci * 1 : OK 1044d4afb5ceSopenharmony_ci * 0 : failed 1045d4afb5ceSopenharmony_ci */ 1046d4afb5ceSopenharmony_ciint SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, long len); 1047d4afb5ceSopenharmony_ci 1048d4afb5ceSopenharmony_ci/** 1049d4afb5ceSopenharmony_ci * @brief load the RSA private key file into SSL context 1050d4afb5ceSopenharmony_ci * 1051d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1052d4afb5ceSopenharmony_ci * @param file - RSA private key file name 1053d4afb5ceSopenharmony_ci * @param type - private key encoding type 1054d4afb5ceSopenharmony_ci * 1055d4afb5ceSopenharmony_ci * @return result 1056d4afb5ceSopenharmony_ci * 1 : OK 1057d4afb5ceSopenharmony_ci * 0 : failed 1058d4afb5ceSopenharmony_ci */ 1059d4afb5ceSopenharmony_ciint SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type); 1060d4afb5ceSopenharmony_ci 1061d4afb5ceSopenharmony_ci 1062d4afb5ceSopenharmony_ci/** 1063d4afb5ceSopenharmony_ci * @brief check if the private key and certification is matched 1064d4afb5ceSopenharmony_ci * 1065d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1066d4afb5ceSopenharmony_ci * 1067d4afb5ceSopenharmony_ci * @return result 1068d4afb5ceSopenharmony_ci * 1 : OK 1069d4afb5ceSopenharmony_ci * 0 : failed 1070d4afb5ceSopenharmony_ci */ 1071d4afb5ceSopenharmony_ciint SSL_CTX_check_private_key(const SSL_CTX *ctx); 1072d4afb5ceSopenharmony_ci 1073d4afb5ceSopenharmony_ci/** 1074d4afb5ceSopenharmony_ci * @brief set the SSL context server information 1075d4afb5ceSopenharmony_ci * 1076d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1077d4afb5ceSopenharmony_ci * @param serverinfo - server information string 1078d4afb5ceSopenharmony_ci * @param serverinfo_length - server information length 1079d4afb5ceSopenharmony_ci * 1080d4afb5ceSopenharmony_ci * @return result 1081d4afb5ceSopenharmony_ci * 1 : OK 1082d4afb5ceSopenharmony_ci * 0 : failed 1083d4afb5ceSopenharmony_ci */ 1084d4afb5ceSopenharmony_ciint SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, size_t serverinfo_length); 1085d4afb5ceSopenharmony_ci 1086d4afb5ceSopenharmony_ci/** 1087d4afb5ceSopenharmony_ci * @brief load the SSL context server infomation file into SSL context 1088d4afb5ceSopenharmony_ci * 1089d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1090d4afb5ceSopenharmony_ci * @param file - server information file 1091d4afb5ceSopenharmony_ci * 1092d4afb5ceSopenharmony_ci * @return result 1093d4afb5ceSopenharmony_ci * 1 : OK 1094d4afb5ceSopenharmony_ci * 0 : failed 1095d4afb5ceSopenharmony_ci */ 1096d4afb5ceSopenharmony_ciint SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); 1097d4afb5ceSopenharmony_ci 1098d4afb5ceSopenharmony_ci/** 1099d4afb5ceSopenharmony_ci * @brief SSL select next function 1100d4afb5ceSopenharmony_ci * 1101d4afb5ceSopenharmony_ci * @param out - point of output data point 1102d4afb5ceSopenharmony_ci * @param outlen - output data length 1103d4afb5ceSopenharmony_ci * @param in - input data 1104d4afb5ceSopenharmony_ci * @param inlen - input data length 1105d4afb5ceSopenharmony_ci * @param client - client data point 1106d4afb5ceSopenharmony_ci * @param client_len -client data length 1107d4afb5ceSopenharmony_ci * 1108d4afb5ceSopenharmony_ci * @return NPN state 1109d4afb5ceSopenharmony_ci * OPENSSL_NPN_UNSUPPORTED : not support 1110d4afb5ceSopenharmony_ci * OPENSSL_NPN_NEGOTIATED : negotiated 1111d4afb5ceSopenharmony_ci * OPENSSL_NPN_NO_OVERLAP : no overlap 1112d4afb5ceSopenharmony_ci */ 1113d4afb5ceSopenharmony_ciint SSL_select_next_proto(unsigned char **out, unsigned char *outlen, 1114d4afb5ceSopenharmony_ci const unsigned char *in, unsigned int inlen, 1115d4afb5ceSopenharmony_ci const unsigned char *client, unsigned int client_len); 1116d4afb5ceSopenharmony_ci 1117d4afb5ceSopenharmony_ci/** 1118d4afb5ceSopenharmony_ci * @brief load the extra certification chain into the SSL context 1119d4afb5ceSopenharmony_ci * 1120d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1121d4afb5ceSopenharmony_ci * @param x509 - X509 certification 1122d4afb5ceSopenharmony_ci * 1123d4afb5ceSopenharmony_ci * @return result 1124d4afb5ceSopenharmony_ci * 1 : OK 1125d4afb5ceSopenharmony_ci * 0 : failed 1126d4afb5ceSopenharmony_ci */ 1127d4afb5ceSopenharmony_cilong SSL_CTX_add_extra_chain_cert(SSL_CTX *ctx, X509 *); 1128d4afb5ceSopenharmony_ci 1129d4afb5ceSopenharmony_ci/** 1130d4afb5ceSopenharmony_ci * @brief control the SSL context 1131d4afb5ceSopenharmony_ci * 1132d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1133d4afb5ceSopenharmony_ci * @param cmd - command 1134d4afb5ceSopenharmony_ci * @param larg - parameter length 1135d4afb5ceSopenharmony_ci * @param parg - parameter point 1136d4afb5ceSopenharmony_ci * 1137d4afb5ceSopenharmony_ci * @return result 1138d4afb5ceSopenharmony_ci * 1 : OK 1139d4afb5ceSopenharmony_ci * 0 : failed 1140d4afb5ceSopenharmony_ci */ 1141d4afb5ceSopenharmony_cilong SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, char *parg); 1142d4afb5ceSopenharmony_ci 1143d4afb5ceSopenharmony_ci/** 1144d4afb5ceSopenharmony_ci * @brief get the SSL context cipher 1145d4afb5ceSopenharmony_ci * 1146d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1147d4afb5ceSopenharmony_ci * 1148d4afb5ceSopenharmony_ci * @return SSL context cipher 1149d4afb5ceSopenharmony_ci */ 1150d4afb5ceSopenharmony_ciSTACK *SSL_CTX_get_ciphers(const SSL_CTX *ctx); 1151d4afb5ceSopenharmony_ci 1152d4afb5ceSopenharmony_ci/** 1153d4afb5ceSopenharmony_ci * @brief check if the SSL context can read as many as data 1154d4afb5ceSopenharmony_ci * 1155d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1156d4afb5ceSopenharmony_ci * 1157d4afb5ceSopenharmony_ci * @return result 1158d4afb5ceSopenharmony_ci * 1 : OK 1159d4afb5ceSopenharmony_ci * 0 : failed 1160d4afb5ceSopenharmony_ci */ 1161d4afb5ceSopenharmony_cilong SSL_CTX_get_default_read_ahead(SSL_CTX *ctx); 1162d4afb5ceSopenharmony_ci 1163d4afb5ceSopenharmony_ci/** 1164d4afb5ceSopenharmony_ci * @brief get the SSL context extra data 1165d4afb5ceSopenharmony_ci * 1166d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1167d4afb5ceSopenharmony_ci * @param idx - index 1168d4afb5ceSopenharmony_ci * 1169d4afb5ceSopenharmony_ci * @return data point 1170d4afb5ceSopenharmony_ci */ 1171d4afb5ceSopenharmony_civoid *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx); 1172d4afb5ceSopenharmony_ci 1173d4afb5ceSopenharmony_ci/** 1174d4afb5ceSopenharmony_ci * @brief get the SSL context quiet shutdown option 1175d4afb5ceSopenharmony_ci * 1176d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1177d4afb5ceSopenharmony_ci * 1178d4afb5ceSopenharmony_ci * @return quiet shutdown option 1179d4afb5ceSopenharmony_ci */ 1180d4afb5ceSopenharmony_ciint SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); 1181d4afb5ceSopenharmony_ci 1182d4afb5ceSopenharmony_ci/** 1183d4afb5ceSopenharmony_ci * @brief load the SSL context CA file 1184d4afb5ceSopenharmony_ci * 1185d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1186d4afb5ceSopenharmony_ci * @param CAfile - CA certification file 1187d4afb5ceSopenharmony_ci * @param CApath - CA certification file path 1188d4afb5ceSopenharmony_ci * 1189d4afb5ceSopenharmony_ci * @return result 1190d4afb5ceSopenharmony_ci * 1 : OK 1191d4afb5ceSopenharmony_ci * 0 : failed 1192d4afb5ceSopenharmony_ci */ 1193d4afb5ceSopenharmony_ciint SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath); 1194d4afb5ceSopenharmony_ci 1195d4afb5ceSopenharmony_ci/** 1196d4afb5ceSopenharmony_ci * @brief add SSL context reference count by '1' 1197d4afb5ceSopenharmony_ci * 1198d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1199d4afb5ceSopenharmony_ci * 1200d4afb5ceSopenharmony_ci * @return result 1201d4afb5ceSopenharmony_ci * 1 : OK 1202d4afb5ceSopenharmony_ci * 0 : failed 1203d4afb5ceSopenharmony_ci */ 1204d4afb5ceSopenharmony_ciint SSL_CTX_up_ref(SSL_CTX *ctx); 1205d4afb5ceSopenharmony_ci 1206d4afb5ceSopenharmony_ci/** 1207d4afb5ceSopenharmony_ci * @brief set SSL context application private data 1208d4afb5ceSopenharmony_ci * 1209d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1210d4afb5ceSopenharmony_ci * @param arg - private data 1211d4afb5ceSopenharmony_ci * 1212d4afb5ceSopenharmony_ci * @return result 1213d4afb5ceSopenharmony_ci * 1 : OK 1214d4afb5ceSopenharmony_ci * 0 : failed 1215d4afb5ceSopenharmony_ci */ 1216d4afb5ceSopenharmony_ciint SSL_CTX_set_app_data(SSL_CTX *ctx, void *arg); 1217d4afb5ceSopenharmony_ci 1218d4afb5ceSopenharmony_ci/** 1219d4afb5ceSopenharmony_ci * @brief set SSL context client certification callback function 1220d4afb5ceSopenharmony_ci * 1221d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1222d4afb5ceSopenharmony_ci * @param cb - callback function 1223d4afb5ceSopenharmony_ci * 1224d4afb5ceSopenharmony_ci * @return none 1225d4afb5ceSopenharmony_ci */ 1226d4afb5ceSopenharmony_civoid SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, int (*cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey)); 1227d4afb5ceSopenharmony_ci 1228d4afb5ceSopenharmony_ci/** 1229d4afb5ceSopenharmony_ci * @brief set the SSL context if we can read as many as data 1230d4afb5ceSopenharmony_ci * 1231d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1232d4afb5ceSopenharmony_ci * @param m - enable the fuction 1233d4afb5ceSopenharmony_ci * 1234d4afb5ceSopenharmony_ci * @return none 1235d4afb5ceSopenharmony_ci */ 1236d4afb5ceSopenharmony_civoid SSL_CTX_set_default_read_ahead(SSL_CTX *ctx, int m); 1237d4afb5ceSopenharmony_ci 1238d4afb5ceSopenharmony_ci/** 1239d4afb5ceSopenharmony_ci * @brief set SSL context default verifying path 1240d4afb5ceSopenharmony_ci * 1241d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1242d4afb5ceSopenharmony_ci * 1243d4afb5ceSopenharmony_ci * @return result 1244d4afb5ceSopenharmony_ci * 1 : OK 1245d4afb5ceSopenharmony_ci * 0 : failed 1246d4afb5ceSopenharmony_ci */ 1247d4afb5ceSopenharmony_ciint SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); 1248d4afb5ceSopenharmony_ci 1249d4afb5ceSopenharmony_ci/** 1250d4afb5ceSopenharmony_ci * @brief set SSL context default verifying directory 1251d4afb5ceSopenharmony_ci * 1252d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1253d4afb5ceSopenharmony_ci * 1254d4afb5ceSopenharmony_ci * @return result 1255d4afb5ceSopenharmony_ci * 1 : OK 1256d4afb5ceSopenharmony_ci * 0 : failed 1257d4afb5ceSopenharmony_ci */ 1258d4afb5ceSopenharmony_ciint SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); 1259d4afb5ceSopenharmony_ci 1260d4afb5ceSopenharmony_ci/** 1261d4afb5ceSopenharmony_ci * @brief set SSL context default verifying file 1262d4afb5ceSopenharmony_ci * 1263d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1264d4afb5ceSopenharmony_ci * 1265d4afb5ceSopenharmony_ci * @return result 1266d4afb5ceSopenharmony_ci * 1 : OK 1267d4afb5ceSopenharmony_ci * 0 : failed 1268d4afb5ceSopenharmony_ci */ 1269d4afb5ceSopenharmony_ciint SSL_CTX_set_default_verify_file(SSL_CTX *ctx); 1270d4afb5ceSopenharmony_ci 1271d4afb5ceSopenharmony_ci/** 1272d4afb5ceSopenharmony_ci * @brief set SSL context extra data 1273d4afb5ceSopenharmony_ci * 1274d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1275d4afb5ceSopenharmony_ci * @param idx - data index 1276d4afb5ceSopenharmony_ci * @param arg - data point 1277d4afb5ceSopenharmony_ci * 1278d4afb5ceSopenharmony_ci * @return result 1279d4afb5ceSopenharmony_ci * 1 : OK 1280d4afb5ceSopenharmony_ci * 0 : failed 1281d4afb5ceSopenharmony_ci */ 1282d4afb5ceSopenharmony_ciint SSL_CTX_set_ex_data(SSL_CTX *s, int idx, char *arg); 1283d4afb5ceSopenharmony_ci 1284d4afb5ceSopenharmony_ci/** 1285d4afb5ceSopenharmony_ci * @brief clear the SSL context option bit of "op" 1286d4afb5ceSopenharmony_ci * 1287d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1288d4afb5ceSopenharmony_ci * @param op - option 1289d4afb5ceSopenharmony_ci * 1290d4afb5ceSopenharmony_ci * @return SSL context option 1291d4afb5ceSopenharmony_ci */ 1292d4afb5ceSopenharmony_ciunsigned long SSL_CTX_clear_options(SSL_CTX *ctx, unsigned long op); 1293d4afb5ceSopenharmony_ci 1294d4afb5ceSopenharmony_ci/** 1295d4afb5ceSopenharmony_ci * @brief get the SSL context option 1296d4afb5ceSopenharmony_ci * 1297d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1298d4afb5ceSopenharmony_ci * @param op - option 1299d4afb5ceSopenharmony_ci * 1300d4afb5ceSopenharmony_ci * @return SSL context option 1301d4afb5ceSopenharmony_ci */ 1302d4afb5ceSopenharmony_ciunsigned long SSL_CTX_get_options(SSL_CTX *ctx); 1303d4afb5ceSopenharmony_ci 1304d4afb5ceSopenharmony_ci/** 1305d4afb5ceSopenharmony_ci * @brief set the SSL context quiet shutdown mode 1306d4afb5ceSopenharmony_ci * 1307d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1308d4afb5ceSopenharmony_ci * @param mode - mode 1309d4afb5ceSopenharmony_ci * 1310d4afb5ceSopenharmony_ci * @return none 1311d4afb5ceSopenharmony_ci */ 1312d4afb5ceSopenharmony_civoid SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); 1313d4afb5ceSopenharmony_ci 1314d4afb5ceSopenharmony_ci/** 1315d4afb5ceSopenharmony_ci * @brief get the SSL context X509 certification 1316d4afb5ceSopenharmony_ci * 1317d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1318d4afb5ceSopenharmony_ci * 1319d4afb5ceSopenharmony_ci * @return X509 certification 1320d4afb5ceSopenharmony_ci */ 1321d4afb5ceSopenharmony_ciX509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); 1322d4afb5ceSopenharmony_ci 1323d4afb5ceSopenharmony_ci/** 1324d4afb5ceSopenharmony_ci * @brief get the SSL context private key 1325d4afb5ceSopenharmony_ci * 1326d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1327d4afb5ceSopenharmony_ci * 1328d4afb5ceSopenharmony_ci * @return private key 1329d4afb5ceSopenharmony_ci */ 1330d4afb5ceSopenharmony_ciEVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); 1331d4afb5ceSopenharmony_ci 1332d4afb5ceSopenharmony_ci/** 1333d4afb5ceSopenharmony_ci * @brief set SSL context PSK identity hint 1334d4afb5ceSopenharmony_ci * 1335d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1336d4afb5ceSopenharmony_ci * @param hint - PSK identity hint 1337d4afb5ceSopenharmony_ci * 1338d4afb5ceSopenharmony_ci * @return result 1339d4afb5ceSopenharmony_ci * 1 : OK 1340d4afb5ceSopenharmony_ci * 0 : failed 1341d4afb5ceSopenharmony_ci */ 1342d4afb5ceSopenharmony_ciint SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *hint); 1343d4afb5ceSopenharmony_ci 1344d4afb5ceSopenharmony_ci/** 1345d4afb5ceSopenharmony_ci * @brief set SSL context PSK server callback function 1346d4afb5ceSopenharmony_ci * 1347d4afb5ceSopenharmony_ci * @param ctx - SSL context point 1348d4afb5ceSopenharmony_ci * @param callback - callback function 1349d4afb5ceSopenharmony_ci * 1350d4afb5ceSopenharmony_ci * @return none 1351d4afb5ceSopenharmony_ci */ 1352d4afb5ceSopenharmony_civoid SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, 1353d4afb5ceSopenharmony_ci unsigned int (*callback)(SSL *ssl, 1354d4afb5ceSopenharmony_ci const char *identity, 1355d4afb5ceSopenharmony_ci unsigned char *psk, 1356d4afb5ceSopenharmony_ci int max_psk_len)); 1357d4afb5ceSopenharmony_ci/** 1358d4afb5ceSopenharmony_ci * @brief get alert description string 1359d4afb5ceSopenharmony_ci * 1360d4afb5ceSopenharmony_ci * @param value - alert value 1361d4afb5ceSopenharmony_ci * 1362d4afb5ceSopenharmony_ci * @return alert description string 1363d4afb5ceSopenharmony_ci */ 1364d4afb5ceSopenharmony_ciconst char *SSL_alert_desc_string(int value); 1365d4afb5ceSopenharmony_ci 1366d4afb5ceSopenharmony_ci/** 1367d4afb5ceSopenharmony_ci * @brief get alert description long string 1368d4afb5ceSopenharmony_ci * 1369d4afb5ceSopenharmony_ci * @param value - alert value 1370d4afb5ceSopenharmony_ci * 1371d4afb5ceSopenharmony_ci * @return alert description long string 1372d4afb5ceSopenharmony_ci */ 1373d4afb5ceSopenharmony_ciconst char *SSL_alert_desc_string_long(int value); 1374d4afb5ceSopenharmony_ci 1375d4afb5ceSopenharmony_ci/** 1376d4afb5ceSopenharmony_ci * @brief get alert type string 1377d4afb5ceSopenharmony_ci * 1378d4afb5ceSopenharmony_ci * @param value - alert value 1379d4afb5ceSopenharmony_ci * 1380d4afb5ceSopenharmony_ci * @return alert type string 1381d4afb5ceSopenharmony_ci */ 1382d4afb5ceSopenharmony_ciconst char *SSL_alert_type_string(int value); 1383d4afb5ceSopenharmony_ci 1384d4afb5ceSopenharmony_ci/** 1385d4afb5ceSopenharmony_ci * @brief get alert type long string 1386d4afb5ceSopenharmony_ci * 1387d4afb5ceSopenharmony_ci * @param value - alert value 1388d4afb5ceSopenharmony_ci * 1389d4afb5ceSopenharmony_ci * @return alert type long string 1390d4afb5ceSopenharmony_ci */ 1391d4afb5ceSopenharmony_ciconst char *SSL_alert_type_string_long(int value); 1392d4afb5ceSopenharmony_ci 1393d4afb5ceSopenharmony_ci/** 1394d4afb5ceSopenharmony_ci * @brief get SSL context of the SSL 1395d4afb5ceSopenharmony_ci * 1396d4afb5ceSopenharmony_ci * @param ssl - SSL point 1397d4afb5ceSopenharmony_ci * 1398d4afb5ceSopenharmony_ci * @return SSL context 1399d4afb5ceSopenharmony_ci */ 1400d4afb5ceSopenharmony_ciSSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); 1401d4afb5ceSopenharmony_ci 1402d4afb5ceSopenharmony_ci/** 1403d4afb5ceSopenharmony_ci * @brief get SSL application data 1404d4afb5ceSopenharmony_ci * 1405d4afb5ceSopenharmony_ci * @param ssl - SSL point 1406d4afb5ceSopenharmony_ci * 1407d4afb5ceSopenharmony_ci * @return application data 1408d4afb5ceSopenharmony_ci */ 1409d4afb5ceSopenharmony_cichar *SSL_get_app_data(SSL *ssl); 1410d4afb5ceSopenharmony_ci 1411d4afb5ceSopenharmony_ci/** 1412d4afb5ceSopenharmony_ci * @brief get SSL cipher bits 1413d4afb5ceSopenharmony_ci * 1414d4afb5ceSopenharmony_ci * @param ssl - SSL point 1415d4afb5ceSopenharmony_ci * @param alg_bits - algorithm bits 1416d4afb5ceSopenharmony_ci * 1417d4afb5ceSopenharmony_ci * @return strength bits 1418d4afb5ceSopenharmony_ci */ 1419d4afb5ceSopenharmony_ciint SSL_get_cipher_bits(const SSL *ssl, int *alg_bits); 1420d4afb5ceSopenharmony_ci 1421d4afb5ceSopenharmony_ci/** 1422d4afb5ceSopenharmony_ci * @brief get SSL cipher name 1423d4afb5ceSopenharmony_ci * 1424d4afb5ceSopenharmony_ci * @param ssl - SSL point 1425d4afb5ceSopenharmony_ci * 1426d4afb5ceSopenharmony_ci * @return SSL cipher name 1427d4afb5ceSopenharmony_ci */ 1428d4afb5ceSopenharmony_cichar *SSL_get_cipher_name(const SSL *ssl); 1429d4afb5ceSopenharmony_ci 1430d4afb5ceSopenharmony_ci/** 1431d4afb5ceSopenharmony_ci * @brief get SSL cipher version 1432d4afb5ceSopenharmony_ci * 1433d4afb5ceSopenharmony_ci * @param ssl - SSL point 1434d4afb5ceSopenharmony_ci * 1435d4afb5ceSopenharmony_ci * @return SSL cipher version 1436d4afb5ceSopenharmony_ci */ 1437d4afb5ceSopenharmony_cichar *SSL_get_cipher_version(const SSL *ssl); 1438d4afb5ceSopenharmony_ci 1439d4afb5ceSopenharmony_ci/** 1440d4afb5ceSopenharmony_ci * @brief get SSL extra data 1441d4afb5ceSopenharmony_ci * 1442d4afb5ceSopenharmony_ci * @param ssl - SSL point 1443d4afb5ceSopenharmony_ci * @param idx - data index 1444d4afb5ceSopenharmony_ci * 1445d4afb5ceSopenharmony_ci * @return extra data 1446d4afb5ceSopenharmony_ci */ 1447d4afb5ceSopenharmony_cichar *SSL_get_ex_data(const SSL *ssl, int idx); 1448d4afb5ceSopenharmony_ci 1449d4afb5ceSopenharmony_ci/** 1450d4afb5ceSopenharmony_ci * @brief get index of the SSL extra data X509 storage context 1451d4afb5ceSopenharmony_ci * 1452d4afb5ceSopenharmony_ci * @param none 1453d4afb5ceSopenharmony_ci * 1454d4afb5ceSopenharmony_ci * @return data index 1455d4afb5ceSopenharmony_ci */ 1456d4afb5ceSopenharmony_ciint SSL_get_ex_data_X509_STORE_CTX_idx(void); 1457d4afb5ceSopenharmony_ci 1458d4afb5ceSopenharmony_ci/** 1459d4afb5ceSopenharmony_ci * @brief get peer certification chain 1460d4afb5ceSopenharmony_ci * 1461d4afb5ceSopenharmony_ci * @param ssl - SSL point 1462d4afb5ceSopenharmony_ci * 1463d4afb5ceSopenharmony_ci * @return certification chain 1464d4afb5ceSopenharmony_ci */ 1465d4afb5ceSopenharmony_ciSTACK *SSL_get_peer_cert_chain(const SSL *ssl); 1466d4afb5ceSopenharmony_ci 1467d4afb5ceSopenharmony_ci/** 1468d4afb5ceSopenharmony_ci * @brief get peer certification 1469d4afb5ceSopenharmony_ci * 1470d4afb5ceSopenharmony_ci * @param ssl - SSL point 1471d4afb5ceSopenharmony_ci * 1472d4afb5ceSopenharmony_ci * @return certification 1473d4afb5ceSopenharmony_ci */ 1474d4afb5ceSopenharmony_ciX509 *SSL_get_peer_certificate(const SSL *ssl); 1475d4afb5ceSopenharmony_ci 1476d4afb5ceSopenharmony_ci/** 1477d4afb5ceSopenharmony_ci * @brief get SSL quiet shutdown mode 1478d4afb5ceSopenharmony_ci * 1479d4afb5ceSopenharmony_ci * @param ssl - SSL point 1480d4afb5ceSopenharmony_ci * 1481d4afb5ceSopenharmony_ci * @return quiet shutdown mode 1482d4afb5ceSopenharmony_ci */ 1483d4afb5ceSopenharmony_ciint SSL_get_quiet_shutdown(const SSL *ssl); 1484d4afb5ceSopenharmony_ci 1485d4afb5ceSopenharmony_ci/** 1486d4afb5ceSopenharmony_ci * @brief get SSL read only IO handle 1487d4afb5ceSopenharmony_ci * 1488d4afb5ceSopenharmony_ci * @param ssl - SSL point 1489d4afb5ceSopenharmony_ci * 1490d4afb5ceSopenharmony_ci * @return IO handle 1491d4afb5ceSopenharmony_ci */ 1492d4afb5ceSopenharmony_ciBIO *SSL_get_rbio(const SSL *ssl); 1493d4afb5ceSopenharmony_ci 1494d4afb5ceSopenharmony_ci/** 1495d4afb5ceSopenharmony_ci * @brief get SSL shared ciphers 1496d4afb5ceSopenharmony_ci * 1497d4afb5ceSopenharmony_ci * @param ssl - SSL point 1498d4afb5ceSopenharmony_ci * @param buf - buffer to store the ciphers 1499d4afb5ceSopenharmony_ci * @param len - buffer len 1500d4afb5ceSopenharmony_ci * 1501d4afb5ceSopenharmony_ci * @return shared ciphers 1502d4afb5ceSopenharmony_ci */ 1503d4afb5ceSopenharmony_cichar *SSL_get_shared_ciphers(const SSL *ssl, char *buf, int len); 1504d4afb5ceSopenharmony_ci 1505d4afb5ceSopenharmony_ci/** 1506d4afb5ceSopenharmony_ci * @brief get SSL shutdown mode 1507d4afb5ceSopenharmony_ci * 1508d4afb5ceSopenharmony_ci * @param ssl - SSL point 1509d4afb5ceSopenharmony_ci * 1510d4afb5ceSopenharmony_ci * @return shutdown mode 1511d4afb5ceSopenharmony_ci */ 1512d4afb5ceSopenharmony_ciint SSL_get_shutdown(const SSL *ssl); 1513d4afb5ceSopenharmony_ci 1514d4afb5ceSopenharmony_ci/** 1515d4afb5ceSopenharmony_ci * @brief get SSL session time 1516d4afb5ceSopenharmony_ci * 1517d4afb5ceSopenharmony_ci * @param ssl - SSL point 1518d4afb5ceSopenharmony_ci * 1519d4afb5ceSopenharmony_ci * @return session time 1520d4afb5ceSopenharmony_ci */ 1521d4afb5ceSopenharmony_cilong SSL_get_time(const SSL *ssl); 1522d4afb5ceSopenharmony_ci 1523d4afb5ceSopenharmony_ci/** 1524d4afb5ceSopenharmony_ci * @brief get SSL session timeout time 1525d4afb5ceSopenharmony_ci * 1526d4afb5ceSopenharmony_ci * @param ssl - SSL point 1527d4afb5ceSopenharmony_ci * 1528d4afb5ceSopenharmony_ci * @return session timeout time 1529d4afb5ceSopenharmony_ci */ 1530d4afb5ceSopenharmony_cilong SSL_get_timeout(const SSL *ssl); 1531d4afb5ceSopenharmony_ci 1532d4afb5ceSopenharmony_ci/** 1533d4afb5ceSopenharmony_ci * @brief get SSL verifying mode 1534d4afb5ceSopenharmony_ci * 1535d4afb5ceSopenharmony_ci * @param ssl - SSL point 1536d4afb5ceSopenharmony_ci * 1537d4afb5ceSopenharmony_ci * @return verifying mode 1538d4afb5ceSopenharmony_ci */ 1539d4afb5ceSopenharmony_ciint SSL_get_verify_mode(const SSL *ssl); 1540d4afb5ceSopenharmony_ci 1541d4afb5ceSopenharmony_ci/** 1542d4afb5ceSopenharmony_ci * @brief get SSL verify parameters 1543d4afb5ceSopenharmony_ci * 1544d4afb5ceSopenharmony_ci * @param ssl - SSL point 1545d4afb5ceSopenharmony_ci * 1546d4afb5ceSopenharmony_ci * @return verify parameters 1547d4afb5ceSopenharmony_ci */ 1548d4afb5ceSopenharmony_ciX509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); 1549d4afb5ceSopenharmony_ci 1550d4afb5ceSopenharmony_ci/** 1551d4afb5ceSopenharmony_ci * @brief set expected hostname the peer cert CN should have 1552d4afb5ceSopenharmony_ci * 1553d4afb5ceSopenharmony_ci * @param param - verify parameters from SSL_get0_param() 1554d4afb5ceSopenharmony_ci * 1555d4afb5ceSopenharmony_ci * @param name - the expected hostname 1556d4afb5ceSopenharmony_ci * 1557d4afb5ceSopenharmony_ci * @param namelen - the length of the hostname, or 0 if NUL terminated 1558d4afb5ceSopenharmony_ci * 1559d4afb5ceSopenharmony_ci * @return verify parameters 1560d4afb5ceSopenharmony_ci */ 1561d4afb5ceSopenharmony_ciint X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, 1562d4afb5ceSopenharmony_ci const char *name, size_t namelen); 1563d4afb5ceSopenharmony_ci 1564d4afb5ceSopenharmony_ci/** 1565d4afb5ceSopenharmony_ci * @brief set parameters for X509 host verify action 1566d4afb5ceSopenharmony_ci * 1567d4afb5ceSopenharmony_ci * @param param -verify parameters from SSL_get0_param() 1568d4afb5ceSopenharmony_ci * 1569d4afb5ceSopenharmony_ci * @param flags - bitfield of X509_CHECK_FLAG_... parameters to set 1570d4afb5ceSopenharmony_ci * 1571d4afb5ceSopenharmony_ci * @return 1 for success, 0 for failure 1572d4afb5ceSopenharmony_ci */ 1573d4afb5ceSopenharmony_ciint X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, 1574d4afb5ceSopenharmony_ci unsigned long flags); 1575d4afb5ceSopenharmony_ci 1576d4afb5ceSopenharmony_ci/** 1577d4afb5ceSopenharmony_ci * @brief clear parameters for X509 host verify action 1578d4afb5ceSopenharmony_ci * 1579d4afb5ceSopenharmony_ci * @param param -verify parameters from SSL_get0_param() 1580d4afb5ceSopenharmony_ci * 1581d4afb5ceSopenharmony_ci * @param flags - bitfield of X509_CHECK_FLAG_... parameters to clear 1582d4afb5ceSopenharmony_ci * 1583d4afb5ceSopenharmony_ci * @return 1 for success, 0 for failure 1584d4afb5ceSopenharmony_ci */ 1585d4afb5ceSopenharmony_ciint X509_VERIFY_PARAM_clear_hostflags(X509_VERIFY_PARAM *param, 1586d4afb5ceSopenharmony_ci unsigned long flags); 1587d4afb5ceSopenharmony_ci 1588d4afb5ceSopenharmony_ci/** 1589d4afb5ceSopenharmony_ci * @brief get SSL write only IO handle 1590d4afb5ceSopenharmony_ci * 1591d4afb5ceSopenharmony_ci * @param ssl - SSL point 1592d4afb5ceSopenharmony_ci * 1593d4afb5ceSopenharmony_ci * @return IO handle 1594d4afb5ceSopenharmony_ci */ 1595d4afb5ceSopenharmony_ciBIO *SSL_get_wbio(const SSL *ssl); 1596d4afb5ceSopenharmony_ci 1597d4afb5ceSopenharmony_ci/** 1598d4afb5ceSopenharmony_ci * @brief load SSL client CA certification file 1599d4afb5ceSopenharmony_ci * 1600d4afb5ceSopenharmony_ci * @param file - file name 1601d4afb5ceSopenharmony_ci * 1602d4afb5ceSopenharmony_ci * @return certification loading object 1603d4afb5ceSopenharmony_ci */ 1604d4afb5ceSopenharmony_ciSTACK *SSL_load_client_CA_file(const char *file); 1605d4afb5ceSopenharmony_ci 1606d4afb5ceSopenharmony_ci/** 1607d4afb5ceSopenharmony_ci * @brief add SSL reference by '1' 1608d4afb5ceSopenharmony_ci * 1609d4afb5ceSopenharmony_ci * @param ssl - SSL point 1610d4afb5ceSopenharmony_ci * 1611d4afb5ceSopenharmony_ci * @return result 1612d4afb5ceSopenharmony_ci * 1 : OK 1613d4afb5ceSopenharmony_ci * 0 : failed 1614d4afb5ceSopenharmony_ci */ 1615d4afb5ceSopenharmony_ciint SSL_up_ref(SSL *ssl); 1616d4afb5ceSopenharmony_ci 1617d4afb5ceSopenharmony_ci/** 1618d4afb5ceSopenharmony_ci * @brief read and put data into buf, but not clear the SSL low-level storage 1619d4afb5ceSopenharmony_ci * 1620d4afb5ceSopenharmony_ci * @param ssl - SSL point 1621d4afb5ceSopenharmony_ci * @param buf - storage buffer point 1622d4afb5ceSopenharmony_ci * @param num - data bytes 1623d4afb5ceSopenharmony_ci * 1624d4afb5ceSopenharmony_ci * @return result 1625d4afb5ceSopenharmony_ci * > 0 : OK, and return read bytes 1626d4afb5ceSopenharmony_ci * = 0 : connect is closed 1627d4afb5ceSopenharmony_ci * < 0 : a error catch 1628d4afb5ceSopenharmony_ci */ 1629d4afb5ceSopenharmony_ciint SSL_peek(SSL *ssl, void *buf, int num); 1630d4afb5ceSopenharmony_ci 1631d4afb5ceSopenharmony_ci/** 1632d4afb5ceSopenharmony_ci * @brief make SSL renegotiate 1633d4afb5ceSopenharmony_ci * 1634d4afb5ceSopenharmony_ci * @param ssl - SSL point 1635d4afb5ceSopenharmony_ci * 1636d4afb5ceSopenharmony_ci * @return result 1637d4afb5ceSopenharmony_ci * 1 : OK 1638d4afb5ceSopenharmony_ci * 0 : failed 1639d4afb5ceSopenharmony_ci */ 1640d4afb5ceSopenharmony_ciint SSL_renegotiate(SSL *ssl); 1641d4afb5ceSopenharmony_ci 1642d4afb5ceSopenharmony_ci/** 1643d4afb5ceSopenharmony_ci * @brief get the state string where SSL is reading 1644d4afb5ceSopenharmony_ci * 1645d4afb5ceSopenharmony_ci * @param ssl - SSL point 1646d4afb5ceSopenharmony_ci * 1647d4afb5ceSopenharmony_ci * @return state string 1648d4afb5ceSopenharmony_ci */ 1649d4afb5ceSopenharmony_ciconst char *SSL_rstate_string(SSL *ssl); 1650d4afb5ceSopenharmony_ci 1651d4afb5ceSopenharmony_ci/** 1652d4afb5ceSopenharmony_ci * @brief get the statement long string where SSL is reading 1653d4afb5ceSopenharmony_ci * 1654d4afb5ceSopenharmony_ci * @param ssl - SSL point 1655d4afb5ceSopenharmony_ci * 1656d4afb5ceSopenharmony_ci * @return statement long string 1657d4afb5ceSopenharmony_ci */ 1658d4afb5ceSopenharmony_ciconst char *SSL_rstate_string_long(SSL *ssl); 1659d4afb5ceSopenharmony_ci 1660d4afb5ceSopenharmony_ci/** 1661d4afb5ceSopenharmony_ci * @brief set SSL accept statement 1662d4afb5ceSopenharmony_ci * 1663d4afb5ceSopenharmony_ci * @param ssl - SSL point 1664d4afb5ceSopenharmony_ci * 1665d4afb5ceSopenharmony_ci * @return none 1666d4afb5ceSopenharmony_ci */ 1667d4afb5ceSopenharmony_civoid SSL_set_accept_state(SSL *ssl); 1668d4afb5ceSopenharmony_ci 1669d4afb5ceSopenharmony_ci/** 1670d4afb5ceSopenharmony_ci * @brief set SSL application data 1671d4afb5ceSopenharmony_ci * 1672d4afb5ceSopenharmony_ci * @param ssl - SSL point 1673d4afb5ceSopenharmony_ci * @param arg - SSL application data point 1674d4afb5ceSopenharmony_ci * 1675d4afb5ceSopenharmony_ci * @return none 1676d4afb5ceSopenharmony_ci */ 1677d4afb5ceSopenharmony_civoid SSL_set_app_data(SSL *ssl, char *arg); 1678d4afb5ceSopenharmony_ci 1679d4afb5ceSopenharmony_ci/** 1680d4afb5ceSopenharmony_ci * @brief set SSL BIO 1681d4afb5ceSopenharmony_ci * 1682d4afb5ceSopenharmony_ci * @param ssl - SSL point 1683d4afb5ceSopenharmony_ci * @param rbio - read only IO 1684d4afb5ceSopenharmony_ci * @param wbio - write only IO 1685d4afb5ceSopenharmony_ci * 1686d4afb5ceSopenharmony_ci * @return none 1687d4afb5ceSopenharmony_ci */ 1688d4afb5ceSopenharmony_civoid SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio); 1689d4afb5ceSopenharmony_ci 1690d4afb5ceSopenharmony_ci/** 1691d4afb5ceSopenharmony_ci * @brief clear SSL option 1692d4afb5ceSopenharmony_ci * 1693d4afb5ceSopenharmony_ci * @param ssl - SSL point 1694d4afb5ceSopenharmony_ci * @param op - clear option 1695d4afb5ceSopenharmony_ci * 1696d4afb5ceSopenharmony_ci * @return SSL option 1697d4afb5ceSopenharmony_ci */ 1698d4afb5ceSopenharmony_ciunsigned long SSL_clear_options(SSL *ssl, unsigned long op); 1699d4afb5ceSopenharmony_ci 1700d4afb5ceSopenharmony_ci/** 1701d4afb5ceSopenharmony_ci * @brief get SSL option 1702d4afb5ceSopenharmony_ci * 1703d4afb5ceSopenharmony_ci * @param ssl - SSL point 1704d4afb5ceSopenharmony_ci * 1705d4afb5ceSopenharmony_ci * @return SSL option 1706d4afb5ceSopenharmony_ci */ 1707d4afb5ceSopenharmony_ciunsigned long SSL_get_options(SSL *ssl); 1708d4afb5ceSopenharmony_ci 1709d4afb5ceSopenharmony_ci/** 1710d4afb5ceSopenharmony_ci * @brief clear SSL option 1711d4afb5ceSopenharmony_ci * 1712d4afb5ceSopenharmony_ci * @param ssl - SSL point 1713d4afb5ceSopenharmony_ci * @param op - setting option 1714d4afb5ceSopenharmony_ci * 1715d4afb5ceSopenharmony_ci * @return SSL option 1716d4afb5ceSopenharmony_ci */ 1717d4afb5ceSopenharmony_ciunsigned long SSL_set_options(SSL *ssl, unsigned long op); 1718d4afb5ceSopenharmony_ci 1719d4afb5ceSopenharmony_ci/** 1720d4afb5ceSopenharmony_ci * @brief set SSL quiet shutdown mode 1721d4afb5ceSopenharmony_ci * 1722d4afb5ceSopenharmony_ci * @param ssl - SSL point 1723d4afb5ceSopenharmony_ci * @param mode - quiet shutdown mode 1724d4afb5ceSopenharmony_ci * 1725d4afb5ceSopenharmony_ci * @return none 1726d4afb5ceSopenharmony_ci */ 1727d4afb5ceSopenharmony_civoid SSL_set_quiet_shutdown(SSL *ssl, int mode); 1728d4afb5ceSopenharmony_ci 1729d4afb5ceSopenharmony_ci/** 1730d4afb5ceSopenharmony_ci * @brief set SSL shutdown mode 1731d4afb5ceSopenharmony_ci * 1732d4afb5ceSopenharmony_ci * @param ssl - SSL point 1733d4afb5ceSopenharmony_ci * @param mode - shutdown mode 1734d4afb5ceSopenharmony_ci * 1735d4afb5ceSopenharmony_ci * @return none 1736d4afb5ceSopenharmony_ci */ 1737d4afb5ceSopenharmony_civoid SSL_set_shutdown(SSL *ssl, int mode); 1738d4afb5ceSopenharmony_ci 1739d4afb5ceSopenharmony_ci/** 1740d4afb5ceSopenharmony_ci * @brief set SSL session time 1741d4afb5ceSopenharmony_ci * 1742d4afb5ceSopenharmony_ci * @param ssl - SSL point 1743d4afb5ceSopenharmony_ci * @param t - session time 1744d4afb5ceSopenharmony_ci * 1745d4afb5ceSopenharmony_ci * @return session time 1746d4afb5ceSopenharmony_ci */ 1747d4afb5ceSopenharmony_cilong SSL_set_time(SSL *ssl, long t); 1748d4afb5ceSopenharmony_ci 1749d4afb5ceSopenharmony_ci/** 1750d4afb5ceSopenharmony_ci * @brief set SSL session timeout time 1751d4afb5ceSopenharmony_ci * 1752d4afb5ceSopenharmony_ci * @param ssl - SSL point 1753d4afb5ceSopenharmony_ci * @param t - session timeout time 1754d4afb5ceSopenharmony_ci * 1755d4afb5ceSopenharmony_ci * @return session timeout time 1756d4afb5ceSopenharmony_ci */ 1757d4afb5ceSopenharmony_cilong SSL_set_timeout(SSL *ssl, long t); 1758d4afb5ceSopenharmony_ci 1759d4afb5ceSopenharmony_ci/** 1760d4afb5ceSopenharmony_ci * @brief get SSL statement string 1761d4afb5ceSopenharmony_ci * 1762d4afb5ceSopenharmony_ci * @param ssl - SSL point 1763d4afb5ceSopenharmony_ci * 1764d4afb5ceSopenharmony_ci * @return SSL statement string 1765d4afb5ceSopenharmony_ci */ 1766d4afb5ceSopenharmony_cichar *SSL_state_string(const SSL *ssl); 1767d4afb5ceSopenharmony_ci 1768d4afb5ceSopenharmony_ci/** 1769d4afb5ceSopenharmony_ci * @brief get SSL statement long string 1770d4afb5ceSopenharmony_ci * 1771d4afb5ceSopenharmony_ci * @param ssl - SSL point 1772d4afb5ceSopenharmony_ci * 1773d4afb5ceSopenharmony_ci * @return SSL statement long string 1774d4afb5ceSopenharmony_ci */ 1775d4afb5ceSopenharmony_cichar *SSL_state_string_long(const SSL *ssl); 1776d4afb5ceSopenharmony_ci 1777d4afb5ceSopenharmony_ci/** 1778d4afb5ceSopenharmony_ci * @brief get SSL renegotiation count 1779d4afb5ceSopenharmony_ci * 1780d4afb5ceSopenharmony_ci * @param ssl - SSL point 1781d4afb5ceSopenharmony_ci * 1782d4afb5ceSopenharmony_ci * @return renegotiation count 1783d4afb5ceSopenharmony_ci */ 1784d4afb5ceSopenharmony_cilong SSL_total_renegotiations(SSL *ssl); 1785d4afb5ceSopenharmony_ci 1786d4afb5ceSopenharmony_ci/** 1787d4afb5ceSopenharmony_ci * @brief get SSL version 1788d4afb5ceSopenharmony_ci * 1789d4afb5ceSopenharmony_ci * @param ssl - SSL point 1790d4afb5ceSopenharmony_ci * 1791d4afb5ceSopenharmony_ci * @return SSL version 1792d4afb5ceSopenharmony_ci */ 1793d4afb5ceSopenharmony_ciint SSL_version(const SSL *ssl); 1794d4afb5ceSopenharmony_ci 1795d4afb5ceSopenharmony_ci/** 1796d4afb5ceSopenharmony_ci * @brief set SSL PSK identity hint 1797d4afb5ceSopenharmony_ci * 1798d4afb5ceSopenharmony_ci * @param ssl - SSL point 1799d4afb5ceSopenharmony_ci * @param hint - identity hint 1800d4afb5ceSopenharmony_ci * 1801d4afb5ceSopenharmony_ci * @return result 1802d4afb5ceSopenharmony_ci * 1 : OK 1803d4afb5ceSopenharmony_ci * 0 : failed 1804d4afb5ceSopenharmony_ci */ 1805d4afb5ceSopenharmony_ciint SSL_use_psk_identity_hint(SSL *ssl, const char *hint); 1806d4afb5ceSopenharmony_ci 1807d4afb5ceSopenharmony_ci/** 1808d4afb5ceSopenharmony_ci * @brief get SSL PSK identity hint 1809d4afb5ceSopenharmony_ci * 1810d4afb5ceSopenharmony_ci * @param ssl - SSL point 1811d4afb5ceSopenharmony_ci * 1812d4afb5ceSopenharmony_ci * @return identity hint 1813d4afb5ceSopenharmony_ci */ 1814d4afb5ceSopenharmony_ciconst char *SSL_get_psk_identity_hint(SSL *ssl); 1815d4afb5ceSopenharmony_ci 1816d4afb5ceSopenharmony_ci/** 1817d4afb5ceSopenharmony_ci * @brief get SSL PSK identity 1818d4afb5ceSopenharmony_ci * 1819d4afb5ceSopenharmony_ci * @param ssl - SSL point 1820d4afb5ceSopenharmony_ci * 1821d4afb5ceSopenharmony_ci * @return identity 1822d4afb5ceSopenharmony_ci */ 1823d4afb5ceSopenharmony_ciconst char *SSL_get_psk_identity(SSL *ssl); 1824d4afb5ceSopenharmony_ci 1825d4afb5ceSopenharmony_ci#ifdef __cplusplus 1826d4afb5ceSopenharmony_ci} 1827d4afb5ceSopenharmony_ci#endif 1828d4afb5ceSopenharmony_ci 1829d4afb5ceSopenharmony_ci#endif 1830