예제 #1
0
    def test_tx_metadata_passes(self):
        t = {
            'signature': 'a' * 128,
            'timestamp': 123
        }

        self.assertTrue(primatives.check_format(t, rules.TRANSACTION_METADATA_RULES))
예제 #2
0
    def test_tx_metadata_timestamp_fails(self):
        t = {
            'signature': 'a' * 128,
            'timestamp': 'abc'
        }

        self.assertFalse(primatives.check_format(t, rules.TRANSACTION_METADATA_RULES))
예제 #3
0
파일: network.py 프로젝트: baby636/lamden
    async def process_message(self, msg):
        # Send ping to peer server to verify
        if not primatives.check_format(msg, rules.JOIN_MESSAGE_RULES):
            return

        vk = msg.get('vk')

        filename = str(router.DEFAULT_DIR / f'{vk}.key')
        if not os.path.exists(filename):
            return

        #
        # if not verify_proof(response, PEPPER):
        #     LOGGER.error(f'Bad proof verification for identity proof for {msg.get("ip")}')
        #     return

        if msg.get('vk') not in self.peers or self.peers[msg.get(
                'vk')] != msg.get('ip'):
            await router.secure_multicast(msg=msg,
                                          service=JOIN_SERVICE,
                                          peer_map=self.peers,
                                          ctx=self.ctx,
                                          wallet=self.wallet)

        self.peers[msg.get('vk')] = msg.get('ip')

        return {'peers': [{'vk': v, 'ip': i} for v, i in self.peers.items()]}
예제 #4
0
    def test_tx_payload_fails_keys_missing(self):
        t = {
            'processor': 'b' * 64,
            'stamps_supplied': 123,
            'nonce': 0,
            'contract': 'currency',
            'function': 'transfer',
            'kwargs': {
                'amount': 123,
                'to': 'jeff'
            }
        }

        self.assertFalse(primatives.check_format(t, rules.TRANSACTION_PAYLOAD_RULES))
예제 #5
0
    def test_transaction_payload_formatted_passes(self):
        t = {
            'sender': 'a' * 64,
            'processor': 'b' * 64,
            'stamps_supplied': 123,
            'nonce': 0,
            'contract': 'currency',
            'function': 'transfer',
            'kwargs': {
                'amount': 123,
                'to': 'jeff'
            }
        }

        self.assertTrue(primatives.check_format(t, rules.TRANSACTION_PAYLOAD_RULES))
예제 #6
0
파일: network.py 프로젝트: baby636/lamden
def verify_proof(proof, pepper):
    # Proofs expire after a minute
    if not primatives.check_format(proof, rules.PROOF_MESSAGE_RULES):
        return False

    if int(time.time()) - proof['timestamp'] > PROOF_EXPIRY:
        return False

    message = [pepper, proof['ip'], proof['timestamp']]
    message_bytes = encode(message).encode()

    h = hashlib.sha3_256()
    h.update(message_bytes)

    return verify(proof['vk'], h.digest().hex(), proof['signature'])
예제 #7
0
    def test_rescurses_returns_false(self):
        test_rule = {
            'sender': primatives.vk_is_formatted
        }

        thing = {
            'sender': [
                'a' * 64,
                'b' * 64,
                'c' * 64,
                'd' * 64,
                'e' * 63,
            ]
        }

        self.assertFalse(primatives.check_format(thing, test_rule))
예제 #8
0
    def test_tx_fails_tx_metadata(self):
        t = {
            'payload': {
                'sender': 'a' * 64,
                'processor': 'b' * 64,
                'stamps_supplied': 123,
                'nonce': 0,
                'contract': 'currency',
                'function': 'transfer',
                'kwargs': {
                    'amount': 123,
                    'to': 'jeff'
                }
            },
            'metadata': {
                'signature': 'a' * 129,
                'timestamp': 123
            }
        }

        self.assertFalse(primatives.check_format(t, rules.TRANSACTION_RULES))
예제 #9
0
    def test_tx_metadata_missing_key_fails(self):
        t = {
            'signature': 'a' * 128,
        }

        self.assertFalse(primatives.check_format(t, rules.TRANSACTION_METADATA_RULES))