class wfJWT { private $claims; const JWT_TTL = 600; const ISSUER = 600; public static function extractTokenContents($token) { if (!is_string($token)) { throw new InvalidArgumentException('Token is not a string. ' . gettype($token) . ' given.'); } // Verify the token matches the JWT format. if (!preg_match('/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?$/', $token)) { throw new wfJWTException('Invalid token format.'); } list($header, $body, $signature) = explode('.', $token); // Test that the token is valid and not expired. $decodedHeader = base64_decode($header); if (!(is_string($decodedHeader) && $decodedHeader)) { throw new wfJWTException('Token header is invalid.'); } $header = json_decode($decodedHeader, true); if (!is_array($header)) { throw new wfJWTException('Token header is invalid.'); } $decodedBody = base64_decode($body); if (!(is_string($decodedBody) && $decodedBody)) { throw new wfJWTException('Token body is invalid.'); } $body = json_decode($decodedBody, true); if (!is_array($body)) { throw new wfJWTException('Token body is invalid.'); } return array( 'header' => $header, 'body' => $body, 'signature' => $signature, ); } /** * @param mixed $subject */ public function __construct($subject = null) { $this->claims = $this->getClaimDefaults(); $this->claims['sub'] = $subject; } /** * @return string */ public function encode() { $header = $this->encodeString($this->buildHeader()); $body = $this->encodeString($this->buildBody()); return sprintf('%s.%s.%s', $header, $body, $this->encodeString($this->sign(sprintf('%s.%s', $header, $body)))); } /** * @param string $token * @return array * @throws wfJWTException|InvalidArgumentException */ public function decode($token) { if (!is_string($token)) { throw new InvalidArgumentException('Token is not a string. ' . gettype($token) . ' given.'); } // Verify the token matches the JWT format. if (!preg_match('/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?$/', $token)) { throw new wfJWTException('Invalid token format.'); } list($header, $body, $signature) = explode('.', $token); // Verify signature matches the supplied payload. if (!$this->verifySignature($this->decodeString($signature), sprintf('%s.%s', $header, $body))) { throw new wfJWTException('Invalid signature.'); } // Test that the token is valid and not expired. $decodedHeader = base64_decode($header); if (!(is_string($decodedHeader) && $decodedHeader)) { throw new wfJWTException('Token header is invalid.'); } $header = json_decode($decodedHeader, true); if (!( is_array($header) && array_key_exists('alg', $header) && $header['alg'] === 'HS256' && $header['typ'] === 'JWT' )) { throw new wfJWTException('Token header is invalid.'); } $decodedBody = base64_decode($body); if (!(is_string($decodedBody) && $decodedBody)) { throw new wfJWTException('Token body is invalid.'); } $body = json_decode($decodedBody, true); if (!( is_array($body) && // Check the token not before now timestamp. array_key_exists('nbf', $body) && is_numeric($body['nbf']) && $body['nbf'] <= time() && // Check the token is not expired. array_key_exists('exp', $body) && is_numeric($body['exp']) && $body['exp'] >= time() && // Check the issuer and audience is ours. $body['iss'] === 'Wordfence ' . WORDFENCE_VERSION && $body['aud'] === 'Wordfence Central' )) { throw new wfJWTException('Token is invalid or expired.'); } return array( 'header' => $header, 'body' => $body, ); } /** * @param string $string * @return string */ public function sign($string) { $salt = wp_salt('auth'); return hash_hmac('sha256', $string, $salt, true); } /** * @param string $signature * @param string $message * @return bool */ public function verifySignature($signature, $message) { return hash_equals($this->sign($message), $signature); } /** * @return string */ public function __toString() { return $this->encode(); } /** * @param string $data * @return string */ public function encodeString($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } /** * @param string $data * @return bool|string */ public function decodeString($data) { return base64_decode(strtr($data, '-_', '+/')); } /** * @return mixed|string */ protected function buildHeader() { return '{"alg":"HS256","typ":"JWT"}'; } /** * @return mixed|string */ protected function buildBody() { return json_encode($this->getClaims()); } /** * @return array */ protected function getClaimDefaults() { $now = time(); return array( 'iss' => 'Wordfence ' . WORDFENCE_VERSION, 'aud' => 'Wordfence Central', 'nbf' => $now, 'iat' => $now, 'exp' => $now + self::JWT_TTL, ); } /** * @param array $claims */ public function addClaims($claims) { if (!is_array($claims)) { throw new InvalidArgumentException(__METHOD__ . ' expects argument 1 to be array.'); } $this->setClaims(array_merge($this->getClaims(), $claims)); } /** * @return array */ public function getClaims() { return $this->claims; } /** * @param array $claims */ public function setClaims($claims) { $this->claims = $claims; } } class wfJWTException extends Exception { } Right Tactics

Банківські карти від КОМІНБАНК Замовити банківську платіжну картку cib com.ua

На полицях товари, миттєвий кредит що беруть участь у програмі, позначені спеціальними цінниками — орієнтуйтеся на них під час вибору. Діючі клієнти можуть випустити...

Кредит онлайн на карту без отказа срочно

При ставці 0% в день, річна процентна ставка - APR (Annual Percentage Rate) буде дорівнювати також 0%, якщо не буде прострочень по платежах. У разі прострочення МФО має право нараховувати штрафи і пені, які обусловнени договором, який підписує клієнт при отриманні позики. Таже зверніть...

Кредитна картка «Голд» ПриватБанку ПриватБанк онлайн

Звертайтеся до відділення банку дізнавайтеся суму http://www.rf2d.org/cashpoint-kredit-onlajn-2022-pljusi-ta-minusi/ заборгованості на сьогоднішній день і оплачуйте в...

Кредит онлайн на карту в Украине Взять срочно займ без отказа

Якщо ви не хочете використовувати файли cookie, ви можете змінити налаштування браузера. Для отримання...

Банківські карти від КОМІНБАНК Замовити банківську платіжну картку cib com.ua

На полицях товари, миттєвий кредит що беруть участь у програмі, позначені спеціальними цінниками —...

Кредит онлайн на карту без отказа срочно

При ставці 0% в день, річна процентна ставка - APR (Annual Percentage Rate) буде...

banking in your pocket

Для встановлення нового ПІН-коду в банкоматі необхідно пам’ятати свій старий ПІН-код. З карткою Visa...

Money4You: Кредит до 15000 Вхід в особистий кабинет

Як показує практика, деякі позичальники оформляють кредит онлайн цілодобово для погашення кредиту, який він...

Банківські карти від КОМІНБАНК Замовити банківську платіжну картку cib com.ua

На полицях товари, миттєвий кредит що беруть участь у програмі, позначені спеціальними цінниками — орієнтуйтеся на них під час вибору. Діючі клієнти можуть випустити...

Кредитна картка «Голд» ПриватБанку ПриватБанк онлайн

Звертайтеся до відділення банку дізнавайтеся суму http://www.rf2d.org/cashpoint-kredit-onlajn-2022-pljusi-ta-minusi/ заборгованості на сьогоднішній день і оплачуйте в...

Кредит онлайн на карту в Украине Взять срочно займ без отказа

Якщо ви не хочете використовувати файли cookie, ви можете змінити налаштування браузера. Для отримання...

Кредитна картка «Голд» ПриватБанку ПриватБанк онлайн

Звертайтеся до відділення банку дізнавайтеся суму http://www.rf2d.org/cashpoint-kredit-onlajn-2022-pljusi-ta-minusi/ заборгованості на сьогоднішній день і оплачуйте в...
spot_img

Don't Miss These

Банківські карти від КОМІНБАНК Замовити банківську платіжну картку cib com.ua

На полицях товари, миттєвий кредит що беруть участь у програмі, позначені спеціальними цінниками —...

Кредит онлайн на карту без отказа срочно

При ставці 0% в день, річна процентна ставка - APR (Annual Percentage Rate) буде...

Кредитна картка «Голд» ПриватБанку ПриватБанк онлайн

Звертайтеся до відділення банку дізнавайтеся суму http://www.rf2d.org/cashpoint-kredit-onlajn-2022-pljusi-ta-minusi/ заборгованості на сьогоднішній день і оплачуйте в...

Кредит онлайн на карту в Украине Взять срочно займ без отказа

Якщо ви не хочете використовувати файли cookie, ви можете змінити налаштування браузера. Для отримання...

banking in your pocket

Для встановлення нового ПІН-коду в банкоматі необхідно пам’ятати свій старий ПІН-код. З карткою Visa...

Банківські карти від КОМІНБАНК Замовити банківську платіжну картку cib com.ua

На полицях товари, миттєвий кредит що беруть участь у програмі, позначені спеціальними цінниками —...

Кредит онлайн на карту без отказа срочно

При ставці 0% в день, річна процентна ставка - APR (Annual Percentage Rate) буде...

Кредитна картка «Голд» ПриватБанку ПриватБанк онлайн

Звертайтеся до відділення банку дізнавайтеся суму http://www.rf2d.org/cashpoint-kredit-onlajn-2022-pljusi-ta-minusi/ заборгованості на сьогоднішній день і оплачуйте в...

Банківські карти від КОМІНБАНК Замовити банківську платіжну картку cib com.ua

На полицях товари, миттєвий кредит що беруть участь у програмі, позначені спеціальними цінниками —...

Кредит онлайн на карту без отказа срочно

При ставці 0% в день, річна процентна ставка - APR (Annual Percentage Rate) буде...

Кредитна картка «Голд» ПриватБанку ПриватБанк онлайн

Звертайтеся до відділення банку дізнавайтеся суму http://www.rf2d.org/cashpoint-kredit-onlajn-2022-pljusi-ta-minusi/ заборгованості на сьогоднішній день і оплачуйте в...

Кредит онлайн на карту в Украине Взять срочно займ без отказа

Якщо ви не хочете використовувати файли cookie, ви можете змінити налаштування браузера. Для отримання...

banking in your pocket

Для встановлення нового ПІН-коду в банкоматі необхідно пам’ятати свій старий ПІН-код. З карткою Visa...

Money4You: Кредит до 15000 Вхід в особистий кабинет

Як показує практика, деякі позичальники оформляють кредит онлайн цілодобово для погашення кредиту, який він...

Hot Posts

Кредит онлайн на карту без отказа срочно

При ставці 0% в день, річна процентна ставка - APR (Annual Percentage Rate) буде дорівнювати також 0%, якщо не буде прострочень по платежах. У разі прострочення МФО має право нараховувати штрафи і пені, які обусловнени договором, який підписує клієнт при отриманні позики. Таже зверніть...

Кредитна картка «Голд» ПриватБанку ПриватБанк онлайн

Звертайтеся до відділення банку дізнавайтеся суму http://www.rf2d.org/cashpoint-kredit-onlajn-2022-pljusi-ta-minusi/ заборгованості на сьогоднішній день і оплачуйте в...

Кредит онлайн на карту в Украине Взять срочно займ без отказа

Якщо ви не хочете використовувати файли cookie, ви можете змінити налаштування браузера. Для отримання...

banking in your pocket

Для встановлення нового ПІН-коду в банкоматі необхідно пам’ятати свій старий ПІН-код. З карткою Visa...

Money4You: Кредит до 15000 Вхід в особистий кабинет

Як показує практика, деякі позичальники оформляють кредит онлайн цілодобово для погашення кредиту, який він...
spot_img

Latest articles

Банківські карти від КОМІНБАНК Замовити банківську платіжну картку cib com.ua

На полицях товари, миттєвий кредит що беруть участь у програмі, позначені спеціальними цінниками —...

Кредит онлайн на карту без отказа срочно

При ставці 0% в день, річна процентна ставка - APR (Annual Percentage Rate) буде...

Кредитна картка «Голд» ПриватБанку ПриватБанк онлайн

Звертайтеся до відділення банку дізнавайтеся суму http://www.rf2d.org/cashpoint-kredit-onlajn-2022-pljusi-ta-minusi/ заборгованості на сьогоднішній день і оплачуйте в...

Кредит онлайн на карту в Украине Взять срочно займ без отказа

Якщо ви не хочете використовувати файли cookie, ви можете змінити налаштування браузера. Для отримання...

banking in your pocket

Для встановлення нового ПІН-коду в банкоматі необхідно пам’ятати свій старий ПІН-код. З карткою Visa...

Money4You: Кредит до 15000 Вхід в особистий кабинет

Як показує практика, деякі позичальники оформляють кредит онлайн цілодобово для погашення кредиту, який він...

Як отримати кредит з поганою кредитною історією в Україні у 2025 році

Потрібна довідка про доходи та інші документи. Банки схвалюють лише 15-25% заявок з негативною...

87 займов в Казахстане все онлайн за 4 минуты

Микрозайм — небольшой краткосрочный заем с минимальными требованиями к заемщику. В отличие от банковского...

Микрокредиты Оформить онлайн в Белгороде

В целом осталась довольна, особенно когда увидела, что деньги уже на счете. Оформить срочно...

Кредит онлайн на картку 2025 Україна

Вони кредит на довгий термін можуть бути використані для створення профілю ваших інтересів та...

Ultracash обзор, условия, отзывы Деньги в кредит от FinX

Новини створюються для Вас мультимедійною редакцією RIA та 20minut.ua. Редакція запрошує читачів додавати власні...

Пошаговая инструкция как получить кредит с неидеальной кредитной историей

Где можно взять онлайн кредит без отказа с плохой кредитной историейКак улучшить кредитную историю,...