Merge lp://staging/~jderose/filestore/clean-room into lp://staging/filestore

Proposed by Jason Gerard DeRose
Status: Merged
Merged at revision: 285
Proposed branch: lp://staging/~jderose/filestore/clean-room
Merge into: lp://staging/filestore
Diff against target: 2538 lines (+1490/-167)
12 files modified
_filestore.c (+55/-0)
benchmark-protocol.py (+8/-1)
doc/index.rst (+1/-1)
doc/protocol.rst (+5/-9)
doc/specification.rst (+278/-0)
doodle.c (+744/-0)
filestore/data/test-vectors.json (+12/-12)
filestore/misc.py (+33/-10)
filestore/protocols.py (+65/-11)
filestore/tests/__init__.py (+3/-2)
filestore/tests/test_misc.py (+59/-33)
filestore/tests/test_protocols.py (+227/-88)
To merge this branch: bzr merge lp://staging/~jderose/filestore/clean-room
Reviewer Review Type Date Requested Status
James Raymond Approve
Review via email: mp+143343@code.staging.launchpad.net

Description of the change

For more info, see this bug:

https://bugs.launchpad.net/filestore/+bug/1099877

Changes include:

 * Digests for test vector leaf-hashes are now base32-encoded (rather than base64), so only a base32 encode function is needed to test an implementation

 * Adds new doc/specification.rst with lots of useful implementation tips, test vectors, etc

 * Adds most of a C protocol implementation in doodle.c: this was done to help provide guidance for implementations in static languages. It's currently incomplete and only implements the glue between the protocol API and Skein, without actually hooking into Skein yet... eventually it will be move to a standalone C library aimed at mobile platforms and TVs (and content consumption rather than content production). But it was implemented to help improve the specification.

 * Adds fast_b32encode() C implementation... we want to be able to quickly check just the root-hash using the file-size and leaf-hashes, and the base64.b32encode() function in the standard library is pure-Python and quite slow. Plus, this was fun to implement :)

 * Removes V0 protocol.rst, renames V1 protocol2.rst to protocol.rst

 * Other misc cleanup and improvement to the test vector code

 * No live functionality changes are included, aside from using the new fast_b32encode() function... V0 is still the default protocol, V1 hasn't been switched-on yet

To post a comment you must log in.
Revision history for this message
James Raymond (jamesmr) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches