File tree Expand file tree Collapse file tree 2 files changed +23
-1
lines changed
Sources/BitcoinKitPrivate Expand file tree Collapse file tree 2 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -180,7 +180,7 @@ public class _HDKey {
180180 return nil
181181 }
182182
183- var result : Data = Data ( )
183+ var result : Data
184184 if let privateKey = self . privateKey {
185185 let privateKeyNum = BN_new ( ) !
186186 defer {
@@ -205,6 +205,9 @@ public class _HDKey {
205205 BN_bn2bin ( privateKeyNum, ptr)
206206 return
207207 }
208+ if result. count < 32 {
209+ result = Data ( repeating: 0 , count: 32 - result. count) + result // 0 padding
210+ }
208211 } else {
209212 let publicKeyNum = BN_new ( )
210213 defer {
Original file line number Diff line number Diff line change @@ -174,4 +174,23 @@ class HDPrivateKeyTests: XCTestCase {
174174 let m011pub = try ! m01prv. extendedPublicKey ( ) . derived ( at: 1 )
175175 XCTAssertEqual ( m011pub. extended ( ) , " xpub6D4BDPcEgbv6teFCGk7PMijta2aSGvRbvFX8dthHedYVVMM8QBf9xp9TF6TeuHYD9xiHGcuGNZQkKmD9jvojPj7YqnqtB3iYXv3f8s1JzwS " )
176176 }
177+
178+ // https://github.com/yenom/BitcoinKit/issues/73
179+ func testDeriveProblem( ) {
180+ let seed = Data ( hex: " f27fd395d30d00f1c11b7551a93961ca41c0a78bce21e9a618e83a99cf74aec159139ef3ef078bc0038557b7cb689933d0806ce33571df78bc4397e7f9976ff2 " ) !
181+
182+ let key = try ! HDPrivateKey ( seed: seed, network: . mainnet)
183+ . derived ( at: 44 , hardened: true )
184+ . derived ( at: 0 , hardened: true )
185+ . derived ( at: 0 , hardened: true )
186+ . derived ( at: 1 )
187+ . derived ( at: 19 )
188+
189+ let privKey = key. privateKey ( )
190+ XCTAssertEqual ( privKey. data. count, 32 )
191+ XCTAssertEqual ( privKey. data. hex, " 00f2c37dad54d1d2be57b06653ea655c6fd8eb3ca3f0b9671e036d50061d265b " )
192+ XCTAssertEqual ( privKey. description, " KwFZ6jFtuvBu7w4R4x4WpzQgSSYTHLEw8Pr2PUkWjADkHJUPNDVg " )
193+ XCTAssertEqual ( privKey. publicKey ( ) . description, " 02a712f894d58baef44e4fbbc26ed6ca89487db1f17e944f9b45ca2ae666e99d72 " )
194+ XCTAssertEqual ( privKey. publicKey ( ) . toLegacy ( ) . description, " 1DPUysR46jraybTwP3PfSbcBENeLScLxx " )
195+ }
177196}
You can’t perform that action at this time.
0 commit comments