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#include "private-lib-core.h"
16d4afb5ceSopenharmony_ci
17d4afb5ceSopenharmony_ci#include "ssl_methods.h"
18d4afb5ceSopenharmony_ci#include "ssl_pm.h"
19d4afb5ceSopenharmony_ci
20d4afb5ceSopenharmony_ci/**
21d4afb5ceSopenharmony_ci * TLS method function collection
22d4afb5ceSopenharmony_ci */
23d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD_FUNC(TLS_method_func,
24d4afb5ceSopenharmony_ci        ssl_pm_new, ssl_pm_free,
25d4afb5ceSopenharmony_ci        ssl_pm_handshake, ssl_pm_shutdown, ssl_pm_clear,
26d4afb5ceSopenharmony_ci        ssl_pm_read, ssl_pm_send, ssl_pm_pending,
27d4afb5ceSopenharmony_ci        ssl_pm_set_fd, ssl_pm_get_fd,
28d4afb5ceSopenharmony_ci        ssl_pm_set_bufflen,
29d4afb5ceSopenharmony_ci        ssl_pm_get_verify_result,
30d4afb5ceSopenharmony_ci        ssl_pm_get_state);
31d4afb5ceSopenharmony_ci
32d4afb5ceSopenharmony_ci/**
33d4afb5ceSopenharmony_ci * TLS or SSL client method collection
34d4afb5ceSopenharmony_ci */
35d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD(TLS_ANY_VERSION, 0, TLS_method_func, TLS_client_method);
36d4afb5ceSopenharmony_ci
37d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD(TLS1_2_VERSION, 0, TLS_method_func, TLSv1_2_client_method);
38d4afb5ceSopenharmony_ci
39d4afb5ceSopenharmony_ci#if 0
40d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD(TLS1_1_VERSION, 0, TLS_method_func, TLSv1_1_client_method);
41d4afb5ceSopenharmony_ci
42d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD(TLS1_VERSION, 0, TLS_method_func, TLSv1_client_method);
43d4afb5ceSopenharmony_ci
44d4afb5ceSopenharmony_ciIMPLEMENT_SSL_METHOD(SSL3_VERSION, 0, TLS_method_func, SSLv3_client_method);
45d4afb5ceSopenharmony_ci#endif
46d4afb5ceSopenharmony_ci
47d4afb5ceSopenharmony_ci/**
48d4afb5ceSopenharmony_ci * TLS or SSL server method collection
49d4afb5ceSopenharmony_ci */
50d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD(TLS_ANY_VERSION, 1, TLS_method_func, TLS_server_method);
51d4afb5ceSopenharmony_ci
52d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD(TLS1_2_VERSION, 1, TLS_method_func, TLSv1_2_server_method);
53d4afb5ceSopenharmony_ci
54d4afb5ceSopenharmony_ci#if 0
55d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD(TLS1_1_VERSION, 1, TLS_method_func, TLSv1_1_server_method);
56d4afb5ceSopenharmony_ci
57d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD(TLS1_VERSION, 0, TLS_method_func, TLSv1_server_method);
58d4afb5ceSopenharmony_ci
59d4afb5ceSopenharmony_ciIMPLEMENT_SSL_METHOD(SSL3_VERSION, 1, TLS_method_func, SSLv3_server_method);
60d4afb5ceSopenharmony_ci#endif
61d4afb5ceSopenharmony_ci
62d4afb5ceSopenharmony_ci/**
63d4afb5ceSopenharmony_ci * TLS or SSL method collection
64d4afb5ceSopenharmony_ci */
65d4afb5ceSopenharmony_ciIMPLEMENT_TLS_METHOD(TLS_ANY_VERSION, -1, TLS_method_func, TLS_method);
66d4afb5ceSopenharmony_ci
67d4afb5ceSopenharmony_ciIMPLEMENT_SSL_METHOD(TLS1_2_VERSION, -1, TLS_method_func, TLSv1_2_method);
68d4afb5ceSopenharmony_ci
69d4afb5ceSopenharmony_ci#if 0
70d4afb5ceSopenharmony_ciIMPLEMENT_SSL_METHOD(TLS1_1_VERSION, -1, TLS_method_func, TLSv1_1_method);
71d4afb5ceSopenharmony_ci
72d4afb5ceSopenharmony_ciIMPLEMENT_SSL_METHOD(TLS1_VERSION, -1, TLS_method_func, TLSv1_method);
73d4afb5ceSopenharmony_ci
74d4afb5ceSopenharmony_ciIMPLEMENT_SSL_METHOD(SSL3_VERSION, -1, TLS_method_func, SSLv3_method);
75d4afb5ceSopenharmony_ci#endif
76d4afb5ceSopenharmony_ci
77d4afb5ceSopenharmony_ci/**
78d4afb5ceSopenharmony_ci * @brief get X509 object method
79d4afb5ceSopenharmony_ci */
80d4afb5ceSopenharmony_ciIMPLEMENT_X509_METHOD(X509_method,
81d4afb5ceSopenharmony_ci            x509_pm_new, x509_pm_free,
82d4afb5ceSopenharmony_ci            x509_pm_load, x509_pm_show_info);
83d4afb5ceSopenharmony_ci
84d4afb5ceSopenharmony_ci/**
85d4afb5ceSopenharmony_ci * @brief get private key object method
86d4afb5ceSopenharmony_ci */
87d4afb5ceSopenharmony_ciIMPLEMENT_PKEY_METHOD(EVP_PKEY_method,
88d4afb5ceSopenharmony_ci            pkey_pm_new, pkey_pm_free,
89d4afb5ceSopenharmony_ci            pkey_pm_load);
90