You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qemu/crypto/tlscredsbox.h

51 lines
1.3 KiB
C

/*
* SPDX-License-Identifier: GPL-2.0-or-later
*
* QEMU crypto TLS credential support
*
* Copyright (c) 2025 Red Hat, Inc.
*/
#ifndef QCRYPTO_TLSCREDS_BOX_H
#define QCRYPTO_TLSCREDS_BOX_H
#include "qom/object.h"
#ifdef CONFIG_GNUTLS
#include <gnutls/gnutls.h>
#endif
typedef struct QCryptoTLSCredsBox QCryptoTLSCredsBox;
struct QCryptoTLSCredsBox {
uint32_t ref;
bool server;
int type;
union {
void *any;
#ifdef CONFIG_GNUTLS
/*
* All of these gnutls_XXXX_credentials_t types are
* pointers, hence matching the 'any' field above
*/
gnutls_anon_server_credentials_t anonserver;
gnutls_anon_client_credentials_t anonclient;
gnutls_psk_server_credentials_t pskserver;
gnutls_psk_client_credentials_t pskclient;
gnutls_certificate_credentials_t cert;
#endif
} data;
#ifdef CONFIG_GNUTLS
gnutls_dh_params_t dh_params;
#endif
};
QCryptoTLSCredsBox *qcrypto_tls_creds_box_new_server(int type);
QCryptoTLSCredsBox *qcrypto_tls_creds_box_new_client(int type);
void qcrypto_tls_creds_box_ref(QCryptoTLSCredsBox *credsbox);
void qcrypto_tls_creds_box_unref(QCryptoTLSCredsBox *credsbox);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(QCryptoTLSCredsBox, qcrypto_tls_creds_box_unref);
#endif /* QCRYPTO_TLSCREDS_BOX_H */