Подпись для OAuth - PullRequest
0 голосов
/ 19 июля 2011

Я пытаюсь настроить своего собственного поставщика OAuth, но теперь я застрял при подписании запросов.Это правильный способ подписи?

function generateSignature($consumerSecret, $requestURI, $requestData, $requestMethod) {
    $signature = '';
    $signature .= strtoupper($requestMethod) . '&';
    $signature .= urlencode($requestURI) . '&';
    asort($requestData);
    $query = http_build_query($requestData);
    $signature .= urlencode($query);
    echo oauthHMACsha1($consumerSecret, $signature);

}

function HMACsha1($key, $data) {
    $blocksize = 64;
    $hashfunc = 'sha1';
    if (strlen($key) > $blocksize) $key = pack('H*', $hashfunc($key));
    $key = str_pad($key, $blocksize, chr(0x00));
    $ipad = str_repeat(chr(0x36), $blocksize);
    $opad = str_repeat(chr(0x5c), $blocksize);
    $hmac = pack('H*',$hashfunc(($key^$opad).pack('H*', $hashfunc(($key ^ $ipad) . $data))));
    return $hmac;
}

function oauthHMACsha1($key, $data) {
    return base64_encode(HMACsha1($key, $data));
}

Или это может быть проще / эффективнее?И почему важно подписание?

1 Ответ

0 голосов
/ 19 июля 2011

Вы видели hash_hmac php функцию?

...