@@ -450,6 +450,12 @@ pub trait KeysInterface {
450
450
///
451
451
/// This method must return a different value each time it is called.
452
452
fn get_channel_signer ( & self , inbound : bool , channel_value_satoshis : u64 ) -> Self :: Signer ;
453
+ /// Re-derives a `Signer` previously generated by [`get_channel_signer`]. A `Signer`'s
454
+ /// `channel_keys_id` can be obtained through it's trait method [`BaseSign::channel_keys_id`].
455
+ ///
456
+ /// [`get_channel_signer`]: KeysInterface::get_channel_signer
457
+ /// [`BaseSign::channel_keys_id`]: BaseSign::channel_keys_id
458
+ fn derive_channel_signer ( & self , channel_value_satoshis : u64 , channel_keys_id : [ u8 ; 32 ] ) -> Self :: Signer ;
453
459
/// Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
454
460
/// onion packets and for temporary channel IDs. There is no requirement that these be
455
461
/// persisted anywhere, though they must be unique across restarts.
@@ -1217,6 +1223,10 @@ impl KeysInterface for KeysManager {
1217
1223
self . derive_channel_keys ( channel_value_satoshis, & id)
1218
1224
}
1219
1225
1226
+ fn derive_channel_signer ( & self , channel_value_satoshis : u64 , channel_keys_id : [ u8 ; 32 ] ) -> Self :: Signer {
1227
+ self . derive_channel_keys ( channel_value_satoshis, & channel_keys_id)
1228
+ }
1229
+
1220
1230
fn get_secure_random_bytes ( & self ) -> [ u8 ; 32 ] {
1221
1231
let mut sha = self . rand_bytes_unique_start . clone ( ) ;
1222
1232
@@ -1311,6 +1321,10 @@ impl KeysInterface for PhantomKeysManager {
1311
1321
self . inner . get_channel_signer ( inbound, channel_value_satoshis)
1312
1322
}
1313
1323
1324
+ fn derive_channel_signer ( & self , channel_value_satoshis : u64 , channel_keys_id : [ u8 ; 32 ] ) -> Self :: Signer {
1325
+ self . inner . derive_channel_keys ( channel_value_satoshis, & channel_keys_id)
1326
+ }
1327
+
1314
1328
fn get_secure_random_bytes ( & self ) -> [ u8 ; 32 ] {
1315
1329
self . inner . get_secure_random_bytes ( )
1316
1330
}
0 commit comments