openHiTLS API openHiTLS 0.1.0-Alpha1
hitls_type.h
浏览该文件的文档.
1/*---------------------------------------------------------------------------------------------
2 * This file is part of the openHiTLS project.
3 * Copyright © 2023 Huawei Technologies Co.,Ltd. All rights reserved.
4 * Licensed under the openHiTLS Software license agreement 1.0. See LICENSE in the project root
5 * for license information.
6 *---------------------------------------------------------------------------------------------
7 */
8
15#ifndef HITLS_TYPE_H
16#define HITLS_TYPE_H
17
18#include <stdint.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
28typedef struct TlsCtx HITLS_Ctx;
29
34typedef struct TlsConfig HITLS_Config;
35
40typedef struct TlsCipherSuiteInfo HITLS_Cipher;
41
42typedef struct TlsSessCtx HITLS_Session;
43
49#define DTLS_SCTP_SHARED_AUTHKEY_LEN 64
50
55#define TLS13_KE_MODE_PSK_ONLY 1u
56
61#define TLS13_KE_MODE_PSK_WITH_DHE 2u
67#define TLS13_CERT_AUTH_WITH_DHE 4u
68
69/* Sets the number of digits in the version number. */
70#define SSLV2_VERSION_BIT 0x00000001U
71#define SSLV3_VERSION_BIT 0x00000002U
72#define TLS10_VERSION_BIT 0x00000004U
73#define TLS11_VERSION_BIT 0x00000008U
74#define TLS12_VERSION_BIT 0x00000010U
75#define TLS13_VERSION_BIT 0x00000020U
76#define DTLS10_VERSION_BIT 0x80000000U
77#define DTLS12_VERSION_BIT 0x40000000U
78#define TLS_VERSION_MASK (TLS12_VERSION_BIT | TLS13_VERSION_BIT)
79
80/* Currently, only DTLS12 is supported. DTLS10 is not supported */
81#define DTLS_VERSION_MASK DTLS12_VERSION_BIT
82
87typedef enum {
93
98typedef enum {
103
104#define HITLS_MODE_ENABLE_PARTIAL_WRITE 0x00000001U
105#define HITLS_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U
106#define HITLS_MODE_AUTO_RETRY 0x00000004U
107#define HITLS_MODE_NO_AUTO_CHAIN 0x00000008U
108#define HITLS_MODE_RELEASE_BUFFERS 0x00000010U
109#define HITLS_MODE_SEND_CLIENTHELLO_TIME 0x00000020U
110#define HITLS_MODE_SEND_SERVERHELLO_TIME 0x00000040U
111#define HITLS_MODE_SEND_FALLBACK_SCSV 0x00000080U
112#define HITLS_MODE_ASYNC 0x00000100U
113#define HITLS_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U
114
115/* close_notify message has been sent to the peer end, turn off the alarm, and the connection is considered closed. */
116# define HITLS_SENT_SHUTDOWN 1u
117# define HITLS_RECEIVED_SHUTDOWN 2u /* Received peer shutdown alert, normal close_notify or fatal error */
118
119// Used to mark the current internal status
120#define HITLS_NOTHING 1u
121#define HITLS_WRITING 2u
122#define HITLS_READING 3u
123#define HITLS_ASYNC_PAUSED 4u
124#define HITLS_ASYNC_NO_JOBS 5u
125
126#define HITLS_CC_READ 0x001u /* Read state */
127#define HITLS_CC_WRITE 0x002u /* Write status */
128
129/* Describes the handshake status */
130typedef enum {
162 HS_STATE_BUTT = 255
164
165#ifdef __cplusplus
166}
167#endif
168
169#endif
HITLS_HandshakeState
Definition hitls_type.h:130
@ TRY_RECV_ENCRYPTED_EXTENSIONS
Definition hitls_type.h:152
@ TRY_SEND_CERTIFICATE_REQUEST
Definition hitls_type.h:141
@ TRY_SEND_CHANGE_CIPHER_SPEC
Definition hitls_type.h:146
@ TRY_RECV_CERTIFICATE
Definition hitls_type.h:153
@ TRY_SEND_CLIENT_HELLO
Definition hitls_type.h:134
@ TRY_RECV_SERVER_KEY_EXCHANGE
Definition hitls_type.h:154
@ TRY_RECV_FINISH
Definition hitls_type.h:161
@ TRY_RECV_CLIENT_HELLO
Definition hitls_type.h:149
@ TRY_RECV_SERVER_HELLO_DONE
Definition hitls_type.h:156
@ TRY_RECV_CERTIFICATE_VERIFY
Definition hitls_type.h:158
@ TRY_SEND_ENCRYPTED_EXTENSIONS
Definition hitls_type.h:138
@ TRY_SEND_FINISH
Definition hitls_type.h:148
@ TLS_IDLE
Definition hitls_type.h:131
@ TRY_RECV_CLIENT_KEY_EXCHANGE
Definition hitls_type.h:157
@ TRY_SEND_HELLO_REQUEST
Definition hitls_type.h:133
@ TRY_RECV_CERTIFICATE_REQUEST
Definition hitls_type.h:155
@ TRY_SEND_SERVER_KEY_EXCHANGE
Definition hitls_type.h:140
@ TRY_RECV_SERVER_HELLO
Definition hitls_type.h:151
@ TRY_RECV_HELLO_VERIFY_REQUEST
Definition hitls_type.h:150
@ TRY_SEND_CLIENT_KEY_EXCHANGE
Definition hitls_type.h:143
@ TRY_SEND_SERVER_HELLO
Definition hitls_type.h:137
@ TRY_SEND_CERTIFICATE
Definition hitls_type.h:139
@ TRY_SEND_HELLO_RETRY_REQUEST
Definition hitls_type.h:136
@ TRY_SEND_NEW_SESSION_TICKET
Definition hitls_type.h:145
@ TRY_SEND_HELLO_VERIFY_REQUEST
Definition hitls_type.h:135
@ TRY_SEND_END_OF_EARLY_DATA
Definition hitls_type.h:147
@ TRY_RECV_NEW_SESSION_TICKET
Definition hitls_type.h:159
@ TRY_SEND_CERTIFICATE_VERIFY
Definition hitls_type.h:144
@ HS_STATE_BUTT
Definition hitls_type.h:162
@ TRY_SEND_SERVER_HELLO_DONE
Definition hitls_type.h:142
@ TLS_CONNECTED
Definition hitls_type.h:132
@ TRY_RECV_END_OF_EARLY_DATA
Definition hitls_type.h:160
struct TlsSessCtx HITLS_Session
Definition hitls_type.h:42
struct TlsCtx HITLS_Ctx
HITLS context
Definition hitls_type.h:28
HITLS_KeyUpdateRequest
key update message type
Definition hitls_type.h:98
@ HITLS_UPDATE_REQUESTED
Definition hitls_type.h:100
@ HITLS_UPDATE_NOT_REQUESTED
Definition hitls_type.h:99
@ HITLS_KEY_UPDATE_REQ_END
Definition hitls_type.h:101
struct TlsConfig HITLS_Config
config context
Definition hitls_type.h:34
struct TlsCipherSuiteInfo HITLS_Cipher
cipherSuite information
Definition hitls_type.h:40
HITLS_SESS_CACHE_MODE
HITLS_SESS_CACHE_MODE: mode for storing hitls sessions.
Definition hitls_type.h:87
@ HITLS_SESS_CACHE_SERVER
Definition hitls_type.h:90
@ HITLS_SESS_CACHE_CLIENT
Definition hitls_type.h:89
@ HITLS_SESS_CACHE_NO
Definition hitls_type.h:88
@ HITLS_SESS_CACHE_BOTH
Definition hitls_type.h:91