function HMACSHA1($key, $message)
{
    $keyLen = strlen($key);
    if ($keyLen > 64) {
        $key = sha1KeyedMAC('', $message);
    } else {
        if ($keyLen < 64) {
            $key .= str_repeat("", 64 - $keyLen);
        }
    }
    $oPad = str_repeat("\\", 64) ^ $key;
    $iPad = str_repeat("6", 64) ^ $key;
    return sha1KeyedMAC($oPad, sha1KeyedMAC($iPad, $message));
}
        while ($context->messageBlockIndex < 56) {
            $context->messageBlock[$context->messageBlockIndex++] = 0;
        }
        $context->messageBlock[56] = $context->lengthHigh >> 24 & 0xff;
        $context->messageBlock[57] = $context->lengthHigh >> 16 & 0xff;
        $context->messageBlock[58] = $context->lengthHigh >> 8 & 0xff;
        $context->messageBlock[59] = $context->lengthHigh & 0xff;
        $context->messageBlock[60] = $context->lengthLow >> 24 & 0xff;
        $context->messageBlock[61] = $context->lengthLow >> 16 & 0xff;
        $context->messageBlock[62] = $context->lengthLow >> 8 & 0xff;
        $context->messageBlock[63] = $context->lengthLow & 0xff;
        $this->processMessageBlock($context);
    }
}
function sha1KeyedMAC($key, $message)
{
    $c = new SHA1Context();
    $s = new SHA1();
    $s->reset($c);
    $s->input($c, $key . $message);
    $s->result($c);
    return pack('N5', $c->messageDigest[0], $c->messageDigest[1], $c->messageDigest[2], $c->messageDigest[3], $c->messageDigest[4]);
}
if (!debug_backtrace()) {
    print "Expected: A9993E364706816ABA3E25717850C26C9CD0D89D\n";
    print "Homebrew: " . bin2hex(sha1KeyedMAC('', 'abc')) . "\n";
    print "Expected: 84983E441C3BD26EBAAE4AA1F95129E5E54670F1\n";
    print "Homebrew: " . bin2hex(sha1KeyedMAC('', 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq')) . "\n";
    print "Expected: 34AA973CD4C4DAA4F61EEB2BDBAD27316534016F\n";
    print "Homebrew: " . bin2hex(sha1KeyedMAC('', str_repeat('a', 1000000))) . "\n";
}