mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-09 20:41:14 +00:00
components/openssl: add license header
This commit is contained in:
@@ -1,11 +1,35 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "ssl_lib.h"
|
||||
#include "ssl_pkey.h"
|
||||
#include "ssl_x509.h"
|
||||
#include "ssl_cert.h"
|
||||
#include "ssl_dbg.h"
|
||||
#include "ssl_pm.h"
|
||||
#include "ssl_port.h"
|
||||
|
||||
#define SSL_SEND_DATA_MAX_LENGTH 1460
|
||||
|
||||
/*
|
||||
* ossl_statem_in_error - Discover whether the current connection is in the error state
|
||||
*
|
||||
* @param ssl - SSL point
|
||||
*
|
||||
* @return
|
||||
* 1 : Yes
|
||||
* 0 : no
|
||||
*/
|
||||
int ossl_statem_in_error(const SSL *ssl)
|
||||
{
|
||||
if (ssl->statem.state == MSG_FLOW_ERROR)
|
||||
@@ -23,7 +47,7 @@ int ossl_statem_in_error(const SSL *ssl)
|
||||
*/
|
||||
int SSL_want(const SSL *ssl)
|
||||
{
|
||||
return 0;
|
||||
return ssl->rwstate;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -131,7 +155,7 @@ OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl)
|
||||
|
||||
SSL_ASSERT(ssl);
|
||||
|
||||
state = ssl->method->func->ssl_get_state(ssl);
|
||||
state = SSL_METHOD_CALL(get_state, ssl);
|
||||
|
||||
return state;
|
||||
}
|
||||
@@ -154,15 +178,15 @@ SSL_CTX* SSL_CTX_new(const SSL_METHOD *method)
|
||||
|
||||
client_ca = sk_X509_NAME_new_null();
|
||||
if (!client_ca)
|
||||
SSL_ERR(-2, go_failed1, "ssl_ctx_new:ctx:[%d]\n", ret);
|
||||
SSL_ERR(-2, go_failed1, "sk_X509_NAME_new_null\n");
|
||||
|
||||
cert = ssl_cert_new();
|
||||
if (!cert)
|
||||
SSL_ERR(-2, go_failed2, "ssl_ctx_new:ctx:[%d]\n", ret);
|
||||
SSL_ERR(-2, go_failed2, "ssl_cert_new\n");
|
||||
|
||||
ctx = (SSL_CTX *)ssl_zalloc(sizeof(SSL_CTX));
|
||||
if (!ctx)
|
||||
SSL_ERR(-2, go_failed3, "ssl_ctx_new:ctx:[%d]\n", ret);
|
||||
SSL_ERR(-2, go_failed3, "ssl_ctx_new:ctx\n");
|
||||
|
||||
ctx->method = method;
|
||||
ctx->cert = cert;
|
||||
@@ -215,6 +239,8 @@ int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth)
|
||||
|
||||
ctx->method = meth;
|
||||
|
||||
ctx->version = meth->version;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -258,10 +284,12 @@ SSL *SSL_new(SSL_CTX *ctx)
|
||||
ssl->version = ctx->version;
|
||||
ssl->options = ctx->options;
|
||||
|
||||
ret = ssl->method->func->ssl_new(ssl);
|
||||
ret = SSL_METHOD_CALL(new, ssl);
|
||||
if (ret)
|
||||
SSL_RET(failed2, "ssl_new\n");
|
||||
|
||||
ssl->rwstate = SSL_NOTHING;
|
||||
|
||||
return ssl;
|
||||
|
||||
failed2:
|
||||
@@ -281,7 +309,7 @@ void SSL_free(SSL *ssl)
|
||||
{
|
||||
SSL_ASSERT(ssl);
|
||||
|
||||
ssl->method->func->ssl_free(ssl);
|
||||
SSL_METHOD_CALL(free, ssl);
|
||||
|
||||
ssl_free(ssl);
|
||||
}
|
||||
@@ -302,7 +330,7 @@ int SSL_do_handshake(SSL *ssl)
|
||||
|
||||
SSL_ASSERT(ssl);
|
||||
|
||||
ret = ssl->method->func->ssl_handshake(ssl);
|
||||
ret = SSL_METHOD_CALL(handshake, ssl);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -357,7 +385,7 @@ int SSL_shutdown(SSL *ssl)
|
||||
|
||||
if (SSL_get_state(ssl) != TLS_ST_OK) return 0;
|
||||
|
||||
ret = ssl->method->func->ssl_shutdown(ssl);
|
||||
ret = SSL_METHOD_CALL(shutdown, ssl);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -381,9 +409,9 @@ int SSL_clear(SSL *ssl)
|
||||
if (1 != ret)
|
||||
SSL_ERR(0, go_failed1, "SSL_shutdown\n");
|
||||
|
||||
ssl->method->func->ssl_free(ssl);
|
||||
SSL_METHOD_CALL(free, ssl);
|
||||
|
||||
ret = ssl->method->func->ssl_new(ssl);
|
||||
ret = SSL_METHOD_CALL(new, ssl);
|
||||
if (!ret)
|
||||
SSL_ERR(0, go_failed1, "ssl_new\n");
|
||||
|
||||
@@ -413,7 +441,11 @@ int SSL_read(SSL *ssl, void *buffer, int len)
|
||||
SSL_ASSERT(buffer);
|
||||
SSL_ASSERT(len);
|
||||
|
||||
ret = ssl->method->func->ssl_read(ssl, buffer, len);
|
||||
ssl->rwstate = SSL_READING;
|
||||
|
||||
ret = SSL_METHOD_CALL(read, ssl, buffer, len);
|
||||
|
||||
ssl->rwstate = SSL_NOTHING;
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -440,6 +472,8 @@ int SSL_write(SSL *ssl, const void *buffer, int len)
|
||||
SSL_ASSERT(buffer);
|
||||
SSL_ASSERT(len);
|
||||
|
||||
ssl->rwstate = SSL_WRITING;
|
||||
|
||||
send_bytes = len;
|
||||
pbuf = (const unsigned char *)buffer;
|
||||
|
||||
@@ -451,13 +485,15 @@ int SSL_write(SSL *ssl, const void *buffer, int len)
|
||||
else
|
||||
bytes = send_bytes;
|
||||
|
||||
ret = ssl->method->func->ssl_send(ssl, buffer, len);
|
||||
ret = SSL_METHOD_CALL(send, ssl, buffer, len);
|
||||
if (ret > 0) {
|
||||
pbuf += ret;
|
||||
send_bytes -= ret;
|
||||
}
|
||||
} while (ret > 0 && send_bytes);
|
||||
|
||||
ssl->rwstate = SSL_NOTHING;
|
||||
|
||||
send_bytes = len - send_bytes;
|
||||
if (send_bytes >= 0)
|
||||
ret = send_bytes;
|
||||
@@ -518,11 +554,11 @@ int SSL_set_ssl_method(SSL *ssl, const SSL_METHOD *method)
|
||||
if (1 != ret)
|
||||
SSL_ERR(0, go_failed1, "SSL_shutdown\n");
|
||||
|
||||
ssl->method->func->ssl_free(ssl);
|
||||
SSL_METHOD_CALL(free, ssl);
|
||||
|
||||
ssl->method = method;
|
||||
|
||||
ret = ssl->method->func->ssl_new(ssl);
|
||||
ret = SSL_METHOD_CALL(new, ssl);
|
||||
if (!ret)
|
||||
SSL_ERR(0, go_failed1, "ssl_new\n");
|
||||
} else {
|
||||
@@ -579,7 +615,7 @@ int SSL_pending(const SSL *ssl)
|
||||
|
||||
SSL_ASSERT(ssl);
|
||||
|
||||
ret = ssl->method->func->ssl_pending(ssl);
|
||||
ret = SSL_METHOD_CALL(pending, ssl);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -705,7 +741,7 @@ int SSL_get_fd(const SSL *ssl)
|
||||
|
||||
SSL_ASSERT(ssl);
|
||||
|
||||
ret = ssl->method->func->ssl_get_fd(ssl, 0);
|
||||
ret = SSL_METHOD_CALL(get_fd, ssl, 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -725,7 +761,7 @@ int SSL_get_rfd(const SSL *ssl)
|
||||
|
||||
SSL_ASSERT(ssl);
|
||||
|
||||
ret = ssl->method->func->ssl_get_fd(ssl, 0);
|
||||
ret = SSL_METHOD_CALL(get_fd, ssl, 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -745,7 +781,7 @@ int SSL_get_wfd(const SSL *ssl)
|
||||
|
||||
SSL_ASSERT(ssl);
|
||||
|
||||
ret = ssl->method->func->ssl_get_fd(ssl, 0);
|
||||
ret = SSL_METHOD_CALL(get_fd, ssl, 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -767,7 +803,7 @@ int SSL_set_fd(SSL *ssl, int fd)
|
||||
SSL_ASSERT(ssl);
|
||||
SSL_ASSERT(fd >= 0);
|
||||
|
||||
ssl->method->func->ssl_set_fd(ssl, fd, 0);
|
||||
SSL_METHOD_CALL(set_fd, ssl, fd, 0);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -789,7 +825,7 @@ int SSL_set_rfd(SSL *ssl, int fd)
|
||||
SSL_ASSERT(ssl);
|
||||
SSL_ASSERT(fd >= 0);
|
||||
|
||||
ssl->method->func->ssl_set_fd(ssl, fd, 0);
|
||||
SSL_METHOD_CALL(set_fd, ssl, fd, 0);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -811,7 +847,7 @@ int SSL_set_wfd(SSL *ssl, int fd)
|
||||
SSL_ASSERT(ssl);
|
||||
SSL_ASSERT(fd >= 0);
|
||||
|
||||
ssl->method->func->ssl_set_fd(ssl, fd, 0);
|
||||
SSL_METHOD_CALL(set_fd, ssl, fd, 0);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -1451,7 +1487,7 @@ void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len)
|
||||
SSL_ASSERT(ctx);
|
||||
SSL_ASSERT(len);
|
||||
|
||||
ctx->method->func->ssl_set_bufflen(NULL, len);
|
||||
ctx->read_buffer_len = len;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1467,7 +1503,7 @@ void SSL_set_default_read_buffer_len(SSL *ssl, size_t len)
|
||||
SSL_ASSERT(ssl);
|
||||
SSL_ASSERT(len);
|
||||
|
||||
ssl->method->func->ssl_set_bufflen(ssl, len);
|
||||
SSL_METHOD_CALL(set_bufflen, ssl, len);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1688,3 +1724,18 @@ long SSL_set_timeout(SSL *ssl, long t)
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
/*
|
||||
* SSL_set_verify - set the SSL verifying of the SSL context
|
||||
*
|
||||
* @param ctx - SSL point
|
||||
* @param mode - verifying mode
|
||||
* @param verify_callback - verifying callback function
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
void SSL_set_verify(SSL *ssl, int mode, int (*verify_callback)(int, X509_STORE_CTX *))
|
||||
{
|
||||
SSL_ASSERT(ssl);
|
||||
SSL_ASSERT(verify_callback);
|
||||
}
|
||||
|
Reference in New Issue
Block a user