Ejemplo n.º 1
0
def test_verify_multi_sig_works_for_invalid_signature(generator, message):
    sign_key1 = SignKey.new(None)
    ver_key1 = VerKey.new(generator, sign_key1)

    sign_key2 = SignKey.new(None)
    ver_key2 = VerKey.new(generator, SignKey.new(None))

    signature1 = Bls.sign(message, sign_key1)
    signature2 = Bls.sign(message, sign_key2)
    multi_signature_invalid = MultiSignature.new([signature1, signature2])

    valid = Bls.verify_multi_sig(multi_signature_invalid, message,
                                 [ver_key1, ver_key2], generator)
    assert not valid
Ejemplo n.º 2
0
 def verify_sig(self, signature: str, message: bytes,
                bls_pk: Optional[VerKey]) -> bool:
     bls_signature = IndyCryptoBlsUtils.bls_from_str(signature, Signature)
     if bls_signature is None:
         return False
     if bls_pk is None:
         return False
     return Bls.verify(bls_signature, message, bls_pk, self._generator)
Ejemplo n.º 3
0
    def verify_multi_sig(self, signature: str, message: bytes,
                         pks: Sequence[Optional[VerKey]]) -> bool:
        # TODO: is it expected that we return False if one of the keys is None?
        if None in pks:
            return False

        multi_signature = \
            IndyCryptoBlsUtils.bls_from_str(signature, MultiSignature)  # type: MultiSignature
        if multi_signature is None:
            return False

        return Bls.verify_multi_sig(multi_sig=multi_signature,
                                    message=message,
                                    ver_keys=pks,
                                    gen=self._generator)
Ejemplo n.º 4
0
def signature2(message, sign_key2):
    signature = Bls.sign(message, sign_key2)

    assert type(signature) is Signature
    assert signature.c_instance is not None
    return signature
Ejemplo n.º 5
0
 def sign(self, message: bytes) -> str:
     sign = Bls.sign(message, self._sk)
     return IndyCryptoBlsUtils.bls_to_str(sign)
Ejemplo n.º 6
0
 def verify_key_proof_of_possession(self,
                                    key_proof: Optional[ProofOfPossession],
                                    bls_pk: Optional[VerKey]) -> bool:
     if None in [key_proof, bls_pk]:
         return False
     return Bls.verify_pop(key_proof, bls_pk, self._generator)
Ejemplo n.º 7
0
def test_verify__multi_sig_works(generator, message, multi_sig, ver_key1,
                                 ver_key2):
    valid = Bls.verify_multi_sig(multi_sig, message, [ver_key1, ver_key2],
                                 generator)
    assert valid
Ejemplo n.º 8
0
def test_verify_for_seed(generator, message, ver_key2, signature2):
    valid = Bls.verify(signature2, message, ver_key2, generator)
    assert valid
Ejemplo n.º 9
0
def test_verify_pop(generator, ver_key1, pop):
    valid = Bls.verify_pop(pop, ver_key1, generator)
    assert valid
Ejemplo n.º 10
0
def test_verify(generator, message, ver_key1, signature1):
    valid = Bls.verify(signature1, message, ver_key1, generator)
    assert valid