gossip: formalize passing of siphash_seed.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2018-02-26 13:02:58 +10:30
parent f7f55edcdb
commit cf3f19524e
7 changed files with 32 additions and 23 deletions

View File

@@ -313,7 +313,7 @@ static void json_getroute(struct command *cmd, const char *buffer, const jsmntok
* be selected) at the cost of increasing the probability of
* selecting the higher-fee paths. */
double fuzz = 75.0;
u8 *seed = tal_arrz(cmd, u8, sizeof(struct siphash_seed));
struct siphash_seed seed;
if (!json_get_params(cmd, buffer, params,
"id", &idtok,
@@ -373,13 +373,17 @@ static void json_getroute(struct command *cmd, const char *buffer, const jsmntok
fuzz = fuzz / 100.0;
if (seedtok) {
tal_resize(&seed, seedtok->end - seedtok->start);
memcpy(seed, buffer + seedtok->start,
if (seedtok->end - seedtok->start > sizeof(seed))
command_fail(cmd,
"seed must be < %zu bytes", sizeof(seed));
memset(&seed, 0, sizeof(seed));
memcpy(&seed, buffer + seedtok->start,
seedtok->end - seedtok->start);
} else
randombytes_buf(seed, tal_len(seed));
randombytes_buf(&seed, sizeof(seed));
u8 *req = towire_gossip_getroute_request(cmd, &source, &destination, msatoshi, riskfactor*1000, cltv, &fuzz, seed);
u8 *req = towire_gossip_getroute_request(cmd, &source, &destination, msatoshi, riskfactor*1000, cltv, &fuzz, &seed);
subd_req(ld->gossip, ld->gossip, req, -1, 0, json_getroute_reply, cmd);
command_still_pending(cmd);
}

View File

@@ -220,11 +220,11 @@ static void json_pay_getroute_reply(struct subd *gossip UNUSED,
* false if resolved now. */
static bool json_pay_try(struct pay *pay)
{
u8 *seed;
u8 *req;
struct command *cmd = pay->cmd;
struct timeabs now = time_now();
struct json_result *data;
struct siphash_seed seed;
/* If too late anyway, fail now. */
if (time_after(now, pay->expiry)) {
@@ -243,8 +243,7 @@ static bool json_pay_try(struct pay *pay)
pay->try_parent = tal(pay, char);
/* Generate random seed */
seed = tal_arr(pay->try_parent, u8, sizeof(struct siphash_seed));
randombytes_buf(seed, tal_len(seed));
randombytes_buf(&seed, sizeof(seed));
++pay->getroute_tries;
@@ -256,7 +255,7 @@ static bool json_pay_try(struct pay *pay)
pay->riskfactor,
pay->min_final_cltv_expiry,
&pay->fuzz,
seed);
&seed);
subd_req(pay->try_parent, cmd->ld->gossip, req, -1, 0, json_pay_getroute_reply, pay);
return true;