even after a binNMU python-gnutls still depends on libgnutls-deb0-28
as it does not make use of the shlibs system. Please upgrade to use
GnuTLS 3.4
It's easy enough to change the gnutls version to 30 and update the
package dependencies.
Unfortunately after doing so the code doesn't work. I get loads of
errors trying to import functions that no longer exist, I tried to
remove/fix these imports but I still couldn't get the examples in the
package to work.
ccing the maintainers of mandos which seems to be the only reverse
dependency of this package.
Debdiff of what I've done is attatched.
diff -u python-gnutls-2.0.1/debian/changelog
python-gnutls-2.0.1/debian/changelog
--- python-gnutls-2.0.1/debian/changelog
+++ python-gnutls-2.0.1/debian/changelog
@@ -1,3 +1,22 @@
+python-gnutls (2.0.1-2+rpi1) stretch-staging; urgency=medium
+
+ * Update library version to 30
+ * Comment out wrappers for functions removed in gnutls.
+ * Use gnutls_pem_base64_decode2 for gnutls_pem_base64_decode_alloc
+ (the C header has a #define)
+ * Use gnutls_pem_base64_encode2 for gnutls_pem_base64_encode_alloc
+ (the C header has a #define)
+ * Use gnutls_srp_base64_decode2 for gnutls_srp_base64_decode_alloc
+ (the C header has a #define)
+ * Use gnutls_srp_base64_encode2 for gnutls_srp_base64_encode_alloc
+ (the C header has a #define)
+ * Use gnutls_certificate_set_retrieve_function for
+ gnutls_certificate_server_set_retrieve_function and
+ gnutls_certificate_client_set_retrieve_function as suggested at
+
http://www.gnutls.org/manual/html_node/Upgrading-from-previous-versions.html
+
+ -- Peter Michael Green <plugw...@raspbian.org> Thu, 04 Feb 2016 11:14:56
+0000
+
python-gnutls (2.0.1-2) unstable; urgency=medium
* Team upload.
diff -u python-gnutls-2.0.1/debian/control python-gnutls-2.0.1/debian/control
--- python-gnutls-2.0.1/debian/control
+++ python-gnutls-2.0.1/debian/control
@@ -11,7 +11,7 @@
Package: python-gnutls
Architecture: any
-Depends: ${python:Depends}, ${misc:Depends}, ${shlibs:Depends},
libgnutls-deb0-28
+Depends: ${python:Depends}, ${misc:Depends}, ${shlibs:Depends}, libgnutls30
Recommends: python-twisted-core
Provides: ${python:Provides}
Description: Python wrapper for the GNUTLS library
diff -u python-gnutls-2.0.1/gnutls/library/functions.py
python-gnutls-2.0.1/gnutls/library/functions.py
--- python-gnutls-2.0.1/gnutls/library/functions.py
+++ python-gnutls-2.0.1/gnutls/library/functions.py
@@ -84,7 +84,7 @@
gnutls_certificate_client_get_request_status.argtypes = [gnutls_session_t]
gnutls_certificate_client_get_request_status.restype = c_int
-gnutls_certificate_client_set_retrieve_function =
libgnutls.gnutls_certificate_client_set_retrieve_function
+gnutls_certificate_client_set_retrieve_function =
libgnutls.gnutls_certificate_set_retrieve_function
gnutls_certificate_client_set_retrieve_function.argtypes =
[gnutls_certificate_credentials_t, gnutls_certificate_client_retrieve_function]
gnutls_certificate_client_set_retrieve_function.restype = None
@@ -129,7 +129,7 @@
gnutls_certificate_server_set_request.argtypes = [gnutls_session_t,
gnutls_certificate_request_t]
gnutls_certificate_server_set_request.restype = None
-gnutls_certificate_server_set_retrieve_function =
libgnutls.gnutls_certificate_server_set_retrieve_function
+gnutls_certificate_server_set_retrieve_function =
libgnutls.gnutls_certificate_set_retrieve_function
gnutls_certificate_server_set_retrieve_function.argtypes =
[gnutls_certificate_credentials_t, gnutls_certificate_server_retrieve_function]
gnutls_certificate_server_set_retrieve_function.restype = None
@@ -141,9 +141,9 @@
gnutls_certificate_set_params_function.argtypes =
[gnutls_certificate_credentials_t, gnutls_params_function]
gnutls_certificate_set_params_function.restype = None
-gnutls_certificate_set_rsa_export_params =
libgnutls.gnutls_certificate_set_rsa_export_params
-gnutls_certificate_set_rsa_export_params.argtypes =
[gnutls_certificate_credentials_t, gnutls_rsa_params_t]
-gnutls_certificate_set_rsa_export_params.restype = None
+#gnutls_certificate_set_rsa_export_params =
libgnutls.gnutls_certificate_set_rsa_export_params
+#gnutls_certificate_set_rsa_export_params.argtypes =
[gnutls_certificate_credentials_t, gnutls_rsa_params_t]
+#gnutls_certificate_set_rsa_export_params.restype = None
gnutls_certificate_set_verify_flags =
libgnutls.gnutls_certificate_set_verify_flags
gnutls_certificate_set_verify_flags.argtypes =
[gnutls_certificate_credentials_t, c_uint]
@@ -209,9 +209,9 @@
gnutls_certificate_type_list.argtypes = []
gnutls_certificate_type_list.restype = POINTER(gnutls_certificate_type_t)
-gnutls_certificate_type_set_priority =
libgnutls.gnutls_certificate_type_set_priority
-gnutls_certificate_type_set_priority.argtypes = [gnutls_session_t,
POINTER(c_int)]
-gnutls_certificate_type_set_priority.restype = c_int
+#gnutls_certificate_type_set_priority =
libgnutls.gnutls_certificate_type_set_priority
+#gnutls_certificate_type_set_priority.argtypes = [gnutls_session_t,
POINTER(c_int)]
+#gnutls_certificate_type_set_priority.restype = c_int
gnutls_certificate_verify_peers2 = libgnutls.gnutls_certificate_verify_peers2
gnutls_certificate_verify_peers2.argtypes = [gnutls_session_t, POINTER(c_uint)]
@@ -245,9 +245,9 @@
gnutls_cipher_list.argtypes = []
gnutls_cipher_list.restype = POINTER(gnutls_cipher_algorithm_t)
-gnutls_cipher_set_priority = libgnutls.gnutls_cipher_set_priority
-gnutls_cipher_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
-gnutls_cipher_set_priority.restype = c_int
+#gnutls_cipher_set_priority = libgnutls.gnutls_cipher_set_priority
+#gnutls_cipher_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
+#gnutls_cipher_set_priority.restype = c_int
gnutls_cipher_suite_get_name = libgnutls.gnutls_cipher_suite_get_name
gnutls_cipher_suite_get_name.argtypes = [gnutls_kx_algorithm_t,
gnutls_cipher_algorithm_t, gnutls_mac_algorithm_t]
@@ -273,9 +273,9 @@
gnutls_compression_list.argtypes = []
gnutls_compression_list.restype = POINTER(gnutls_compression_method_t)
-gnutls_compression_set_priority = libgnutls.gnutls_compression_set_priority
-gnutls_compression_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
-gnutls_compression_set_priority.restype = c_int
+#gnutls_compression_set_priority = libgnutls.gnutls_compression_set_priority
+#gnutls_compression_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
+#gnutls_compression_set_priority.restype = c_int
gnutls_credentials_clear = libgnutls.gnutls_credentials_clear
gnutls_credentials_clear.argtypes = [gnutls_session_t]
@@ -465,9 +465,9 @@
gnutls_kx_list.argtypes = []
gnutls_kx_list.restype = POINTER(gnutls_kx_algorithm_t)
-gnutls_kx_set_priority = libgnutls.gnutls_kx_set_priority
-gnutls_kx_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
-gnutls_kx_set_priority.restype = c_int
+#gnutls_kx_set_priority = libgnutls.gnutls_kx_set_priority
+#gnutls_kx_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
+#gnutls_kx_set_priority.restype = c_int
gnutls_mac_get = libgnutls.gnutls_mac_get
gnutls_mac_get.argtypes = [gnutls_session_t]
@@ -489,15 +489,15 @@
gnutls_mac_list.argtypes = []
gnutls_mac_list.restype = POINTER(gnutls_mac_algorithm_t)
-gnutls_mac_set_priority = libgnutls.gnutls_mac_set_priority
-gnutls_mac_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
-gnutls_mac_set_priority.restype = c_int
+#gnutls_mac_set_priority = libgnutls.gnutls_mac_set_priority
+#gnutls_mac_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
+#gnutls_mac_set_priority.restype = c_int
gnutls_pem_base64_decode = libgnutls.gnutls_pem_base64_decode
gnutls_pem_base64_decode.argtypes = [c_char_p, POINTER(gnutls_datum_t),
POINTER(c_ubyte), POINTER(size_t)]
gnutls_pem_base64_decode.restype = c_int
-gnutls_pem_base64_decode_alloc = libgnutls.gnutls_pem_base64_decode_alloc
+gnutls_pem_base64_decode_alloc = libgnutls.gnutls_pem_base64_decode2
gnutls_pem_base64_decode_alloc.argtypes = [c_char_p, POINTER(gnutls_datum_t),
POINTER(gnutls_datum_t)]
gnutls_pem_base64_decode_alloc.restype = c_int
@@ -505,7 +505,7 @@
gnutls_pem_base64_encode.argtypes = [c_char_p, POINTER(gnutls_datum_t),
c_char_p, POINTER(size_t)]
gnutls_pem_base64_encode.restype = c_int
-gnutls_pem_base64_encode_alloc = libgnutls.gnutls_pem_base64_encode_alloc
+gnutls_pem_base64_encode_alloc = libgnutls.gnutls_pem_base64_encode2
gnutls_pem_base64_encode_alloc.argtypes = [c_char_p, POINTER(gnutls_datum_t),
POINTER(gnutls_datum_t)]
gnutls_pem_base64_encode_alloc.restype = c_int
@@ -613,9 +613,9 @@
gnutls_protocol_list.argtypes = []
gnutls_protocol_list.restype = POINTER(gnutls_protocol_t)
-gnutls_protocol_set_priority = libgnutls.gnutls_protocol_set_priority
-gnutls_protocol_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
-gnutls_protocol_set_priority.restype = c_int
+#gnutls_protocol_set_priority = libgnutls.gnutls_protocol_set_priority
+#gnutls_protocol_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
+#gnutls_protocol_set_priority.restype = c_int
gnutls_psk_allocate_client_credentials =
libgnutls.gnutls_psk_allocate_client_credentials
gnutls_psk_allocate_client_credentials.argtypes =
[POINTER(gnutls_psk_client_credentials_t)]
@@ -705,45 +705,45 @@
gnutls_rehandshake.argtypes = [gnutls_session_t]
gnutls_rehandshake.restype = c_int
-gnutls_rsa_export_get_modulus_bits =
libgnutls.gnutls_rsa_export_get_modulus_bits
-gnutls_rsa_export_get_modulus_bits.argtypes = [gnutls_session_t]
-gnutls_rsa_export_get_modulus_bits.restype = c_int
-
-gnutls_rsa_export_get_pubkey = libgnutls.gnutls_rsa_export_get_pubkey
-gnutls_rsa_export_get_pubkey.argtypes = [gnutls_session_t,
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t)]
-gnutls_rsa_export_get_pubkey.restype = c_int
-
-gnutls_rsa_params_cpy = libgnutls.gnutls_rsa_params_cpy
-gnutls_rsa_params_cpy.argtypes = [gnutls_rsa_params_t, gnutls_rsa_params_t]
-gnutls_rsa_params_cpy.restype = c_int
-
-gnutls_rsa_params_deinit = libgnutls.gnutls_rsa_params_deinit
-gnutls_rsa_params_deinit.argtypes = [gnutls_rsa_params_t]
-gnutls_rsa_params_deinit.restype = None
-
-gnutls_rsa_params_export_pkcs1 = libgnutls.gnutls_rsa_params_export_pkcs1
-gnutls_rsa_params_export_pkcs1.argtypes = [gnutls_rsa_params_t,
gnutls_x509_crt_fmt_t, POINTER(c_ubyte), POINTER(size_t)]
-gnutls_rsa_params_export_pkcs1.restype = c_int
-
-gnutls_rsa_params_export_raw = libgnutls.gnutls_rsa_params_export_raw
-gnutls_rsa_params_export_raw.argtypes = [gnutls_rsa_params_t,
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t),
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t),
POINTER(c_uint)]
-gnutls_rsa_params_export_raw.restype = c_int
-
-gnutls_rsa_params_generate2 = libgnutls.gnutls_rsa_params_generate2
-gnutls_rsa_params_generate2.argtypes = [gnutls_rsa_params_t, c_uint]
-gnutls_rsa_params_generate2.restype = c_int
-
-gnutls_rsa_params_import_pkcs1 = libgnutls.gnutls_rsa_params_import_pkcs1
-gnutls_rsa_params_import_pkcs1.argtypes = [gnutls_rsa_params_t,
POINTER(gnutls_datum_t), gnutls_x509_crt_fmt_t]
-gnutls_rsa_params_import_pkcs1.restype = c_int
-
-gnutls_rsa_params_import_raw = libgnutls.gnutls_rsa_params_import_raw
-gnutls_rsa_params_import_raw.argtypes = [gnutls_rsa_params_t,
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t),
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t)]
-gnutls_rsa_params_import_raw.restype = c_int
-
-gnutls_rsa_params_init = libgnutls.gnutls_rsa_params_init
-gnutls_rsa_params_init.argtypes = [POINTER(gnutls_rsa_params_t)]
-gnutls_rsa_params_init.restype = c_int
+#gnutls_rsa_export_get_modulus_bits =
libgnutls.gnutls_rsa_export_get_modulus_bits
+#gnutls_rsa_export_get_modulus_bits.argtypes = [gnutls_session_t]
+#gnutls_rsa_export_get_modulus_bits.restype = c_int
+
+#gnutls_rsa_export_get_pubkey = libgnutls.gnutls_rsa_export_get_pubkey
+#gnutls_rsa_export_get_pubkey.argtypes = [gnutls_session_t,
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t)]
+#gnutls_rsa_export_get_pubkey.restype = c_int
+
+#gnutls_rsa_params_cpy = libgnutls.gnutls_rsa_params_cpy
+#gnutls_rsa_params_cpy.argtypes = [gnutls_rsa_params_t, gnutls_rsa_params_t]
+#gnutls_rsa_params_cpy.restype = c_int
+
+#gnutls_rsa_params_deinit = libgnutls.gnutls_rsa_params_deinit
+#gnutls_rsa_params_deinit.argtypes = [gnutls_rsa_params_t]
+#gnutls_rsa_params_deinit.restype = None
+
+#gnutls_rsa_params_export_pkcs1 = libgnutls.gnutls_rsa_params_export_pkcs1
+#gnutls_rsa_params_export_pkcs1.argtypes = [gnutls_rsa_params_t,
gnutls_x509_crt_fmt_t, POINTER(c_ubyte), POINTER(size_t)]
+#gnutls_rsa_params_export_pkcs1.restype = c_int
+
+#gnutls_rsa_params_export_raw = libgnutls.gnutls_rsa_params_export_raw
+#gnutls_rsa_params_export_raw.argtypes = [gnutls_rsa_params_t,
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t),
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t),
POINTER(c_uint)]
+#gnutls_rsa_params_export_raw.restype = c_int
+
+#gnutls_rsa_params_generate2 = libgnutls.gnutls_rsa_params_generate2
+#gnutls_rsa_params_generate2.argtypes = [gnutls_rsa_params_t, c_uint]
+#gnutls_rsa_params_generate2.restype = c_int
+
+#gnutls_rsa_params_import_pkcs1 = libgnutls.gnutls_rsa_params_import_pkcs1
+#gnutls_rsa_params_import_pkcs1.argtypes = [gnutls_rsa_params_t,
POINTER(gnutls_datum_t), gnutls_x509_crt_fmt_t]
+#gnutls_rsa_params_import_pkcs1.restype = c_int
+
+#gnutls_rsa_params_import_raw = libgnutls.gnutls_rsa_params_import_raw
+#gnutls_rsa_params_import_raw.argtypes = [gnutls_rsa_params_t,
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t),
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t)]
+#gnutls_rsa_params_import_raw.restype = c_int
+
+#gnutls_rsa_params_init = libgnutls.gnutls_rsa_params_init
+#gnutls_rsa_params_init.argtypes = [POINTER(gnutls_rsa_params_t)]
+#gnutls_rsa_params_init.restype = c_int
gnutls_server_name_get = libgnutls.gnutls_server_name_get
gnutls_server_name_get.argtypes = [gnutls_session_t, c_void_p,
POINTER(size_t), POINTER(c_uint), c_uint]
@@ -785,9 +785,9 @@
gnutls_session_set_ptr.argtypes = [gnutls_session_t, c_void_p]
gnutls_session_set_ptr.restype = None
-gnutls_set_default_export_priority =
libgnutls.gnutls_set_default_export_priority
-gnutls_set_default_export_priority.argtypes = [gnutls_session_t]
-gnutls_set_default_export_priority.restype = c_int
+#gnutls_set_default_export_priority =
libgnutls.gnutls_set_default_export_priority
+#gnutls_set_default_export_priority.argtypes = [gnutls_session_t]
+#gnutls_set_default_export_priority.restype = c_int
gnutls_set_default_priority = libgnutls.gnutls_set_default_priority
gnutls_set_default_priority.argtypes = [gnutls_session_t]
@@ -797,13 +797,13 @@
gnutls_sign_get_name.argtypes = [gnutls_sign_algorithm_t]
gnutls_sign_get_name.restype = c_char_p
-gnutls_sign_callback_get = libgnutls.gnutls_sign_callback_get
-gnutls_sign_callback_get.argtypes = [gnutls_session_t, POINTER(c_void_p)]
-gnutls_sign_callback_get.restype = gnutls_sign_func
-
-gnutls_sign_callback_set = libgnutls.gnutls_sign_callback_set
-gnutls_sign_callback_set.argtypes = [gnutls_session_t, gnutls_sign_func,
c_void_p]
-gnutls_sign_callback_set.restype = None
+#gnutls_sign_callback_get = libgnutls.gnutls_sign_callback_get
+#gnutls_sign_callback_get.argtypes = [gnutls_session_t, POINTER(c_void_p)]
+#gnutls_sign_callback_get.restype = gnutls_sign_func
+
+#gnutls_sign_callback_set = libgnutls.gnutls_sign_callback_set
+#gnutls_sign_callback_set.argtypes = [gnutls_session_t, gnutls_sign_func,
c_void_p]
+#gnutls_sign_callback_set.restype = None
gnutls_strerror = libgnutls.gnutls_strerror
gnutls_strerror.argtypes = [c_int]
@@ -1285,9 +1285,9 @@
gnutls_x509_crt_verify.argtypes = [gnutls_x509_crt_t,
POINTER(gnutls_x509_crt_t), c_int, c_uint, POINTER(c_uint)]
gnutls_x509_crt_verify.restype = c_int
-gnutls_x509_crt_verify_data = libgnutls.gnutls_x509_crt_verify_data
-gnutls_x509_crt_verify_data.argtypes = [gnutls_x509_crt_t, c_uint,
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t)]
-gnutls_x509_crt_verify_data.restype = c_int
+#gnutls_x509_crt_verify_data = libgnutls.gnutls_x509_crt_verify_data
+#gnutls_x509_crt_verify_data.argtypes = [gnutls_x509_crt_t, c_uint,
POINTER(gnutls_datum_t), POINTER(gnutls_datum_t)]
+#gnutls_x509_crt_verify_data.restype = c_int
gnutls_x509_dn_deinit = libgnutls.gnutls_x509_dn_deinit
gnutls_x509_dn_deinit.argtypes = [gnutls_x509_dn_t]
@@ -1707,7 +1707,7 @@
gnutls_srp_base64_decode.argtypes = [POINTER(gnutls_datum_t), c_char_p,
POINTER(size_t)]
gnutls_srp_base64_decode.restype = c_int
- gnutls_srp_base64_decode_alloc = libgnutls.gnutls_srp_base64_decode_alloc
+ gnutls_srp_base64_decode_alloc = libgnutls.gnutls_srp_base64_decode2
gnutls_srp_base64_decode_alloc.argtypes = [POINTER(gnutls_datum_t),
POINTER(gnutls_datum_t)]
gnutls_srp_base64_decode_alloc.restype = c_int
@@ -1715,7 +1715,7 @@
gnutls_srp_base64_encode.argtypes = [POINTER(gnutls_datum_t), c_char_p,
POINTER(size_t)]
gnutls_srp_base64_encode.restype = c_int
- gnutls_srp_base64_encode_alloc = libgnutls.gnutls_srp_base64_encode_alloc
+ gnutls_srp_base64_encode_alloc = libgnutls.gnutls_srp_base64_encode2
gnutls_srp_base64_encode_alloc.argtypes = [POINTER(gnutls_datum_t),
POINTER(gnutls_datum_t)]
gnutls_srp_base64_encode_alloc.restype = c_int
only in patch2:
unchanged:
--- python-gnutls-2.0.1.orig/gnutls/library/__init__.py
+++ python-gnutls-2.0.1/gnutls/library/__init__.py
@@ -56,7 +56,7 @@
raise RuntimeError('cannot find libgnutls on this system')
-libgnutls = load_library(version=28)
+libgnutls = load_library(version=30)
libgnutls.gnutls_global_init()