129 lines
3.6 KiB
C
129 lines
3.6 KiB
C
// 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.
|
|
|
|
#ifndef _SSL_CODE_H_
|
|
#define _SSL_CODE_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "ssl3.h"
|
|
#include "tls1.h"
|
|
#include "x509_vfy.h"
|
|
|
|
/* Used in SSL_set_mode() -- supported mode when using BIO */
|
|
#define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001L
|
|
#define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002L
|
|
|
|
/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */
|
|
# define SSL_SENT_SHUTDOWN 1
|
|
# define SSL_RECEIVED_SHUTDOWN 2
|
|
|
|
# define SSL_VERIFY_NONE 0x00
|
|
# define SSL_VERIFY_PEER 0x01
|
|
# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
|
|
# define SSL_VERIFY_CLIENT_ONCE 0x04
|
|
|
|
/*
|
|
* The following 3 states are kept in ssl->rlayer.rstate when reads fail, you
|
|
* should not need these
|
|
*/
|
|
# define SSL_ST_READ_HEADER 0xF0
|
|
# define SSL_ST_READ_BODY 0xF1
|
|
# define SSL_ST_READ_DONE 0xF2
|
|
|
|
# define SSL_NOTHING 1
|
|
# define SSL_WRITING 2
|
|
# define SSL_READING 3
|
|
# define SSL_X509_LOOKUP 4
|
|
# define SSL_ASYNC_PAUSED 5
|
|
# define SSL_ASYNC_NO_JOBS 6
|
|
|
|
|
|
# define SSL_ERROR_NONE 0
|
|
# define SSL_ERROR_SSL 1
|
|
# define SSL_ERROR_WANT_READ 2
|
|
# define SSL_ERROR_WANT_WRITE 3
|
|
# define SSL_ERROR_WANT_X509_LOOKUP 4
|
|
# define SSL_ERROR_SYSCALL 5/* look at error stack/return value/errno */
|
|
# define SSL_ERROR_ZERO_RETURN 6
|
|
# define SSL_ERROR_WANT_CONNECT 7
|
|
# define SSL_ERROR_WANT_ACCEPT 8
|
|
# define SSL_ERROR_WANT_ASYNC 9
|
|
# define SSL_ERROR_WANT_ASYNC_JOB 10
|
|
|
|
/* Message flow states */
|
|
typedef enum {
|
|
/* No handshake in progress */
|
|
MSG_FLOW_UNINITED,
|
|
/* A permanent error with this connection */
|
|
MSG_FLOW_ERROR,
|
|
/* We are about to renegotiate */
|
|
MSG_FLOW_RENEGOTIATE,
|
|
/* We are reading messages */
|
|
MSG_FLOW_READING,
|
|
/* We are writing messages */
|
|
MSG_FLOW_WRITING,
|
|
/* Handshake has finished */
|
|
MSG_FLOW_FINISHED
|
|
} MSG_FLOW_STATE;
|
|
|
|
/* SSL subsystem states */
|
|
typedef enum {
|
|
TLS_ST_BEFORE,
|
|
TLS_ST_OK,
|
|
DTLS_ST_CR_HELLO_VERIFY_REQUEST,
|
|
TLS_ST_CR_SRVR_HELLO,
|
|
TLS_ST_CR_CERT,
|
|
TLS_ST_CR_CERT_STATUS,
|
|
TLS_ST_CR_KEY_EXCH,
|
|
TLS_ST_CR_CERT_REQ,
|
|
TLS_ST_CR_SRVR_DONE,
|
|
TLS_ST_CR_SESSION_TICKET,
|
|
TLS_ST_CR_CHANGE,
|
|
TLS_ST_CR_FINISHED,
|
|
TLS_ST_CW_CLNT_HELLO,
|
|
TLS_ST_CW_CERT,
|
|
TLS_ST_CW_KEY_EXCH,
|
|
TLS_ST_CW_CERT_VRFY,
|
|
TLS_ST_CW_CHANGE,
|
|
TLS_ST_CW_NEXT_PROTO,
|
|
TLS_ST_CW_FINISHED,
|
|
TLS_ST_SW_HELLO_REQ,
|
|
TLS_ST_SR_CLNT_HELLO,
|
|
DTLS_ST_SW_HELLO_VERIFY_REQUEST,
|
|
TLS_ST_SW_SRVR_HELLO,
|
|
TLS_ST_SW_CERT,
|
|
TLS_ST_SW_KEY_EXCH,
|
|
TLS_ST_SW_CERT_REQ,
|
|
TLS_ST_SW_SRVR_DONE,
|
|
TLS_ST_SR_CERT,
|
|
TLS_ST_SR_KEY_EXCH,
|
|
TLS_ST_SR_CERT_VRFY,
|
|
TLS_ST_SR_NEXT_PROTO,
|
|
TLS_ST_SR_CHANGE,
|
|
TLS_ST_SR_FINISHED,
|
|
TLS_ST_SW_SESSION_TICKET,
|
|
TLS_ST_SW_CERT_STATUS,
|
|
TLS_ST_SW_CHANGE,
|
|
TLS_ST_SW_FINISHED
|
|
} OSSL_HANDSHAKE_STATE;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|