<?php

namespace Plivo\Util;


/**
 * Class signatureValidation
 * @package Plivo\Util
 */
class signatureValidation
{
    /**
     * Return an array without keys with null values
     *
     * @param array $array
     * @return array
     */
    public static function validateSignature($uri, $nonce, $signature, $auth_token='')
    {
      $nonce = utf8_encode($nonce);
      $signature = utf8_encode($signature);
      $auth_token = utf8_encode($auth_token);
      $uri = utf8_encode($uri);
      $port = '';
      $parsed_uri = parse_url($uri);
      $base_url = $parsed_uri['scheme'].'://'.$parsed_uri['host'];
      if (isset($parsed_uri['port'])) {
        $base_url .= ':'.$parsed_uri['port'];
      }
      if (isset($parsed_uri['path'])) {
        $base_url .= $parsed_uri['path'];
      }
      $hmac = hash_hmac('SHA256', $base_url.$nonce, $auth_token, true);
      $authentication_string = base64_encode($hmac);
      return $authentication_string == $signature;
    }
}
