2023-04-17 10:32:33 -04:00
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Generic netlink HANDSHAKE service .
*
* Author : Chuck Lever < chuck . lever @ oracle . com >
*
* Copyright ( c ) 2023 , Oracle and / or its affiliates .
*/
# ifndef _NET_HANDSHAKE_H
# define _NET_HANDSHAKE_H
enum {
TLS_NO_KEYRING = 0 ,
TLS_NO_PEERID = 0 ,
TLS_NO_CERT = 0 ,
TLS_NO_PRIVKEY = 0 ,
} ;
typedef void ( * tls_done_func_t ) ( void * data , int status ,
key_serial_t peerid ) ;
struct tls_handshake_args {
struct socket * ta_sock ;
tls_done_func_t ta_done ;
void * ta_data ;
2023-05-11 11:49:50 -04:00
const char * ta_peername ;
2023-04-17 10:32:33 -04:00
unsigned int ta_timeout_ms ;
key_serial_t ta_keyring ;
key_serial_t ta_my_cert ;
key_serial_t ta_my_privkey ;
unsigned int ta_num_peerids ;
key_serial_t ta_my_peerids [ 5 ] ;
} ;
int tls_client_hello_anon ( const struct tls_handshake_args * args , gfp_t flags ) ;
int tls_client_hello_x509 ( const struct tls_handshake_args * args , gfp_t flags ) ;
int tls_client_hello_psk ( const struct tls_handshake_args * args , gfp_t flags ) ;
int tls_server_hello_x509 ( const struct tls_handshake_args * args , gfp_t flags ) ;
int tls_server_hello_psk ( const struct tls_handshake_args * args , gfp_t flags ) ;
bool tls_handshake_cancel ( struct sock * sk ) ;
2023-07-27 13:36:17 -04:00
void tls_handshake_close ( struct socket * sock ) ;
2023-04-17 10:32:33 -04:00
2023-07-27 13:37:10 -04:00
u8 tls_get_record_type ( const struct sock * sk , const struct cmsghdr * msg ) ;
void tls_alert_recv ( const struct sock * sk , const struct msghdr * msg ,
u8 * level , u8 * description ) ;
2023-04-17 10:32:33 -04:00
# endif /* _NET_HANDSHAKE_H */