+ // If we ever see performance here being too slow then we should probably take this ExpandedKey as a parameter instead.
+ let keys = ExpandedKey::new(&keys_manager.get_inbound_payment_key_material());
+ let (payment_hash, payment_secret) = if let Some(payment_hash) = payment_hash {
+ let payment_secret = create_from_hash(
+ &keys,
+ amt_msat,
+ payment_hash,
+ invoice_expiry_delta_secs,
+ SystemTime::now()
+ .duration_since(UNIX_EPOCH)
+ .expect("Time must be > 1970")
+ .as_secs(),
+ )
+ .map_err(|_| SignOrCreationError::CreationError(CreationError::InvalidAmount))?;
+ (payment_hash, payment_secret)
+ } else {
+ create(
+ &keys,
+ amt_msat,
+ invoice_expiry_delta_secs,
+ &keys_manager,
+ SystemTime::now()
+ .duration_since(UNIX_EPOCH)
+ .expect("Time must be > 1970")
+ .as_secs(),
+ )
+ .map_err(|_| SignOrCreationError::CreationError(CreationError::InvalidAmount))?
+ };
+