/** * @param object|array $payload PHP object or array * @param string $key The secret key * @param string $algo The signing algorithm * * @return string A JWT */ public static function encode($payload, $key, $algo = 'HS256') { $header = array('typ' => 'jwt', 'alg' => $algo); $segments = array(); $segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($header)); $segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($payload)); $signing_input = implode('.', $segments); $signature = JWT::sign($signing_input, $key, $algo); $segments[] = JWT::urlsafeB64Encode($signature); return implode('.', $segments); }
/** * @param object|array $payload PHP object or array * @param string $key The secret key * @param string $algo The signing algorithm * * @return string A JWT */ public static function encode($payload, $key, $type, $algo = 'HS256') { $header = array('typ' => 'JWT', 'alg' => $algo); $segments = array(); $tmp_str = implode(',', $payload); $segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($header)); if ($type) { $segments[] = JWT::urlsafeB64Encode_parse(JWT::jsonEncode($payload)); } else { $segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($payload)); } $signing_input = implode('.', $segments); $signature = JWT::sign($signing_input, $key, $algo); $segments[] = JWT::urlsafeB64Encode($signature); return implode('.', $segments); }
private static function verifySignature($signature, $input, $key, $algo) { switch ($algo) { case 'HS256': case 'HS384': case 'HS512': return JWT::sign($input, $key, $algo) === $signature; case 'RS256': return (bool) openssl_verify($input, $signature, $key, OPENSSL_ALGO_SHA256); case 'RS384': return (bool) openssl_verify($input, $signature, $key, OPENSSL_ALGO_SHA384); case 'RS512': return (bool) openssl_verify($input, $signature, $key, OPENSSL_ALGO_SHA512); default: throw new Exception("Unsupported or invalid signing algorithm."); } }
public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null) { $header = array('typ' => 'JWT', 'alg' => $alg); if ($keyId !== null) { $header['kid'] = $keyId; } if (isset($head) && is_array($head)) { $header = array_merge($head, $header); } $segments = array(); $segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($header)); $segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($payload)); $signing_input = implode('.', $segments); $signature = JWT::sign($signing_input, $key, $alg); $segments[] = JWT::urlsafeB64Encode($signature); return implode('.', $segments); }
/** * Converts and signs a PHP object or array into a JWT string. * * @param object|array $payload PHP object or array * @param string $key The secret key * @param string $alg The signing algorithm. Supported * algorithms are 'HS256', 'HS384' and 'HS512' * @param array $head An array with header elements to attach * @param array $options Extra options (audience, issuer, jwtid, subject) * * @return string A signed JWT * @uses jsonEncode * @uses urlsafeB64Encode */ public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null, $options = array()) { $header = array('typ' => 'JWT', 'alg' => $alg); if ($keyId !== null) { $header['kid'] = $keyId; } if (isset($head) && is_array($head)) { $header = array_merge($head, $header); } if (isset($options['audience']) && (is_string($options['audience']) || is_array($options['audience']))) { if (is_array($payload)) { $payload['aud'] = is_array($options['audience']) ? $options['audience'] : array($options['audience']); } else { if (is_object($payload)) { $payload->aud = is_array($options['audience']) ? $options['audience'] : array($options['audience']); } } } if (isset($options['issuer']) && is_string($options['issuer'])) { if (is_array($payload)) { $payload['iss'] = $options['issuer']; } else { if (is_object($payload)) { $payload->iss = $options['issuer']; } } } if (isset($options['subject']) && is_string($options['subject'])) { if (is_array($payload)) { $payload['sub'] = $options['subject']; } else { if (is_object($payload)) { $payload->sub = $options['subject']; } } } if (isset($options['jwtid']) && is_string($options['jwtid'])) { if (is_array($payload)) { $payload['jti'] = $options['jwtid']; } else { if (is_object($payload)) { $payload->jti = $options['jwtid']; } } } $segments = array(); $segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($header)); $segments[] = JWT::urlsafeB64Encode(JWT::jsonEncode($payload)); $signing_input = implode('.', $segments); $signature = JWT::sign($signing_input, $key, $alg); $segments[] = JWT::urlsafeB64Encode($signature); return implode('.', $segments); }
public static function gerar_token() { require_once PROJECT_ADDRESS . "/lib/util/JWT.php"; $jwt = new JWT(); $jwt->setHeader(); $jwt->setPayload(UsuarioController::$usuario->getJson("email,codigo")); $jwt->sign(jwt_secret_key()); self::$sessao->setToken($jwt->getToken()); }