def test_tx_metadata_passes(self): t = { 'signature': 'a' * 128, 'timestamp': 123 } self.assertTrue(primatives.check_format(t, rules.TRANSACTION_METADATA_RULES))
def test_tx_metadata_timestamp_fails(self): t = { 'signature': 'a' * 128, 'timestamp': 'abc' } self.assertFalse(primatives.check_format(t, rules.TRANSACTION_METADATA_RULES))
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()]}
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))
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))
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'])
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))
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))
def test_tx_metadata_missing_key_fails(self): t = { 'signature': 'a' * 128, } self.assertFalse(primatives.check_format(t, rules.TRANSACTION_METADATA_RULES))