-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Currently:
chain
PoW (Proof of Work)
nuclear data via ENDFtk
differences tracked with JSON patch
Need to update to:
tree
digital signing with pub-priv key pair (no PoW)
generic data in JSON, not specifically nuclear data
mechanism to indicate parsing tool/JSON format
Philosophy:
Everything is a JSON file, or at least JSON compatible
Functional over object-oriented style (though object-oriented may be fine as well)
Questions:
What is the tree (data structure)?
rely 100% on JSON data structure, must conform to JSON format.
is there already json functionality to merge branches of that tree?
Serialization?
How to share/distribute?
How to sign with certs - openssl?
JSON-Object1: ab20843ff
JSON-Object2: 20384effa
{ "sources": {
"json_object1": ab20843ff,
"json_object2": 20384effa
"destination": None
},
"patch": [
{
"op": "copy",
"source_path": "json_object1/mf3",
"destination_path": destination/mf3"
"value": {
"mt1": {
"energies": [
1e-05,
1018.495,
]
"patch": [
{
"op": "replace",
"path": "/mf3/mt1/xs/369",
"value": 6.317111
}
],
}
json_object3
signed_json_object := {
"header": {type: ..., public key:, signed_hash_of_payload: ...}
"payload": <fingerprint of json_object3>
}
Mechanism to retrieve JSON objects using fingerprints
-> look for filename matching fingerprint and load it
signed_json_object0 <----- signed_json_object1 <------- extended_json_patch
signed_json_object2 <-------
replay_json_chain(last_json_object_fingerprint)
obj = retrieve retrieve_json_patch_file(last_json_object_fingerprint)
sources = get_json_patch_sources(obj, verify=True)
... prepare extended json patch
result_json_obj = apply_json_patch(json_patch)
What needs to be done:
1. How can a signed JSON object be created and verified? (Thomas)
- try with openssl and priv-pub key pair
2. How to retrieve a JSON file from a fingerprint? (Georg)
3. How to use the extended JSON patch? (Georg)