Beispiel #1
0
 def setUp(self):
     """
     A message to play with.
     """
     self.uuid = str(uuid4())
     self.node = "9876543210abcd".decode("hex")
     self.value = 1.234
     self.timestamp = time.time()
     self.expires = self.timestamp + 1000
     self.public_key = PUBLIC_KEY
     self.name = "a_human_readable_key_name"
     self.key = construct_key(self.public_key, self.name)
     self.meta = {"mime": "numeric", "description": "a test value"}
     self.sig = generate_signature(self.value, self.timestamp, self.expires, self.name, self.meta, PRIVATE_KEY)
     self.version = "0.1"
     self.message = "value"
     self.mock_value = Value(
         self.uuid,
         self.node,
         self.key,
         self.value,
         self.timestamp,
         self.expires,
         self.public_key,
         self.name,
         self.meta,
         self.sig,
         self.version,
     )
 def setUp(self):
     """
     Gives us some messages to play with.
     """
     self.uuid = str(uuid4())
     self.node = '9876543210abcd'.decode('hex')
     self.value = 1.234
     self.timestamp = time.time()
     self.expires = self.timestamp + 1000
     self.public_key = PUBLIC_KEY
     self.name = 'a_human_readable_key_name'
     self.key = construct_key(self.public_key, self.name)
     self.meta = {
         'mime': 'numeric',
         'description': 'a test value'
     }
     self.version = '0.1'
     self.sig = generate_signature(self.value, self.timestamp, self.expires,
                                   self.name, self.meta, self.version,
                                   PRIVATE_KEY)
     self.message = 'value'
     self.nodes = (('hash1', '127.0.0.1', 1908, '0.1'),
                  ('hash2', '0.0.0.0', 1908, '0.1'))
     self.mock_message = Value(self.uuid, self.node, self.key, self.value,
                               self.timestamp, self.expires, self.version,
                               self.public_key, self.name, self.meta,
                               self.sig, self.version)
Beispiel #3
0
 def test_generate_signature(self):
     """
     Ensures that the given values result in the expected signature
     given a certain private key and said signature can be validated with
     the related public key.
     """
     expected = self.signature
     actual = generate_signature(self.value, self.timestamp, self.expires,
                                 self.name, self.meta, PRIVATE_KEY)
     self.assertEqual(expected, actual)
     # Check the resulting signature can be validated with the public key
     check = validate_signature(self.value, self.timestamp, self.expires,
                                self.name, self.meta, expected, PUBLIC_KEY)
     self.assertEqual(True, check)
Beispiel #4
0
 def send_store(self, contact, private_key, public_key, name, value,
                timestamp, expires, meta):
     """
     Sends a Store message to the given contact. The value contained within
     the message is stored against a key derived from the public_key and
     name. Furthermore, the message is cryptographically signed using the
     value, timestamp, expires, name and meta values.
     """
     uuid = str(uuid4())
     signature = generate_signature(value, timestamp, expires, name, meta,
                                    private_key)
     compound_key = construct_key(public_key, name)
     store = Store(uuid, self.id, compound_key, value, timestamp, expires,
                   public_key, name, meta, signature, self.version)
     return self.send_message(contact, store)