#include "connection.h"
#include "compression.h"
#include "control.h"
+#include "crypto.h"
#include "device.h"
#include "digest.h"
#include "ecdsa.h"
static void keyexpire_handler(void *data) {
regenerate_key();
timeout_set(data, &(struct timeval) {
- keylifetime, rand() % 100000
+ keylifetime, jitter()
});
}
#endif
if(!strcasecmp(cipher, "none")) {
myself->incipher = NULL;
- } else if(!(myself->incipher = cipher_open_by_name(cipher))) {
- logger(DEBUG_ALWAYS, LOG_ERR, "Unrecognized cipher type!");
- free(cipher);
- return false;
+ } else {
+ myself->incipher = cipher_alloc();
+
+ if(!cipher_open_by_name(myself->incipher, cipher)) {
+ logger(DEBUG_ALWAYS, LOG_ERR, "Unrecognized cipher type!");
+ cipher_free(&myself->incipher);
+ free(cipher);
+ return false;
+ }
}
free(cipher);
timeout_add(&keyexpire_timeout, keyexpire_handler, &keyexpire_timeout, &(struct timeval) {
- keylifetime, rand() % 100000
+ keylifetime, jitter()
});
/* Check if we want to use message authentication codes... */
if(!strcasecmp(digest, "none")) {
myself->indigest = NULL;
- } else if(!(myself->indigest = digest_open_by_name(digest, maclength))) {
- logger(DEBUG_ALWAYS, LOG_ERR, "Unrecognized digest type!");
- free(digest);
- return false;
+ } else {
+ myself->indigest = digest_alloc();
+
+ if(!digest_open_by_name(myself->indigest, digest, maclength)) {
+ logger(DEBUG_ALWAYS, LOG_ERR, "Unrecognized digest type!");
+ digest_free(&myself->indigest);
+ free(digest);
+ return false;
+ }
}
free(digest);