-
Committer:
Teddy Hogeborn
-
Date:
2021-03-21 20:46:40 UTC
-
Revision ID:
teddy@recompile.se-20210321204640-lpsyen8jr9lw1jma
Some cleanup of GnuTLS interface
Rename opaque internal GnuTLS structures named *_int to also start
with underscore (_), as is the custom in Python programs.
Decode byte strings from UTF-8 where needed. (Fixing, among other
things, all "DEBUG: GnuTLS" lines having a "b'" prefix in Python 3.)
Simplify calling C functions by:
1. Using the "_as_parameter_" attribute to store the ctypes object.
2. Creating and using helper classes to automatically create pointers
or cast typed pointers to pointers to void.
3. Providing the "from_param()" method on relevant classes.
Remove "restype" attribute on C functions where "errcheck" attribute
is already set.
* mandos (gnutls.session_int): Rename to start with "_".
(gnutls.openpgp_crt_int): - '' -
(gnutls.Error.__init__): Decode byte string from gnutls.strerror().
(gnutls.PointerTo): New helper class.
(gnutls.CastToVoidPointer): - '' -
(gnutls.With_from_param): - '' -
(gnutls.Credentials): Inherit from "With_from_param" and store the
ctypes object in the "_as_parameter_" attribute instead of
"_c_object".
(gnutls._error_code): Use "gnutls.E_SUCCESS" instead of the unadorned
numerical constant "0".
(gnutls._retry_on_error): - '' -
(gnutls.priority_set_direct.argtypes): Use "ClientSession" instead
of "session_t", and change all callers to match.
(gnutls.init.argtypes): Use "PointerTo(ClientSession)" instead of
"ctypes.POINTER(session_t)", and change all callers to match.
(gnutls.set_default_priority.argtypes): Use "ClientSession" instead
of "session_t", and change all callers to match.
(gnutls.record_send.argtypes): - '' -
(gnutls.certificate_allocate_credentials.argtypes): Use
"PointerTo(Credentials)" instead of
"ctypes.POINTER(certificate_credentials_t)", and change all callers
to match.
(gnutls.certificate_free_credentials.argtypes): Use "Credentials"
instead of "certificate_credentials_t", and change all callers to
match.
(gnutls.handshake_set_private_extensions.argtypes): Use
"ClientSession" instead of "session_t", and change all callers to
match.
(gnutls.credentials_set.argtypes): Use
"CastToVoidPointer(Credentials)" instead of "ctypes.c_void_p", and
change all callers to match.
(gnutls.certificate_type_get.argtypes): Use "ClientSession" instead
of "session_t", and change all callers to match.
(gnutls.certificate_get_peers.argtypes): - '' -
(gnutls.deinit.argtypes): - '' -
(gnutls.handshake.argtypes): - '' -
(gnutls.handshake.restype): Change from "_error_code" to
"ctypes.c_int".
(gnutls.transport_set_ptr.argtypes): Use "ClientSession" instead of
"session_t", and change all callers to match.
(gnutls.bye.argtypes): - '' -
(gnutls.bye.restype): Change from "_error_code" to "ctypes.c_int".
(gnutls.certificate_type_get2.argtypes): Use "ClientSession" instead
of "session_t", and change all callers to match.
(ClientHandler.handle): Decode "key_id" bytes to string before
logging it in the debug log.
(main.debug_gnutls): Decode GnuTLS log message from bytes to string
before logging it in the debug log.