use bitcoin::secp256k1::schnorr;
use lightning::sign::{Recipient, KeyMaterial, EntropySource, NodeSigner, SignerProvider};
+use lightning::ln::features::InitFeatures;
use lightning::ln::msgs::{self, DecodeError, OnionMessageHandler};
use lightning::ln::script::ShutdownScript;
use lightning::offers::invoice::UnsignedBolt12Invoice;
&keys_manager, &keys_manager, logger, &message_router, &offers_msg_handler,
&custom_msg_handler
);
- let mut pk = [2; 33]; pk[1] = 0xff;
- let peer_node_id_not_used = PublicKey::from_slice(&pk).unwrap();
- onion_messenger.handle_onion_message(&peer_node_id_not_used, &msg);
+
+ let peer_node_id = {
+ let mut secret_bytes = [0; 32];
+ secret_bytes[31] = 2;
+ let secret = SecretKey::from_slice(&secret_bytes).unwrap();
+ PublicKey::from_secret_key(&Secp256k1::signing_only(), &secret)
+ };
+
+ let mut features = InitFeatures::empty();
+ features.set_onion_messages_optional();
+ let init = msgs::Init { features, networks: None, remote_network_address: None };
+
+ onion_messenger.peer_connected(&peer_node_id, &init, false).unwrap();
+ onion_messenger.handle_onion_message(&peer_node_id, &msg);
}
}
#[test]
fn test_no_onion_message_breakage() {
+ let one_hop_om = "\
+ 020000000000000000000000000000000000000000000000000000000000000e01055600020000000000000\
+ 000000000000000000000000000000000000000000000000e01ae0276020000000000000000000000000000\
+ 000000000000000000000000000000000002020000000000000000000000000000000000000000000000000\
+ 000000000000e0101022a0000000000000000000000000000014551231950b75fc4402da1732fc9bebf0010\
+ 9500000000000000000000000000000004106d000000000000000000000000000000fd1092202a2a2a2a2a2\
+ a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
+ 000000000000000000000000000000000000000005600000000000000000000000000000000000000000000\
+ 000000000000000000";
+ let logger = TrackingLogger { lines: Mutex::new(HashMap::new()) };
+ super::do_test(&::hex::decode(one_hop_om).unwrap(), &logger);
+ {
+ let log_entries = logger.lines.lock().unwrap();
+ assert_eq!(log_entries.get(&("lightning::onion_message::messenger".to_string(),
+ "Received an onion message with path_id None and a reply_path".to_string())), Some(&1));
+ assert_eq!(log_entries.get(&("lightning::onion_message::messenger".to_string(),
+ "Sending onion message when responding to Custom onion message with path_id None".to_string())), Some(&1));
+ }
+
let two_unblinded_hops_om = "\
020000000000000000000000000000000000000000000000000000000000000e01055600020000000000000\
000000000000000000000000000000000000000000000000e01350433042102020202020202020202020202\