From d52fbc23b31a61d7e1ec637748eaf6d3c33c104a Mon Sep 17 00:00:00 2001
From: Thomas NOEL
La signature est à calculer sur la query string encodée complète, en
enlevant les paramètres terminaux algo
, timestamp
,
-orig
et signature
. La formule de calcul de la
-signature est la suivante :
-
nonce
, orig
et signature
s'ils sont
+présents.
+
+La formule de calcul de la signature est la suivante :
-BASE64(HMAC-HASH(query_string+'algo=HASH×tamp=' + timestamp + '&orig=" + orig, clé))
+BASE64(HMAC-HASH(query_string+'algo=HASH×tamp=' + timestamp + '&nonce=' + nonce '&orig=" + orig, clé))
nonce
est un aléa, typiquement la réprésentation hexa
+d'un nombre pseudo-aléatoire de 128 bits,
orig
est une chaîne précisant l'émetteur de la
requête,
algo est une chaîne représentant l'algorithme de hachage utilisé, sont définis : sha1, sha256, sha512 pour les trois algorithmes correspondant. -L'utilisation d'une valeur différente n'est pas définie.
-qs_initial&algo=algo×tamp=ts&orig=orig&signature=signature
+qs_initial&algo=algo×tamp=timestamp&nonce=nonce&orig=orig&signature=signature
@@ -213,7 +218,8 @@ function rawurlencode() {
}
now=$(date -u +%FT%TZ);
-qs="algo=sha256×tamp=$now&orig=$orig"
+nonce=$(od -N16 -txL /dev/urandom | cut -c8- | tr -d " ")
+qs="algo=sha256×tamp=$now&nonce=$nonce&orig=$orig"
sig=$(rawurlencode $(echo -n "$qs" | openssl dgst -binary -sha256 -hmac "$key" | base64))
signed="${url}?$qs&signature=$sig"
echo "$signed"