Exemplo n.º 1
0
 def test_get_proof_by_hash_raises_on_unknown_hash(self):
     client = log_client.LogClient(
         test_util.DEFAULT_URI,
         self.FakeHandler(test_util.DEFAULT_URI, tree_size=3))
     leaf_hash = "bogus"
     self.assertRaises(log_client.HTTPClientError, client.get_proof_by_hash,
                       leaf_hash, 2)
Exemplo n.º 2
0
 def test_get_sth_consistency_trivial(self):
     client = log_client.LogClient(
         test_util.DEFAULT_URI,
         self.FakeHandler(test_util.DEFAULT_URI, tree_size=3))
     self.assertEqual(client.get_sth_consistency(0, 0), [])
     self.assertEqual(client.get_sth_consistency(0, 2), [])
     self.assertEqual(client.get_sth_consistency(2, 2), [])
Exemplo n.º 3
0
def _submit_to_single_log(log_url, full_chain):
    """Submits the chain to a single log specified by log_url."""
    ct_client = log_client.LogClient(log_url, connection_timeout=10)
    res = None
    try:
        res = ct_client.add_chain(full_chain)
    except log_client.HTTPError as err:
        logging.info('Skipping log %s because of error: %s\n', log_url, err)
    return res
def fetch_single_proof(leaf_hash, log_url):
    """Fetch the proof for the supplied certificate."""
    client = log_client.LogClient(log_url)
    sth = client.get_sth()
    if FLAGS.verbose:
        print "The log contains %d certificates." % (sth.tree_size)
        print "Tree root hash: %s" % (sth.sha256_root_hash.encode("hex"))

    proof_from_hash = client.get_proof_by_hash(leaf_hash, sth.tree_size)
    return sth, proof_from_hash
 def test_add_valid_chain(self):
     certs_chain = ["one", "two", "three"]
     json_sct_response = (
         '{"sct_version":0,"id":"pLkJkLQYWBSHuxOizGdwCjw1m'
         'AT5G9+443fNDsgN3BA=","timestamp":1373015623951,\n'
         '"extensions":"",\n'
         '"signature":"BAMARjBEAiAggPtKUMFZ4zmNnPhc7As7VR1Dedsdggs9a8pSEHoy'
         'GAIgKGsvIPDZgDnxTjGY8fSBwkl15dA0TUqW5ex2HCU7yE8="}')
     mock_handler = mock.Mock()
     mock_handler.post_response_body.return_value = json_sct_response
     client = log_client.LogClient("http://ctlog", handler=mock_handler)
     received_sct = client.add_chain(certs_chain)
     mock_handler.post_response_body.assert_called_once_with(
         "http://ctlog/ct/v1/add-chain",
         post_data={'chain': [base64.b64encode(t) for t in certs_chain]})
     self._verify_sct_contents(received_sct)
Exemplo n.º 6
0
    def __init__(self, ct_logs, db, temp_db_factory, monitor_state_dir):
        """Initialize from a CtLogs proto."""
        threading.Thread.__init__(self)

        self.__monitors = []
        self.__db = db
        for log in ct_logs.ctlog:
            if not log.log_server or not log.log_id or not log.public_key_info:
                raise RuntimeError("Cannot start monitor: log proto has "
                                   "missing or empty fields: %s" % log)
            client = log_client.LogClient(log.log_server)
            hasher = merkle.TreeHasher()
            verifier = verify.LogVerifier(log.public_key_info,
                                          merkle.MerkleVerifier(hasher))
            state_keeper = state.StateKeeper(FLAGS.monitor_state_dir + "/" +
                                             log.log_id)
            temp_db = temp_db_factory.create_storage(log.log_server)
            self.__monitors.append(
                monitor.Monitor(client, verifier, hasher, db, temp_db,
                                state_keeper))

        self.__last_update_start_time = 0
        self.__stopped = False