Données Cesium plus, à quoi correspond exactement le hash?

Dans la documentation de Cesium+ (Cesium+ pod – HTTP API), il est indiqué :

A profile document is a JSON document. Mandatory fields are:

  • title: user name (Lastanem, firstname…)
  • time: submission time, in seconds (UTC unixtime)
  • issuer: user public key
  • hash: hash of the JSON document (without fields hash and signature)
  • signature: signature of the JSON document (without fields hash and signature)

Mais à quoi correspond précisément le hash ?

  • le document JSON au format texte ?
  • quel ordre pour les champs ?
  • avec ou sans espaces ?

Ce n’est pas urgent et je pourrais chercher dans le code, mais c’est important de définir précisément ce qui est signé, de manière à ce que je ne perde pas la vérifiabilité des données en les important dans IPFS (même si je vais les importer sans vérification).

Peut-être que Jaklis reproduit ce hash : jaklis/cesiumCommon.py at master - jaklis - P2Git

1 Like

oui c’est fait ici par exemple:

https://git.p2p.legal/axiom-team/jaklis/src/branch/master/lib/profiles.py#L8-L43

et

https://git.p2p.legal/axiom-team/jaklis/src/branch/master/lib/cesiumCommon.py#L37-L51

Donc pour répondre à tes questions, en format JSON texte sans esapce (dumps).
Au niveau de l’ordre, il me semble que Cs+ s’en fou et arrive à reconnaitre le hash peu importe l’ordre si j’ai bien compris, mais je ne sais pas comment il fait.

Dans mes datapods j’ai besoin de définir un ordre précis (celui implémenté).

hm

https://git.p2p.legal/axiom-team/jaklis/src/branch/master/lib/gvaID.py#L75

Il n’y a pas de tri des champs, ni de traitement des espaces. C’est le hash du document tel quel, serialisé comme tu veux. Ensuite, les pod CS+ ne doivent pas changer une virgule, un ordre, ou un espace où retour a la ligne.

L’avantage est de ne dépendre d’aucun protocole de formatage particulier. Donc accessible dans librairie JSON particulière.
L’inconvénient est qu’il faut stocker le document tel quel, ce que permet ES en natif. J’ai profité de cela.

Le hash et la signature sont simplement retiré du document serialisé, par regexp, pour faire la vérification

1 Like