rappor/client
Andy Chu 0d8ad6d54f Make the Python simulation into a Python client library.
- It can be used in applications, and follows the same choices as the
  C++ (and Java) client libraries: MD5 to choose the bloom filter bits,
  and HMAC-SHA256 with client secret for the PRR.  (rappor.py)
- hash_candidates.py and rappor_sim.py use the rappor.get_bloom_bits
  API, which is more efficient since it calls the hash function once
  instead of 'h' times.
- Make the randomness interface a simpler "IrrRand" interface, which has
  2 implementations: pure Python and C.  (The PRR always uses the same
  randomness.)
- regtest.sh: Instead of a boolean for 'fast_counts', we have 3 modes:
  Python client, C++ client, and 'fast_counts'.  The same tests can be
  run against each implementation.  The results are put in different
  directories, so they don't overwite each other.
- Rename gen_reports.R to gen_true_values.R (since the "reports" are
  typically the data transformed by RAPPOR).
  - Change it to output the client and assign the cohort like this:
    client,cohort,value

    c1,1,v26
    c1,1,v27
    c2,2,v8
    c2,2,v9

    The cohort is stable per client, but the value is different.
  - Add unit test
- tests/rappor_sim.py: New test protocol.  Read true_values CSV input.
  The CSV output contains the bloom filter, PRR, and IRR for easier
  debugging.
  - compare_dist.R loads the true values and computes the histograms,
    rather than rappor_sim.py having to do it.  This makes it easier to
    use the test harness with C++ and other clients.
- demo.sh: quickly run equivalent tests for each mode.
- regtest.sh: show the implementation tested
2015-07-13 16:14:23 -07:00
..
cpp Initial import. 2014-10-17 16:17:57 -07:00
python Make the Python simulation into a Python client library. 2015-07-13 16:14:23 -07:00