|
@@ -284,19 +284,17 @@ construct_ntor_key_map(void)
|
|
|
{
|
|
|
di_digest256_map_t *m = NULL;
|
|
|
|
|
|
- if (!fast_mem_is_zero((const char*)
|
|
|
- curve25519_onion_key.pubkey.public_key,
|
|
|
- CURVE25519_PUBKEY_LEN)) {
|
|
|
- dimap_add_entry(&m,
|
|
|
- curve25519_onion_key.pubkey.public_key,
|
|
|
+ const uint8_t *cur_pk = curve25519_onion_key.pubkey.public_key;
|
|
|
+ const uint8_t *last_pk = last_curve25519_onion_key.pubkey.public_key;
|
|
|
+
|
|
|
+ if (!fast_mem_is_zero((const char *)cur_pk, CURVE25519_PUBKEY_LEN)) {
|
|
|
+ dimap_add_entry(&m, cur_pk,
|
|
|
tor_memdup(&curve25519_onion_key,
|
|
|
sizeof(curve25519_keypair_t)));
|
|
|
}
|
|
|
- if (!fast_mem_is_zero((const char*)
|
|
|
- last_curve25519_onion_key.pubkey.public_key,
|
|
|
- CURVE25519_PUBKEY_LEN)) {
|
|
|
- dimap_add_entry(&m,
|
|
|
- last_curve25519_onion_key.pubkey.public_key,
|
|
|
+ if (!fast_mem_is_zero((const char*)last_pk, CURVE25519_PUBKEY_LEN) &&
|
|
|
+ tor_memneq(cur_pk, last_pk, CURVE25519_PUBKEY_LEN)) {
|
|
|
+ dimap_add_entry(&m, last_pk,
|
|
|
tor_memdup(&last_curve25519_onion_key,
|
|
|
sizeof(curve25519_keypair_t)));
|
|
|
}
|