2010-06-24 3 views
0

Je dois valider une signature pour un rappel de ankoder.com qui fournissent la description suivante:Vérification d'une signature de notification (PHP)

Il est la chaîne URL de échappé HMAC-SHA1 Base64 de votre clé privée et le message URL-unescaped.

$passkey = urlencode(base64_encode(hash_hmac('sha1', urldecode($str), $private_key, true))); 

Ils fournissent l'exemple suivant Ruby

encoded_signature = CGI.escape Base64.encode64(HMAC::SHA1::digest(private_key, CGI.unescape(message))).strip 

J'exécuter sur des échantillons de données Je suis revenu d'un rappel, mais je ne reçois pas la même signature. Comment répliquer le code Ruby en PHP?

Édition Le problème résidait dans l'espace blanc envoyé.

Répondre

2

Votre code PHP correspond au code Ruby. Le problème doit être ailleurs.

Vérifiez que la clé est correcte et que le message est analysé correctement (code url, puis json_decode).

+0

Bien que je n'ai pas encore trouvé de solution, je suis maintenant pleinement convaincu que l'erreur réside dans la chaîne d'entrée et, par conséquent, j'accepte cette réponse. – Gazler

Questions connexes