1*2fd55320SChuck Lever /* SPDX-License-Identifier: GPL-2.0-only */ 2*2fd55320SChuck Lever /* 3*2fd55320SChuck Lever * Generic netlink HANDSHAKE service. 4*2fd55320SChuck Lever * 5*2fd55320SChuck Lever * Author: Chuck Lever <chuck.lever@oracle.com> 6*2fd55320SChuck Lever * 7*2fd55320SChuck Lever * Copyright (c) 2023, Oracle and/or its affiliates. 8*2fd55320SChuck Lever */ 9*2fd55320SChuck Lever 10*2fd55320SChuck Lever #ifndef _NET_HANDSHAKE_H 11*2fd55320SChuck Lever #define _NET_HANDSHAKE_H 12*2fd55320SChuck Lever 13*2fd55320SChuck Lever enum { 14*2fd55320SChuck Lever TLS_NO_KEYRING = 0, 15*2fd55320SChuck Lever TLS_NO_PEERID = 0, 16*2fd55320SChuck Lever TLS_NO_CERT = 0, 17*2fd55320SChuck Lever TLS_NO_PRIVKEY = 0, 18*2fd55320SChuck Lever }; 19*2fd55320SChuck Lever 20*2fd55320SChuck Lever typedef void (*tls_done_func_t)(void *data, int status, 21*2fd55320SChuck Lever key_serial_t peerid); 22*2fd55320SChuck Lever 23*2fd55320SChuck Lever struct tls_handshake_args { 24*2fd55320SChuck Lever struct socket *ta_sock; 25*2fd55320SChuck Lever tls_done_func_t ta_done; 26*2fd55320SChuck Lever void *ta_data; 27*2fd55320SChuck Lever unsigned int ta_timeout_ms; 28*2fd55320SChuck Lever key_serial_t ta_keyring; 29*2fd55320SChuck Lever key_serial_t ta_my_cert; 30*2fd55320SChuck Lever key_serial_t ta_my_privkey; 31*2fd55320SChuck Lever unsigned int ta_num_peerids; 32*2fd55320SChuck Lever key_serial_t ta_my_peerids[5]; 33*2fd55320SChuck Lever }; 34*2fd55320SChuck Lever 35*2fd55320SChuck Lever int tls_client_hello_anon(const struct tls_handshake_args *args, gfp_t flags); 36*2fd55320SChuck Lever int tls_client_hello_x509(const struct tls_handshake_args *args, gfp_t flags); 37*2fd55320SChuck Lever int tls_client_hello_psk(const struct tls_handshake_args *args, gfp_t flags); 38*2fd55320SChuck Lever int tls_server_hello_x509(const struct tls_handshake_args *args, gfp_t flags); 39*2fd55320SChuck Lever int tls_server_hello_psk(const struct tls_handshake_args *args, gfp_t flags); 40*2fd55320SChuck Lever 41*2fd55320SChuck Lever bool tls_handshake_cancel(struct sock *sk); 42*2fd55320SChuck Lever 43*2fd55320SChuck Lever #endif /* _NET_HANDSHAKE_H */ 44