Skip to content

Commit 3fd5218

Browse files
committed
lnd: fix key derivation for good
1 parent 34263d7 commit 3fd5218

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

lnd/hdkeychain.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func DeriveChildren(key *hdkeychain.ExtendedKey, path []uint32) (
2828
*hdkeychain.ExtendedKey, error) {
2929

3030
var currentKey = key
31-
for _, pathPart := range path {
31+
for idx, pathPart := range path {
3232
derivedKey, err := currentKey.DeriveNonStandard(pathPart)
3333
if err != nil {
3434
return nil, err
@@ -45,7 +45,11 @@ func DeriveChildren(key *hdkeychain.ExtendedKey, path []uint32) (
4545
// derived directly.
4646
depth := derivedKey.Depth()
4747
keyID := pathPart - hdkeychain.HardenedKeyStart
48-
if (depth == 3 && keyID != 0) || (depth == 2 && keyID != 0) {
48+
nextID := uint32(0)
49+
if depth == 2 && len(path) > 2 {
50+
nextID = path[idx+1] - hdkeychain.HardenedKeyStart
51+
}
52+
if (depth == 2 && nextID != 0) || (depth == 3 && keyID != 0) {
4953
currentKey, err = hdkeychain.NewKeyFromString(
5054
derivedKey.String(),
5155
)

0 commit comments

Comments
 (0)