• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lightningnetwork / lnd / 12313002221

13 Dec 2024 09:25AM UTC coverage: 57.486% (+8.6%) from 48.92%
12313002221

push

github

web-flow
Merge pull request #9343 from ellemouton/contextGuard

fn: expand the ContextGuard and add tests

101902 of 177264 relevant lines covered (57.49%)

24909.26 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/netann/node_announcement.go
1
package netann
2

3
import (
4
        "image/color"
5
        "net"
6
        "time"
7

8
        "github.com/lightningnetwork/lnd/keychain"
9
        "github.com/lightningnetwork/lnd/lnwallet"
10
        "github.com/lightningnetwork/lnd/lnwire"
11
)
12

13
// NodeAnnModifier is a closure that makes in-place modifications to an
14
// lnwire.NodeAnnouncement.
15
type NodeAnnModifier func(*lnwire.NodeAnnouncement)
16

17
// NodeAnnSetAlias is a functional option that sets the alias of the
18
// given node announcement.
19
func NodeAnnSetAlias(alias lnwire.NodeAlias) func(*lnwire.NodeAnnouncement) {
×
20
        return func(nodeAnn *lnwire.NodeAnnouncement) {
×
21
                nodeAnn.Alias = alias
×
22
        }
×
23
}
24

25
// NodeAnnSetAddrs is a functional option that allows updating the addresses of
26
// the given node announcement.
27
func NodeAnnSetAddrs(addrs []net.Addr) func(*lnwire.NodeAnnouncement) {
×
28
        return func(nodeAnn *lnwire.NodeAnnouncement) {
×
29
                nodeAnn.Addresses = addrs
×
30
        }
×
31
}
32

33
// NodeAnnSetColor is a functional option that sets the color of the
34
// given node announcement.
35
func NodeAnnSetColor(newColor color.RGBA) func(*lnwire.NodeAnnouncement) {
×
36
        return func(nodeAnn *lnwire.NodeAnnouncement) {
×
37
                nodeAnn.RGBColor = newColor
×
38
        }
×
39
}
40

41
// NodeAnnSetFeatures is a functional option that allows updating the features of
42
// the given node announcement.
43
func NodeAnnSetFeatures(features *lnwire.RawFeatureVector) func(*lnwire.NodeAnnouncement) {
×
44
        return func(nodeAnn *lnwire.NodeAnnouncement) {
×
45
                nodeAnn.Features = features
×
46
        }
×
47
}
48

49
// NodeAnnSetTimestamp is a functional option that sets the timestamp of the
50
// announcement to the current time, or increments it if the timestamp is
51
// already in the future.
52
func NodeAnnSetTimestamp(nodeAnn *lnwire.NodeAnnouncement) {
×
53
        newTimestamp := uint32(time.Now().Unix())
×
54
        if newTimestamp <= nodeAnn.Timestamp {
×
55
                // Increment the prior value to  ensure the timestamp
×
56
                // monotonically increases, otherwise the announcement won't
×
57
                // propagate.
×
58
                newTimestamp = nodeAnn.Timestamp + 1
×
59
        }
×
60
        nodeAnn.Timestamp = newTimestamp
×
61
}
62

63
// SignNodeAnnouncement signs the lnwire.NodeAnnouncement provided, which
64
// should be the most recent, valid update, otherwise the timestamp may not
65
// monotonically increase from the prior.
66
func SignNodeAnnouncement(signer lnwallet.MessageSigner,
67
        keyLoc keychain.KeyLocator, nodeAnn *lnwire.NodeAnnouncement) error {
×
68

×
69
        // Create the DER-encoded ECDSA signature over the message digest.
×
70
        sig, err := SignAnnouncement(signer, keyLoc, nodeAnn)
×
71
        if err != nil {
×
72
                return err
×
73
        }
×
74

75
        // Parse the DER-encoded signature into a fixed-size 64-byte array.
76
        nodeAnn.Signature, err = lnwire.NewSigFromSignature(sig)
×
77
        return err
×
78
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc