uint8_t *cell_out)
{
ssize_t cell_len;
- char buf[RELAY_PAYLOAD_SIZE] = {0};
tor_assert(circ_nonce);
tor_assert(enc_key);
tor_assert(cell_out);
- cell_len = rend_service_encode_establish_intro_cell(buf, sizeof(buf),
+ memwipe(cell_out, 0, RELAY_PAYLOAD_SIZE);
+
+ cell_len = rend_service_encode_establish_intro_cell((char*)cell_out,
+ RELAY_PAYLOAD_SIZE,
enc_key, circ_nonce);
- tor_assert(cell_len <= RELAY_PAYLOAD_SIZE);
- if (cell_len >= 0) {
- memcpy(cell_out, buf, cell_len);
- }
return cell_len;
}
tmp_cell_enc, tmp_cell_enc_len - tmp_cell_mac_offset);
handshake_ptr = trn_cell_establish_intro_getarray_handshake_mac(cell);
memcpy(handshake_ptr, mac, sizeof(mac));
+
+ memwipe(mac, 0, sizeof(mac));
+ memwipe(tmp_cell_enc, 0, sizeof(tmp_cell_enc));
}
/* Calculate the cell signature SIG. */
/* Copy the signature into the cell. */
sig_ptr = trn_cell_establish_intro_getarray_sig(cell);
memcpy(sig_ptr, sig.sig, sig_len);
+
+ memwipe(tmp_cell_enc, 0, sizeof(tmp_cell_enc));
}
/* Encode the cell. Can't be bigger than a standard cell. */
/* Extract digest and put it in the param. */
crypto_digest_get_digest(digest, (char *) param_out, DIGEST256_LEN);
crypto_digest_free(digest);
+
+ memwipe(nonce, 0, sizeof(nonce));
}
/* Using an ed25519 public key and version to build the checksum of an
ED25519_PUBKEY_LEN);
crypto_digest_get_digest(digest, (char *) subcred_out, DIGEST256_LEN);
crypto_digest_free(digest);
+
+ memwipe(credential, 0, sizeof(credential));
}
/* From the given list of hidden service ports, find the matching one from the
build_blinded_key_param(pk, secret, secret_len,
time_period_num, get_time_period_length(), param);
ed25519_public_blind(blinded_pk_out, pk, param);
+
+ memwipe(param, 0, sizeof(param));
}
/* From a given ed25519 keypair kp and an optional secret, compute a blinded
build_blinded_key_param(&kp->pubkey, secret, secret_len,
time_period_num, get_time_period_length(), param);
ed25519_keypair_blind(blinded_kp_out, kp, param);
+
+ memwipe(param, 0, sizeof(param));
}
/* Return true if overlap mode is active given the date in consensus. If