public function sign(Token $token) { $token->addHeader(new Algorithm($this->encryption->getAlgorithmName())); $rawSignature = $this->getUnsignedValue($token); $signature = $this->encryption->encrypt($rawSignature); $token->setSignature($signature); }
protected static function authorization() { $token = new Emarref\Jwt\Token(); $parameter = new Emarref\Jwt\HeaderParameter\Custom('typ', 'JWT'); $token->addHeader($parameter, true); $token->addClaim(new Emarref\Jwt\Claim\Expiration(new \DateTime(self::$duration))); $jwt = new Emarref\Jwt\Jwt(); $algorithm = new Emarref\Jwt\Algorithm\Hs256(self::$appSecret); $encryption = Emarref\Jwt\Encryption\Factory::create($algorithm); $serializedToken = $jwt->serialize($token, $encryption); return $serializedToken; }
/** * @param string $jwt * @return Token */ public function deserialize($jwt) { $token = new Token(); list($encodedHeader, $encodedPayload, $encodedSignature) = explode('.', $jwt); $decodedHeader = $this->encoding->decode($encodedHeader); $decodedPayload = $this->encoding->decode($encodedPayload); $decodedSignature = $this->encoding->decode($encodedSignature); foreach ($this->parseHeaders($decodedHeader) as $header) { $token->addHeader($header); } foreach ($this->parsePayload($decodedPayload) as $claim) { $token->addClaim($claim); } $token->setSignature($decodedSignature); return $token; }
/** * @param string $jwt * * @return Token * @throws \InvalidArgumentException */ public function deserialize($jwt) { $token = new Token(); if (empty($jwt)) { throw new \InvalidArgumentException('Not a valid JWT string passed for deserialization'); } list($encodedHeader, $encodedPayload, $encodedSignature) = array_pad(explode('.', $jwt, 3), 3, null); $decodedHeader = $this->encoding->decode($encodedHeader); $decodedPayload = $this->encoding->decode($encodedPayload); $decodedSignature = $this->encoding->decode($encodedSignature); foreach ($this->parseHeaders($decodedHeader) as $header) { $token->addHeader($header); } foreach ($this->parsePayload($decodedPayload) as $claim) { $token->addClaim($claim); } $token->setSignature($decodedSignature); return $token; }