snprintf(rr + strlen(rr), rrlen - 1 - strlen(rr), "\\%03d", c);
}
}
+ verbose(VERB_OPS, "DNSCrypt: adding local data to config: %s", rr);
snprintf(rr + strlen(rr), rrlen - 1 - strlen(rr), "\"");
cfg_strlist_insert(&cfg->local_data, strdup(rr));
free(rr);
env->keypairs = sodium_allocarray(env->keypairs_count,
sizeof *env->keypairs);
- env->certs = sodium_allocarray(env->signed_certs_count,
+ env->certs = sodium_allocarray(env->signed_certs_count,
sizeof *env->certs);
cert_id = 0U;
}
return 0;
}
+
+void
+dnsc_delete(struct dnsc_env *env)
+{
+ if(!env) {
+ return;
+ }
+ verbose(VERB_OPS, "DNSCrypt: Freeing environment.");
+ sodium_free(env->signed_certs);
+ sodium_free(env->certs);
+ sodium_free(env->keypairs);
+ free(env);
+}
struct dnsc_env {
struct SignedCert *signed_certs;
- dnsccert *certs;
+ dnsccert *certs;
size_t signed_certs_count;
uint8_t provider_publickey[crypto_sign_ed25519_PUBLICKEYBYTES];
uint8_t provider_secretkey[crypto_sign_ed25519_SECRETKEYBYTES];
};
/**
- * Initialize DNSCrypt enviroment.
+ * Initialize DNSCrypt environment.
* Initialize sodium library and allocate the dnsc_env structure.
* \return an uninitialized struct dnsc_env.
*/
*/
int dnsc_apply_cfg(struct dnsc_env *env, struct config_file *cfg);
+/**
+ * Delete DNSCrypt environment
+ *
+ */
+void dnsc_delete(struct dnsc_env *env);
+
/**
* handle a crypted dnscrypt request.
* Determine wether or not a query is coming over the dnscrypt listener and