45 |
45 |
<p>
|
46 |
46 |
La signature est à calculer sur la query string encodée complète, en
|
47 |
47 |
enlevant les paramètres terminaux <code>algo</code>, <code>timestamp</code>,
|
48 |
|
<code>orig</code> et <code>signature</code>. La formule de calcul de la
|
49 |
|
signature est la suivante :
|
50 |
|
</p>
|
|
48 |
<code>nonce</code>, <code>orig</code> et <code>signature</code> s'ils sont
|
|
49 |
présents.</p>
|
|
50 |
|
|
51 |
<p>La formule de calcul de la signature est la suivante :</p>
|
51 |
52 |
|
52 |
53 |
<code>
|
53 |
|
BASE64(HMAC-HASH(query_string+'algo=HASH&timestamp=' + timestamp + '&orig=" + orig, clé))
|
|
54 |
BASE64(HMAC-HASH(query_string+'algo=HASH&timestamp=' + timestamp + '&nonce=' + nonce '&orig=" + orig, clé))
|
54 |
55 |
</code>
|
55 |
56 |
|
56 |
57 |
<list>
|
... | ... | |
59 |
60 |
en se limitant à la précision des secondes (ex : 2012-04-04T12:34:00Z),
|
60 |
61 |
</p></item>
|
61 |
62 |
|
|
63 |
<item><p><code>nonce</code> est un aléa, typiquement la réprésentation hexa
|
|
64 |
d'un nombre pseudo-aléatoire de 128 bits,</p></item>
|
|
65 |
|
62 |
66 |
<item><p><code>orig</code> est une chaîne précisant l'émetteur de la
|
63 |
67 |
requête,</p></item>
|
64 |
68 |
|
65 |
69 |
<item><p>algo est une chaîne représentant l'algorithme de hachage utilisé, sont
|
66 |
70 |
définis : sha1, sha256, sha512 pour les trois algorithmes correspondant.
|
67 |
|
L'utilisation d'une valeur différente n'est pas définie.</p></item>
|
|
71 |
L'utilisation d'une valeur différente n'est pas définie. L'algorithme sha256
|
|
72 |
est préconisé.</p></item>
|
68 |
73 |
|
69 |
74 |
</list>
|
70 |
75 |
|
... | ... | |
73 |
78 |
</p>
|
74 |
79 |
|
75 |
80 |
<code>
|
76 |
|
<var>qs_initial</var>&algo=<var>algo</var>&timestamp=<var>ts</var>&orig=<var>orig</var>&signature=<var>signature</var>
|
|
81 |
<var>qs_initial</var>&algo=<var>algo</var>&timestamp=<var>timestamp</var>&nonce=<var>nonce</var>&orig=<var>orig</var>&signature=<var>signature</var>
|
77 |
82 |
</code>
|
78 |
83 |
|
79 |
84 |
</section>
|
... | ... | |
213 |
218 |
}
|
214 |
219 |
|
215 |
220 |
now=$(date -u +%FT%TZ);
|
216 |
|
qs="algo=sha256&timestamp=$now&orig=$orig"
|
|
221 |
nonce=$(od -N16 -txL /dev/urandom | cut -c8- | tr -d " ")
|
|
222 |
qs="algo=sha256&timestamp=$now&nonce=$nonce&orig=$orig"
|
217 |
223 |
sig=$(rawurlencode $(echo -n "$qs" | openssl dgst -binary -sha256 -hmac "$key" | base64))
|
218 |
224 |
signed="${url}?$qs&signature=$sig"
|
219 |
225 |
echo "$signed"
|
220 |
|
-
|