Beispiel #1
0
 def verify_signature(self, tx: 'Transaction'):
     sign_verifier = SignVerifier.from_address(tx.from_address.hex_xx())
     try:
         sign_verifier.verify_hash(tx.hash, tx.signature)
     except Exception as e:
         exception = RuntimeError(f"tx({tx}) invalid signature\n" f"{e}")
         self._handle_exceptions(exception)
Beispiel #2
0
 def verify(self):
     hash_ = self.to_hash(**self.origin_args())
     sign_verifier = SignVerifier.from_address(self.rep.hex_hx())
     try:
         sign_verifier.verify_hash(hash_, self.signature)
     except Exception as e:
         raise RuntimeError(f"Invalid vote signature. {self}"
                            f"{e}")
Beispiel #3
0
    def verify_signature(self, tx: 'Transaction'):
        if self._allow_unsigned and not tx.is_signed():
            return

        sign_verifier = SignVerifier.from_address(tx.signer_address.hex_xx())
        try:
            sign_verifier.verify_hash(tx.hash, tx.signature)
        except Exception as e:
            exception = TransactionInvalidSignatureError(tx, message=str(e))
            self._handle_exceptions(exception)
Beispiel #4
0
 def verify_signature(self, block: 'Block'):
     sign_verifier = SignVerifier.from_address(
         block.header.peer_id.hex_xx())
     try:
         sign_verifier.verify_hash(block.header.hash,
                                   block.header.signature)
     except Exception as e:
         exception = RuntimeError(
             f"Block({block.header.height}, {block.header.hash.hex()}, "
             f"Invalid Signature\n"
             f"{e}")
         self._handle_exception(exception)
Beispiel #5
0
    def setUpClass(cls) -> None:
        cls.temp_dir = tempfile.TemporaryDirectory()

        # Private Key
        cls.private_key = ec.generate_private_key(ec.SECP256K1, default_backend())

        cls.private_der_path = os.path.join(cls.temp_dir.name, "private.der")
        with open(cls.private_der_path, "wb") as private_der_file:
            private_der_file.write(
                cls.private_key.private_bytes(
                    encoding=serialization.Encoding.DER,
                    format=serialization.PrivateFormat.PKCS8,
                    encryption_algorithm=serialization.BestAvailableEncryption(b"TEST")
                )
            )

        cls.private_pem_path = os.path.join(cls.temp_dir.name, "private.pem")
        with open(cls.private_pem_path, "wb") as private_pem_file:
            private_pem_file.write(
                cls.private_key.private_bytes(
                    encoding=serialization.Encoding.PEM,
                    format=serialization.PrivateFormat.PKCS8,
                    encryption_algorithm=serialization.BestAvailableEncryption(b"TEST")
                )
            )

        key_info = keys.PrivateKeyInfo.load(cls.private_key.private_bytes(
            encoding=serialization.Encoding.DER,
            format=serialization.PrivateFormat.PKCS8,
            encryption_algorithm=serialization.NoEncryption()
        ))
        cls.private_key_bytes = long_to_bytes(key_info['private_key'].native['private_key'])

        # Public Key
        cls.public_key = cls.private_key.public_key()

        cls.public_der_path = os.path.join(cls.temp_dir.name, "public.der")
        with open(cls.public_der_path, "wb") as public_der_file:
            public_der_file.write(
                cls.public_key.public_bytes(
                    encoding=serialization.Encoding.DER,
                    format=serialization.PublicFormat.SubjectPublicKeyInfo
                )
            )

        cls.public_pem_path = os.path.join(cls.temp_dir.name, "public.pem")
        with open(cls.public_pem_path, "wb") as public_pem_file:
            public_pem_file.write(
                cls.public_key.public_bytes(
                    encoding=serialization.Encoding.PEM,
                    format=serialization.PublicFormat.SubjectPublicKeyInfo
                )
            )

        key_info = keys.PublicKeyInfo.load(
            cls.public_key.public_bytes(
                encoding=serialization.Encoding.DER,
                format=serialization.PublicFormat.SubjectPublicKeyInfo
            )
        )
        cls.public_key_bytes = key_info['public_key'].native

        cls.signer_private_key_bytes = Signer.from_prikey(cls.private_key_bytes)
        cls.signer_private_key_der = Signer.from_prikey_file(cls.private_der_path, b"TEST")
        cls.signer_private_key_pem = Signer.from_prikey_file(cls.private_pem_path, b"TEST")

        cls.sign_verifier_private_key_bytes = SignVerifier.from_prikey(cls.private_key_bytes)
        cls.sign_verifier_private_key_der = SignVerifier.from_prikey_file(cls.private_der_path, b"TEST")
        cls.sign_verifier_private_key_pem = SignVerifier.from_prikey_file(cls.private_pem_path, b"TEST")

        cls.sign_verifier_public_key_bytes = SignVerifier.from_pubkey(cls.public_key_bytes)
        cls.sign_verifier_public_key_der = SignVerifier.from_pubkey_file(cls.public_der_path)
        cls.sign_verifier_public_key_pem = SignVerifier.from_pubkey_file(cls.public_pem_path)