Ejemplo n.º 1
0
    def get_key(self, fingerprint: bytes) -> Union[keypairs.EncryptingKeypair,
                                                   keypairs.SigningKeypair]:
        """
        Returns a key from the KeyStore.

        :param fingerprint: Fingerprint, in bytes, of key to return

        :return: Keypair of the returned key.

        """
        key = self.session.query(Key).filter_by(fingerprint=fingerprint).first()
        if not key:
            raise KeyNotFound(
                    "No key with fingerprint {} found.".format(fingerprint))

        keypair_byte = key.key_data[0].to_bytes(1, 'big')
        key_type_byte = key.key_data[1].to_bytes(1, 'big')
        key = key.key_data[2:]

        if keypair_byte == constants.ENC_KEYPAIR_BYTE:
            if key_type_byte == constants.PUB_KEY_BYTE:
                return keypairs.EncryptingKeypair(pubkey=key)

            elif key_type_byte == constants.PRIV_KEY_BYTE:
                return keypairs.EncryptingKeypair(privkey=key)

        elif keypair_byte == constants.SIG_KEYPAIR_BYTE:
            if key_type_byte == constants.PUB_KEY_BYTE:
                return keypairs.SigningKeypair(pubkey=key)

            elif key_type_byte == constants.PRIV_KEY_BYTE:
                return keypairs.SigningKeypair(privkey=key)
    def test_keypair_object(self):
        # Test both keys
        keypair = keypairs.SigningKeypair(self.ecdsa_keypair.privkey,
                                          self.ecdsa_keypair.pubkey)
        self.assertTrue(keypair.public_only is False)

        self.assertEqual(bytes, type(keypair.privkey))
        self.assertEqual(32, len(keypair.privkey))

        self.assertEqual(PublicKey._EXPECTED_LENGTH, len(keypair.pubkey))

        # Test no keys (key generation)
        keypair = keypairs.SigningKeypair()
        self.assertTrue(keypair.public_only is False)

        self.assertEqual(bytes, type(keypair.privkey))
        self.assertEqual(32, len(keypair.privkey))

        self.assertEqual(PublicKey._EXPECTED_LENGTH, len(keypair.pubkey))

        # Test privkey only
        keypair = keypairs.SigningKeypair(privkey=self.ecdsa_keypair.privkey)
        self.assertTrue(keypair.public_only is False)

        self.assertEqual(bytes, type(keypair.privkey))
        self.assertEqual(32, len(keypair.privkey))
        self.assertEqual(PublicKey._EXPECTED_LENGTH, len(keypair.pubkey))

        # Test pubkey only
        keypair = keypairs.SigningKeypair(pubkey=self.ecdsa_keypair.pubkey)
        self.assertTrue(keypair.public_only is True)

        self.assertEqual(PublicKey._EXPECTED_LENGTH, len(keypair.pubkey))
Ejemplo n.º 3
0
 def __init__(self, keypair: keypairs.SigningKeypair = None):
     """
     Initializes a SigningPower object for CryptoPower.
     """
     self.keypair = keypair or keypairs.SigningKeypair()
     self.priv_key = self.keypair.privkey
     self.pub_key = self.keypair.pubkey
Ejemplo n.º 4
0
def test_gen_keypair_if_needed():
    new_enc_keypair = keypairs.EncryptingKeypair()
    assert new_enc_keypair._privkey != None
    assert new_enc_keypair.pubkey != None

    new_sig_keypair = keypairs.SigningKeypair()
    assert new_sig_keypair._privkey != None
    assert new_sig_keypair.pubkey != None
Ejemplo n.º 5
0
def test_workorder_sqlite_keystore(test_keystore):
    bob_keypair_sig1 = keypairs.SigningKeypair(generate_keys_if_needed=True)
    bob_keypair_sig2 = keypairs.SigningKeypair(generate_keys_if_needed=True)

    hrac = b'test'

    # Test add workorder
    new_workorder1 = test_keystore.add_workorder(bob_keypair_sig1.pubkey, b'test0', hrac)
    new_workorder2 = test_keystore.add_workorder(bob_keypair_sig2.pubkey, b'test1', hrac)

    # Test get workorder
    query_workorders = test_keystore.get_workorders(hrac)
    assert {new_workorder1, new_workorder2}.issubset(query_workorders)

    # Test del workorder
    deleted = test_keystore.del_workorders(hrac)
    assert deleted > 0
    assert test_keystore.get_workorders(hrac).count() == 0
Ejemplo n.º 6
0
def test_signing():
    umbral_privkey = UmbralPrivateKey.gen_key()
    sig_keypair = keypairs.SigningKeypair(umbral_privkey)

    msg = b'attack at dawn'
    signature = sig_keypair.sign(msg)
    assert signature.verify(msg, sig_keypair.pubkey) == True

    bad_msg = b'bad message'
    assert signature.verify(bad_msg, sig_keypair.pubkey) == False
Ejemplo n.º 7
0
def test_policy_contract_sqlite_keystore(test_keystore):
    alice_keypair_sig = keypairs.SigningKeypair(generate_keys_if_needed=True)
    alice_keypair_enc = keypairs.EncryptingKeypair(generate_keys_if_needed=True)
    bob_keypair_sig = keypairs.SigningKeypair(generate_keys_if_needed=True)

    hrac = b'test'

    # Test add PolicyContract
    new_contract = test_keystore.add_policy_contract(
            datetime.utcnow(), b'test', hrac, alice_pubkey_sig=alice_keypair_sig.pubkey,
            alice_signature=b'test'
    )

    # Test get PolicyContract
    query_contract = test_keystore.get_policy_contract(hrac)
    assert new_contract == query_contract

    # Test del PolicyContract
    test_keystore.del_policy_contract(hrac)
    with pytest.raises(keystore.NotFound):
        del_key = test_keystore.get_policy_contract(hrac)
Ejemplo n.º 8
0
    def gen_ecdsa_keypair(self, gen_priv=True) -> keypairs.SigningKeypair:
        """
        Generates an ECDSA keypair.

        TODO: Initalize keypair with provided data.

        :param gen_priv: Generate private key or not?

        :return ECDSA signing keypair
        """
        ecdsa_keypair = keypairs.SigningKeypair()
        if gen_priv:
            ecdsa_keypair.gen_privkey()
        return ecdsa_keypair
Ejemplo n.º 9
0
 def setUp(self):
     self.keypair = keypairs.SigningKeypair()
     self.power = SigningPower(self.keypair)
 def setUp(self):
     self.ecies_keypair = keypairs.EncryptingKeypair()
     self.ecdsa_keypair = keypairs.SigningKeypair()