/* Copyright (C) 2013 The giomm Development Team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see .
*/
#include
#include
#include
_DEFS(giomm,gio)
_PINCLUDE(glibmm/private/object_p.h)
namespace Glib
{
// Forward declaration.
class GLIBMM_API ByteArray;
}
namespace Gio
{
class GIOMM_API Cancellable;
class GIOMM_API SocketConnectable;
class GIOMM_API TlsCertificate;
class GIOMM_API TlsInteraction;
/** TlsDatabase - TLS database type.
* TlsDatabase is used to lookup certificates and other information from a
* certificate or key store. It is an abstract base class which TLS library
* specific subtypes override.
*
* Most common client applications will not directly interact with TlsDatabase.
* It is used internally by TlsConnection.
* @newin{2,36}
*/
class GIOMM_API TlsDatabase : public Glib::Object
{
_CLASS_GOBJECT(TlsDatabase, GTlsDatabase, G_TLS_DATABASE, Glib::Object, GObject, , , GIOMM_API)
protected:
_CTOR_DEFAULT
public:
//TODO?: Have a constant for the C macro G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER (which is a string)?
//TODO?: Have a constant for the C macro G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT (which is a string)?
_WRAP_ENUM(VerifyFlags, GTlsDatabaseVerifyFlags, decl_prefix GIOMM_API)
_WRAP_ENUM(LookupFlags, GTlsDatabaseLookupFlags, decl_prefix GIOMM_API)
_WRAP_METHOD(TlsCertificateFlags verify_chain(const Glib::RefPtr& chain, const Glib::ustring& purpose, const Glib::RefPtr& identity{?}, const Glib::RefPtr& interaction{?}, const Glib::RefPtr& cancellable{.?}, VerifyFlags flags{.} = VerifyFlags::NONE) const, g_tls_database_verify_chain, errthrow)
_WRAP_METHOD(void verify_chain_async(const Glib::RefPtr& chain, const Glib::ustring& purpose, const Glib::RefPtr& identity{?}, const Glib::RefPtr& interaction{?}, const SlotAsyncReady& slot{callback}, const Glib::RefPtr& cancellable{.?}, VerifyFlags flags{.} = VerifyFlags::NONE) const, g_tls_database_verify_chain_async, slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_METHOD(TlsCertificateFlags verify_chain_finish(const Glib::RefPtr& result), g_tls_database_verify_chain_finish, errthrow)
_WRAP_METHOD(Glib::RefPtr lookup_certificate_issuer(const Glib::RefPtr& certificate, const Glib::RefPtr& interaction{?}, const Glib::RefPtr& cancellable{.?}, LookupFlags flags{.} = LookupFlags::NONE), g_tls_database_lookup_certificate_issuer, errthrow)
_WRAP_METHOD(Glib::RefPtr lookup_certificate_issuer(const Glib::RefPtr& certificate, const Glib::RefPtr& interaction{?}, const Glib::RefPtr& cancellable{.?}, LookupFlags flags{.} = LookupFlags::NONE) const, g_tls_database_lookup_certificate_issuer, errthrow, constversion)
_WRAP_METHOD(void lookup_certificate_issuer_async(const Glib::RefPtr& certificate, const Glib::RefPtr& interaction{?}, const SlotAsyncReady& slot{callback}, const Glib::RefPtr& cancellable{.?}, LookupFlags flags{.} = LookupFlags::NONE), g_tls_database_lookup_certificate_issuer_async, slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_METHOD(Glib::RefPtr lookup_certificate_issuer_finish(const Glib::RefPtr& result), g_tls_database_lookup_certificate_issuer_finish, errthrow)
#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr >',`Glib::ListHandler< Glib::RefPtr >::list_to_vector($3, Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(std::vector< Glib::RefPtr > lookup_certificates_issued_by(const Glib::RefPtr& issuer_raw_dn, const Glib::RefPtr& interaction{?}, const Glib::RefPtr& cancellable{.?}, LookupFlags flags{.} = LookupFlags::NONE), g_tls_database_lookup_certificates_issued_by, errthrow)
#m4 _CONVERSION(`GList*',`std::vector< Glib::RefPtr >',`Glib::ListHandler< Glib::RefPtr >::list_to_vector($3, Glib::OWNERSHIP_DEEP)')
_WRAP_METHOD(std::vector< Glib::RefPtr > lookup_certificates_issued_by(const Glib::RefPtr& issuer_raw_dn, const Glib::RefPtr& interaction{?}, const Glib::RefPtr& cancellable{.?}, LookupFlags flags{.} = LookupFlags::NONE) const, g_tls_database_lookup_certificates_issued_by, errthrow)
_WRAP_METHOD(void lookup_certificates_issued_by_async(const Glib::RefPtr& issuer_raw_dn, const Glib::RefPtr& interaction{?}, const SlotAsyncReady& slot{callback}, const Glib::RefPtr& cancellable{.?}, LookupFlags flags{.} = LookupFlags::NONE), g_tls_database_lookup_certificates_issued_by_async, slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_METHOD(std::vector< Glib::RefPtr > lookup_certificates_issued_by_finish(const Glib::RefPtr& result), g_tls_database_lookup_certificates_issued_by_finish, errthrow)
_WRAP_METHOD(Glib::ustring create_certificate_handle(const Glib::RefPtr& certificate) const, g_tls_database_create_certificate_handle)
_WRAP_METHOD(Glib::RefPtr lookup_certificate_for_handle(const Glib::ustring& handle, const Glib::RefPtr& interaction{?}, const Glib::RefPtr& cancellable{.?}, LookupFlags flags{.} = LookupFlags::NONE), g_tls_database_lookup_certificate_for_handle, errthrow)
_WRAP_METHOD(Glib::RefPtr lookup_certificate_for_handle(const Glib::ustring& handle, const Glib::RefPtr& interaction{?}, const Glib::RefPtr& cancellable{.?}, LookupFlags flags{.} = LookupFlags::NONE) const, g_tls_database_lookup_certificate_for_handle, errthrow, constversion)
_WRAP_METHOD(void lookup_certificate_for_handle_async(const Glib::ustring& handle, const Glib::RefPtr& interaction{?}, const SlotAsyncReady& slot{callback}, const Glib::RefPtr& cancellable{.?}, LookupFlags flags{.} = LookupFlags::NONE), g_tls_database_lookup_certificate_for_handle_async, slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_METHOD(Glib::RefPtr lookup_certificate_for_handle_finish(const Glib::RefPtr& result), g_tls_database_lookup_certificate_for_handle_finish, errthrow)
protected:
#m4 _CONVERSION(`GTlsCertificate*',`const Glib::RefPtr&',`Glib::wrap($3, true)')
#m4 _CONVERSION(`GSocketConnectable*',`const Glib::RefPtr&',`Glib::wrap($3, true)')
#m4 _CONVERSION(`GTlsInteraction*',`const Glib::RefPtr&',`Glib::wrap($3, true)')
_WRAP_VFUNC(TlsCertificateFlags verify_chain(const Glib::RefPtr& chain, const Glib::ustring& purpose, const Glib::RefPtr& identity, const Glib::RefPtr& interaction, const Glib::RefPtr& cancellable{.}, VerifyFlags flags{.}) const, "verify_chain", errthrow)
_WRAP_VFUNC(void verify_chain_async(const Glib::RefPtr& chain, const Glib::ustring& purpose, const Glib::RefPtr& identity, const Glib::RefPtr& interaction, const SlotAsyncReady& slot{callback}, const Glib::RefPtr& cancellable{.}, VerifyFlags flags{.}) const, "verify_chain_async", slot_name slot, slot_callback SignalProxy_async_callback)
#m4 _CONVERSION(`GAsyncResult*',`const Glib::RefPtr&',`Glib::wrap($3, true)')
_WRAP_VFUNC(TlsCertificateFlags verify_chain_finish(const Glib::RefPtr& result), "verify_chain_finish", errthrow)
dnl// create_certificate_handle_vfunc() shall return a newly allocated string.
dnl// Also, ensure that create_certificate_handle_vfunc() never returns an empty char[],
dnl// because that could be caused by an intermediate empty ustring from an initial null char*.
#m4 _CONVERSION(`GTlsCertificate*',`const Glib::RefPtr&',`Glib::wrap($3, true)')
#m4 _CONVERSION(`Glib::ustring',`gchar*',`g_strdup(Glib::c_str_or_nullptr($3))')
#m4 _CONVERSION(`gchar*',`Glib::ustring',`Glib::convert_return_gchar_ptr_to_ustring($3)')
_WRAP_VFUNC(Glib::ustring create_certificate_handle(const Glib::RefPtr& certificate) const, "create_certificate_handle")
_WRAP_VFUNC(Glib::RefPtr lookup_certificate_for_handle(
const Glib::ustring& handle, const Glib::RefPtr& interaction,
const Glib::RefPtr& cancellable{.}, LookupFlags flags{.}),
"lookup_certificate_for_handle", errthrow, refreturn_ctype)
_WRAP_VFUNC(void lookup_certificate_for_handle_async(
const Glib::ustring& handle, const Glib::RefPtr& interaction,
const SlotAsyncReady& slot{callback}, const Glib::RefPtr& cancellable{.}, LookupFlags flags{.}),
"lookup_certificate_for_handle_async", slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_VFUNC(Glib::RefPtr lookup_certificate_for_handle_finish(
const Glib::RefPtr& result), "lookup_certificate_for_handle_finish", errthrow, refreturn_ctype)
_WRAP_VFUNC(Glib::RefPtr lookup_certificate_issuer(
const Glib::RefPtr& certificate, const Glib::RefPtr& interaction,
const Glib::RefPtr& cancellable{.}, LookupFlags flags{.}),
"lookup_certificate_issuer", errthrow, refreturn_ctype)
_WRAP_VFUNC(void lookup_certificate_issuer_async(
const Glib::RefPtr& certificate, const Glib::RefPtr& interaction,
const SlotAsyncReady& slot{callback}, const Glib::RefPtr& cancellable{.}, LookupFlags flags{.}),
"lookup_certificate_issuer_async", slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_VFUNC(Glib::RefPtr lookup_certificate_issuer_finish(
const Glib::RefPtr& result), "lookup_certificate_issuer_finish", errthrow, refreturn_ctype)
#m4 _CONVERSION(`std::vector< Glib::RefPtr >',`GList*',
#m4 `g_list_copy_deep(Glib::ListHandler< Glib::RefPtr >::vector_to_list($3).data(), list_copy_ref, nullptr)')
#m4 _CONVERSION(`GByteArray*',`const Glib::RefPtr&',`Glib::wrap($3, true)')
_WRAP_VFUNC(std::vector< Glib::RefPtr > lookup_certificates_issued_by(
const Glib::RefPtr& issuer_raw_dn, const Glib::RefPtr& interaction,
const Glib::RefPtr& cancellable{.}, LookupFlags flags{.}), "lookup_certificates_issued_by", errthrow)
_WRAP_VFUNC(void lookup_certificates_issued_by_async(
const Glib::RefPtr& issuer_raw_dn, const Glib::RefPtr& interaction,
const SlotAsyncReady& slot{callback}, const Glib::RefPtr& cancellable{.}, LookupFlags flags{.}),
"lookup_certificates_issued_by_async", slot_name slot, slot_callback SignalProxy_async_callback)
_WRAP_VFUNC(std::vector< Glib::RefPtr > lookup_certificates_issued_by_finish(
const Glib::RefPtr& result), "lookup_certificates_issued_by_finish", errthrow)
};
} // namespace Gio