1 module bindbc.gnutls.openpgp;
2 
3 import bindbc.gnutls.gnutls;
4 import core.stdc.limits;
5 import core.sys.posix.sys.select;
6 
7 enum gnutls_openpgp_crt_fmt
8 {
9     GNUTLS_OPENPGP_FMT_RAW = 0,
10     GNUTLS_OPENPGP_FMT_BASE64 = 1
11 }
12 
13 alias gnutls_openpgp_crt_fmt_t = gnutls_openpgp_crt_fmt;
14 
15 enum GNUTLS_OPENPGP_KEYID_SIZE = 8;
16 enum GNUTLS_OPENPGP_V4_FINGERPRINT_SIZE = 20;
17 alias gnutls_openpgp_keyid_t = ubyte[GNUTLS_OPENPGP_KEYID_SIZE];
18 enum GNUTLS_OPENPGP_MASTER_KEYID_IDX = INT_MAX;
19 
20 extern(C) nothrow @nogc
21 {
22     alias gnutls_openpgp_recv_key_func = int function (gnutls_session_t session, const(ubyte)* keyfpr, uint keyfpr_length, gnutls_datum_t* key);
23 }
24 
25 version (BindGnuTLS_Static)
26 {
27     extern (System) @nogc nothrow @system:
28 
29     int gnutls_openpgp_crt_init (gnutls_openpgp_crt_t* key);
30     void gnutls_openpgp_crt_deinit (gnutls_openpgp_crt_t key);
31     int gnutls_openpgp_crt_import (gnutls_openpgp_crt_t key, const(gnutls_datum_t)* data, gnutls_openpgp_crt_fmt_t format);
32     int gnutls_openpgp_crt_export (gnutls_openpgp_crt_t key, gnutls_openpgp_crt_fmt_t format, void* output_data, size_t* output_data_size);
33     int gnutls_openpgp_crt_export2 (gnutls_openpgp_crt_t key, gnutls_openpgp_crt_fmt_t format, gnutls_datum_t* out_);
34     int gnutls_openpgp_crt_print (gnutls_openpgp_crt_t cert, gnutls_certificate_print_formats_t format, gnutls_datum_t* out_);
35     int gnutls_openpgp_crt_get_key_usage (gnutls_openpgp_crt_t key, uint* key_usage);
36     int gnutls_openpgp_crt_get_fingerprint (gnutls_openpgp_crt_t key, void* fpr, size_t* fprlen);
37     int gnutls_openpgp_crt_get_subkey_fingerprint (gnutls_openpgp_crt_t key, uint idx, void* fpr, size_t* fprlen);
38     int gnutls_openpgp_crt_get_name (gnutls_openpgp_crt_t key, int idx, char* buf, size_t* sizeof_buf);
39     gnutls_pk_algorithm_t gnutls_openpgp_crt_get_pk_algorithm (gnutls_openpgp_crt_t key, uint* bits);
40     int gnutls_openpgp_crt_get_version (gnutls_openpgp_crt_t key);
41     time_t gnutls_openpgp_crt_get_creation_time (gnutls_openpgp_crt_t key);
42     time_t gnutls_openpgp_crt_get_expiration_time (gnutls_openpgp_crt_t key);
43     int gnutls_openpgp_crt_get_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid);
44     int gnutls_openpgp_crt_check_hostname (gnutls_openpgp_crt_t key, const(char)* hostname);
45     int gnutls_openpgp_crt_check_hostname2 (gnutls_openpgp_crt_t key, const(char)* hostname, uint flags);
46     int gnutls_openpgp_crt_check_email (gnutls_openpgp_crt_t key, const(char)* email, uint flags);
47     int gnutls_openpgp_crt_get_revoked_status (gnutls_openpgp_crt_t key);
48     int gnutls_openpgp_crt_get_subkey_count (gnutls_openpgp_crt_t key);
49     int gnutls_openpgp_crt_get_subkey_idx (gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid);
50     int gnutls_openpgp_crt_get_subkey_revoked_status (gnutls_openpgp_crt_t key, uint idx);
51     gnutls_pk_algorithm_t gnutls_openpgp_crt_get_subkey_pk_algorithm (gnutls_openpgp_crt_t key, uint idx, uint* bits);
52     time_t gnutls_openpgp_crt_get_subkey_creation_time (gnutls_openpgp_crt_t key, uint idx);
53     time_t gnutls_openpgp_crt_get_subkey_expiration_time (gnutls_openpgp_crt_t key, uint idx);
54     int gnutls_openpgp_crt_get_subkey_id (gnutls_openpgp_crt_t key, uint idx, gnutls_openpgp_keyid_t keyid);
55     int gnutls_openpgp_crt_get_subkey_usage (gnutls_openpgp_crt_t key, uint idx, uint* key_usage);
56     int gnutls_openpgp_crt_get_subkey_pk_dsa_raw (gnutls_openpgp_crt_t crt, uint idx, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* g, gnutls_datum_t* y);
57     int gnutls_openpgp_crt_get_subkey_pk_rsa_raw (gnutls_openpgp_crt_t crt, uint idx, gnutls_datum_t* m, gnutls_datum_t* e);
58     int gnutls_openpgp_crt_get_pk_dsa_raw (gnutls_openpgp_crt_t crt, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* g, gnutls_datum_t* y);
59     int gnutls_openpgp_crt_get_pk_rsa_raw (gnutls_openpgp_crt_t crt, gnutls_datum_t* m, gnutls_datum_t* e);
60     int gnutls_openpgp_crt_get_preferred_key_id (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid);
61     int gnutls_openpgp_crt_set_preferred_key_id (gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid);
62     int gnutls_openpgp_privkey_init (gnutls_openpgp_privkey_t* key);
63     void gnutls_openpgp_privkey_deinit (gnutls_openpgp_privkey_t key);
64     gnutls_pk_algorithm_t gnutls_openpgp_privkey_get_pk_algorithm (gnutls_openpgp_privkey_t key, uint* bits);
65     gnutls_sec_param_t gnutls_openpgp_privkey_sec_param (gnutls_openpgp_privkey_t key);
66     int gnutls_openpgp_privkey_import (gnutls_openpgp_privkey_t key, const(gnutls_datum_t)* data, gnutls_openpgp_crt_fmt_t format, const(char)* password, uint flags);
67     int gnutls_openpgp_privkey_get_fingerprint (gnutls_openpgp_privkey_t key, void* fpr, size_t* fprlen);
68     int gnutls_openpgp_privkey_get_subkey_fingerprint (gnutls_openpgp_privkey_t key, uint idx, void* fpr, size_t* fprlen);
69     int gnutls_openpgp_privkey_get_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid);
70     int gnutls_openpgp_privkey_get_subkey_count (gnutls_openpgp_privkey_t key);
71     int gnutls_openpgp_privkey_get_subkey_idx (gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid);
72     int gnutls_openpgp_privkey_get_subkey_revoked_status (gnutls_openpgp_privkey_t key, uint idx);
73     int gnutls_openpgp_privkey_get_revoked_status (gnutls_openpgp_privkey_t key);
74     gnutls_pk_algorithm_t gnutls_openpgp_privkey_get_subkey_pk_algorithm (gnutls_openpgp_privkey_t key, uint idx, uint* bits);
75     time_t gnutls_openpgp_privkey_get_subkey_expiration_time (gnutls_openpgp_privkey_t key, uint idx);
76     int gnutls_openpgp_privkey_get_subkey_id (gnutls_openpgp_privkey_t key, uint idx, gnutls_openpgp_keyid_t keyid);
77     time_t gnutls_openpgp_privkey_get_subkey_creation_time (gnutls_openpgp_privkey_t key, uint idx);
78     int gnutls_openpgp_privkey_export_subkey_dsa_raw (gnutls_openpgp_privkey_t pkey, uint idx, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* g, gnutls_datum_t* y, gnutls_datum_t* x);
79     int gnutls_openpgp_privkey_export_subkey_rsa_raw (gnutls_openpgp_privkey_t pkey, uint idx, gnutls_datum_t* m, gnutls_datum_t* e, gnutls_datum_t* d, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* u);
80     int gnutls_openpgp_privkey_export_dsa_raw (gnutls_openpgp_privkey_t pkey, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* g, gnutls_datum_t* y, gnutls_datum_t* x);
81     int gnutls_openpgp_privkey_export_rsa_raw (gnutls_openpgp_privkey_t pkey, gnutls_datum_t* m, gnutls_datum_t* e, gnutls_datum_t* d, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* u);
82     int gnutls_openpgp_privkey_export (gnutls_openpgp_privkey_t key, gnutls_openpgp_crt_fmt_t format, const(char)* password, uint flags, void* output_data, size_t* output_data_size);
83     int gnutls_openpgp_privkey_export2 (gnutls_openpgp_privkey_t key, gnutls_openpgp_crt_fmt_t format, const(char)* password, uint flags, gnutls_datum_t* out_);
84     int gnutls_openpgp_privkey_set_preferred_key_id (gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid);
85     int gnutls_openpgp_privkey_get_preferred_key_id (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid);
86     int gnutls_openpgp_crt_get_auth_subkey (gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t keyid, uint flag);
87     int gnutls_openpgp_keyring_init (gnutls_openpgp_keyring_t* keyring);
88     void gnutls_openpgp_keyring_deinit (gnutls_openpgp_keyring_t keyring);
89     int gnutls_openpgp_keyring_import (gnutls_openpgp_keyring_t keyring, const(gnutls_datum_t)* data, gnutls_openpgp_crt_fmt_t format);
90     int gnutls_openpgp_keyring_check_id (gnutls_openpgp_keyring_t ring, const gnutls_openpgp_keyid_t keyid, uint flags);
91     int gnutls_openpgp_crt_verify_ring (gnutls_openpgp_crt_t key, gnutls_openpgp_keyring_t keyring, uint flags, uint* verify);
92     int gnutls_openpgp_crt_verify_self (gnutls_openpgp_crt_t key, uint flags, uint* verify);
93     int gnutls_openpgp_keyring_get_crt (gnutls_openpgp_keyring_t ring, uint idx, gnutls_openpgp_crt_t* cert);
94     int gnutls_openpgp_keyring_get_crt_count (gnutls_openpgp_keyring_t ring);
95     void gnutls_openpgp_set_recv_key_function (gnutls_session_t session, gnutls_openpgp_recv_key_func func);
96     int gnutls_certificate_set_openpgp_key (gnutls_certificate_credentials_t res, gnutls_openpgp_crt_t crt, gnutls_openpgp_privkey_t pkey);
97     int gnutls_certificate_get_openpgp_key (gnutls_certificate_credentials_t res, uint index, gnutls_openpgp_privkey_t* key);
98     int gnutls_certificate_get_openpgp_crt (gnutls_certificate_credentials_t res, uint index, gnutls_openpgp_crt_t** crt_list, uint* crt_list_size);
99     int gnutls_certificate_set_openpgp_key_file (gnutls_certificate_credentials_t res, const(char)* certfile, const(char)* keyfile, gnutls_openpgp_crt_fmt_t format);
100     int gnutls_certificate_set_openpgp_key_mem (gnutls_certificate_credentials_t res, const(gnutls_datum_t)* cert, const(gnutls_datum_t)* key, gnutls_openpgp_crt_fmt_t format);
101     int gnutls_certificate_set_openpgp_key_file2 (gnutls_certificate_credentials_t res, const(char)* certfile, const(char)* keyfile, const(char)* subkey_id, gnutls_openpgp_crt_fmt_t format);
102     int gnutls_certificate_set_openpgp_key_mem2 (gnutls_certificate_credentials_t res, const(gnutls_datum_t)* cert, const(gnutls_datum_t)* key, const(char)* subkey_id, gnutls_openpgp_crt_fmt_t format);
103     int gnutls_certificate_set_openpgp_keyring_mem (gnutls_certificate_credentials_t c, const(ubyte)* data, size_t dlen, gnutls_openpgp_crt_fmt_t format);
104     int gnutls_certificate_set_openpgp_keyring_file (gnutls_certificate_credentials_t c, const(char)* file, gnutls_openpgp_crt_fmt_t format);
105 }
106 else
107 {
108     extern (System) @nogc nothrow @system
109     {
110         alias pgnutls_openpgp_crt_init = int function (gnutls_openpgp_crt_t* key);
111         alias pgnutls_openpgp_crt_deinit = void function (gnutls_openpgp_crt_t key);
112         alias pgnutls_openpgp_crt_import = int function (gnutls_openpgp_crt_t key, const(gnutls_datum_t)* data, gnutls_openpgp_crt_fmt_t format);
113         alias pgnutls_openpgp_crt_export = int function (gnutls_openpgp_crt_t key, gnutls_openpgp_crt_fmt_t format, void* output_data, size_t* output_data_size);
114         alias pgnutls_openpgp_crt_export2 = int function (gnutls_openpgp_crt_t key, gnutls_openpgp_crt_fmt_t format, gnutls_datum_t* out_);
115         alias pgnutls_openpgp_crt_print = int function (gnutls_openpgp_crt_t cert, gnutls_certificate_print_formats_t format, gnutls_datum_t* out_);
116         alias pgnutls_openpgp_crt_get_key_usage = int function (gnutls_openpgp_crt_t key, uint* key_usage);
117         alias pgnutls_openpgp_crt_get_fingerprint = int function (gnutls_openpgp_crt_t key, void* fpr, size_t* fprlen);
118         alias pgnutls_openpgp_crt_get_subkey_fingerprint = int function (gnutls_openpgp_crt_t key, uint idx, void* fpr, size_t* fprlen);
119         alias pgnutls_openpgp_crt_get_name = int function (gnutls_openpgp_crt_t key, int idx, char* buf, size_t* sizeof_buf);
120         alias pgnutls_openpgp_crt_get_pk_algorithm = gnutls_pk_algorithm_t function (gnutls_openpgp_crt_t key, uint* bits);
121         alias pgnutls_openpgp_crt_get_version = int function (gnutls_openpgp_crt_t key);
122         alias pgnutls_openpgp_crt_get_creation_time = time_t function (gnutls_openpgp_crt_t key);
123         alias pgnutls_openpgp_crt_get_expiration_time = time_t function (gnutls_openpgp_crt_t key);
124         alias pgnutls_openpgp_crt_get_key_id = int function (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid);
125         alias pgnutls_openpgp_crt_check_hostname = int function (gnutls_openpgp_crt_t key, const(char)* hostname);
126         alias pgnutls_openpgp_crt_check_hostname2 = int function (gnutls_openpgp_crt_t key, const(char)* hostname, uint flags);
127         alias pgnutls_openpgp_crt_check_email = int function (gnutls_openpgp_crt_t key, const(char)* email, uint flags);
128         alias pgnutls_openpgp_crt_get_revoked_status = int function (gnutls_openpgp_crt_t key);
129         alias pgnutls_openpgp_crt_get_subkey_count = int function (gnutls_openpgp_crt_t key);
130         alias pgnutls_openpgp_crt_get_subkey_idx = int function (gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid);
131         alias pgnutls_openpgp_crt_get_subkey_revoked_status = int function (gnutls_openpgp_crt_t key, uint idx);
132         alias pgnutls_openpgp_crt_get_subkey_pk_algorithm = gnutls_pk_algorithm_t function (gnutls_openpgp_crt_t key, uint idx, uint* bits);
133         alias pgnutls_openpgp_crt_get_subkey_creation_time = time_t function (gnutls_openpgp_crt_t key, uint idx);
134         alias pgnutls_openpgp_crt_get_subkey_expiration_time = time_t function (gnutls_openpgp_crt_t key, uint idx);
135         alias pgnutls_openpgp_crt_get_subkey_id = int function (gnutls_openpgp_crt_t key, uint idx, gnutls_openpgp_keyid_t keyid);
136         alias pgnutls_openpgp_crt_get_subkey_usage = int function (gnutls_openpgp_crt_t key, uint idx, uint* key_usage);
137         alias pgnutls_openpgp_crt_get_subkey_pk_dsa_raw = int function (gnutls_openpgp_crt_t crt, uint idx, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* g, gnutls_datum_t* y);
138         alias pgnutls_openpgp_crt_get_subkey_pk_rsa_raw = int function (gnutls_openpgp_crt_t crt, uint idx, gnutls_datum_t* m, gnutls_datum_t* e);
139         alias pgnutls_openpgp_crt_get_pk_dsa_raw = int function (gnutls_openpgp_crt_t crt, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* g, gnutls_datum_t* y);
140         alias pgnutls_openpgp_crt_get_pk_rsa_raw = int function (gnutls_openpgp_crt_t crt, gnutls_datum_t* m, gnutls_datum_t* e);
141         alias pgnutls_openpgp_crt_get_preferred_key_id = int function (gnutls_openpgp_crt_t key, gnutls_openpgp_keyid_t keyid);
142         alias pgnutls_openpgp_crt_set_preferred_key_id = int function (gnutls_openpgp_crt_t key, const gnutls_openpgp_keyid_t keyid);
143         alias pgnutls_openpgp_privkey_init = int function (gnutls_openpgp_privkey_t* key);
144         alias pgnutls_openpgp_privkey_deinit = void function (gnutls_openpgp_privkey_t key);
145         alias pgnutls_openpgp_privkey_get_pk_algorithm = gnutls_pk_algorithm_t function (gnutls_openpgp_privkey_t key, uint* bits);
146         alias pgnutls_openpgp_privkey_sec_param = gnutls_sec_param_t function (gnutls_openpgp_privkey_t key);
147         alias pgnutls_openpgp_privkey_import = int function (gnutls_openpgp_privkey_t key, const(gnutls_datum_t)* data, gnutls_openpgp_crt_fmt_t format, const(char)* password, uint flags);
148         alias pgnutls_openpgp_privkey_get_fingerprint = int function (gnutls_openpgp_privkey_t key, void* fpr, size_t* fprlen);
149         alias pgnutls_openpgp_privkey_get_subkey_fingerprint = int function (gnutls_openpgp_privkey_t key, uint idx, void* fpr, size_t* fprlen);
150         alias pgnutls_openpgp_privkey_get_key_id = int function (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid);
151         alias pgnutls_openpgp_privkey_get_subkey_count = int function (gnutls_openpgp_privkey_t key);
152         alias pgnutls_openpgp_privkey_get_subkey_idx = int function (gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid);
153         alias pgnutls_openpgp_privkey_get_subkey_revoked_status = int function (gnutls_openpgp_privkey_t key, uint idx);
154         alias pgnutls_openpgp_privkey_get_revoked_status = int function (gnutls_openpgp_privkey_t key);
155         alias pgnutls_openpgp_privkey_get_subkey_pk_algorithm = gnutls_pk_algorithm_t function (gnutls_openpgp_privkey_t key, uint idx, uint* bits);
156         alias pgnutls_openpgp_privkey_get_subkey_expiration_time = time_t function (gnutls_openpgp_privkey_t key, uint idx);
157         alias pgnutls_openpgp_privkey_get_subkey_id = int function (gnutls_openpgp_privkey_t key, uint idx, gnutls_openpgp_keyid_t keyid);
158         alias pgnutls_openpgp_privkey_get_subkey_creation_time = time_t function (gnutls_openpgp_privkey_t key, uint idx);
159         alias pgnutls_openpgp_privkey_export_subkey_dsa_raw = int function (gnutls_openpgp_privkey_t pkey, uint idx, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* g, gnutls_datum_t* y, gnutls_datum_t* x);
160         alias pgnutls_openpgp_privkey_export_subkey_rsa_raw = int function (gnutls_openpgp_privkey_t pkey, uint idx, gnutls_datum_t* m, gnutls_datum_t* e, gnutls_datum_t* d, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* u);
161         alias pgnutls_openpgp_privkey_export_dsa_raw = int function (gnutls_openpgp_privkey_t pkey, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* g, gnutls_datum_t* y, gnutls_datum_t* x);
162         alias pgnutls_openpgp_privkey_export_rsa_raw = int function (gnutls_openpgp_privkey_t pkey, gnutls_datum_t* m, gnutls_datum_t* e, gnutls_datum_t* d, gnutls_datum_t* p, gnutls_datum_t* q, gnutls_datum_t* u);
163         alias pgnutls_openpgp_privkey_export = int function (gnutls_openpgp_privkey_t key, gnutls_openpgp_crt_fmt_t format, const(char)* password, uint flags, void* output_data, size_t* output_data_size);
164         alias pgnutls_openpgp_privkey_export2 = int function (gnutls_openpgp_privkey_t key, gnutls_openpgp_crt_fmt_t format, const(char)* password, uint flags, gnutls_datum_t* out_);
165         alias pgnutls_openpgp_privkey_set_preferred_key_id = int function (gnutls_openpgp_privkey_t key, const gnutls_openpgp_keyid_t keyid);
166         alias pgnutls_openpgp_privkey_get_preferred_key_id = int function (gnutls_openpgp_privkey_t key, gnutls_openpgp_keyid_t keyid);
167         alias pgnutls_openpgp_crt_get_auth_subkey = int function (gnutls_openpgp_crt_t crt, gnutls_openpgp_keyid_t keyid, uint flag);
168         alias pgnutls_openpgp_keyring_init = int function (gnutls_openpgp_keyring_t* keyring);
169         alias pgnutls_openpgp_keyring_deinit = void function (gnutls_openpgp_keyring_t keyring);
170         alias pgnutls_openpgp_keyring_import = int function (gnutls_openpgp_keyring_t keyring, const(gnutls_datum_t)* data, gnutls_openpgp_crt_fmt_t format);
171         alias pgnutls_openpgp_keyring_check_id = int function (gnutls_openpgp_keyring_t ring, const gnutls_openpgp_keyid_t keyid, uint flags);
172         alias pgnutls_openpgp_crt_verify_ring = int function (gnutls_openpgp_crt_t key, gnutls_openpgp_keyring_t keyring, uint flags, uint* verify);
173         alias pgnutls_openpgp_crt_verify_self = int function (gnutls_openpgp_crt_t key, uint flags, uint* verify);
174         alias pgnutls_openpgp_keyring_get_crt = int function (gnutls_openpgp_keyring_t ring, uint idx, gnutls_openpgp_crt_t* cert);
175         alias pgnutls_openpgp_keyring_get_crt_count = int function (gnutls_openpgp_keyring_t ring);
176         alias pgnutls_openpgp_set_recv_key_function = void function (gnutls_session_t session, gnutls_openpgp_recv_key_func func);
177         alias pgnutls_certificate_set_openpgp_key = int function (gnutls_certificate_credentials_t res, gnutls_openpgp_crt_t crt, gnutls_openpgp_privkey_t pkey);
178         alias pgnutls_certificate_get_openpgp_key = int function (gnutls_certificate_credentials_t res, uint index, gnutls_openpgp_privkey_t* key);
179         alias pgnutls_certificate_get_openpgp_crt = int function (gnutls_certificate_credentials_t res, uint index, gnutls_openpgp_crt_t** crt_list, uint* crt_list_size);
180         alias pgnutls_certificate_set_openpgp_key_file = int function (gnutls_certificate_credentials_t res, const(char)* certfile, const(char)* keyfile, gnutls_openpgp_crt_fmt_t format);
181         alias pgnutls_certificate_set_openpgp_key_mem = int function (gnutls_certificate_credentials_t res, const(gnutls_datum_t)* cert, const(gnutls_datum_t)* key, gnutls_openpgp_crt_fmt_t format);
182         alias pgnutls_certificate_set_openpgp_key_file2 = int function (gnutls_certificate_credentials_t res, const(char)* certfile, const(char)* keyfile, const(char)* subkey_id, gnutls_openpgp_crt_fmt_t format);
183         alias pgnutls_certificate_set_openpgp_key_mem2 = int function (gnutls_certificate_credentials_t res, const(gnutls_datum_t)* cert, const(gnutls_datum_t)* key, const(char)* subkey_id, gnutls_openpgp_crt_fmt_t format);
184         alias pgnutls_certificate_set_openpgp_keyring_mem = int function (gnutls_certificate_credentials_t c, const(ubyte)* data, size_t dlen, gnutls_openpgp_crt_fmt_t format);
185         alias pgnutls_certificate_set_openpgp_keyring_file = int function (gnutls_certificate_credentials_t c, const(char)* file, gnutls_openpgp_crt_fmt_t format);
186     }
187 
188     __gshared
189     {
190         pgnutls_openpgp_crt_init gnutls_openpgp_crt_init;
191         pgnutls_openpgp_crt_deinit gnutls_openpgp_crt_deinit;
192         pgnutls_openpgp_crt_import gnutls_openpgp_crt_import;
193         pgnutls_openpgp_crt_export gnutls_openpgp_crt_export;
194         pgnutls_openpgp_crt_export2 gnutls_openpgp_crt_export2;
195         pgnutls_openpgp_crt_print gnutls_openpgp_crt_print;
196         pgnutls_openpgp_crt_get_key_usage gnutls_openpgp_crt_get_key_usage;
197         pgnutls_openpgp_crt_get_fingerprint gnutls_openpgp_crt_get_fingerprint;
198         pgnutls_openpgp_crt_get_subkey_fingerprint gnutls_openpgp_crt_get_subkey_fingerprint;
199         pgnutls_openpgp_crt_get_name gnutls_openpgp_crt_get_name;
200         pgnutls_openpgp_crt_get_pk_algorithm gnutls_openpgp_crt_get_pk_algorithm;
201         pgnutls_openpgp_crt_get_version gnutls_openpgp_crt_get_version;
202         pgnutls_openpgp_crt_get_creation_time gnutls_openpgp_crt_get_creation_time;
203         pgnutls_openpgp_crt_get_expiration_time gnutls_openpgp_crt_get_expiration_time;
204         pgnutls_openpgp_crt_get_key_id gnutls_openpgp_crt_get_key_id;
205         pgnutls_openpgp_crt_check_hostname gnutls_openpgp_crt_check_hostname;
206         pgnutls_openpgp_crt_check_hostname2 gnutls_openpgp_crt_check_hostname2;
207         pgnutls_openpgp_crt_check_email gnutls_openpgp_crt_check_email;
208         pgnutls_openpgp_crt_get_revoked_status gnutls_openpgp_crt_get_revoked_status;
209         pgnutls_openpgp_crt_get_subkey_count gnutls_openpgp_crt_get_subkey_count;
210         pgnutls_openpgp_crt_get_subkey_idx gnutls_openpgp_crt_get_subkey_idx;
211         pgnutls_openpgp_crt_get_subkey_revoked_status gnutls_openpgp_crt_get_subkey_revoked_status;
212         pgnutls_openpgp_crt_get_subkey_pk_algorithm gnutls_openpgp_crt_get_subkey_pk_algorithm;
213         pgnutls_openpgp_crt_get_subkey_creation_time gnutls_openpgp_crt_get_subkey_creation_time;
214         pgnutls_openpgp_crt_get_subkey_expiration_time gnutls_openpgp_crt_get_subkey_expiration_time;
215         pgnutls_openpgp_crt_get_subkey_id gnutls_openpgp_crt_get_subkey_id;
216         pgnutls_openpgp_crt_get_subkey_usage gnutls_openpgp_crt_get_subkey_usage;
217         pgnutls_openpgp_crt_get_subkey_pk_dsa_raw gnutls_openpgp_crt_get_subkey_pk_dsa_raw;
218         pgnutls_openpgp_crt_get_subkey_pk_rsa_raw gnutls_openpgp_crt_get_subkey_pk_rsa_raw;
219         pgnutls_openpgp_crt_get_pk_dsa_raw gnutls_openpgp_crt_get_pk_dsa_raw;
220         pgnutls_openpgp_crt_get_pk_rsa_raw gnutls_openpgp_crt_get_pk_rsa_raw;
221         pgnutls_openpgp_crt_get_preferred_key_id gnutls_openpgp_crt_get_preferred_key_id;
222         pgnutls_openpgp_crt_set_preferred_key_id gnutls_openpgp_crt_set_preferred_key_id;
223         pgnutls_openpgp_privkey_init gnutls_openpgp_privkey_init;
224         pgnutls_openpgp_privkey_deinit gnutls_openpgp_privkey_deinit;
225         pgnutls_openpgp_privkey_get_pk_algorithm gnutls_openpgp_privkey_get_pk_algorithm;
226         pgnutls_openpgp_privkey_sec_param gnutls_openpgp_privkey_sec_param;
227         pgnutls_openpgp_privkey_import gnutls_openpgp_privkey_import;
228         pgnutls_openpgp_privkey_get_fingerprint gnutls_openpgp_privkey_get_fingerprint;
229         pgnutls_openpgp_privkey_get_subkey_fingerprint gnutls_openpgp_privkey_get_subkey_fingerprint;
230         pgnutls_openpgp_privkey_get_key_id gnutls_openpgp_privkey_get_key_id;
231         pgnutls_openpgp_privkey_get_subkey_count gnutls_openpgp_privkey_get_subkey_count;
232         pgnutls_openpgp_privkey_get_subkey_idx gnutls_openpgp_privkey_get_subkey_idx;
233         pgnutls_openpgp_privkey_get_subkey_revoked_status gnutls_openpgp_privkey_get_subkey_revoked_status;
234         pgnutls_openpgp_privkey_get_revoked_status gnutls_openpgp_privkey_get_revoked_status;
235         pgnutls_openpgp_privkey_get_subkey_pk_algorithm gnutls_openpgp_privkey_get_subkey_pk_algorithm;
236         pgnutls_openpgp_privkey_get_subkey_expiration_time gnutls_openpgp_privkey_get_subkey_expiration_time;
237         pgnutls_openpgp_privkey_get_subkey_id gnutls_openpgp_privkey_get_subkey_id;
238         pgnutls_openpgp_privkey_get_subkey_creation_time gnutls_openpgp_privkey_get_subkey_creation_time;
239         pgnutls_openpgp_privkey_export_subkey_dsa_raw gnutls_openpgp_privkey_export_subkey_dsa_raw;
240         pgnutls_openpgp_privkey_export_subkey_rsa_raw gnutls_openpgp_privkey_export_subkey_rsa_raw;
241         pgnutls_openpgp_privkey_export_dsa_raw gnutls_openpgp_privkey_export_dsa_raw;
242         pgnutls_openpgp_privkey_export_rsa_raw gnutls_openpgp_privkey_export_rsa_raw;
243         pgnutls_openpgp_privkey_export gnutls_openpgp_privkey_export;
244         pgnutls_openpgp_privkey_export2 gnutls_openpgp_privkey_export2;
245         pgnutls_openpgp_privkey_set_preferred_key_id gnutls_openpgp_privkey_set_preferred_key_id;
246         pgnutls_openpgp_privkey_get_preferred_key_id gnutls_openpgp_privkey_get_preferred_key_id;
247         pgnutls_openpgp_crt_get_auth_subkey gnutls_openpgp_crt_get_auth_subkey;
248         pgnutls_openpgp_keyring_init gnutls_openpgp_keyring_init;
249         pgnutls_openpgp_keyring_deinit gnutls_openpgp_keyring_deinit;
250         pgnutls_openpgp_keyring_import gnutls_openpgp_keyring_import;
251         pgnutls_openpgp_keyring_check_id gnutls_openpgp_keyring_check_id;
252         pgnutls_openpgp_crt_verify_ring gnutls_openpgp_crt_verify_ring;
253         pgnutls_openpgp_crt_verify_self gnutls_openpgp_crt_verify_self;
254         pgnutls_openpgp_keyring_get_crt gnutls_openpgp_keyring_get_crt;
255         pgnutls_openpgp_keyring_get_crt_count gnutls_openpgp_keyring_get_crt_count;
256         pgnutls_openpgp_set_recv_key_function gnutls_openpgp_set_recv_key_function;
257         pgnutls_certificate_set_openpgp_key gnutls_certificate_set_openpgp_key;
258         pgnutls_certificate_get_openpgp_key gnutls_certificate_get_openpgp_key;
259         pgnutls_certificate_get_openpgp_crt gnutls_certificate_get_openpgp_crt;
260         pgnutls_certificate_set_openpgp_key_file gnutls_certificate_set_openpgp_key_file;
261         pgnutls_certificate_set_openpgp_key_mem gnutls_certificate_set_openpgp_key_mem;
262         pgnutls_certificate_set_openpgp_key_file2 gnutls_certificate_set_openpgp_key_file2;
263         pgnutls_certificate_set_openpgp_key_mem2 gnutls_certificate_set_openpgp_key_mem2;
264         pgnutls_certificate_set_openpgp_keyring_mem gnutls_certificate_set_openpgp_keyring_mem;
265         pgnutls_certificate_set_openpgp_keyring_file gnutls_certificate_set_openpgp_keyring_file;
266     }
267 
268     import bindbc.loader : SharedLib, bindSymbol_stdcall;
269     void bindOpenPGP(SharedLib lib)
270     {
271         lib.bindSymbol_stdcall(gnutls_openpgp_crt_init, "gnutls_openpgp_crt_init");
272         lib.bindSymbol_stdcall(gnutls_openpgp_crt_deinit, "gnutls_openpgp_crt_deinit");
273         lib.bindSymbol_stdcall(gnutls_openpgp_crt_import, "gnutls_openpgp_crt_import");
274         lib.bindSymbol_stdcall(gnutls_openpgp_crt_export, "gnutls_openpgp_crt_export");
275         lib.bindSymbol_stdcall(gnutls_openpgp_crt_export2, "gnutls_openpgp_crt_export2");
276         lib.bindSymbol_stdcall(gnutls_openpgp_crt_print, "gnutls_openpgp_crt_print");
277         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_key_usage, "gnutls_openpgp_crt_get_key_usage");
278         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_fingerprint, "gnutls_openpgp_crt_get_fingerprint");
279         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_fingerprint, "gnutls_openpgp_crt_get_subkey_fingerprint");
280         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_name, "gnutls_openpgp_crt_get_name");
281         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_pk_algorithm, "gnutls_openpgp_crt_get_pk_algorithm");
282         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_version, "gnutls_openpgp_crt_get_version");
283         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_creation_time, "gnutls_openpgp_crt_get_creation_time");
284         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_expiration_time, "gnutls_openpgp_crt_get_expiration_time");
285         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_key_id, "gnutls_openpgp_crt_get_key_id");
286         lib.bindSymbol_stdcall(gnutls_openpgp_crt_check_hostname, "gnutls_openpgp_crt_check_hostname");
287         lib.bindSymbol_stdcall(gnutls_openpgp_crt_check_hostname2, "gnutls_openpgp_crt_check_hostname2");
288         lib.bindSymbol_stdcall(gnutls_openpgp_crt_check_email, "gnutls_openpgp_crt_check_email");
289         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_revoked_status, "gnutls_openpgp_crt_get_revoked_status");
290         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_count, "gnutls_openpgp_crt_get_subkey_count");
291         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_idx, "gnutls_openpgp_crt_get_subkey_idx");
292         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_revoked_status, "gnutls_openpgp_crt_get_subkey_revoked_status");
293         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_pk_algorithm, "gnutls_openpgp_crt_get_subkey_pk_algorithm");
294         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_creation_time, "gnutls_openpgp_crt_get_subkey_creation_time");
295         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_expiration_time, "gnutls_openpgp_crt_get_subkey_expiration_time");
296         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_id, "gnutls_openpgp_crt_get_subkey_id");
297         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_usage, "gnutls_openpgp_crt_get_subkey_usage");
298         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_pk_dsa_raw, "gnutls_openpgp_crt_get_subkey_pk_dsa_raw");
299         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_subkey_pk_rsa_raw, "gnutls_openpgp_crt_get_subkey_pk_rsa_raw");
300         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_pk_dsa_raw, "gnutls_openpgp_crt_get_pk_dsa_raw");
301         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_pk_rsa_raw, "gnutls_openpgp_crt_get_pk_rsa_raw");
302         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_preferred_key_id, "gnutls_openpgp_crt_get_preferred_key_id");
303         lib.bindSymbol_stdcall(gnutls_openpgp_crt_set_preferred_key_id, "gnutls_openpgp_crt_set_preferred_key_id");
304         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_init, "gnutls_openpgp_privkey_init");
305         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_deinit, "gnutls_openpgp_privkey_deinit");
306         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_pk_algorithm, "gnutls_openpgp_privkey_get_pk_algorithm");
307         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_sec_param, "gnutls_openpgp_privkey_sec_param");
308         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_import, "gnutls_openpgp_privkey_import");
309         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_fingerprint, "gnutls_openpgp_privkey_get_fingerprint");
310         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_subkey_fingerprint, "gnutls_openpgp_privkey_get_subkey_fingerprint");
311         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_key_id, "gnutls_openpgp_privkey_get_key_id");
312         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_subkey_count, "gnutls_openpgp_privkey_get_subkey_count");
313         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_subkey_idx, "gnutls_openpgp_privkey_get_subkey_idx");
314         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_subkey_revoked_status, "gnutls_openpgp_privkey_get_subkey_revoked_status");
315         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_revoked_status, "gnutls_openpgp_privkey_get_revoked_status");
316         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_subkey_pk_algorithm, "gnutls_openpgp_privkey_get_subkey_pk_algorithm");
317         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_subkey_expiration_time, "gnutls_openpgp_privkey_get_subkey_expiration_time");
318         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_subkey_id, "gnutls_openpgp_privkey_get_subkey_id");
319         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_subkey_creation_time, "gnutls_openpgp_privkey_get_subkey_creation_time");
320         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_export_subkey_dsa_raw, "gnutls_openpgp_privkey_export_subkey_dsa_raw");
321         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_export_subkey_rsa_raw, "gnutls_openpgp_privkey_export_subkey_rsa_raw");
322         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_export_dsa_raw, "gnutls_openpgp_privkey_export_dsa_raw");
323         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_export_rsa_raw, "gnutls_openpgp_privkey_export_rsa_raw");
324         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_export, "gnutls_openpgp_privkey_export");
325         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_export2, "gnutls_openpgp_privkey_export2");
326         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_set_preferred_key_id, "gnutls_openpgp_privkey_set_preferred_key_id");
327         lib.bindSymbol_stdcall(gnutls_openpgp_privkey_get_preferred_key_id, "gnutls_openpgp_privkey_get_preferred_key_id");
328         lib.bindSymbol_stdcall(gnutls_openpgp_crt_get_auth_subkey, "gnutls_openpgp_crt_get_auth_subkey");
329         lib.bindSymbol_stdcall(gnutls_openpgp_keyring_init, "gnutls_openpgp_keyring_init");
330         lib.bindSymbol_stdcall(gnutls_openpgp_keyring_deinit, "gnutls_openpgp_keyring_deinit");
331         lib.bindSymbol_stdcall(gnutls_openpgp_keyring_import, "gnutls_openpgp_keyring_import");
332         lib.bindSymbol_stdcall(gnutls_openpgp_keyring_check_id, "gnutls_openpgp_keyring_check_id");
333         lib.bindSymbol_stdcall(gnutls_openpgp_crt_verify_ring, "gnutls_openpgp_crt_verify_ring");
334         lib.bindSymbol_stdcall(gnutls_openpgp_crt_verify_self, "gnutls_openpgp_crt_verify_self");
335         lib.bindSymbol_stdcall(gnutls_openpgp_keyring_get_crt, "gnutls_openpgp_keyring_get_crt");
336         lib.bindSymbol_stdcall(gnutls_openpgp_keyring_get_crt_count, "gnutls_openpgp_keyring_get_crt_count");
337         lib.bindSymbol_stdcall(gnutls_openpgp_set_recv_key_function, "gnutls_openpgp_set_recv_key_function");
338         lib.bindSymbol_stdcall(gnutls_certificate_set_openpgp_key, "gnutls_certificate_set_openpgp_key");
339         lib.bindSymbol_stdcall(gnutls_certificate_get_openpgp_key, "gnutls_certificate_get_openpgp_key");
340         lib.bindSymbol_stdcall(gnutls_certificate_get_openpgp_crt, "gnutls_certificate_get_openpgp_crt");
341         lib.bindSymbol_stdcall(gnutls_certificate_set_openpgp_key_file, "gnutls_certificate_set_openpgp_key_file");
342         lib.bindSymbol_stdcall(gnutls_certificate_set_openpgp_key_mem, "gnutls_certificate_set_openpgp_key_mem");
343         lib.bindSymbol_stdcall(gnutls_certificate_set_openpgp_key_file2, "gnutls_certificate_set_openpgp_key_file2");
344         lib.bindSymbol_stdcall(gnutls_certificate_set_openpgp_key_mem2, "gnutls_certificate_set_openpgp_key_mem2");
345         lib.bindSymbol_stdcall(gnutls_certificate_set_openpgp_keyring_mem, "gnutls_certificate_set_openpgp_keyring_mem");
346         lib.bindSymbol_stdcall(gnutls_certificate_set_openpgp_keyring_file, "gnutls_certificate_set_openpgp_keyring_file");
347     }
348 }