def __init__(self, sk_bytes): if not isinstance(sk_bytes, type("")): raise TypeError("must be bytes, not %s" % type(sk_bytes)) if len(sk_bytes) != 32: raise ValueError("must be exactly 32 bytes") vk_bytes, sk_and_vk = _ed25519.publickey(sk_bytes) assert sk_and_vk[:32] == sk_bytes assert vk_bytes == sk_and_vk[32:] self.vk_bytes = vk_bytes self.sk_and_vk = sk_and_vk
def __init__(self, sk_s, prefix="", encoding=None): assert isinstance(sk_s, type("")) # string, really bytes sk_s = remove_prefix(sk_s, prefix) if encoding is not None: sk_s = from_ascii(sk_s, encoding=encoding) if len(sk_s) == 32: # create from seed vk_s, sk_s = _ed25519.publickey(sk_s) else: if len(sk_s) != 32+32: raise ValueError("SigningKey takes 32-byte seed or 64-byte string") self.sk_s = sk_s # seed+pubkey self.vk_s = sk_s[32:] # just pubkey