Validazione hmac

Ciao a tutti,
sto provando
questohttps://labs.ericsson.com/apis/sms-send-and-receive/documentationservizio
della ericsson che permette di ricevere e inviare sms. Ricevo
correttamente i dati tramite una callback url in questo formato

?from=[MSISDN]&time=[TIMESTAMP]&message=[MESSAGE]&hmac=[HMAC]

L’ultimo parametro, hmac, è un hmac sha1 codificato in base64, ottenuto da
una chiave (la mia chiave personale per accedere al servizio) e da una
stringa ottenuta concatenando gli altri 3 parametri (from, time,
message).
Per verificare l’autenticità del messaggio dunque dovrei ricalcolare
l’hmac
e confrontarlo con quello che mi è stato inviato. Ho provato con questo
metodo:

def verify(key = “SECRET”)
digest = OpenSSL::Digest::Digest.new(‘sha1’)
data = @from + @time + @message
Base64.encode64(OpenSSL::HMAC.digest(digest, key, data)) == @hmac
end

ma, come avrete già capito, non riesco a far coincidere il codice da me
calcolato con quuello che mi è stato inviato. Avete dei suggerimenti da
darmi? Magari sto sbagliando tutto.

Grazie

Il tuo codice mi sembra corretto… però se vuoi ho trovato (partendo
dall’articolo della wikipedia
sull’hmac) un link ad una libreria ruby che sembra proprio fatta apposta
:smiley:

http://ruby-hmac.rubyforge.org/

ps: ma… l’invio e la ricezione degli sms sono gratuiti ?

Sandro

2009/7/10 Pierpaolo S. [email protected]

ruby-hmac l’avevo già provata, ma produce lo stesso codice.
Per quanto riguarda il servizio, la ricezione è gratuita mentre per
l’invio
hai 1000 sms gratis, che comunque sono molti.

Il giorno 11 Luglio 2009 11.11, Sandro P.
<[email protected]

ha scritto: