def derivation(self, chain_code: bytes, child_index: int) -> Tuple["Secp256k1Deriv", bytes]: if child_index < 0 or child_index >= 2**31: raise Exception("invalid child index") I = utils.hmac512(chain_code, self.get_public_bytes() + utils.tb(child_index, 4)) return (self.__class__(self.derive(Secp256k1Priv(I[0:32]))), I[32:])
def hardened_derivation(self, chain_code: bytes, child_index: int) -> Tuple["ED25519Priv", bytes]: if child_index < 0 or child_index >= 2**31: raise Exception("invalid hardened child index") I = utils.hmac512( chain_code, b"\x00" + self.get_private_bytes() + utils.tb(child_index + 0x80000000, 4)) return (ED25519Priv(I[0:32]), I[32:])
def from_seed_ed25519(cls, seed: bytes) -> "XKey": I = utils.hmac512(b"ed25519 seed", seed) return XKey(Version.PRIVATE, 0, b"\x00\x00\x00\x00", 0, False, I[32:], ED25519Priv(I[0:32]))
def from_seed(cls, seed: bytes) -> "XKey": I = utils.hmac512(b"Bitcoin seed", seed) return XKey(Version.PRIVATE, 0, b"\x00\x00\x00\x00", 0, False, I[32:], Secp256k1Priv(I[0:32]))