コード例 #1
0
ファイル: JWS.php プロジェクト: sop/jwx
 /**
  * Initialize by signing the payload with given algorithm.
  *
  * @param string $payload JWS Payload
  * @param SignatureAlgorithm $algo Signature algorithm
  * @param Header|null $header Desired header. Algorithm specific
  *        parameters are added automatically.
  * @throws \RuntimeException If signature computation fails
  * @return self
  */
 public static function sign($payload, SignatureAlgorithm $algo, Header $header = null)
 {
     if (!isset($header)) {
         $header = new Header();
     }
     $header = $header->withParameters(...$algo->headerParameters());
     // ensure that if b64 parameter is used, it's marked critical
     if ($header->hasB64Payload()) {
         if (!$header->hasCritical()) {
             $crit = new CriticalParameter(JWTParameter::P_B64);
         } else {
             $crit = $header->critical()->withParamName(JWTParameter::P_B64);
         }
         $header = $header->withParameters($crit);
     }
     $signature_input = self::_generateSignatureInput($payload, $header);
     $signature = $algo->computeSignature($signature_input);
     return new self($header, $payload, $signature_input, $signature);
 }
コード例 #2
0
ファイル: HMACAlgorithm.php プロジェクト: sop/jwx
 /**
  *
  * @see \JWX\JWS\SignatureAlgorithm::headerParameters()
  * @return JWTParameter[]
  */
 public function headerParameters()
 {
     return array_merge(parent::headerParameters(), array(AlgorithmParameter::fromAlgorithm($this)));
 }