MCPcopy Create free account
hub / github.com/ElementsProject/lightning / derive_basepoints

Function derive_basepoints

common/derive_basepoints.c:64–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

62}
63
64bool derive_basepoints(const struct secret *seed,
65 struct pubkey *funding_pubkey,
66 struct basepoints *basepoints,
67 struct secrets *secrets,
68 struct sha256 *shaseed)
69{
70 struct keys keys;
71
72 derive_keys(seed, &keys);
73
74 if (secrets) {
75 secrets->funding_privkey = keys.f;
76 secrets->revocation_basepoint_secret = keys.r.secret;
77 secrets->payment_basepoint_secret = keys.p.secret;
78 secrets->htlc_basepoint_secret = keys.h.secret;
79 secrets->delayed_payment_basepoint_secret = keys.d.secret;
80 }
81
82 if (funding_pubkey) {
83 if (!pubkey_from_privkey(&keys.f, funding_pubkey))
84 return false;
85 }
86
87 if (basepoints) {
88 if (!pubkey_from_privkey(&keys.r, &basepoints->revocation)
89 || !pubkey_from_privkey(&keys.p, &basepoints->payment)
90 || !pubkey_from_privkey(&keys.h, &basepoints->htlc)
91 || !pubkey_from_privkey(&keys.d, &basepoints->delayed_payment))
92 return false;
93 }
94
95 /* BOLT #3:
96 *
97 * A node:
98 * - MUST select an unguessable 256-bit seed for each connection,
99 * - MUST NOT reveal the seed.
100 */
101 if (shaseed)
102 *shaseed = keys.shaseed;
103
104 return true;
105}
106
107bool per_commit_secret(const struct sha256 *shaseed,
108 struct secret *commit_secret,

Callers 7

mainFunction · 0.85

Calls 2

pubkey_from_privkeyFunction · 0.85
derive_keysFunction · 0.70

Tested by 1

mainFunction · 0.68