コード例 #1
0
def test_id_nonce_signing(private_key, id_nonce):
    signature = V4IdentityScheme.create_id_nonce_signature(
        id_nonce=id_nonce,
        private_key=private_key,
    )
    signature_object = NonRecoverableSignature(signature)
    assert signature_object.verify_msg(id_nonce, PrivateKey(private_key).public_key)
コード例 #2
0
def test_id_nonce_signing(private_key, id_nonce, ephemeral_key):
    ephemeral_public_key = PrivateKey(ephemeral_key).public_key.to_bytes()
    signature = V4IdentityScheme.create_id_nonce_signature(
        id_nonce=id_nonce,
        private_key=private_key,
        ephemeral_public_key=ephemeral_public_key,
    )
    signature_object = NonRecoverableSignature(signature)
    message_hash = sha256(ID_NONCE_SIGNATURE_PREFIX + id_nonce + ephemeral_public_key).digest()
    assert signature_object.verify_msg_hash(message_hash, PrivateKey(private_key).public_key)
コード例 #3
0
    def validate_signature(cls, enr: "ENR") -> None:
        public_key = PublicKey.from_compressed_bytes(
            enr[cls.public_key_enr_key])
        message = enr.get_signing_message()

        try:
            signature = NonRecoverableSignature(enr.signature)
        except BadSignature:
            is_valid = False
        else:
            is_valid = signature.verify_msg(message, public_key)

        if not is_valid:
            raise ValidationError("Invalid signature")
コード例 #4
0
ファイル: identity_schemes.py プロジェクト: wschwab/trinity
    def validate_signature(cls, *, message: bytes, signature: bytes,
                           public_key: bytes) -> None:
        public_key_object = PublicKey.from_compressed_bytes(public_key)

        try:
            signature_object = NonRecoverableSignature(signature)
        except BadSignature:
            is_valid = False
        else:
            is_valid = signature_object.verify_msg(message, public_key_object)

        if not is_valid:
            raise ValidationError(
                f"Signature {encode_hex(signature)} is not valid for message {encode_hex(message)} "
                f"and public key {encode_hex(public_key)}")
コード例 #5
0
def test_id_nonce_signing(private_key, iv, header, who_are_you, ephemeral_key,
                          recipient_node_id):
    ephemeral_public_key = PrivateKey(ephemeral_key).public_key.to_bytes()
    signature = V4HandshakeScheme.create_id_nonce_signature(
        signature_inputs=SignatureInputs(iv, header, who_are_you,
                                         ephemeral_public_key,
                                         recipient_node_id),
        private_key=private_key,
    )
    signature_object = NonRecoverableSignature(signature)
    message_hash = sha256(ID_NONCE_SIGNATURE_PREFIX + iv +
                          header.to_wire_bytes() +
                          who_are_you.to_wire_bytes() + ephemeral_public_key +
                          recipient_node_id).digest()
    assert signature_object.verify_msg_hash(message_hash,
                                            PrivateKey(private_key).public_key)
コード例 #6
0
def test_enr_signing():
    private_key = PrivateKey(b"\x11" * 32)
    unsigned_enr = UnsignedENR(0, {
        b"id": b"v4",
        b"secp256k1": private_key.public_key.to_compressed_bytes(),
        b"key1": b"value1",
    })
    signature = V4IdentityScheme.create_enr_signature(unsigned_enr, private_key.to_bytes())

    message_hash = keccak(unsigned_enr.get_signing_message())
    assert private_key.public_key.verify_msg_hash(message_hash, NonRecoverableSignature(signature))
コード例 #7
0
ファイル: coincurve.py プロジェクト: TomWang10/auction-keeper
    def ecdsa_sign_non_recoverable(
            self, msg_hash: bytes,
            private_key: PrivateKey) -> NonRecoverableSignature:
        private_key_bytes = private_key.to_bytes()

        der_encoded_signature = self.keys.PrivateKey(private_key_bytes).sign(
            msg_hash,
            hasher=None,
        )
        rs = der.two_int_sequence_decoder(der_encoded_signature)

        signature = NonRecoverableSignature(rs=rs, backend=self)
        return signature