/* 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