openHiTLS API openHiTLS 0.1.0-Alpha1
hitls_session.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_SESSION_H
16#define HITLS_SESSION_H
17
18#include <stdint.h>
19#include <stddef.h>
20#include <stdbool.h>
21#include "hitls_type.h"
22#include "hitls_crypt_type.h"
23#include "bsl_uio.h"
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
33#define HITLS_SESSION_ID_CTX_MAX_SIZE 32u
34
39#define HITLS_SESSION_ID_MAX_SIZE 32u
40
50int32_t HITLS_CFG_SetSessionTicketSupport(HITLS_Config *config, bool support);
51
61int32_t HITLS_CFG_GetSessionTicketSupport(const HITLS_Config *config, uint8_t *isSupport);
62
76int32_t HITLS_CFG_SetTicketNums(HITLS_Config *config, uint32_t ticketNums);
77
86
100int32_t HITLS_SetTicketNums(HITLS_Ctx *ctx, uint32_t ticketNums);
101
110
120typedef int32_t (*HITLS_NewSessionCb) (HITLS_Ctx *ctx, HITLS_Session *session);
121
132
133#define HITLS_TICKET_KEY_RET_NEED_ALERT (-1) // callback fails. A fatal error occurs.
134 // You need to send an alert
135#define HITLS_TICKET_KEY_RET_FAIL 0 // callback returns a failure, but the error is not a fatal error,
136 // for example, key_name matching fails.
137#define HITLS_TICKET_KEY_RET_SUCCESS 1 // If the callback is successful,
138 // the key can be used for encryption and decryption
139#define HITLS_TICKET_KEY_RET_SUCCESS_RENEW 2 // If the callback is successful, the key can be used for encryption
140 // and decryption. In the decryption scenario,
141 // the ticket needs to be renewed
174typedef int32_t (*HITLS_TicketKeyCb)(uint8_t *keyName, uint32_t keyNameSize, HITLS_CipherParameters *cipher,
175 uint8_t isEncrypt);
176
187
205int32_t HITLS_CFG_GetSessionTicketKey(const HITLS_Config *config, uint8_t *key, uint32_t keySize, uint32_t *outSize);
206
221int32_t HITLS_CFG_SetSessionTicketKey(HITLS_Config *config, const uint8_t *key, uint32_t keySize);
222
235int32_t HITLS_CFG_SetSessionIdCtx(HITLS_Config *config, const uint8_t *sessionIdCtx, uint32_t len);
236
247
258
268int32_t HITLS_CFG_SetSessionCacheSize(HITLS_Config *config, uint32_t size);
269
279int32_t HITLS_CFG_GetSessionCacheSize(HITLS_Config *config, uint32_t *size);
280
290int32_t HITLS_CFG_SetSessionTimeout(HITLS_Config *config, uint64_t timeout);
291
301int32_t HITLS_CFG_GetSessionTimeout(const HITLS_Config *config, uint64_t *timeout);
302
312int32_t HITLS_IsSessionReused(HITLS_Ctx *ctx, uint8_t *isReused);
313
326int32_t HITLS_SetSessionIdCtx(HITLS_Ctx *ctx, const uint8_t *sessionIdCtx, uint32_t len);
327
345int32_t HITLS_GetSessionTicketKey(const HITLS_Ctx *ctx, uint8_t *key, uint32_t keySize, uint32_t *outSize);
346
361int32_t HITLS_SetSessionTicketKey(HITLS_Ctx *ctx, const uint8_t *key, uint32_t keySize);
362
374
385
396
405
414
423
434int32_t HITLS_SESS_SetMasterKey(HITLS_Session *sess, const uint8_t *masterKey, uint32_t masterKeySize);
435
444
455int32_t HITLS_SESS_GetMasterKey(const HITLS_Session *sess, uint8_t *masterKey, uint32_t *masterKeySize);
456
466int32_t HITLS_SESS_GetProtocolVersion(const HITLS_Session *sess, uint16_t *version);
467
477int32_t HITLS_SESS_SetProtocolVersion(HITLS_Session *sess, uint16_t version);
478
488int32_t HITLS_SESS_SetCipherSuite(HITLS_Session *sess, uint16_t cipherSuite);
489
499int32_t HITLS_SESS_GetCipherSuite(HITLS_Session *sess, uint16_t *cipherSuite);
500
511int32_t HITLS_SESS_SetSessionIdCtx(HITLS_Session *sess, uint8_t *sessionIdCtx, uint32_t sessionIdCtxSize);
512
523int32_t HITLS_SESS_GetSessionIdCtx(const HITLS_Session *sess, uint8_t *sessionIdCtx, uint32_t *sessionIdCtxSize);
524
535int32_t HITLS_SESS_SetSessionId(HITLS_Session *sess, uint8_t *sessionId, uint32_t sessionIdSize);
536
547int32_t HITLS_SESS_GetSessionId(const HITLS_Session *sess, uint8_t *sessionId, uint32_t *sessionIdSize);
548
558int32_t HITLS_SESS_SetHaveExtMasterSecret(HITLS_Session *sess, uint8_t haveExtMasterSecret);
559
569int32_t HITLS_SESS_GetHaveExtMasterSecret(HITLS_Session *sess, uint8_t *haveExtMasterSecret);
570
580int32_t HITLS_SESS_SetTimeout(HITLS_Session *sess, uint64_t timeout);
581
591
600
601#ifdef __cplusplus
602}
603#endif
604
605#endif /* HITLS_SESSION_H */
struct TlsSessCtx HITLS_Session
Definition hitls_type.h:42
uint32_t HITLS_SESS_GetMasterKeyLen(const HITLS_Session *sess)
Obtain the master key length of a session.
int32_t HITLS_CFG_SetSessionIdCtx(HITLS_Config *config, const uint8_t *sessionIdCtx, uint32_t len)
Set the user-specific session ID ctx, only on the server.
int32_t HITLS_SESS_GetProtocolVersion(const HITLS_Session *sess, uint16_t *version)
Obtain the session protocol version.
int32_t HITLS_SetTicketNums(HITLS_Ctx *ctx, uint32_t ticketNums)
Setting TLS1.3, number of new session tickets sent after complete link establishment.
uint32_t HITLS_GetTicketNums(HITLS_Ctx *ctx)
Obtain TLS1.3, Number of new session tickets sent after complete link establishment.
int32_t HITLS_SESS_SetTimeout(HITLS_Session *sess, uint64_t timeout)
Set the timeout interval, in seconds.
int32_t HITLS_CFG_GetSessionCacheSize(HITLS_Config *config, uint32_t *size)
Obtain the maximum number of sessions in the session cache.
uint32_t HITLS_CFG_GetTicketNums(HITLS_Config *config)
Obtain TLS1.3, number of new session tickets sent after complete link establishment.
int32_t HITLS_CFG_GetSessionCacheMode(HITLS_Config *config, HITLS_SESS_CACHE_MODE *mode)
Obtain the session cache mode.
int32_t HITLS_IsSessionReused(HITLS_Ctx *ctx, uint8_t *isReused)
Whether the link is multiplexed with a session.
int32_t HITLS_CFG_SetTicketKeyCallback(HITLS_Config *config, HITLS_TicketKeyCb callback)
Set the ticket key callback, which is used only by the server, cb can be NULL.
HITLS_Session * HITLS_GetSession(const HITLS_Ctx *ctx)
Obtain the handle of the session information and directly obtain the pointer.
int32_t HITLS_CFG_SetSessionCacheSize(HITLS_Config *config, uint32_t size)
Set the maximum number of sessions in the session cache.
int32_t HITLS_GetSessionTicketKey(const HITLS_Ctx *ctx, uint8_t *key, uint32_t keySize, uint32_t *outSize)
Obtain the default ticket key of the HiTLS.
int32_t HITLS_SESS_GetSessionIdCtx(const HITLS_Session *sess, uint8_t *sessionIdCtx, uint32_t *sessionIdCtxSize)
Obtain the session ID ctx.
int32_t HITLS_CFG_SetNewSessionCb(HITLS_Config *config, HITLS_NewSessionCb newSessionCb)
Set a callback for negotiating a new session call.
int32_t HITLS_SESS_GetMasterKey(const HITLS_Session *sess, uint8_t *masterKey, uint32_t *masterKeySize)
Obtain the master key of a session.
int32_t HITLS_SESS_SetMasterKey(HITLS_Session *sess, const uint8_t *masterKey, uint32_t masterKeySize)
Set the master key of a session.
int32_t HITLS_CFG_SetSessionTimeout(HITLS_Config *config, uint64_t timeout)
Set the session timeout interval.
int32_t(* HITLS_TicketKeyCb)(uint8_t *keyName, uint32_t keyNameSize, HITLS_CipherParameters *cipher, uint8_t isEncrypt)
Obtain and verify ticket_key on the server.
Definition hitls_session.h:174
int32_t HITLS_CFG_GetSessionTicketSupport(const HITLS_Config *config, uint8_t *isSupport)
Query whether the session ticket function is supported.
int32_t HITLS_SESS_SetCipherSuite(HITLS_Session *sess, uint16_t cipherSuite)
Set the session password suite.
int32_t HITLS_SetSession(HITLS_Ctx *ctx, HITLS_Session *session)
Set the handle for the session information about the HiTLS link.
int32_t HITLS_CFG_GetSessionTicketKey(const HITLS_Config *config, uint8_t *key, uint32_t keySize, uint32_t *outSize)
Obtain the default ticket key of the HiTLS.
int32_t HITLS_SESS_SetHaveExtMasterSecret(HITLS_Session *sess, uint8_t haveExtMasterSecret)
Set whether to contain the master key extension.
int32_t HITLS_SESS_SetProtocolVersion(HITLS_Session *sess, uint16_t version)
Set the session protocol version.
HITLS_Session * HITLS_SESS_Dup(HITLS_Session *sess)
Duplicate a session, the number of reference times increases by 1.
int32_t HITLS_SetSessionTicketKey(HITLS_Ctx *ctx, const uint8_t *key, uint32_t keySize)
Set the default ticket key of the HiTLS. The key is used to encrypt and decrypt the ticket in the new...
int32_t HITLS_CFG_SetSessionTicketSupport(HITLS_Config *config, bool support)
Set whether to support the session ticket function.
int32_t HITLS_SESS_SetSessionIdCtx(HITLS_Session *sess, uint8_t *sessionIdCtx, uint32_t sessionIdCtxSize)
Set the session ID ctx.
bool HITLS_SESS_IsResumable(const HITLS_Session *sess)
Check whether the session can be recovered. Only simple check is performed, but the validity period i...
int32_t HITLS_SESS_GetSessionId(const HITLS_Session *sess, uint8_t *sessionId, uint32_t *sessionIdSize)
Obtain the session ID.
int32_t HITLS_SESS_SetSessionId(HITLS_Session *sess, uint8_t *sessionId, uint32_t sessionIdSize)
Set the session ID.
int32_t HITLS_SetSessionIdCtx(HITLS_Ctx *ctx, const uint8_t *sessionIdCtx, uint32_t len)
Set the user-specific session ID ctx of the HiTLS link, only on the server.
int32_t(* HITLS_NewSessionCb)(HITLS_Ctx *ctx, HITLS_Session *session)
This callback is called when a new session is negotiated. Users can use sessions.
Definition hitls_session.h:120
void HITLS_SESS_Free(HITLS_Session *sess)
Release the session information handle.
HITLS_Session * HITLS_SESS_New(void)
Apply for a new session.
int32_t HITLS_CFG_SetSessionCacheMode(HITLS_Config *config, HITLS_SESS_CACHE_MODE mode)
Set the session cache mode.
bool HITLS_SESS_HasTicket(const HITLS_Session *sess)
Check whether the session has a ticket.
int32_t HITLS_SESS_GetHaveExtMasterSecret(HITLS_Session *sess, uint8_t *haveExtMasterSecret)
Obtain the master key extension.
int32_t HITLS_CFG_SetTicketNums(HITLS_Config *config, uint32_t ticketNums)
Setting TLS1.3, number of new session tickets sent after a complete link is established.
int32_t HITLS_CFG_SetSessionTicketKey(HITLS_Config *config, const uint8_t *key, uint32_t keySize)
Set the default ticket key of the HiTLS. The key is used to encrypt and decrypt tickets in the new se...
HITLS_Session * HITLS_GetDupSession(HITLS_Ctx *ctx)
Obtain the handle of the copied session information.
int32_t HITLS_SESS_GetCipherSuite(HITLS_Session *sess, uint16_t *cipherSuite)
Obtain the session password suite.
int32_t HITLS_CFG_GetSessionTimeout(const HITLS_Config *config, uint64_t *timeout)
Obtain the timeout interval of a session.
struct TlsCtx HITLS_Ctx
HITLS context
Definition hitls_type.h:28
struct TlsConfig HITLS_Config
config context
Definition hitls_type.h:34
HITLS_SESS_CACHE_MODE
HITLS_SESS_CACHE_MODE: mode for storing hitls sessions.
Definition hitls_type.h:87
Key parameters
Definition hitls_crypt_type.h:214