diff options
Diffstat (limited to 'include/net/handshake.h')
| -rw-r--r-- | include/net/handshake.h | 43 | 
1 files changed, 43 insertions, 0 deletions
diff --git a/include/net/handshake.h b/include/net/handshake.h new file mode 100644 index 000000000000..3352b1ab43b3 --- /dev/null +++ b/include/net/handshake.h @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Generic netlink HANDSHAKE service. + * + * Author: Chuck Lever <[email protected]> + * + * 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; +	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); + +#endif /* _NET_HANDSHAKE_H */  |