diff options
Diffstat (limited to 'design-documents/018-contract-json.rst')
-rw-r--r-- | design-documents/018-contract-json.rst | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/design-documents/018-contract-json.rst b/design-documents/018-contract-json.rst index 4208febc..051ed2f1 100644 --- a/design-documents/018-contract-json.rst +++ b/design-documents/018-contract-json.rst @@ -1,5 +1,5 @@ -Design Doc 018: Forgettable Data in JSON Contract Terms -####################################################### +DD 18: Forgettable Data in JSON Contract Terms +############################################## Summary ======= @@ -63,7 +63,7 @@ parent object. .. code-block:: json { - "delivery_address": ..., + "delivery_address": "...", "$forgettable": { "delivery_address": "<salt>" }, @@ -92,17 +92,17 @@ scrubbed and canonicalized value is put into the special ``$forgotten$`` member of the parent object. -.. code-block:: json +.. code-block:: javascript { ...props, - "delivery_address": ..., + "delivery_address": "...", "$forgettable": { "delivery_address": "<memb_salt>" }, } - => + => { ...props, @@ -146,6 +146,40 @@ resulting bytes are terminated with a single 0-byte and then hashed with SHA512. +Test vector +----------- + +The following input contains top-level and nested forgettable +fields, as well as booleans, integers, strings and objects +as well as non-forgettable fields. It is thus suitable as +a minimal interoperability test: + +.. code-block:: json + + { + "k1": 1, + "_forgettable": { + "k1": "SALT" + }, + "k2": { + "n1": true, + "_forgettable": { + "n1": "salt" + } + }, + "k3": { + "n1": "string" + } + } + +Hashing the above contract results in the following Crockford base32 encoded +hash +``287VXK8T6PXKD05W8Y94QJNEFCMRXBC9S7KNKTWGH2G2J2D7RYKPSHNH1HG9NT1K2HRHGC67W6QM6GEC4BSN1DPNEBCS0AVDT2DBP5G``. + +Note that typically the salt values must be chosen at random, only for this test we use static salt values. + + + Discussion / Q&A ================ |