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).
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é).
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
je retire les champs “hash” et “signature”: "hash":"CFF2E187298BC9CEAA6457A1385A7A53A03BD173B69304316F9EBBC2E6625F5C","signature":"Xo0Cf5opgtT3bcZAGFCIs1/wD7NE2+mlr51QIZgcYGFte6Pc6i7CQBNU/PRFAo56+yaPjIHggK43JGFWHw6TBQ==",
je calcule le hash du reste shasum profile
je tombe sur un autre résultat : aa06ff9281ec4618c656221925606a4777536c11
je retire les champs “hash” et “signature”: "hash":"CFF2E187298BC9CEAA6457A1385A7A53A03BD173B69304316F9EBBC2E6625F5C","signature":"Xo0Cf5opgtT3bcZAGFCIs1/wD7NE2+mlr51QIZgcYGFte6Pc6i7CQBNU/PRFAo56+yaPjIHggK43JGFWHw6TBQ==",
je calcule le hash du reste shasum -a 256 profile
je tombe bien sur le résultat : cff2e187298bc9ceaa6457a1385a7a53a03bd173b69304316f9ebbc2e6625f5c
Il me reste à vérifier la signature mais ça devrait être bon.
Y a-t-il un moyen de récupérer la source au format brut sans l’en-tête ?