public function addSignature(JWK $signatureKey, array $protectedHeader, array $header = []): self
    {
        $this->checkB64AndCriticalHeader($protectedHeader);
        $isPayloadEncoded = $this->checkIfPayloadIsEncoded($protectedHeader);
        if (null === $this->isPayloadEncoded) {
            $this->isPayloadEncoded = $isPayloadEncoded;
        } elseif ($this->isPayloadEncoded !== $isPayloadEncoded) {
            throw new \InvalidArgumentException('Foreign payload encoding detected.');
        }
        $this->checkDuplicatedHeaderParameters($protectedHeader, $header);
        KeyChecker::checkKeyUsage($signatureKey, 'signature');
        $signatureAlgorithm = $this->findSignatureAlgorithm($signatureKey, $protectedHeader, $header);
        KeyChecker::checkKeyAlgorithm($signatureKey, $signatureAlgorithm->name());
        $clone = clone $this;
        $clone->signatures[] = [
            'signature_algorithm' => $signatureAlgorithm,
            'signature_key' => $signatureKey,
            'protected_header' => $protectedHeader,
            'header' => $header,
        ];

        return $clone;
    }
public function addSignature(JWK $signatureKey, array $protectedHeader, array $header = []): self
    {
        $this->checkB64AndCriticalHeader($protectedHeader);
        $isPayloadEncoded = $this->checkIfPayloadIsEncoded($protectedHeader);
        if (null === $this->isPayloadEncoded) {
            $this->isPayloadEncoded = $isPayloadEncoded;
        } elseif ($this->isPayloadEncoded !== $isPayloadEncoded) {
            throw new \InvalidArgumentException('Foreign payload encoding detected.');
        }
        $this->checkDuplicatedHeaderParameters($protectedHeader, $header);
        KeyChecker::checkKeyUsage($signatureKey, 'signature');
        $signatureAlgorithm = $this->findSignatureAlgorithm($signatureKey, $protectedHeader, $header);
        KeyChecker::checkKeyAlgorithm($signatureKey, $signatureAlgorithm->name());
        $clone = clone $this;
        $clone->signatures[] = [
            'signature_algorithm' => $signatureAlgorithm,
            'signature_key' => $signatureKey,
            'protected_header' => $protectedHeader,
            'header' => $header,
        ];

        return $clone;
    }
public function addSignature ( JWK $ signatureKey , array $ protectedHeader , array $ header = [ ] ) : self { $ this -> checkB64AndCriticalHeader ( $ protectedHeader ) ; $ isPayloadEncoded = $ this -> checkIfPayloadIsEncoded ( $ protectedHeader ) ; if ( null === $ this -> isPayloadEncoded ) { $ this -> isPayloadEncoded = $ isPayloadEncoded ; } elseif ( $ this -> isPayloadEncoded !== $ isPayloadEncoded ) { throw new \ InvalidArgumentException ( 'Foreign payload encoding detected.' ) ; } $ this -> checkDuplicatedHeaderParameters ( $ protectedHeader , $ header ) ; KeyChecker :: checkKeyUsage ( $ signatureKey , 'signature' ) ; $ signatureAlgorithm = $ this -> findSignatureAlgorithm ( $ signatureKey , $ protectedHeader , $ header ) ; KeyChecker :: checkKeyAlgorithm ( $ signatureKey , $ signatureAlgorithm -> name ( ) ) ; $ clone = clone $ this ; $ clone -> signatures [ ] = [ 'signature_algorithm' => $ signatureAlgorithm , 'signature_key' => $ signatureKey , 'protected_header' => $ protectedHeader , 'header' => $ header , ] ; return $ clone ; }
Adds the information needed to compute the signature.
This method will return a new JWSBuilder object.

@return JWSBuilder
Adds the information needed to compute the signature . This method will return a new JWSBuilder object .