sign() public static method

Sign a string with a given key and algorithm.
public static sign ( string $msg, string | resource $key, string $method = 'HS256' ) : string
$msg string The message to sign
$key string | resource The secret key
$method string The signing algorithm. Supported algorithms are 'HS256', 'HS384', 'HS512' and 'RS256'
return string An encrypted message
Example #1
0
 /**
  * @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);
 }
Example #2
0
 /**
  * @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);
 }
Example #3
0
 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.");
     }
 }
Example #4
0
 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);
 }
Example #5
0
 /**
  * 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);
 }
Example #6
0
 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());
 }