@@ -26,14 +26,14 @@ def MKGh(Context, IKM):
26
26
I_R = I [32 :]
27
27
return (I_L , I_R )
28
28
29
- def CKDh (Context , sk_par , c_par , i , tag , full_width_leaf ):
29
+ def CKDh (Context , sk_par , c_par , i , lead , tag ):
30
30
assert type (Context ) == HardenedOnlyContext
31
31
assert 0x80000000 <= i and i <= 0xFFFFFFFF
32
+ assert type (lead ) == int
32
33
assert type (tag ) == bytes
33
- assert type (full_width_leaf ) == bool
34
34
35
- leaf = b"" if tag == b"" and not full_width_leaf else int ( full_width_leaf ). to_bytes ( )
36
- I = prf_expand (c_par , Context .CKDDomain + sk_par + i2leosp (32 , i ) + leaf + tag )
35
+ lead_enc = bytes ([] if lead == 0 and tag == b"" else [ lead ] )
36
+ I = prf_expand (c_par , Context .CKDDomain + sk_par + i2leosp (32 , i ) + lead_enc + tag )
37
37
I_L = I [:32 ]
38
38
I_R = I [32 :]
39
39
return (I_L , I_R )
@@ -62,12 +62,12 @@ def master(cls, ContextString, S):
62
62
return cls (IKM , [], sk , chaincode )
63
63
64
64
def child (self , i ):
65
- (sk_child , c_child ) = CKDh (self .Context , self .sk , self .chaincode , i , b"" , False )
65
+ (sk_child , c_child ) = CKDh (self .Context , self .sk , self .chaincode , i , 0 , b"" )
66
66
return self .__class__ (None , self .path + [i ], sk_child , c_child )
67
67
68
68
def child_with_tag (self , i , tag ):
69
- (sk_child , c_child ) = CKDh (self .Context , self .sk , self .chaincode , i , tag , False )
70
- (left , right ) = CKDh (self .Context , self .sk , self .chaincode , i , tag , True )
69
+ (sk_child , c_child ) = CKDh (self .Context , self .sk , self .chaincode , i , 0 , tag )
70
+ (left , right ) = CKDh (self .Context , self .sk , self .chaincode , i , 1 , tag )
71
71
return self .__class__ (None , self .path + [(i , tag )], sk_child , c_child , left + right )
72
72
73
73
0 commit comments