mirror of
https://github.com/aljazceru/lightning.git
synced 2026-02-19 13:04:37 +01:00
sphinx: explain why parse_onionpacket fails.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
66de6b84be
commit
59febcb968
@@ -75,30 +75,31 @@ u8 *serialize_onionpacket(
|
||||
return dst;
|
||||
}
|
||||
|
||||
struct onionpacket *parse_onionpacket(
|
||||
const tal_t *ctx,
|
||||
const void *src,
|
||||
const size_t srclen
|
||||
)
|
||||
struct onionpacket *parse_onionpacket(const tal_t *ctx,
|
||||
const void *src,
|
||||
const size_t srclen,
|
||||
enum onion_type *why_bad)
|
||||
{
|
||||
struct onionpacket *m;
|
||||
int p = 0;
|
||||
u8 rawEphemeralkey[33];
|
||||
|
||||
if (srclen != TOTAL_PACKET_SIZE)
|
||||
return NULL;
|
||||
assert(srclen == TOTAL_PACKET_SIZE);
|
||||
|
||||
m = talz(ctx, struct onionpacket);
|
||||
|
||||
read_buffer(&m->version, src, 1, &p);
|
||||
if (m->version != 0x00) {
|
||||
// FIXME add logging
|
||||
*why_bad = WIRE_INVALID_ONION_VERSION;
|
||||
return tal_free(m);
|
||||
}
|
||||
read_buffer(rawEphemeralkey, src, 33, &p);
|
||||
|
||||
if (secp256k1_ec_pubkey_parse(secp256k1_ctx, &m->ephemeralkey, rawEphemeralkey, 33) != 1)
|
||||
if (secp256k1_ec_pubkey_parse(secp256k1_ctx, &m->ephemeralkey, rawEphemeralkey, 33) != 1) {
|
||||
*why_bad = WIRE_INVALID_ONION_KEY;
|
||||
return tal_free(m);
|
||||
}
|
||||
|
||||
read_buffer(&m->routinginfo, src, ROUTING_INFO_SIZE, &p);
|
||||
read_buffer(&m->mac, src, SECURITY_PARAMETER, &p);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <ccan/tal/tal.h>
|
||||
#include <secp256k1.h>
|
||||
#include <sodium/randombytes.h>
|
||||
#include <wire/gen_onion_wire.h>
|
||||
#include <wire/wire.h>
|
||||
|
||||
#define SECURITY_PARAMETER 32
|
||||
@@ -148,13 +149,13 @@ u8 *serialize_onionpacket(
|
||||
*
|
||||
* @ctx: tal context to allocate from
|
||||
* @src: buffer to read the packet from
|
||||
* @srclen: length of the @src
|
||||
* @srclen: length of the @src (must be TOTAL_PACKET_SIZE)
|
||||
* @why_bad: if NULL return, this is what was wrong with the packet.
|
||||
*/
|
||||
struct onionpacket *parse_onionpacket(
|
||||
const tal_t *ctx,
|
||||
const void *src,
|
||||
const size_t srclen
|
||||
);
|
||||
struct onionpacket *parse_onionpacket(const tal_t *ctx,
|
||||
const void *src,
|
||||
const size_t srclen,
|
||||
enum onion_type *why_bad);
|
||||
|
||||
struct onionreply {
|
||||
/* Node index in the path that is replying */
|
||||
|
||||
Reference in New Issue
Block a user