* then move it to allocated memory when the resource
* scan is complete.
*/
-#if defined(HAVE_WIN32) && !defined(HAVE_CYGWIN)
+#if defined(_MSC_VER)
extern "C" { // work around visual compiler mangling variables
URES res_all;
- int res_all_size = sizeof(res_all);
}
#else
URES res_all;
-int res_all_size = sizeof(res_all);
#endif
+int res_all_size = sizeof(res_all);
/* Definition of records permitted within each
* resource with the routine to process the record
{"heartbeatinterval", store_time, ITEM(res_client.heartbeat_interval), 0, ITEM_DEFAULT, 0},
{"sdconnecttimeout", store_time,ITEM(res_client.SDConnectTimeout), 0, ITEM_DEFAULT, 60 * 30},
{"maximumnetworkbuffersize", store_pint, ITEM(res_client.max_network_buffer_size), 0, 0, 0},
- {"tlsenable", store_yesno, ITEM(res_client.tls_enable), 1, 0, 0},
- {"tlsrequire", store_yesno, ITEM(res_client.tls_require), 1, 0, 0},
- {"tlscacertificatefile", store_dir, ITEM(res_client.tls_ca_certfile), 0, 0, 0},
- {"tlscacertificatedir", store_dir, ITEM(res_client.tls_ca_certdir), 0, 0, 0},
- {"tlscertificate", store_dir, ITEM(res_client.tls_certfile), 0, 0, 0},
- {"tlskey", store_dir, ITEM(res_client.tls_keyfile), 0, 0, 0},
- {NULL, NULL, NULL, 0, 0, 0}
+ {"pkisignatures", store_bool, ITEM(res_client.pki_sign), 0, ITEM_DEFAULT, 0},
+ {"pkiencryption", store_bool, ITEM(res_client.pki_encrypt), 0, ITEM_DEFAULT, 0},
+ {"pkikeypair", store_dir, ITEM(res_client.pki_keypair_file), 0, 0, 0},
+ {"pkisigner", store_alist_str, ITEM(res_client.pki_signing_key_files), 0, 0, 0},
+ {"pkimasterkey", store_alist_str, ITEM(res_client.pki_master_key_files), 0, 0, 0},
+ {"tlsenable", store_bool, ITEM(res_client.tls_enable), 0, 0, 0},
+ {"tlsrequire", store_bool, ITEM(res_client.tls_require), 0, 0, 0},
+ {"tlscacertificatefile", store_dir, ITEM(res_client.tls_ca_certfile), 0, 0, 0},
+ {"tlscacertificatedir", store_dir, ITEM(res_client.tls_ca_certdir), 0, 0, 0},
+ {"tlscertificate", store_dir, ITEM(res_client.tls_certfile), 0, 0, 0},
+ {"tlskey", store_dir, ITEM(res_client.tls_keyfile), 0, 0, 0},
+ {NULL, NULL, {0}, 0, 0, 0}
};
/* Directors that can use our services */
{"description", store_str, ITEM(res_dir.hdr.desc), 0, 0, 0},
{"password", store_password, ITEM(res_dir.password), 0, ITEM_REQUIRED, 0},
{"address", store_str, ITEM(res_dir.address), 0, 0, 0},
- {"monitor", store_yesno, ITEM(res_dir.monitor), 1, ITEM_DEFAULT, 0},
- {"tlsenable", store_yesno, ITEM(res_dir.tls_enable), 1, 0, 0},
- {"tlsrequire", store_yesno, ITEM(res_dir.tls_require), 1, 0, 0},
- {"tlsverifypeer", store_yesno, ITEM(res_dir.tls_verify_peer), 1, ITEM_DEFAULT, 1},
+ {"monitor", store_bool, ITEM(res_dir.monitor), 0, ITEM_DEFAULT, 0},
+ {"tlsenable", store_bool, ITEM(res_dir.tls_enable), 0, 0, 0},
+ {"tlsrequire", store_bool, ITEM(res_dir.tls_require), 0, 0, 0},
+ {"tlsverifypeer", store_bool, ITEM(res_dir.tls_verify_peer), 0, ITEM_DEFAULT, 1},
{"tlscacertificatefile", store_dir, ITEM(res_dir.tls_ca_certfile), 0, 0, 0},
{"tlscacertificatedir", store_dir, ITEM(res_dir.tls_ca_certdir), 0, 0, 0},
{"tlscertificate", store_dir, ITEM(res_dir.tls_certfile), 0, 0, 0},
{"tlskey", store_dir, ITEM(res_dir.tls_keyfile), 0, 0, 0},
{"tlsdhfile", store_dir, ITEM(res_dir.tls_dhfile), 0, 0, 0},
{"tlsallowedcn", store_alist_str, ITEM(res_dir.tls_allowed_cns), 0, 0, 0},
- {NULL, NULL, NULL, 0, 0, 0}
+ {NULL, NULL, {0}, 0, 0, 0}
};
/* Message resource */
if (res->res_client.FDaddrs) {
free_addresses(res->res_client.FDaddrs);
}
+
+ if (res->res_client.pki_keypair_file) {
+ free(res->res_client.pki_keypair_file);
+ }
+ if (res->res_client.pki_keypair) {
+ crypto_keypair_free(res->res_client.pki_keypair);
+ }
+
+ if (res->res_client.pki_signing_key_files) {
+ delete res->res_client.pki_signing_key_files;
+ }
+ if (res->res_client.pki_signers) {
+ X509_KEYPAIR *keypair;
+ foreach_alist(keypair, res->res_client.pki_signers) {
+ crypto_keypair_free(keypair);
+ }
+ delete res->res_client.pki_signers;
+ }
+
+ if (res->res_client.pki_master_key_files) {
+ delete res->res_client.pki_master_key_files;
+ }
+
+ if (res->res_client.pki_recipients) {
+ X509_KEYPAIR *keypair;
+ foreach_alist(keypair, res->res_client.pki_recipients) {
+ crypto_keypair_free(keypair);
+ }
+ delete res->res_client.pki_recipients;
+ }
+
if (res->res_client.tls_ctx) {
free_tls_context(res->res_client.tls_ctx);
}
if ((res = (URES *)GetResWithName(R_CLIENT, res_all.res_dir.hdr.name)) == NULL) {
Emsg1(M_ABORT, 0, _("Cannot find Client resource %s\n"), res_all.res_dir.hdr.name);
}
+ res->res_client.pki_signing_key_files = res_all.res_client.pki_signing_key_files;
+ res->res_client.pki_master_key_files = res_all.res_client.pki_master_key_files;
+
+ res->res_client.pki_signers = res_all.res_client.pki_signers;
+ res->res_client.pki_recipients = res_all.res_client.pki_recipients;
+
res->res_client.messages = res_all.res_client.messages;
break;
default: