Skip to content

Commit 57341a1

Browse files
committed
fixup: Add method to derive Peer Storage encryption key
1 parent f6d6204 commit 57341a1

File tree

7 files changed

+18
-32
lines changed

7 files changed

+18
-32
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,8 @@ impl NodeSigner for KeyProvider {
338338
unreachable!()
339339
}
340340

341-
fn get_peer_storage_key(&self) -> SecretKey {
342-
SecretKey::from_slice(&[42; 32]).unwrap()
341+
fn get_peer_storage_key(&self) -> [u8; 32] {
342+
SecretKey::from_slice(&[42; 32]).unwrap().secret_bytes()
343343
}
344344

345345
fn sign_bolt12_invoice(

fuzz/src/full_stack.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,8 @@ impl NodeSigner for KeyProvider {
422422
Ok(secp_ctx.sign_ecdsa(&msg_hash, &self.node_secret))
423423
}
424424

425-
fn get_peer_storage_key(&self) -> SecretKey {
426-
SecretKey::from_slice(&[42; 32]).unwrap()
425+
fn get_peer_storage_key(&self) -> [u8; 32] {
426+
SecretKey::from_slice(&[42; 32]).unwrap().secret_bytes()
427427
}
428428
}
429429

fuzz/src/onion_message.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ impl NodeSigner for KeyProvider {
247247
unreachable!()
248248
}
249249

250-
fn get_peer_storage_key(&self) -> SecretKey {
250+
fn get_peer_storage_key(&self) -> [u8; 32] {
251251
unreachable!()
252252
}
253253
}

lightning/src/ln/blinded_payment_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1609,7 +1609,7 @@ fn route_blinding_spec_test_vector() {
16091609
fn sign_invoice(
16101610
&self, _invoice: &RawBolt11Invoice, _recipient: Recipient,
16111611
) -> Result<RecoverableSignature, ()> { unreachable!() }
1612-
fn get_peer_storage_key(&self) -> SecretKey { unreachable!() }
1612+
fn get_peer_storage_key(&self) -> [u8; 32] { unreachable!() }
16131613
fn sign_bolt12_invoice(
16141614
&self, _invoice: &UnsignedBolt12Invoice,
16151615
) -> Result<schnorr::Signature, ()> { unreachable!() }
@@ -1919,7 +1919,7 @@ fn test_trampoline_inbound_payment_decoding() {
19191919
fn sign_invoice(
19201920
&self, _invoice: &RawBolt11Invoice, _recipient: Recipient,
19211921
) -> Result<RecoverableSignature, ()> { unreachable!() }
1922-
fn get_peer_storage_key(&self) -> SecretKey { unreachable!() }
1922+
fn get_peer_storage_key(&self) -> [u8; 32] { unreachable!() }
19231923
fn sign_bolt12_invoice(
19241924
&self, _invoice: &UnsignedBolt12Invoice,
19251925
) -> Result<schnorr::Signature, ()> { unreachable!() }

lightning/src/sign/mod.rs

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -833,24 +833,10 @@ pub trait NodeSigner {
833833
///
834834
/// Implementations of this method must derive a secure encryption key.
835835
/// The key is used to encrypt or decrypt backups of our state stored with our peers.
836-
/// Thus, if you wish to rely on recovery using this method, you should use a key which can be re-derived from data which would be available after state loss (eg the wallet seed)
837836
///
838-
/// # Implementation Details
839-
///
840-
/// - The key must be derived from a node-specific secret to ensure uniqueness.
841-
/// - The derived key must be exactly **32 bytes** and suitable for symmetric
842-
/// encryption algorithms.
843-
///
844-
/// # Returns
845-
///
846-
/// A [`SecretKey`] representing the encryption key for peer storage.
847-
///
848-
/// # Usage
849-
///
850-
/// This method is invoked when encrypting or decrypting peer storage data.
851-
/// It must return the same key every time it is called, ensuring consistency
852-
/// for encryption and decryption operations.
853-
fn get_peer_storage_key(&self) -> SecretKey;
837+
/// Thus, if you wish to rely on recovery using this method, you should use a key which
838+
/// can be re-derived from data which would be available after state loss (eg the wallet seed)
839+
fn get_peer_storage_key(&self) -> [u8; 32];
854840

855841
/// Get node id based on the provided [`Recipient`].
856842
///
@@ -2116,8 +2102,8 @@ impl NodeSigner for KeysManager {
21162102
self.inbound_payment_key.clone()
21172103
}
21182104

2119-
fn get_peer_storage_key(&self) -> SecretKey {
2120-
self.peer_storage_key
2105+
fn get_peer_storage_key(&self) -> [u8; 32] {
2106+
self.peer_storage_key.secret_bytes()
21212107
}
21222108

21232109
fn sign_invoice(
@@ -2281,8 +2267,8 @@ impl NodeSigner for PhantomKeysManager {
22812267
self.inbound_payment_key.clone()
22822268
}
22832269

2284-
fn get_peer_storage_key(&self) -> SecretKey {
2285-
self.inner.peer_storage_key
2270+
fn get_peer_storage_key(&self) -> [u8; 32] {
2271+
self.inner.peer_storage_key.secret_bytes()
22862272
}
22872273

22882274
fn sign_invoice(

lightning/src/util/dyn_signer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ inner,
221221
invoice: &crate::offers::invoice::UnsignedBolt12Invoice
222222
) -> Result<secp256k1::schnorr::Signature, ()>,
223223
fn get_inbound_payment_key(,) -> ExpandedKey,
224-
fn get_peer_storage_key(,) -> SecretKey
224+
fn get_peer_storage_key(,) -> [u8; 32]
225225
);
226226

227227
delegate!(DynKeysInterface, SignerProvider,
@@ -290,7 +290,7 @@ delegate!(DynPhantomKeysInterface, NodeSigner,
290290
fn sign_bolt12_invoice(, invoice: &crate::offers::invoice::UnsignedBolt12Invoice
291291
) -> Result<secp256k1::schnorr::Signature, ()>,
292292
fn get_inbound_payment_key(,) -> ExpandedKey,
293-
fn get_peer_storage_key(,) -> SecretKey
293+
fn get_peer_storage_key(,) -> [u8; 32]
294294
);
295295

296296
impl SignerProvider for DynPhantomKeysInterface {

lightning/src/util/test_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1452,7 +1452,7 @@ impl NodeSigner for TestNodeSigner {
14521452
unreachable!()
14531453
}
14541454

1455-
fn get_peer_storage_key(&self) -> SecretKey {
1455+
fn get_peer_storage_key(&self) -> [u8; 32] {
14561456
unreachable!()
14571457
}
14581458

@@ -1534,7 +1534,7 @@ impl NodeSigner for TestKeysInterface {
15341534
self.backing.sign_invoice(invoice, recipient)
15351535
}
15361536

1537-
fn get_peer_storage_key(&self) -> SecretKey {
1537+
fn get_peer_storage_key(&self) -> [u8; 32] {
15381538
self.backing.get_peer_storage_key()
15391539
}
15401540

0 commit comments

Comments
 (0)