*/
#include "../system.h"
+#include "../random.h"
#include "ed25519.h"
-#define __TINC_ECDH_INTERNAL__
+#define TINC_ECDH_INTERNAL
typedef struct ecdh_t {
uint8_t private[64];
} ecdh_t;
-#include "../crypto.h"
#include "../ecdh.h"
#include "../xalloc.h"
ecdh_t *ecdh_generate_public(void *pubkey) {
- ecdh_t *ecdh = xzalloc(sizeof *ecdh);
+ ecdh_t *ecdh = xzalloc(sizeof(*ecdh));
uint8_t seed[32];
- randomize(seed, sizeof seed);
+ randomize(seed, sizeof(seed));
ed25519_create_keypair(pubkey, ecdh->private, seed);
+ memzero(seed, sizeof(seed));
return ecdh;
}
bool ecdh_compute_shared(ecdh_t *ecdh, const void *pubkey, void *shared) {
ed25519_key_exchange(shared, pubkey, ecdh->private);
- free(ecdh);
+ ecdh_free(ecdh);
return true;
}
void ecdh_free(ecdh_t *ecdh) {
- free(ecdh);
+ xzfree(ecdh, sizeof(ecdh_t));
}