X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fnetwork_parse.c;h=4083e1ec8ff5017da20b5afcfd8bbed363535d48;hb=4a3262890ccdf889feeae9b48d612818ec571c67;hp=43c2258724a575abc4f1709609ba5c334f6b7bab;hpb=1d429f78567323c11f00e9f6e5ea1765e7c5c8c7;p=collectd.git diff --git a/src/libcollectdclient/network_parse.c b/src/libcollectdclient/network_parse.c index 43c22587..4083e1ec 100644 --- a/src/libcollectdclient/network_parse.c +++ b/src/libcollectdclient/network_parse.c @@ -45,21 +45,26 @@ #include #endif +#if HAVE_GCRYPT_H #define GCRYPT_NO_DEPRECATED #include +#endif #include #define DEBUG(...) printf(__VA_ARGS__) +#if HAVE_GCRYPT_H #if GCRYPT_VERSION_NUMBER < 0x010600 GCRY_THREAD_OPTION_PTHREAD_IMPL; #endif +#endif /* forward declaration because parse_sign_sha256()/parse_encrypt_aes256() and * network_parse() need to call each other. */ static int network_parse(void *data, size_t data_size, lcc_security_level_t sl, lcc_network_parse_options_t const *opts); +#if HAVE_GCRYPT_H static int init_gcrypt() { /* http://lists.gnupg.org/pipermail/gcrypt-devel/2003-August/000458.html * Because you can't know in a library whether another library has @@ -89,6 +94,7 @@ static int init_gcrypt() { gcry_control(GCRYCTL_INITIALIZATION_FINISHED); return 0; } +#endif typedef struct { uint8_t *data; @@ -341,6 +347,7 @@ static int parse_values(void *payload, size_t payload_size, return 0; } +#if HAVE_GCRYPT_H static int verify_sha256(void *payload, size_t payload_size, char const *username, char const *password, uint8_t hash_provided[32]) { @@ -373,6 +380,13 @@ static int verify_sha256(void *payload, size_t payload_size, return !!ret; } +#else /* !HAVE_GCRYPT_H */ +static int verify_sha256(void *payload, size_t payload_size, + char const *username, char const *password, + uint8_t hash_provided[32]) { + return ENOTSUP; +} +#endif static int parse_sign_sha256(void *signature, size_t signature_len, void *payload, size_t payload_size, @@ -408,6 +422,7 @@ static int parse_sign_sha256(void *signature, size_t signature_len, return network_parse(payload, payload_size, SIGN, opts); } +#if HAVE_GCRYPT_H static int decrypt_aes256(buffer_t *b, void *iv, size_t iv_size, char const *password) { gcry_cipher_hd_t cipher = NULL; @@ -480,6 +495,12 @@ static int parse_encrypt_aes256(void *data, size_t data_size, return network_parse(b->data, b->len, ENCRYPT, opts); } +#else /* !HAVE_GCRYPT_H */ +static int parse_encrypt_aes256(void *data, size_t data_size, + lcc_network_parse_options_t const *opts) { + return ENOTSUP; +} +#endif static int network_parse(void *data, size_t data_size, lcc_security_level_t sl, lcc_network_parse_options_t const *opts) { @@ -588,10 +609,14 @@ static int network_parse(void *data, size_t data_size, lcc_security_level_t sl, int lcc_network_parse(void *data, size_t data_size, lcc_network_parse_options_t opts) { if (opts.password_lookup) { +#if HAVE_GCRYPT_H int status; if ((status = init_gcrypt())) { return status; } +#else + return ENOTSUP; +#endif } return network_parse(data, data_size, NONE, &opts);