Merge lp://staging/~jderose/filestore/clean-room into lp://staging/filestore
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 |
Related bugs: |
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:/
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/specificati
* 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