lucidlogic/omnipay-pesapal

View on GitHub
src/OAuth/OAuthSignatureMethod_Hmac_Sha1.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Omnipay\Pesapal\OAuth;

class OAuthSignatureMethod_Hmac_Sha1
{
    /**
     * @return string
     */
    public function get_name(): string
    {
        return 'HMAC-SHA1';
    }

    /**
     * @param $request
     * @param $consumer
     * @param $token
     *
     * @return string
     */
    public function build_signature(
        $request,
        $consumer,
        $token
    ): string {
        $base_string = $request->get_signature_base_string();
        $request->base_string = $base_string;

        $key_parts = [
            $consumer->secret,
            ($token) ? $token->secret : '',
        ];

        $key_parts = OAuthUtil::urlencode_rfc3986($key_parts);
        $key = implode('&', $key_parts);

        return base64_encode(hash_hmac('sha1', $base_string, $key, true));
    }

    /**
     * @param $request
     * @param $consumer
     * @param $token
     * @param $signature
     *
     * @return bool
     */
    public function check_signature(
        &$request,
        $consumer,
        $token,
        $signature
    ): bool {
        $built = $this->build_signature($request, $consumer, $token);

        return $built == $signature;
    }
}