def testFullSigning(): # stored securely/privately seed = randombytes(32) # generates key pair based on seed sk = SigningKey(seed=seed) # helper for signing signer = Signer(sk) # this is the public key used to verify signatures (securely shared before-hand with recipient) verkey = signer.verhex # the message to be signed msg = b'1234' # the signature sig = signer.signature(msg) # helper for verification vr = Verifier(verkey) # verification isVerified = vr.verify(sig, msg) assert isVerified
def __init__(self, identifier=None, seed=None, alias=None): """ Initialize the signer with an identifier and a seed. :param identifier: some identifier that directly or indirectly references this client :param seed: the seed used to generate a signing key. """ # should be stored securely/privately self.seed = seed if seed else randombytes(32) # generates key pair based on seed self.sk = SigningKey(seed=self.seed) # helper for signing self.naclSigner = NaclSigner(self.sk) # this is the public key used to verify signatures (securely shared # before-hand with recipient) hex_verkey = hexlify(self.naclSigner.verraw) self.verkey = hexToFriendly(hex_verkey) self._identifier = identifier or self.verkey self._alias = alias
async def seed_to_did(self, seed): """ Resolve a DID and verkey from a seed """ seed = seed_as_bytes(seed) vk = bytes(SigningKey(seed).verify_key) did = base58.b58encode(vk[:16]).decode("ascii") verkey = base58.b58encode(vk).decode("ascii") return (did, verkey)
def testSimpleSigning(): sik = SigningKey(randombytes(32)) sigkey = sik._signing_key assert len(sigkey) == 64 # why is a signing key 64 bytes and not 32? verkey = sik.verify_key._key assert len(verkey) == 32 msg = b'1234' cmsg = crypto_sign(msg, sigkey) dmsg = crypto_sign_open(cmsg, verkey) assert msg == dmsg
def testSimpleSigningIsHasConsistentVerKey(): seed = randombytes(32) sik = SigningKey(seed) sigkey = sik._signing_key verkey = sik.verify_key._key msg = b'1234' cmsg = crypto_sign(msg, sigkey) dmsg = crypto_sign_open(cmsg, verkey) cmsg2 = crypto_sign(msg, sigkey) dmsg2 = crypto_sign_open(cmsg2, verkey) assert msg == dmsg assert dmsg == dmsg2 sik2 = SigningKey(seed) sigkey2 = sik2._signing_key verkey2 = sik2.verify_key._key assert sigkey2 == sigkey assert verkey2 == verkey
def __init__(self, identifier=None, seed=None, alias=None): """ Initialize the signer with an identifier and a seed. :param identifier: some identifier that directly or indirectly references this client :param seed: the seed used to generate a signing key. """ # should be stored securely/privately self.seed = seed if seed else randombytes(32) # generates key pair based on seed self.sk = SigningKey(seed=self.seed) # helper for signing self.naclSigner = NaclSigner(self.sk) Signer.__init__(self) DidIdentity.__init__(self, identifier, rawVerkey=self.naclSigner.verraw) self._alias = alias