From 5cd45313122b5d7eb74b9de379367255cc133f2a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 11 Jan 2015 20:05:40 +0100 Subject: [PATCH] make constructor of cython HDNode struct more explicit --- cython/TrezorCrypto.pyx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/cython/TrezorCrypto.pyx b/cython/TrezorCrypto.pyx index 17e3f8f01..64903ff38 100644 --- a/cython/TrezorCrypto.pyx +++ b/cython/TrezorCrypto.pyx @@ -5,12 +5,14 @@ cdef class HDNode: cdef c.HDNode node - def __init__(self, initializer): - if isinstance(initializer, HDNode): - self.node = (initializer).node - elif isinstance(initializer, str) : - if c.hdnode_deserialize(initializer, cython.address(self.node)) != 0: + def __init__(self, str serialized = None, HDNode copyfrom = None): + if copyfrom is not None: + self.node = copyfrom.node + elif serialized is not None: + if c.hdnode_deserialize(serialized, cython.address(self.node)) != 0: raise Exception('Invalid xpub/xprv provided') + else: + raise Exception('Need to provide serialized or node parameter') def xpub(self): cdef char[120] string @@ -28,11 +30,11 @@ cdef class HDNode: return str(string) def public_ckd(self, int i): - x = HDNode(self) + x = HDNode(copyfrom=self) c.hdnode_public_ckd(cython.address(x.node), i) return x def private_ckd(self, int i): - x = HDNode(self) + x = HDNode(copyfrom=self) c.hdnode_private_ckd(cython.address(x.node), i) return x