bcgov/aries-oca-bundles

how do we know a bundle has been updated?

cvarjao opened this issue · 11 comments

Do we need any sort of checksum or anything that signals a consumer (wallet app) that the bundle has been updated, and it needs to re-download the bundle and update the local cache?

Not currently present, but you are right, it should be added. Can be done as part of the generation of the ocabundles.json creation — added item per identifier.

Doh!

Would it be sufficient to do a md5sum OCABundle.json, and include that in the ocabundles.json that the wallet loads to get a list of identifiers and OCA File locations? The wallet still needs to get the ocabundles.json, but could see if the mda5sum is the same for each OCA Bundle, and only retrieve the OCA Bundle if the file changes, or it is a new one. Or just load new ones when they are used…

No need AFAIK to check the mda5sum in the wallet — just used to know if there has been an update or not.

Easy change…let me know what you think.

I agree. I think a checksum of some sort should work

OK - I’ll add it. Should be easy...

@amanji @cvarjao -- I've implemented this by adding a SHA256 field along with the path in the ocabundle.json and ocabundlelist.json files. Will the current implementation in the BC Wallet (and OCA Explorer) still handle the JSON and just ignore the added JSON item, or do we need to update the consumer code before we add this into the repo?

Current Format Example:

{
   "AcZpBDz3oxmKrpcuPcdKai:2:Digital Business Card:1.0.0": { "path": "OCABundles/schema/bcgov-digital-trust/business-card/OCABundle.json" },
   "K9igebFysBL6jcBwR8bKuN:2:Digital Business Card:1.0.0": { "path": "OCABundles/schema/bcgov-digital-trust/business-card-showcase/OCABundle.json" }
}

New Format Example:

{
   "AcZpBDz3oxmKrpcuPcdKai:2:Digital Business Card:1.0.0": { "path": "OCABundles/schema/bcgov-digital-trust/business-card/OCABundle.json", "sha256": "34804dbb328cd8741d048121963786f4be63c654abdf0757a10f477c8e8924d5" },
   "K9igebFysBL6jcBwR8bKuN:2:Digital Business Card:1.0.0": { "path": "OCABundles/schema/bcgov-digital-trust/business-card-showcase/OCABundle.json", "sha256": "aa4dc9de20639a77ab53c419e9e46f405008be170e68ddf4d22551cc0a6be230" }
}

@swcurran, I think that is good enough. @wadeking98 anything else you might need for caching/updating OCA bundle files?

@cvarjao — doesn’t answer my question. Can we just add that item and existing code will work, or will it break the existing code and we’ll need to update the code (to handle both formats) before we can update the file?

it should not break, but @wadeking98 know the implementation better.

I agree with @cvarjao the BC Wallet should be fine

Good stuff — thanks. Once we approve and merge #102 I’ll update the script to add this feature to the generated files.

#102 allows Bundles to be in any folder with the OCABundles folder, so that we can better organize the bundles — e.g. person can have multiple version (production, test, unverified) below it vs. all being beside each other.

This issue is complete. @wadeking98 @cvarjao -- please let me know when this is in use in BC Wallet. Not that I need to know -- just interested. Let me know if you have any questions :-).