@@ -50,25 +50,23 @@ def __init__(self, IKM, path, sk, chaincode, full_width=None):
50
50
self .full_width = full_width # the full-width cryptovalue at this path
51
51
52
52
@classmethod
53
- def master (cls , ContextString , S ):
53
+ def master (cls , ContextString , S , ZipNumber ):
54
54
length_ContextString = len (ContextString )
55
55
length_S = len (S )
56
56
57
57
assert length_ContextString <= 252
58
58
assert 32 <= length_S <= 252
59
59
60
60
IKM = bytes ([length_ContextString ]) + ContextString + bytes ([length_S ]) + S
61
- (sk , chaincode ) = MKGh (cls .Registered , IKM )
62
- return cls (IKM , [], sk , chaincode )
63
-
64
- def child (self , i ):
65
- (sk_child , c_child ) = CKDh (self .Registered , self .sk , self .chaincode , i , 0 , b"" )
66
- return self .__class__ (None , self .path + [i ], sk_child , c_child )
61
+ (sk_m , c_m ) = MKGh (cls .Registered , IKM )
62
+ i = hardened (ZipNumber )
63
+ (sk , chaincode ) = CKDh (self .Registered , sk_m , c_m , i , 0 , b"" )
64
+ return cls (IKM , [i ], sk , chaincode )
67
65
68
- def child_with_tag (self , i , tag ):
66
+ def child (self , i , tag ):
69
67
(sk_child , c_child ) = CKDh (self .Registered , self .sk , self .chaincode , i , 0 , tag )
70
- (left , right ) = CKDh (self .Registered , self .sk , self .chaincode , i , 1 , tag )
71
- return self .__class__ (None , self .path + [(i , tag )], sk_child , c_child , left + right )
68
+ (I_L , I_R ) = CKDh (self .Registered , self .sk , self .chaincode , i , 1 , tag )
69
+ return self .__class__ (None , self .path + [(i , tag )], sk_child , c_child , I_L + I_R )
72
70
73
71
74
72
def registered_key_derivation_tvs ():
0 commit comments