Skip to content

Commit c068a44

Browse files
chore: clarify childChainCode naming
chore: clarify childChainCode naming
1 parent 5b1a230 commit c068a44

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

assets/arc-0052/bip32-ed25519.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,10 @@ export function deriveChildNodePrivate(
9595
const kR: Buffer = Buffer.from(extendedKey.subarray(32, 64));
9696
const cc: Uint8Array = extendedKey.subarray(64, 96);
9797

98+
// Steps 1 & 3: Produce Z and child chain code, in accordance with hardening branching logic
9899
const { z, childChainCode } = index < 0x80000000 ? derivedNonHardened(kL, cc, index) : deriveHardened(kL, kR, cc, index);
99100

100-
const chainCode = childChainCode.subarray(32, 64);
101+
// Step 2: compute child private key
101102
const zLeft = z.subarray(0, 32); // 32 bytes
102103
const zRight = z.subarray(32, 64);
103104

@@ -139,7 +140,7 @@ export function deriveChildNodePrivate(
139140
Buffer.from(right).copy(rightBuffer, 0, 0, right.length) // padding with zeros if needed
140141

141142
// return (kL, kR, c)
142-
return Buffer.concat([left, rightBuffer, chainCode]);
143+
return Buffer.concat([left, rightBuffer, childChainCode]);
143144
}
144145

145146
/**
@@ -169,7 +170,6 @@ export function deriveChildNodePublic(extendedKey: Uint8Array, index: number, g:
169170
data[0] = 0x02;
170171
const z: Buffer = createHmac("sha512", cc).update(data).digest();
171172

172-
173173
// Step 2: Compute child public key
174174
const zL: Uint8Array = trunc_256_minus_g_bits(z.subarray(0, 32), g)
175175

@@ -188,10 +188,10 @@ export function deriveChildNodePublic(extendedKey: Uint8Array, index: number, g:
188188

189189
// Step 3: Compute child chain code
190190
data[0] = 0x03;
191-
const i: Buffer = createHmac("sha512", cc).update(data).digest();
192-
const chainCode: Buffer = i.subarray(32, 64);
191+
const fullChildChainCode: Buffer = createHmac("sha512", cc).update(data).digest();
192+
const childChainCode: Buffer = fullChildChainCode.subarray(32, 64);
193193

194-
return Buffer.concat([crypto_core_ed25519_add(p, pk), chainCode]);
194+
return Buffer.concat([crypto_core_ed25519_add(p, pk), childChainCode]);
195195
}
196196

197197
/**
@@ -218,7 +218,8 @@ function derivedNonHardened(
218218
const z: Buffer = createHmac("sha512", cc).update(data).digest();
219219

220220
data[0] = 0x03;
221-
const childChainCode: Buffer = createHmac("sha512", cc).update(data).digest();
221+
const fullChildChainCode: Buffer = createHmac("sha512", cc).update(data).digest();
222+
const childChainCode: Buffer = fullChildChainCode.subarray(32, 64);
222223

223224
return { z, childChainCode };
224225
}
@@ -247,7 +248,8 @@ function deriveHardened(
247248
data[0] = 0x00;
248249
const z: Buffer = createHmac("sha512", cc).update(data).digest();
249250
data[0] = 0x01;
250-
const childChainCode: Buffer = createHmac("sha512", cc).update(data).digest();
251+
const fullChildChainCode: Buffer = createHmac("sha512", cc).update(data).digest();
252+
const childChainCode: Buffer = fullChildChainCode.subarray(32, 64);
251253

252254
return { z, childChainCode };
253255
}

0 commit comments

Comments
 (0)