1 module bindbc.gnutls.pkcs12;
2 
3 import bindbc.gnutls.gnutls;
4 
5 struct gnutls_pkcs12_int;
6 alias gnutls_pkcs12_t = gnutls_pkcs12_int*;
7 
8 struct gnutls_pkcs12_bag_int;
9 alias gnutls_pkcs12_bag_t = gnutls_pkcs12_bag_int*;
10 
11 enum GNUTLS_PKCS12_SP_INCLUDE_SELF_SIGNED = 1;
12 enum gnutls_pkcs12_bag_type_t
13 {
14     GNUTLS_BAG_EMPTY = 0,
15     GNUTLS_BAG_PKCS8_ENCRYPTED_KEY = 1,
16     GNUTLS_BAG_PKCS8_KEY = 2,
17     GNUTLS_BAG_CERTIFICATE = 3,
18     GNUTLS_BAG_CRL = 4,
19     GNUTLS_BAG_SECRET = 5,
20 
21     GNUTLS_BAG_ENCRYPTED = 10,
22     GNUTLS_BAG_UNKNOWN = 20
23 }
24 
25 version (BindGnuTLS_Static)
26 {
27     extern (System) @nogc nothrow @system:
28 
29     int gnutls_pkcs12_init (gnutls_pkcs12_t* pkcs12);
30     void gnutls_pkcs12_deinit (gnutls_pkcs12_t pkcs12);
31     int gnutls_pkcs12_import (gnutls_pkcs12_t pkcs12, const(gnutls_datum_t)* data, gnutls_x509_crt_fmt_t format, uint flags);
32     int gnutls_pkcs12_export (gnutls_pkcs12_t pkcs12, gnutls_x509_crt_fmt_t format, void* output_data, size_t* output_data_size);
33     int gnutls_pkcs12_export2 (gnutls_pkcs12_t pkcs12, gnutls_x509_crt_fmt_t format, gnutls_datum_t* out_);
34     int gnutls_pkcs12_get_bag (gnutls_pkcs12_t pkcs12, int indx, gnutls_pkcs12_bag_t bag);
35     int gnutls_pkcs12_set_bag (gnutls_pkcs12_t pkcs12, gnutls_pkcs12_bag_t bag);
36     int gnutls_pkcs12_generate_mac (gnutls_pkcs12_t pkcs12, const(char)* pass);
37     int gnutls_pkcs12_generate_mac2 (gnutls_pkcs12_t pkcs12, gnutls_mac_algorithm_t mac, const(char)* pass);
38     int gnutls_pkcs12_verify_mac (gnutls_pkcs12_t pkcs12, const(char)* pass);
39     int gnutls_pkcs12_bag_decrypt (gnutls_pkcs12_bag_t bag, const(char)* pass);
40     int gnutls_pkcs12_bag_encrypt (gnutls_pkcs12_bag_t bag, const(char)* pass, uint flags);
41     int gnutls_pkcs12_bag_enc_info (gnutls_pkcs12_bag_t bag, uint* schema, uint* cipher, void* salt, uint* salt_size, uint* iter_count, char** oid);
42     int gnutls_pkcs12_mac_info (gnutls_pkcs12_t pkcs12, uint* mac, void* salt, uint* salt_size, uint* iter_count, char** oid);
43     int gnutls_pkcs12_simple_parse (gnutls_pkcs12_t p12, const(char)* password, gnutls_x509_privkey_t* key, gnutls_x509_crt_t** chain, uint* chain_len, gnutls_x509_crt_t** extra_certs, uint* extra_certs_len, gnutls_x509_crl_t* crl, uint flags);
44     int gnutls_pkcs12_bag_get_type (gnutls_pkcs12_bag_t bag, uint indx);
45     int gnutls_pkcs12_bag_get_data (gnutls_pkcs12_bag_t bag, uint indx, gnutls_datum_t* data);
46     int gnutls_pkcs12_bag_set_data (gnutls_pkcs12_bag_t bag, gnutls_pkcs12_bag_type_t type, const(gnutls_datum_t)* data);
47     int gnutls_pkcs12_bag_set_crl (gnutls_pkcs12_bag_t bag, gnutls_x509_crl_t crl);
48     int gnutls_pkcs12_bag_set_crt (gnutls_pkcs12_bag_t bag, gnutls_x509_crt_t crt);
49     int gnutls_pkcs12_bag_set_privkey (gnutls_pkcs12_bag_t bag, gnutls_x509_privkey_t privkey, const(char)* password, uint flags);
50     int gnutls_pkcs12_bag_init (gnutls_pkcs12_bag_t* bag);
51     void gnutls_pkcs12_bag_deinit (gnutls_pkcs12_bag_t bag);
52     int gnutls_pkcs12_bag_get_count (gnutls_pkcs12_bag_t bag);
53     int gnutls_pkcs12_bag_get_key_id (gnutls_pkcs12_bag_t bag, uint indx, gnutls_datum_t* id);
54     int gnutls_pkcs12_bag_set_key_id (gnutls_pkcs12_bag_t bag, uint indx, const(gnutls_datum_t)* id);
55     int gnutls_pkcs12_bag_get_friendly_name (gnutls_pkcs12_bag_t bag, uint indx, char** name);
56     int gnutls_pkcs12_bag_set_friendly_name (gnutls_pkcs12_bag_t bag, uint indx, const(char)* name);
57 }
58 else
59 {
60     extern (System) @nogc nothrow @system
61     {
62         alias pgnutls_pkcs12_init = int function (gnutls_pkcs12_t* pkcs12);
63         alias pgnutls_pkcs12_deinit = void function (gnutls_pkcs12_t pkcs12);
64         alias pgnutls_pkcs12_import = int function (gnutls_pkcs12_t pkcs12, const(gnutls_datum_t)* data, gnutls_x509_crt_fmt_t format, uint flags);
65         alias pgnutls_pkcs12_export = int function (gnutls_pkcs12_t pkcs12, gnutls_x509_crt_fmt_t format, void* output_data, size_t* output_data_size);
66         alias pgnutls_pkcs12_export2 = int function (gnutls_pkcs12_t pkcs12, gnutls_x509_crt_fmt_t format, gnutls_datum_t* out_);
67         alias pgnutls_pkcs12_get_bag = int function (gnutls_pkcs12_t pkcs12, int indx, gnutls_pkcs12_bag_t bag);
68         alias pgnutls_pkcs12_set_bag = int function (gnutls_pkcs12_t pkcs12, gnutls_pkcs12_bag_t bag);
69         alias pgnutls_pkcs12_generate_mac = int function (gnutls_pkcs12_t pkcs12, const(char)* pass);
70         alias pgnutls_pkcs12_generate_mac2 = int function (gnutls_pkcs12_t pkcs12, gnutls_mac_algorithm_t mac, const(char)* pass);
71         alias pgnutls_pkcs12_verify_mac = int function (gnutls_pkcs12_t pkcs12, const(char)* pass);
72         alias pgnutls_pkcs12_bag_decrypt = int function (gnutls_pkcs12_bag_t bag, const(char)* pass);
73         alias pgnutls_pkcs12_bag_encrypt = int function (gnutls_pkcs12_bag_t bag, const(char)* pass, uint flags);
74         alias pgnutls_pkcs12_bag_enc_info = int function (gnutls_pkcs12_bag_t bag, uint* schema, uint* cipher, void* salt, uint* salt_size, uint* iter_count, char** oid);
75         alias pgnutls_pkcs12_mac_info = int function (gnutls_pkcs12_t pkcs12, uint* mac, void* salt, uint* salt_size, uint* iter_count, char** oid);
76         alias pgnutls_pkcs12_simple_parse = int function (gnutls_pkcs12_t p12, const(char)* password, gnutls_x509_privkey_t* key, gnutls_x509_crt_t** chain, uint* chain_len, gnutls_x509_crt_t** extra_certs, uint* extra_certs_len, gnutls_x509_crl_t* crl, uint flags);
77         alias pgnutls_pkcs12_bag_get_type = int function (gnutls_pkcs12_bag_t bag, uint indx);
78         alias pgnutls_pkcs12_bag_get_data = int function (gnutls_pkcs12_bag_t bag, uint indx, gnutls_datum_t* data);
79         alias pgnutls_pkcs12_bag_set_data = int function (gnutls_pkcs12_bag_t bag, gnutls_pkcs12_bag_type_t type, const(gnutls_datum_t)* data);
80         alias pgnutls_pkcs12_bag_set_crl = int function (gnutls_pkcs12_bag_t bag, gnutls_x509_crl_t crl);
81         alias pgnutls_pkcs12_bag_set_crt = int function (gnutls_pkcs12_bag_t bag, gnutls_x509_crt_t crt);
82         alias pgnutls_pkcs12_bag_set_privkey = int function (gnutls_pkcs12_bag_t bag, gnutls_x509_privkey_t privkey, const(char)* password, uint flags);
83         alias pgnutls_pkcs12_bag_init = int function (gnutls_pkcs12_bag_t* bag);
84         alias pgnutls_pkcs12_bag_deinit = void function (gnutls_pkcs12_bag_t bag);
85         alias pgnutls_pkcs12_bag_get_count = int function (gnutls_pkcs12_bag_t bag);
86         alias pgnutls_pkcs12_bag_get_key_id = int function (gnutls_pkcs12_bag_t bag, uint indx, gnutls_datum_t* id);
87         alias pgnutls_pkcs12_bag_set_key_id = int function (gnutls_pkcs12_bag_t bag, uint indx, const(gnutls_datum_t)* id);
88         alias pgnutls_pkcs12_bag_get_friendly_name = int function (gnutls_pkcs12_bag_t bag, uint indx, char** name);
89         alias pgnutls_pkcs12_bag_set_friendly_name = int function (gnutls_pkcs12_bag_t bag, uint indx, const(char)* name);
90     }
91 
92     __gshared
93     {
94         pgnutls_pkcs12_init gnutls_pkcs12_init;
95         pgnutls_pkcs12_deinit gnutls_pkcs12_deinit;
96         pgnutls_pkcs12_import gnutls_pkcs12_import;
97         pgnutls_pkcs12_export gnutls_pkcs12_export;
98         pgnutls_pkcs12_export2 gnutls_pkcs12_export2;
99         pgnutls_pkcs12_get_bag gnutls_pkcs12_get_bag;
100         pgnutls_pkcs12_set_bag gnutls_pkcs12_set_bag;
101         pgnutls_pkcs12_generate_mac gnutls_pkcs12_generate_mac;
102         pgnutls_pkcs12_generate_mac2 gnutls_pkcs12_generate_mac2;
103         pgnutls_pkcs12_verify_mac gnutls_pkcs12_verify_mac;
104         pgnutls_pkcs12_bag_decrypt gnutls_pkcs12_bag_decrypt;
105         pgnutls_pkcs12_bag_encrypt gnutls_pkcs12_bag_encrypt;
106         pgnutls_pkcs12_bag_enc_info gnutls_pkcs12_bag_enc_info;
107         pgnutls_pkcs12_mac_info gnutls_pkcs12_mac_info;
108         pgnutls_pkcs12_simple_parse gnutls_pkcs12_simple_parse;
109         pgnutls_pkcs12_bag_get_type gnutls_pkcs12_bag_get_type;
110         pgnutls_pkcs12_bag_get_data gnutls_pkcs12_bag_get_data;
111         pgnutls_pkcs12_bag_set_data gnutls_pkcs12_bag_set_data;
112         pgnutls_pkcs12_bag_set_crl gnutls_pkcs12_bag_set_crl;
113         pgnutls_pkcs12_bag_set_crt gnutls_pkcs12_bag_set_crt;
114         pgnutls_pkcs12_bag_set_privkey gnutls_pkcs12_bag_set_privkey;
115         pgnutls_pkcs12_bag_init gnutls_pkcs12_bag_init;
116         pgnutls_pkcs12_bag_deinit gnutls_pkcs12_bag_deinit;
117         pgnutls_pkcs12_bag_get_count gnutls_pkcs12_bag_get_count;
118         pgnutls_pkcs12_bag_get_key_id gnutls_pkcs12_bag_get_key_id;
119         pgnutls_pkcs12_bag_set_key_id gnutls_pkcs12_bag_set_key_id;
120         pgnutls_pkcs12_bag_get_friendly_name gnutls_pkcs12_bag_get_friendly_name;
121         pgnutls_pkcs12_bag_set_friendly_name gnutls_pkcs12_bag_set_friendly_name;
122     }
123 
124     import bindbc.loader : SharedLib, bindSymbol_stdcall;
125     void bindPkcs12(SharedLib lib)
126     {
127         lib.bindSymbol_stdcall(gnutls_pkcs12_init, "gnutls_pkcs12_init");
128         lib.bindSymbol_stdcall(gnutls_pkcs12_deinit, "gnutls_pkcs12_deinit");
129         lib.bindSymbol_stdcall(gnutls_pkcs12_import, "gnutls_pkcs12_import");
130         lib.bindSymbol_stdcall(gnutls_pkcs12_export, "gnutls_pkcs12_export");
131         lib.bindSymbol_stdcall(gnutls_pkcs12_export2, "gnutls_pkcs12_export2");
132         lib.bindSymbol_stdcall(gnutls_pkcs12_get_bag, "gnutls_pkcs12_get_bag");
133         lib.bindSymbol_stdcall(gnutls_pkcs12_set_bag, "gnutls_pkcs12_set_bag");
134         lib.bindSymbol_stdcall(gnutls_pkcs12_generate_mac, "gnutls_pkcs12_generate_mac");
135         lib.bindSymbol_stdcall(gnutls_pkcs12_generate_mac2, "gnutls_pkcs12_generate_mac2");
136         lib.bindSymbol_stdcall(gnutls_pkcs12_verify_mac, "gnutls_pkcs12_verify_mac");
137         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_decrypt, "gnutls_pkcs12_bag_decrypt");
138         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_encrypt, "gnutls_pkcs12_bag_encrypt");
139         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_enc_info, "gnutls_pkcs12_bag_enc_info");
140         lib.bindSymbol_stdcall(gnutls_pkcs12_mac_info, "gnutls_pkcs12_mac_info");
141         lib.bindSymbol_stdcall(gnutls_pkcs12_simple_parse, "gnutls_pkcs12_simple_parse");
142         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_get_type, "gnutls_pkcs12_bag_get_type");
143         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_get_data, "gnutls_pkcs12_bag_get_data");
144         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_set_data, "gnutls_pkcs12_bag_set_data");
145         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_set_crl, "gnutls_pkcs12_bag_set_crl");
146         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_set_crt, "gnutls_pkcs12_bag_set_crt");
147         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_set_privkey, "gnutls_pkcs12_bag_set_privkey");
148         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_init, "gnutls_pkcs12_bag_init");
149         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_deinit, "gnutls_pkcs12_bag_deinit");
150         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_get_count, "gnutls_pkcs12_bag_get_count");
151         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_get_key_id, "gnutls_pkcs12_bag_get_key_id");
152         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_set_key_id, "gnutls_pkcs12_bag_set_key_id");
153         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_get_friendly_name, "gnutls_pkcs12_bag_get_friendly_name");
154         lib.bindSymbol_stdcall(gnutls_pkcs12_bag_set_friendly_name, "gnutls_pkcs12_bag_set_friendly_name");
155     }
156 }