Je vais revenir sur le processus concernant la signature et son implémentation qui me pose problème.
Donc,
“La génération du document de transaction n’est pas une étape sensible” => OK
“C’est seulement et uniquement la signature du hash sha256 du document de transaction … la “carte” soit capable de calculer la signature d’un hash sha256…”
Soit,
je lis la documentation concernant le “format valide” d’un document de transaction :
.duniter/doc/Protocol.md at master · duniter/duniter · GitHub
concernant les transactions :
.duniter/doc/Protocol.md at master · duniter/duniter · GitHub
“A transaction must have signatures matching its content for each issuer”
“matching” des clés publiques => OK, par contre… “Signatures are made over the transaction’s content, signatures excepted”
"Les signatures sont faites sur le contenu de la transaction,
excepté les signatures " <= ???
je dispose également d’examples pour générer un document valide dans cette page.
je dispose de la documentation concernant le RETOUR d’un appel à => tx/process :
.duniter/doc/HTTP_API.md at master · duniter/duniter · GitHub
(au passage, je vois qu’il y a des signatures dans cette réponse…)
requête où il est stipulé en parametre
transaction : the raw transaction
soit => “Version:10\r\n…\r\n”
Maintenant, je ne comprends pas l’utilisation, ici, dans le cadre de la signature, de ces fonctions cryptographique (en l’occurence sha256 mais peu importe…).
Pour moi, une telle fonction prend en paramétre 1 seule information
et me retourne le resultat haché.
exemple sur mon poste :
sha256sum(“abcdef”) = ae06…a57
$>echo “abcdef” | sha256sum
ae0666f161fed1a5dde998bbd0e140550d2da0db27db1d0e31e370f2bd366a57 -
Dixit :
“C’est seulement et uniquement la signature du hash sha256 du document de transaction”
“Signatures are made over the transaction’s content, signatures excepted”
alors, j’applique la fonction sha256 sur mon document de transaction et je nomme le résultat R :
R = sha256(“Version:10\r\n…\r\n”)
et là, je me trouve bien embêté parce que j’en fais quoi de R ?
A quelle moment j’intègre cette information avec ma clé privée ?
Comment et a quelle étape cette information R est transmise ?
Dixit :
“la clé privée d’un compte n’est jamais stockée nulle part sur aucun support physique.” => OK
“Elle est générée a chaque fois que tu saisi ton couple identifiant secret/mot de passe …” => OK
“pour signer une transaction ou une certification” => comment ?
je fais une tentative :
var ID = “max”
var PASS = “monpass”
je concatene mon identifiant et mon mot de pass, applique une fonction de hashage sha256 et j’enregistre ce resultat dans K qui est ma clé privée.
var K = sha256(ID + PASS) ?
var R = sha256(“Version:10\r\n…\r\n”) ?
a quelle étape K signe le document ?
var SIGNED_DOC = sha256(K + R) ?
et cette nouvelle information SIGNED_DOC, j’en fais quoi ?
cette information doit elle faire partie de la requete /tx/process ?
Dixit:
“C’est seulement et uniquement la signature du hash sha256 du document de transaction … la “carte” soit capable de calculer la signature d’un hash sha256…”
Pour revenir au module dont on discute dans l’autre topic et de son fonctionnement (j’ignore ici le code PIN pour simplifier ) :
Je prends 2 parametres :
-en entrée : TX (provenant de l’exterieur, le TPE)
-en interne : K (supposons pour simplifier qu’elle est stockée en dur)
ainsi je hash selon les étapes vu précèdemment et je renvois SIGNED_DOC ?
Tout cela reviens à savoir, s’il vous plait,
selon quelle procédure ma clé privée signe un document de transaction et de quelle manière je communique les informations qui en découlent.
Un tout petit petit petit exemple de code sera le bienvenu.