Christian Decker
cae283087d
sphinx: Committing the onion packet to the payment-hash
...
The sphinx onion packet now commits to the HTLC payment-hash it is
associated with. This prevents replay attacks with the same onion.
2017-01-16 11:14:30 +10:30
Christian Decker
91b17d45d8
sphinx: Removing last vestiges of the end-to-end payload
...
So far this was simply set to a zero-length end-to-end payload. We
don't have any plans of re-adding it for the moment, so let's get rid
of the unused code.
2017-01-16 11:14:15 +10:30
Christian Decker
285b8b4698
sphinx: Use libsecp256k1 to generate shared secrets
...
So far we did it on our own, but since the spec specifies that we use
the libsecp256k1 version anyway, we can remove our own implementation.
2017-01-16 11:08:36 +10:30
Christian Decker
679dec3e6a
sphinx: Actually use the full pubkey in ECDH key generation
...
The spec says that we use the libsecp256k1 style ECDH, which uses the
full compressed pubkey from the scalar multiplication which is then
hashed. This is in contrast to the btcsuite implementation which was
only using the hashed X-coordinate.
2017-01-16 11:08:36 +10:30
Christian Decker
3d20cf559a
gitignore: Ignoring some of the test-binaries.
2017-01-13 19:45:53 +01:00
Rusty Russell
6bf3c30a10
lightningd/Makefile: fix check-source
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-13 10:51:57 +10:30
Christian Decker
b41d71da30
Makefile: Making sure header vars are populated correctly
...
The problem with wire headers not being generated in time before stuff
depended on it turns out to be related with inclusion order of
sub-makefiles. The inclusions must preceed the use of
LIGHTNINGD_HEADERS since they append to that variable.
2017-01-13 10:50:07 +10:30
Rusty Russell
91209d4d66
ccan: forgotten test files after last update.
...
Also add ccan/config.h to .gitignore.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-11 10:17:33 +10:30
Rusty Russell
33748bf119
lightningd/Makefile: combine all headers (wire/gen was missing)
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-11 10:15:27 +10:30
Rusty Russell
73d07ce441
libsodium: use our local submodule.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-11 10:04:26 +10:30
Rusty Russell
1c6e28eaac
libsodium: add as submodule.
...
We need 1.0.9+ for the IETF chacha variants; Ubuntu xenial only ships
with 1.0.8.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-11 09:29:40 +10:30
Rusty Russell
3af081aded
Makefile: make all lightningd objects depend on all lightningd headers.
...
Christian reported that we weren't generating some gen_ files.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-11 09:16:29 +10:30
Rusty Russell
1e34e5344d
lightningd/lightningd: add getpeers command.
...
This has an optional log level if you want to see logs for the peers.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:34 +10:30
Rusty Russell
dc8b174e3a
lightningd/lightningd: maintain a per-peer log.
...
At the moment we just log each condition change.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
83b156517f
lightningd/lightningd: maintain "condition" for each peer.
...
This lets us return better messages to the connect json command on failure.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
7aaffda779
lightningd/lightningd: finish connect command once gossip started.
...
This is after the INIT message is received, so we know there are no
incompatible features.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
c536616bee
lightningd/lightningd: wire up lightningd_gossip.
...
Now we hand peers off to the gossip daemon, to do the INIT handshake and
re-transmit/receive gossip. They may stay there forever if neither we nor
them wants to open a channel.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
1800e84db7
subdaemon: callback to handle subdaemon status updates.
...
It's a bit messy, since some status messages are accompanied by an FD:
in this case, the handler returns STATUS_NEED_FD and we read that then
re-call the handler.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
21a5c62ead
lightningd_gossip: daemon to look after peers which don't a channel (yet)
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
03758af4e1
lightningd/lightningd: create unique ID for each peer.
...
This distinguishes them before they have an ID, and also if the daemon
doesn't know the ID.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
bf118f1b86
lightningd/lightningd: add connect command.
...
Unlike the old daemon, this just connects; a separate command will be needed
to create a channel.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
211491f4d7
lightningd/lightningd: add lightning_handshake.
...
Now we do crypto handshake when peer comes in.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
78841456e0
lightningd/handshake: test handshake, produce BOLT 8 test vectors.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
32e1b5bb06
lightningd/handshake: simple daemon to do BOLT 8 crypto handshake.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
6f5fed17d8
lightningd/test: simple black-box tests.
...
These use the same infrastructure as the daemon/test blackbox tests,
so they're not currently wired into make check; use make
"lightningd-blackbox-tests".
2017-01-10 15:38:33 +10:30
Rusty Russell
e39d09d5a5
daemon/test/scripts: maek slightly more general for lightningd/lightningd
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
0444d68197
lightningd/lightningd: add rpc interface.
...
daemon/lightning-cli works with this.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
542e6844f7
lightningd/lightningd: start HSM at initialization time.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
015eb072b8
Makefile: split CORE_SRC into CORE_SRC, CORE_TX_SRC and CORE_PROTOBUF_SRC
...
With the lightningd daemon split, we don't need them all.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
10b8dc5950
lightningd/hsm: simple daemon to control the keys.
...
This provides APIs to access the keys.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
6a089ce112
cryptomsg: add towire/fromwire for crypto state.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
89a06734c4
lightningd/cryptomsg: test routines.
...
This creates output similar to the BOLT #8 test vectors.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
a7f682c66e
lightningd/cryptomsg: routines to encrypt on the wire.
...
After the handshake, it's a simple matter of AEAD and key rotation.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
faebb87d01
lightningd/subdaemon: routines to create daemons and get request/response.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:38:33 +10:30
Rusty Russell
8bf33c7839
lightningd/lightningd: daemon for controlling the other daemons.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:37:51 +10:30
Rusty Russell
4b9eb19c68
status: don't send overlarge messages.
...
We'll assert if we try: better to truncate, trace a warning, and let the
recipient complain about a truncated message,
This is particularly an issue when we're sending encapsulated messages;
this avoids extra checks in the caller.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:25:20 +10:30
Rusty Russell
a0ac5c276e
status: API for status reporting.
...
The API formalizes how daemons should report their statuses back to
the main lightningd. It's a simple write API, which includes tracing
support (currently it always sends traces, later it could send iff
there's a failure, for example).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:24:20 +10:30
Rusty Russell
1afb6c68ad
wire/Makefile: don't erase source in clean, fix deps.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:23:20 +10:30
Rusty Russell
a10ea23e0d
wire: add ccan/io helpers to send (unencrypted) messages between damones.
...
Format is "le16 len; u8 message[len]" same as wire format specified in
BOLTs, even though the endian conversion is overkill for local messages.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:22:20 +10:30
Rusty Russell
9d316e39cd
wire/wire_sync: helper routines for direct read/write of messages.
...
Some of the simple daemons want to use this, as do the status messages.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:21:20 +10:30
Rusty Russell
2b8c7cc840
tools/generate-wire.py: don't allocate on unknown names.
...
This introduces a potential leak; use a static buffer.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:20:20 +10:30
Rusty Russell
1ba7f59d31
ccan: updates to get constant STR_MAX_CHARS and io_close_taken_fd.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:19:33 +10:30
Rusty Russell
42f474af18
wire: make lengths of variable fields implied by tal_count()
...
This is a much nicer interface, and works better in practice too.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:19:25 +10:30
Rusty Russell
7b1a4fc765
utils: add tal_hex() helper.
...
This is a shortcut when the data being dumped is a tal array.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:19:25 +10:30
Rusty Russell
4a233090ae
log: rename struct log_record to struct log_book.
...
I think "log entry" when I see "log record", so this name is better.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:18:26 +10:30
Rusty Russell
350d8edb7e
log: don't include dstate any more.
...
Before we had a global secp256k1_ctx we needed to hold this to print
out pubkeys, now it's completely orthogonal.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-10 15:17:51 +10:30
Christian Decker
07fbeee29d
coverage: Added coverage
makefile target
...
Added coverage files to `clean` and `coverage` target to generate HTML
report of coverage.
2017-01-10 09:27:55 +10:30
Christian Decker
bd6b9c377e
coverage: Enable compilation with --coverage
...
Setting the environment variable `COVERAGE=1` allows us to turn
coverage measurements on. This produces a number of auxiliary gcno and
gcda files which can then be converted into coverage reports.
I know line coverage and branch coverage is not a perfect metric, but
it might get us some more visibility into where more tests might be
needed.
2017-01-10 09:27:55 +10:30
Christian Decker
af43cc5e2c
makefile: Be more verbose in check-daemon-headers
...
So far it was failing silently, now it diffs the Makefile state
against the directory listing. This also fixes a bug when the locale
was not set the sort order would not match.
2017-01-10 09:26:06 +10:30
Rusty Russell
71ab218ed8
test/run-peer-wire.c: fix for variable-length reason field in update_fail_htlc
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-01-06 13:58:39 +10:30