예제 #1
0
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
예제 #2
0
    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
예제 #3
0
 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)
예제 #4
0
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
예제 #5
0
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
예제 #6
0
    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