1
2import sys
3from ctypes import *
4
5# Type aliases
6#
7
8time_t = c_long
9size_t = c_size_t
10ssize_t = c_long
11
12gnutls_openpgp_keyid_t = c_ubyte * 8
13gnutls_transport_ptr_t = c_void_p
14gnutls_x509_dn_t = c_void_p
15
16
17# Enumerations
18#
19
20gnutls_alert_description_t = c_int # enum
21gnutls_alert_level_t = c_int # enum
22gnutls_certificate_import_flags = c_int # enum
23gnutls_certificate_print_formats = c_int # enum
24gnutls_certificate_request_t = c_int # enum
25gnutls_certificate_status_t = c_int # enum
26gnutls_certificate_type_t = c_int # enum
27gnutls_certificate_verify_flags = c_int # enum
28gnutls_cipher_algorithm_t = c_int # enum
29gnutls_close_request_t = c_int # enum
30gnutls_compression_method_t = c_int # enum
31gnutls_connection_end_t = c_int # enum
32gnutls_credentials_type_t = c_int # enum
33gnutls_digest_algorithm_t = c_int # enum
34gnutls_handshake_description_t = c_int # enum
35gnutls_ia_apptype_t = c_int # enum
36gnutls_kx_algorithm_t = c_int # enum
37gnutls_mac_algorithm_t = c_int # enum
38gnutls_openpgp_crt_fmt = c_int # enum
39gnutls_openpgp_crt_status_t = c_int # enum
40gnutls_params_type_t = c_int # enum
41gnutls_pk_algorithm_t = c_int # enum
42gnutls_pkcs_encrypt_flags_t = c_int # enum
43gnutls_privkey_type_t = c_int # enum
44gnutls_protocol_t = c_int # enum
45gnutls_psk_key_flags = c_int # enum
46gnutls_server_name_type_t = c_int # enum
47gnutls_sign_algorithm_t = c_int # enum
48gnutls_supplemental_data_format_type_t = c_int # enum
49gnutls_x509_crt_fmt_t = c_int # enum
50gnutls_x509_subject_alt_name_t = c_int # enum
51
52gnutls_certificate_print_formats_t = gnutls_certificate_print_formats
53gnutls_openpgp_crt_fmt_t = gnutls_openpgp_crt_fmt
54
55
56# Unions, structures and pointers to structure types
57#
58
59class gnutls_session_int(Structure):
60    _fields_ = []
61gnutls_session_t = POINTER(gnutls_session_int)
62
63class gnutls_ia_server_credentials_st(Structure):
64    _fields_ = []
65gnutls_ia_server_credentials_t = POINTER(gnutls_ia_server_credentials_st)
66
67class gnutls_ia_client_credentials_st(Structure):
68    _fields_ = []
69gnutls_ia_client_credentials_t = POINTER(gnutls_ia_client_credentials_st)
70
71class gnutls_dh_params_int(Structure):
72    _fields_ = []
73gnutls_dh_params_t = POINTER(gnutls_dh_params_int)
74
75class gnutls_x509_privkey_int(Structure):
76    _fields_ = []
77gnutls_x509_privkey_t = POINTER(gnutls_x509_privkey_int)
78gnutls_rsa_params_t = POINTER(gnutls_x509_privkey_int)
79
80class params(Union):
81    _fields_ = [('dh', gnutls_dh_params_t),
82                ('rsa_export', gnutls_rsa_params_t)]
83
84class gnutls_pkcs11_privkey_st(Structure):
85    _fields_ = []
86gnutls_pkcs11_privkey_t = POINTER(gnutls_pkcs11_privkey_st)
87
88class gnutls_priority_st(Structure):
89    _fields_ = []
90gnutls_priority_t = POINTER(gnutls_priority_st)
91
92class gnutls_datum_t(Structure):
93    _fields_ = [('data', POINTER(c_ubyte)),
94                ('size', c_uint)]
95
96class gnutls_params_st(Structure):
97    _fields_ = [('type', gnutls_params_type_t),
98                ('params', params),
99                ('deinit', c_int)]
100
101class gnutls_certificate_credentials_st(Structure):
102    _fields_ = []
103gnutls_certificate_credentials_t = POINTER(gnutls_certificate_credentials_st)
104gnutls_certificate_server_credentials = gnutls_certificate_credentials_t
105gnutls_certificate_client_credentials = gnutls_certificate_credentials_t
106
107class gnutls_anon_server_credentials_st(Structure):
108    _fields_ = []
109gnutls_anon_server_credentials_t = POINTER(gnutls_anon_server_credentials_st)
110
111class gnutls_anon_client_credentials_st(Structure):
112    _fields_ = []
113gnutls_anon_client_credentials_t = POINTER(gnutls_anon_client_credentials_st)
114
115class gnutls_x509_crl_int(Structure):
116    _fields_ = []
117gnutls_x509_crl_t = POINTER(gnutls_x509_crl_int)
118
119class gnutls_x509_crt_int(Structure):
120    _fields_ = []
121gnutls_x509_crt_t = POINTER(gnutls_x509_crt_int)
122
123class gnutls_openpgp_keyring_int(Structure):
124    _fields_ = []
125gnutls_openpgp_keyring_t = POINTER(gnutls_openpgp_keyring_int)
126
127class gnutls_srp_server_credentials_st(Structure):
128    _fields_ = []
129gnutls_srp_server_credentials_t = POINTER(gnutls_srp_server_credentials_st)
130
131class gnutls_srp_client_credentials_st(Structure):
132    _fields_ = []
133gnutls_srp_client_credentials_t = POINTER(gnutls_srp_client_credentials_st)
134
135class gnutls_psk_server_credentials_st(Structure):
136    _fields_ = []
137gnutls_psk_server_credentials_t = POINTER(gnutls_psk_server_credentials_st)
138
139class gnutls_psk_client_credentials_st(Structure):
140    _fields_ = []
141gnutls_psk_client_credentials_t = POINTER(gnutls_psk_client_credentials_st)
142
143class gnutls_openpgp_crt_int(Structure):
144    _fields_ = []
145gnutls_openpgp_crt_t = POINTER(gnutls_openpgp_crt_int)
146
147class gnutls_openpgp_privkey_int(Structure):
148    _fields_ = []
149gnutls_openpgp_privkey_t = POINTER(gnutls_openpgp_privkey_int)
150
151class cert(Union):
152    _fields_ = [('x509', POINTER(gnutls_x509_crt_t)),
153                ('pgp', gnutls_openpgp_crt_t)]
154
155class key(Union):
156    _fields_ = [('x509', gnutls_x509_privkey_t),
157                ('pgp', gnutls_openpgp_privkey_t),
158                ('pkcs11', gnutls_pkcs11_privkey_t)]
159
160class gnutls_retr2_st(Structure):
161    _fields_ = [('cert_type', gnutls_certificate_type_t),
162                ('key_type', gnutls_privkey_type_t),
163                ('cert', cert),
164                ('ncerts', c_uint),
165                ('key', key),
166                ('deinit_all', c_uint)]
167
168class gnutls_x509_ava_st(Structure):
169    _fields_ = [('oid', gnutls_datum_t),
170                ('value', gnutls_datum_t),
171                ('value_tag', c_ulong)]
172
173class gnutls_pkcs7_int(Structure):
174    _fields_ = []
175gnutls_pkcs7_t = POINTER(gnutls_pkcs7_int)
176
177class gnutls_x509_crq_int(Structure):
178    _fields_ = []
179gnutls_x509_crq_t = POINTER(gnutls_x509_crq_int)
180
181
182# Function type declarations
183#
184
185gnutls_alloc_function = CFUNCTYPE(c_void_p, size_t)
186gnutls_calloc_function = CFUNCTYPE(c_void_p, size_t, size_t)
187gnutls_certificate_retrieve_function = CFUNCTYPE(c_int, gnutls_session_t, POINTER(gnutls_datum_t), c_int, POINTER(gnutls_pk_algorithm_t), c_int, POINTER(gnutls_retr2_st))
188gnutls_db_remove_func = CFUNCTYPE(c_int, c_void_p, gnutls_datum_t)
189gnutls_db_retr_func = CFUNCTYPE(gnutls_datum_t, c_void_p, gnutls_datum_t)
190gnutls_db_store_func = CFUNCTYPE(c_int, c_void_p, gnutls_datum_t, gnutls_datum_t)
191gnutls_free_function = CFUNCTYPE(None, c_void_p)
192gnutls_handshake_post_client_hello_func = CFUNCTYPE(c_int, gnutls_session_t)
193gnutls_ia_avp_func = CFUNCTYPE(c_int, gnutls_session_t, c_void_p, c_char_p, size_t, POINTER(c_char_p), POINTER(size_t))
194gnutls_is_secure_function = CFUNCTYPE(c_int, c_void_p)
195gnutls_log_func = CFUNCTYPE(None, c_int, c_char_p)
196gnutls_openpgp_recv_key_func = CFUNCTYPE(c_int, gnutls_session_t, POINTER(c_ubyte), c_uint, POINTER(gnutls_datum_t))
197gnutls_oprfi_callback_func = CFUNCTYPE(c_int, gnutls_session_t, c_void_p, size_t, POINTER(c_ubyte), POINTER(c_ubyte))
198gnutls_params_function = CFUNCTYPE(c_int, gnutls_session_t, gnutls_params_type_t, POINTER(gnutls_params_st))
199gnutls_psk_client_credentials_function = CFUNCTYPE(c_int, gnutls_session_t, POINTER(c_char_p), POINTER(gnutls_datum_t))
200gnutls_psk_server_credentials_function = CFUNCTYPE(c_int, gnutls_session_t, c_char_p, POINTER(gnutls_datum_t))
201gnutls_pull_func = CFUNCTYPE(ssize_t, gnutls_transport_ptr_t, c_void_p, size_t)
202gnutls_push_func = CFUNCTYPE(ssize_t, gnutls_transport_ptr_t, c_void_p, size_t)
203gnutls_realloc_function = CFUNCTYPE(c_void_p, c_void_p, size_t)
204gnutls_sign_func = CFUNCTYPE(c_int, gnutls_session_t, c_void_p, gnutls_certificate_type_t, POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t))
205gnutls_srp_client_credentials_function = CFUNCTYPE(c_int, gnutls_session_t, POINTER(c_char_p), POINTER(c_char_p))
206gnutls_srp_server_credentials_function = CFUNCTYPE(c_int, gnutls_session_t, c_char_p, POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t), POINTER(gnutls_datum_t))
207
208
209__all__ = sorted(name for name in sys.modules[__name__].__dict__ if name.startswith('gnutls_') or name in ('size_t', 'ssize_t', 'time_t', 'cert', 'key', 'params'))
210
211