69 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Copyright (c) 2006-2021, RT-Thread Development Team
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * SPDX-License-Identifier: Apache-2.0
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Change Logs:
							 | 
						||
| 
								 | 
							
								 * Date           Author       Notes
							 | 
						||
| 
								 | 
							
								 * 2018-11-10     ChenYong     First version
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#ifndef __SAL_TLS_H__
							 | 
						||
| 
								 | 
							
								#define __SAL_TLS_H__
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <rtthread.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Protocol level for TLS.
							 | 
						||
| 
								 | 
							
								 * Here, the same socket protocol level for TLS as in Linux was used.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define SOL_TLS             282
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Socket options for TLS */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Socket option to select TLS credentials to use. */
							 | 
						||
| 
								 | 
							
								#define TLS_CRET_LIST        1
							 | 
						||
| 
								 | 
							
								/* Socket option to set select ciphersuites to use. */
							 | 
						||
| 
								 | 
							
								#define TLS_CIPHERSUITE_LIST 2
							 | 
						||
| 
								 | 
							
								/* Socket option to set peer verification level for TLS connection. */
							 | 
						||
| 
								 | 
							
								#define TLS_PEER_VERIFY      3
							 | 
						||
| 
								 | 
							
								/* Socket option to set role for DTLS connection. */
							 | 
						||
| 
								 | 
							
								#define TLS_DTLS_ROLE        4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Protocol numbers for TLS protocols */
							 | 
						||
| 
								 | 
							
								#define PROTOCOL_TLS         256
							 | 
						||
| 
								 | 
							
								#define PROTOCOL_DTLS        257
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct sal_proto_tls_ops
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    int (*init)(void);
							 | 
						||
| 
								 | 
							
								    void* (*socket)(int socket);
							 | 
						||
| 
								 | 
							
								    int (*connect)(void *sock);
							 | 
						||
| 
								 | 
							
								    int (*send)(void *sock, const void *data, size_t size);
							 | 
						||
| 
								 | 
							
								    int (*recv)(void *sock, void *mem, size_t len);
							 | 
						||
| 
								 | 
							
								    int (*closesocket)(void *sock);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    int (*set_cret_list)(void *sock, const void *cert, size_t size);              /* Set TLS credentials */
							 | 
						||
| 
								 | 
							
								    int (*set_ciphersurite)(void *sock, const void* ciphersurite, size_t size);   /* Set select ciphersuites */
							 | 
						||
| 
								 | 
							
								    int (*set_peer_verify)(void *sock, const void* peer_verify, size_t size);     /* Set peer verification */
							 | 
						||
| 
								 | 
							
								    int (*set_dtls_role)(void *sock, const void *dtls_role, size_t size);         /* Set role for DTLS */
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct sal_proto_tls
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    char name[RT_NAME_MAX];                      /* TLS protocol name */
							 | 
						||
| 
								 | 
							
								    const struct sal_proto_tls_ops *ops;         /* SAL TLS protocol options */
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* SAL TLS protocol register */
							 | 
						||
| 
								 | 
							
								int sal_proto_tls_register(const struct sal_proto_tls *pt);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* __SAL_TLS_H__ */
							 |