core-lightning/common
Rusty Russell f7ebbb2ec5 common: make sphinx code ignorant of payload format.
Now "raw_payload" is always the complete string (including realm or length
bytes at the front).

This has several effects:
1. We can receive an decrypt an onion which is grossly malformed.
2. We can still hand this to the htlc_accepted hook.
3. We then fail it unless the htlc_accepted accepts it manually.
4. The createonion API now takes the raw payload, and does not know
   anything about "style".

The only caveat is that the sphinx code needs to know the payload
length: we have a call for that, which simply tells it to copy the
entire onion (and treat us as the final node) if it's invalid.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2019-12-09 14:33:31 +01:00
..
test common: make sphinx code ignorant of payload format. 2019-12-09 14:33:31 +01:00
addr.c addr: handle P2SH/P2PKH in scriptpubkey encoding 2019-11-13 03:31:20 +00:00
addr.h addr: handle P2SH/P2PKH in scriptpubkey encoding 2019-11-13 03:31:20 +00:00
amount.c elements: Add amount_asset to support more than just plain satoshis 2019-10-03 04:32:57 +00:00
amount.h elements: Add amount_asset to support more than just plain satoshis 2019-10-03 04:32:57 +00:00
base32.c Remove tal_len, use tal_count() or tal_bytelen(). 2018-07-30 11:31:17 +02:00
base32.h common/base32: make this a simple tal-wrapper around ccan/base32. 2018-05-10 02:28:44 +00:00
base64.c Init commit to be able to create a tor static service on the fly. 2019-12-03 23:35:18 +01:00
base64.h Init commit to be able to create a tor static service on the fly. 2019-12-03 23:35:18 +01:00
bech32.c bech32: fix overflow bug. 2018-11-02 05:58:01 +00:00
bech32.h Use expected LIGHTNING_DIR_FILE_H define 2018-03-25 23:54:21 +00:00
bech32_util.c Remove tal_len, use tal_count() or tal_bytelen(). 2018-07-30 11:31:17 +02:00
bech32_util.h common: Moving some bech32 related utilities to bech32_util 2018-04-25 12:34:55 +02:00
bigsize.c bigsize: insist in minimal representation in bigsize_get(). 2019-07-31 23:25:59 +00:00
bigsize.h bigsize: make it a proper first-class type. 2019-07-31 23:25:59 +00:00
bip32.c common: move some files out of lightningd/ 2017-08-29 17:54:14 +02:00
bip32.h headers: fix up header idempotent lines. 2017-08-29 17:54:14 +02:00
bolt11.c don't enforce description_hash checking 2019-11-25 18:15:35 +01:00
bolt11.h common/bolt11: add secret support. 2019-11-24 23:33:17 +00:00
channel_config.c struct channel_config: use amount_sat / amount_msat. 2019-02-21 08:01:37 +00:00
channel_config.h bolt: update to BOLT spec changes (extract format + type specifications) 2019-07-16 06:10:58 +00:00
close_tx.c elements: Change function prefix to elements_ for some functions 2019-10-03 04:32:57 +00:00
close_tx.h tx: Add chainparams to struct bitcoin_tx as context 2019-07-31 23:22:54 +00:00
configdir.c config: limit depth on includes. 2019-11-23 22:42:34 +00:00
configdir.h config: explicitly disallow nonsensical options. 2019-11-23 22:42:34 +00:00
crypto_state.c crypto_state: move to its own file. 2017-10-20 18:31:32 +02:00
crypto_state.h crypto_state: move to its own file. 2017-10-20 18:31:32 +02:00
crypto_sync.c common: allow subdaemons to specify the node_id in status messages. 2019-11-18 04:50:22 +00:00
crypto_sync.h common/per_per_state: generalize lightningd/peer_comm Part 1 2019-06-04 01:29:39 +00:00
cryptomsg.c transition from status_trace() to status_debug 2019-09-10 02:02:51 +00:00
cryptomsg.h common/cryptomsg: remove unused async routines. 2018-09-28 04:14:28 +00:00
daemon.c daemons: initialize libsodium at setup 2019-10-09 22:00:38 -05:00
daemon.h pytest: backtrace on internal errors in subdaemons. 2019-04-08 04:41:43 +00:00
daemon_conn.c status: suppress status_trace/status_debug messages if queue too long. 2019-05-03 11:42:48 +02:00
daemon_conn.h status: suppress status_trace/status_debug messages if queue too long. 2019-05-03 11:42:48 +02:00
decode_array.c gossipd: hand (any) timestamps through to callback for query_channel_range. 2019-10-10 21:48:52 -05:00
decode_array.h gossipd: hand (any) timestamps through to callback for query_channel_range. 2019-10-10 21:48:52 -05:00
derive_basepoints.c developer: add --dev-force-channel-secrets. 2019-07-17 12:55:37 -05:00
derive_basepoints.h developer: add --dev-force-channel-secrets. 2019-07-17 12:55:37 -05:00
dev_disconnect.c dev_disconnect: make it more reliable. 2019-10-10 21:48:52 -05:00
dev_disconnect.h Add DEVELOPER flag, set by default. 2017-10-26 12:53:09 +02:00
features.c common/features: add payment_secret feature if EXPERIMENTAL. 2019-11-24 23:33:17 +00:00
features.h common/features: clean up feature handling for different cases. 2019-11-24 23:33:17 +00:00
funding_tx.c elements: Change function prefix to elements_ for some functions 2019-10-03 04:32:57 +00:00
funding_tx.h tx: Add chainparams to struct bitcoin_tx as context 2019-07-31 23:22:54 +00:00
gossip_constants.h gossipd: restore a flag for fast pruning 2019-09-27 00:01:34 +00:00
gossip_rcvd_filter.c common/gossip_rcvd_filter: avoid DoS. 2019-09-06 14:35:01 +02:00
gossip_rcvd_filter.h common/gossip_rcvd_filter: cache for received gossip. 2019-09-06 14:35:01 +02:00
gossip_store.c gossipd: handle a "push" marker into the gossip_store. 2019-11-04 17:50:58 +01:00
gossip_store.h gossipd: handle a "push" marker into the gossip_store. 2019-11-04 17:50:58 +01:00
hash_u5.c common/hash_u5: routines to hash 5 bit values. 2017-11-01 01:09:23 +00:00
hash_u5.h common/hash_u5: routines to hash 5 bit values. 2017-11-01 01:09:23 +00:00
htlc.h Remove unused functions not covered by unit tests 2018-03-28 11:22:05 +02:00
htlc_state.c common: absorb remaining files from daemon/ 2017-08-29 17:54:14 +02:00
htlc_state.h Fix a-vs-an typos 2018-02-08 22:49:34 +01:00
htlc_trim.c channeld: extract HTLC trim logic into common. 2019-06-11 23:19:11 +00:00
htlc_trim.h channeld: extract HTLC trim logic into common. 2019-06-11 23:19:11 +00:00
htlc_tx.c elements: Change function prefix to elements_ for some functions 2019-10-03 04:32:57 +00:00
htlc_tx.h elements: Remove global is_elements variable in favor of chainparams 2019-10-03 04:32:57 +00:00
htlc_wire.c daemons: use amount_msat/amount_sat in all internal wire transfers. 2019-02-21 08:01:37 +00:00
htlc_wire.h daemons: use amount_msat/amount_sat in all internal wire transfers. 2019-02-21 08:01:37 +00:00
initial_channel.c channeld: remove chainparams local parameter. 2019-11-20 20:41:53 +01:00
initial_channel.h channeld: remove chainparams local parameter. 2019-11-20 20:41:53 +01:00
initial_commit_tx.c channeld: remove chainparams local parameter. 2019-11-20 20:41:53 +01:00
initial_commit_tx.h channeld: remove chainparams local parameter. 2019-11-20 20:41:53 +01:00
io_lock.c common/io_lock: add helper to query if lock is taken. 2018-10-19 22:02:11 +00:00
io_lock.h common/io_lock: add helper to query if lock is taken. 2018-10-19 22:02:11 +00:00
json.c json: Add helper to extract a secret from JSON 2019-12-01 15:40:47 +01:00
json.h json: Add helper to extract a secret from JSON 2019-12-01 15:40:47 +01:00
json_command.h param: make command_fail/command_success WARN_UNUSED_RESULT. 2018-12-20 03:22:32 +00:00
json_helpers.c dev-forget-channel: accept passing in channel_id 2019-10-10 05:57:45 +00:00
json_helpers.h dev-forget-channel: accept passing in channel_id 2019-10-10 05:57:45 +00:00
json_tok.c common: make sphinx code ignorant of payload format. 2019-12-09 14:33:31 +01:00
json_tok.h json-rpc: Add helper for an array of secrets 2019-12-01 15:40:47 +01:00
jsonrpc_errors.h funding: don't allow funding new channels until we're synced. 2019-08-10 22:09:09 +02:00
key_derive.c Make option_static_remotekey non-EXPERIMENTAL now it's in spec. 2019-09-30 01:50:44 +00:00
key_derive.h headers: fix up header idempotent lines. 2017-08-29 17:54:14 +02:00
keyset.c Make option_static_remotekey non-EXPERIMENTAL now it's in spec. 2019-09-30 01:50:44 +00:00
keyset.h derive_keyset: don't rotate key for remote iff option_static_remotekey. 2019-09-10 16:18:25 -05:00
Makefile common: make sphinx code ignorant of payload format. 2019-12-09 14:33:31 +01:00
memleak.c lightningd: move basic parameter parsing into common/configdir 2019-11-23 22:42:34 +00:00
memleak.h common/memleak: simplify notleak() handling. 2019-09-06 14:35:01 +02:00
msg_queue.c status: suppress status_trace/status_debug messages if queue too long. 2019-05-03 11:42:48 +02:00
msg_queue.h status: suppress status_trace/status_debug messages if queue too long. 2019-05-03 11:42:48 +02:00
node_id.c common/node_id: new type. 2019-04-09 12:37:16 -07:00
node_id.h common/node_id: new type. 2019-04-09 12:37:16 -07:00
onion.c common: make sphinx code ignorant of payload format. 2019-12-09 14:33:31 +01:00
onion.h common: make sphinx code ignorant of payload format. 2019-12-09 14:33:31 +01:00
overflows.h The overflow check mul_overflows_s64(int64_t, int64_t) overflows and triggers UB :-) Remove it 2018-03-27 23:18:48 +00:00
param.c param: implement helpers for multiplex commands. 2019-07-16 21:39:14 +00:00
param.h param: implement helpers for multiplex commands. 2019-07-16 21:39:14 +00:00
peer_billboard.c common: peer_billboard() helper for updating the billboard. 2018-02-23 18:02:00 +01:00
peer_billboard.h common: peer_billboard() helper for updating the billboard. 2018-02-23 18:02:00 +01:00
peer_failed.c common: detect "sync error" from lnd. 2019-07-26 03:53:03 +00:00
peer_failed.h common/per_per_state: generalize lightningd/peer_comm Part 1 2019-06-04 01:29:39 +00:00
peer_status_wire.csv common: add peer_error flag to treat this error as "soft". 2019-07-26 03:53:03 +00:00
per_peer_state.c Move gossip_constants.h into common/ 2019-09-25 04:01:56 +00:00
per_peer_state.h developer: consolidiate gossip timing options into one --dev-fast-gossip. 2019-09-20 06:55:00 +00:00
permute_tx.c wally: Remove tx->input and tx->output, wally all the way! 2019-04-08 00:00:00 +00:00
permute_tx.h tx: Change permute_{inputs,outputs} to sort both old and new txs 2019-04-08 00:00:00 +00:00
ping.c transition from status_trace() to status_debug 2019-09-10 02:02:51 +00:00
ping.h pong: embed version string into ping replies if DEVELOPER=1. 2018-02-22 12:24:26 +01:00
pseudorand.c common: expose pseudorand_double 2019-04-16 21:22:13 +00:00
pseudorand.h common: expose pseudorand_double 2019-04-16 21:22:13 +00:00
read_peer_msg.c common: remove spammy debug msg. 2019-10-22 07:05:47 -07:00
read_peer_msg.h common/gossip_store: handle timestamp filtering. 2019-06-04 01:29:39 +00:00
socket_close.c closingd: Ensure proper closing of TCP socket. 2018-05-09 04:43:21 +00:00
socket_close.h closingd: Ensure proper closing of TCP socket. 2018-05-09 04:43:21 +00:00
sphinx.c common: make sphinx code ignorant of payload format. 2019-12-09 14:33:31 +01:00
sphinx.h common: make sphinx code ignorant of payload format. 2019-12-09 14:33:31 +01:00
status.c lightningd: enable io logging on subdaemons iff we're going to print it. 2019-11-18 04:50:22 +00:00
status.h common: allow subdaemons to specify the node_id in status messages. 2019-11-18 04:50:22 +00:00
status_levels.h status: separate types for peer failure vs "impossible" failures. 2018-02-08 19:07:12 +01:00
status_wire.c status: generate messages rather than marshal/unmarshal manually. 2018-02-08 19:07:12 +01:00
status_wire.csv common: allow subdaemons to specify the node_id in status messages. 2019-11-18 04:50:22 +00:00
status_wire.h status: generate messages rather than marshal/unmarshal manually. 2018-02-08 19:07:12 +01:00
subdaemon.c common: allow subdaemons to specify the node_id in status messages. 2019-11-18 04:50:22 +00:00
subdaemon.h common: reduce header differences for DEVELOPER vs non-DEVELOPER. 2019-09-06 14:35:01 +02:00
timeout.c utils: remove tal_tmpctx altogether, use global. 2018-03-16 00:16:10 +00:00
timeout.h headers: fix up header idempotent lines. 2017-08-29 17:54:14 +02:00
type_to_string.c type_to_string: return const char *. 2019-02-21 00:44:57 +00:00
type_to_string.h common/node_id: new type. 2019-04-09 12:37:16 -07:00
utils.c utils: add set_softref() / clear_softref(). 2019-10-10 21:48:52 -05:00
utils.h utils: add set_softref() / clear_softref(). 2019-10-10 21:48:52 -05:00
utxo.c common/utxo: make commitment_point optional in close_info. 2019-09-10 16:18:25 -05:00
utxo.h common/utxo: make commitment_point optional in close_info. 2019-09-10 16:18:25 -05:00
version.c Make version output simpler/more user-friendly 2018-04-04 02:32:44 +00:00
version.h Onboarding: Make log output texts friendlier to new users 2018-01-29 03:22:27 +00:00
wallet.c wallet: Rip out the txtypes type in favor of enum wallet_tx_type 2019-06-08 02:58:27 +00:00
wallet.h wallet: Add transaction annotation type 2019-10-07 20:03:24 -05:00
wallet_tx.c bitcoind: remove the chainparams member 2019-11-15 13:14:08 +01:00
wallet_tx.h fundchannel: Add a new 'utxo' parameter 2019-06-11 23:24:07 +00:00
wire_error.c Remove tal_len, use tal_count() or tal_bytelen(). 2018-07-30 11:31:17 +02:00
wire_error.h common: fix up BOLT 1 references. 2018-06-18 12:31:09 +02:00
wireaddr.c Init commit to be able to create a tor static service on the fly. 2019-12-03 23:35:18 +01:00
wireaddr.h Init commit to be able to create a tor static service on the fly. 2019-12-03 23:35:18 +01:00
withdraw_tx.c elements: Change function prefix to elements_ for some functions 2019-10-03 04:32:57 +00:00
withdraw_tx.h common: withdraw_tx() now use the array of struct bitcoin_tx_output as parameter 2019-09-05 16:05:36 -05:00