X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=tnl%2Ftnl.h;h=77a8b2a0c200108f6f9efc76d49a1b143fc2865a;hp=6b18408082cb249416da575f68311ef3b0434321;hb=d1cb8f5355ab449dffe10abf81402e5303d5721a;hpb=fcb521743ea839814fcf4b271f71426b9c44ed8d diff --git a/tnl/tnl.h b/tnl/tnl.h index 6b184080..77a8b2a0 100644 --- a/tnl/tnl.h +++ b/tnl/tnl.h @@ -24,6 +24,7 @@ #define __TNL_H__ #include +#include #include "fd/fd.h" @@ -47,12 +48,26 @@ typedef enum tnl_status { TNL_STATUS_UP, } tnl_status_t; +typedef struct tnl_ep_credentials { + gnutls_credentials_type type; + union { + gnutls_anon_client_credentials anon_client; + gnutls_anon_server_credentials anon_server; + gnutls_srp_client_credentials srp_client; + gnutls_srp_server_credentials srp_server; + gnutls_certificate_credentials certificate; + }; +} tnl_ep_credentials_t; + +typedef struct tnl_ep_cryptoparm { +} tnl_ep_cryptoparm_t; + typedef struct tnl_ep { struct sockaddr_storage address; char *id; char *hostname; - struct tnl_ep_credentials *cred; - struct tnl_ep_cryptoparm *parm; + struct tnl_ep_credentials cred; + struct tnl_ep_cryptoparm parm; } tnl_ep_t; typedef struct tnl { @@ -75,8 +90,8 @@ typedef struct tnl { /* private */ - struct fd fd; gnutls_session session; + struct fd fd; char buf[4096]; int bufread; } tnl_t; @@ -95,11 +110,7 @@ typedef struct tnl_listen { extern bool tnl_listen(struct tnl_listen *listener); extern bool tnl_connect(struct tnl *tnl); -extern bool tnl_credentials_sprint(const char *buf, int len, const struct tnl_ep_credentials *cred); -extern bool tnl_credentials_sscan(const char *buf, struct tnl_ep_credentials *cred); -extern bool tnl_cryptoparm_sprint(const char *buf, int len, const struct tnl_ep_cryptoparm *parm); -extern bool tnl_cryptoparm_sscan(const char *buf, struct tnl_ep_cryptoparm *parm); -extern bool tnl_credentials_fprint(FILE *stream, const struct tnl_ep_credentials *cred); -extern bool tnl_credentials_fscan(FILE *stream, struct tnl_ep_credentials *cred); +extern bool tnl_ep_set_x509_credentials(tnl_ep_t *tnl_ep, const char *key, const char *certificate, const char *trust, const char *crl); +extern bool tnl_ep_set_openpgp_credentials(tnl_ep_t *tnl_ep, const char *privkey, const char *pubkey, const char *keyring, const char *trustdb); #endif /* __TNL_H__ */