mirror of https://gitlab.com/qemu-project/qemu
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.
51 lines
1.3 KiB
C
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 */
|