projects
/
rust-lightning
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add blinded path {metadata} fields to Path, but disallow paying blinded paths for now
[rust-lightning]
/
lightning
/
src
/
routing
/
gossip.rs
diff --git
a/lightning/src/routing/gossip.rs
b/lightning/src/routing/gossip.rs
index 4f5b4f202c1c08dc7f3d1e534e46ce5b1be167d5..59268b840cd4c411b7a1545905bf17a4b6a24be0 100644
(file)
--- a/
lightning/src/routing/gossip.rs
+++ b/
lightning/src/routing/gossip.rs
@@
-16,6
+16,7
@@
use bitcoin::secp256k1;
use bitcoin::hashes::sha256d::Hash as Sha256dHash;
use bitcoin::hashes::Hash;
use bitcoin::hashes::sha256d::Hash as Sha256dHash;
use bitcoin::hashes::Hash;
+use bitcoin::hashes::hex::FromHex;
use bitcoin::hash_types::BlockHash;
use bitcoin::network::constants::Network;
use bitcoin::hash_types::BlockHash;
use bitcoin::network::constants::Network;
@@
-44,6
+45,7
@@
use crate::sync::{RwLock, RwLockReadGuard};
use core::sync::atomic::{AtomicUsize, Ordering};
use crate::sync::Mutex;
use core::ops::{Bound, Deref};
use core::sync::atomic::{AtomicUsize, Ordering};
use crate::sync::Mutex;
use core::ops::{Bound, Deref};
+use core::str::FromStr;
#[cfg(feature = "std")]
use std::time::{SystemTime, UNIX_EPOCH};
#[cfg(feature = "std")]
use std::time::{SystemTime, UNIX_EPOCH};
@@
-150,6
+152,15
@@
impl TryFrom<NodeId> for PublicKey {
}
}
}
}
+impl FromStr for NodeId {
+ type Err = bitcoin::hashes::hex::Error;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ let data: [u8; PUBLIC_KEY_SIZE] = FromHex::from_hex(s)?;
+ Ok(NodeId(data))
+ }
+}
+
/// Represents the network as nodes and channels between them
pub struct NetworkGraph<L: Deref> where L::Target: Logger {
secp_ctx: Secp256k1<secp256k1::VerifyOnly>,
/// Represents the network as nodes and channels between them
pub struct NetworkGraph<L: Deref> where L::Target: Logger {
secp_ctx: Secp256k1<secp256k1::VerifyOnly>,
@@
-1123,7
+1134,7
@@
impl Readable for NodeAnnouncementInfo {
///
/// Since node aliases are provided by third parties, they are a potential avenue for injection
/// attacks. Care must be taken when processing.
///
/// Since node aliases are provided by third parties, they are a potential avenue for injection
/// attacks. Care must be taken when processing.
-#[derive(Clone, Debug, PartialEq, Eq)]
+#[derive(Clone,
Copy,
Debug, PartialEq, Eq)]
pub struct NodeAlias(pub [u8; 32]);
impl fmt::Display for NodeAlias {
pub struct NodeAlias(pub [u8; 32]);
impl fmt::Display for NodeAlias {
@@
-1416,7
+1427,7
@@
impl<L: Deref> NetworkGraph<L> where L::Target: Logger {
features: msg.features.clone(),
last_update: msg.timestamp,
rgb: msg.rgb,
features: msg.features.clone(),
last_update: msg.timestamp,
rgb: msg.rgb,
- alias:
NodeAlias(msg.alias)
,
+ alias:
msg.alias
,
announcement_message: if should_relay { full_msg.cloned() } else { None },
});
announcement_message: if should_relay { full_msg.cloned() } else { None },
});
@@
-2049,7
+2060,7
@@
pub(crate) mod tests {
timestamp: 100,
node_id,
rgb: [0; 3],
timestamp: 100,
node_id,
rgb: [0; 3],
- alias:
[0; 32]
,
+ alias:
NodeAlias([0; 32])
,
addresses: Vec::new(),
excess_address_data: Vec::new(),
excess_data: Vec::new(),
addresses: Vec::new(),
excess_address_data: Vec::new(),
excess_data: Vec::new(),