/* * osmo-pcap TLS code * * (C) 2016 by Holger Hans Peter Freyther * All Rights Reserved * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ #pragma once #include #include #include struct osmo_fd; struct osmo_wqueue; struct osmo_pcap_client; struct osmo_tls_session { bool in_use; bool need_handshake; bool need_resend; gnutls_session_t session; /* any credentials */ bool anon_alloc; gnutls_anon_client_credentials_t anon_cred; /* a x509 cert credential */ bool cert_alloc; gnutls_certificate_credentials_t cert_cred; /* the private certificate */ bool pcert_alloc; gnutls_pcert_st pcert; /* the private key in _RAM_ */ bool privk_alloc; gnutls_privkey_t privk; struct osmo_wqueue *wqueue; void (*error)(struct osmo_tls_session *session); void (*handshake_done)(struct osmo_tls_session *session); }; void osmo_tls_init(void); bool osmo_tls_init_client_session(struct osmo_pcap_client *client); void osmo_tls_release(struct osmo_tls_session *); int osmo_tls_client_bfd_cb(struct osmo_fd *fd, unsigned int what);