File tree Expand file tree Collapse file tree 2 files changed +32
-19
lines changed Expand file tree Collapse file tree 2 files changed +32
-19
lines changed Original file line number Diff line number Diff line change 133
133
:index 1000000000,
134
134
:depth 5}`"
135
135
[seed chain-path key-type]
136
- (let [path-parts (str/split chain-path #"/" )]
137
- (loop [current-node (if (= " m" (first path-parts))
138
- `(derive-master-node ~seed)
139
- (throw (Exception.
140
- (str " Invalid path: " (first path-parts)))))
141
- parts (rest path-parts)]
142
- (if (seq parts)
143
- (let [part (first parts)
144
- index (if (hardened? part)
145
- (hardened (Integer/parseInt (subs part 0 (- (count part) 1 ))))
146
- (Integer/parseInt part))]
147
- (recur
148
- `(CKDpriv ~current-node ~index)
149
- (rest parts)))
150
- (if (= :public key-type)
151
- `(N ~current-node)
152
- current-node)))))
136
+ (let [path-parts (gensym 'path-parts)
137
+ part (gensym 'part)
138
+ parts (gensym 'parts)
139
+ current-node (gensym 'current-node)
140
+ index (gensym 'index)]
141
+ `(let [~path-parts (str/split ~chain-path #"/" )]
142
+ (loop [~current-node (if (= " m" (first ~path-parts))
143
+ (derive-master-node ~seed)
144
+ (throw (Exception.
145
+ (str " Invalid path: " (first ~path-parts)))))
146
+ ~parts (rest ~path-parts)]
147
+ (if (seq ~parts)
148
+ (let [~part (first ~parts)
149
+ ~index (if (hardened? ~part)
150
+ (hardened (Integer/parseInt (subs ~part 0 (- (count ~part) 1 ))))
151
+ (Integer/parseInt ~part))]
152
+ (recur
153
+ (CKDpriv ~current-node ~index)
154
+ (rest ~parts)))
155
+ (if (= :public ~key-type)
156
+ (N ~current-node)
157
+ ~current-node))))))
Original file line number Diff line number Diff line change 78
78
(doseq [i# (range (count (:derived-keys ~tv)))]
79
79
(let [derived-key# (nth (:derived-keys ~tv) i#)
80
80
path# (:path derived-key#)
81
- extended-private-key# (eval `( derive-path ~ seed# ~ path# :private ) )
82
- extended-public-key# (eval `( derive-path ~ seed# ~ path# :public ) )
81
+ extended-private-key# (derive-path seed# path# :private )
82
+ extended-public-key# (derive-path seed# path# :public )
83
83
bip32-xprvkey# (:bip32-xprvkey derived-key#)
84
84
bip32-xpubkey# (:bip32-xpubkey derived-key#)
85
85
identifier# (:identifier derived-key#)
652
652
(is (= " xpub6CTydV5ab9iSEgfY4hQqofu9YJiijeUs89T6jADgvA32Mk4oTvaV4pUJahHAGizYy2s3HyBRX1uiN2d94RsMawEgTMmRuDHLUR71EayS34i"
653
653
bip32-xpub-grand-grandchild-public-key))))
654
654
655
+ (deftest threading-macro-works-with-derive-path
656
+ (is (= (let [key " 000102030405060708090a0b0c0d0e0f"
657
+ path " m/0H/1/2H/2/1000000000"
658
+ key-type :private ]
659
+ (-> key
660
+ (derive-path path key-type)))
661
+ (derive-path " 000102030405060708090a0b0c0d0e0f" " m/0H/1/2H/2/1000000000" :private ))))
662
+
655
663
(comment
656
664
(clojure.test/run-all-tests ))
You can’t perform that action at this time.
0 commit comments