Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

Signature.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 3.09 KiB


001  <?php
002  namespace OAuth\OAuth1\Signature;
003   
004  use OAuth\Common\Consumer\Credentials;
005  use OAuth\Common\Http\Uri\UriInterface;
006  use OAuth\OAuth1\Signature\Exception\UnsupportedHashAlgorithmException;
007   
008  class Signature implements SignatureInterface
009  {
010      /**
011       * @var \OAuth\Common\Consumer\Credentials
012       */
013      protected $credentials;
014   
015      /**
016       * @var string
017       */
018      protected $algorithm;
019   
020      /**
021       * @var string
022       */
023      protected $tokenSecret = null;
024   
025      /**
026       * @param \OAuth\Common\Consumer\Credentials $credentials
027       */
028      public function __construct(Credentials $credentials)
029      {
030          $this->credentials = $credentials;
031      }
032   
033      /**
034       * @param string $algorithm
035       */
036      public function setHashingAlgorithm($algorithm)
037      {
038          $this->algorithm = $algorithm;
039      }
040   
041      /**
042       * @param string $token
043       */
044      public function setTokenSecret($token)
045      {
046          $this->tokenSecret = $token;
047      }
048   
049      /**
050       * @param \OAuth\Common\Http\Uri\UriInterface $uri
051       * @param array $params
052       * @param string $method
053       * @return string
054       */
055      public function getSignature(UriInterface $uri, array $params, $method = 'POST')
056      {
057          parse_str($uri->getQuery(), $queryStringData);
058   
059          foreach(array_merge($queryStringData, $params) as $key => $value) {
060              $signatureData[rawurlencode($key)] = rawurlencode($value);
061          }
062   
063          ksort($signatureData);
064   
065          // determine base uri
066          $baseUri = $uri->getScheme() . '://' . $uri->getRawAuthority();
067   
068          if ('/' == $uri->getPath()) {
069              $baseUri.= $uri->hasExplicitTrailingHostSlash() ? '/' : '';
070          } else {
071              $baseUri .= $uri->getPath();
072          }
073   
074          $baseString = strtoupper($method) . '&';
075          $baseString.= rawurlencode($baseUri) . '&';
076          $baseString.= rawurlencode($this->buildSignatureDataString($signatureData));
077   
078          return base64_encode($this->hash($baseString));
079      }
080   
081   
082      /**
083       * @param array $signatureData
084       * @return string
085       */
086      protected function buildSignatureDataString(array $signatureData)
087      {
088          $signatureString = '';
089          $delimiter = '';
090          foreach($signatureData as $key => $value) {
091              $signatureString .= $delimiter . $key . '=' . $value;
092   
093              $delimiter = '&';
094          }
095   
096          return $signatureString;
097      }
098   
099      /**
100       * @return string
101       */
102      protected function getSigningKey()
103      {
104          $signingKey = rawurlencode($this->credentials->getConsumerSecret()) . '&';
105          if ($this->tokenSecret !== null) {
106              $signingKey .= rawurlencode($this->tokenSecret);
107          }
108   
109          return $signingKey;
110      }
111   
112      /**
113       * @param string $data
114       * @return string
115       * @throws UnsupportedHashAlgorithmException
116       */
117      protected function hash($data)
118      {
119          switch(strtoupper($this->algorithm)) {
120              case 'HMAC-SHA1':
121                  return hash_hmac('sha1', $data, $this->getSigningKey(), true);
122   
123              default:
124                  throw new UnsupportedHashAlgorithmException('Unsupported hashing algorithm (' . $this->algorithm . ') used.');
125          }
126      }
127  }
128