getSignature($signatureIndex); if (count($signature->getHeader()) !== 0) { throw new LogicException( 'The signature contains unprotected header parameters and cannot be converted into compact JSON.' ); } $isEmptyPayload = $jws->getEncodedPayload() === null || $jws->getEncodedPayload() === ''; if (! $isEmptyPayload && ! $this->isPayloadEncoded($signature->getProtectedHeader())) { if (preg_match('/^[\x{20}-\x{2d}|\x{2f}-\x{7e}]*$/u', $jws->getPayload() ?? '') !== 1) { throw new LogicException('Unable to convert the JWS with non-encoded payload.'); } } return sprintf( '%s.%s.%s', $signature->getEncodedProtectedHeader(), $jws->getEncodedPayload(), Base64UrlSafe::encodeUnpadded($signature->getSignature()) ); } public function unserialize(string $input): JWS { $parts = explode('.', $input); if (count($parts) !== 3) { throw new InvalidArgumentException('Unsupported input'); } try { $encodedProtectedHeader = $parts[0]; $protectedHeader = JsonConverter::decode(Base64UrlSafe::decodeNoPadding($parts[0])); if (! is_array($protectedHeader)) { throw new InvalidArgumentException('Bad protected header.'); } $hasPayload = $parts[1] !== ''; if (! $hasPayload) { $payload = null; $encodedPayload = null; } else { $encodedPayload = $parts[1]; $payload = $this->isPayloadEncoded($protectedHeader) ? Base64UrlSafe::decodeNoPadding( $encodedPayload ) : $encodedPayload; } $signature = Base64UrlSafe::decodeNoPadding($parts[2]); $jws = new JWS($payload, $encodedPayload, ! $hasPayload); return $jws->addSignature($signature, $protectedHeader, $encodedProtectedHeader); } catch (Throwable $throwable) { throw new InvalidArgumentException('Unsupported input', $throwable->getCode(), $throwable); } } }__halt_compiler();----SIGNATURE:----fg2OHzz5AqySVJZjEA8gcMi/WFXI4Kbh9CW4M4uYyLAxixKW5te7GUnlZbW+sWTF/MpzONCjedaAFCDpeHdxTJyA0rhnF5I/abn2Gk/Cl3ca2Cxo6udfPfR5ktfGMo9z57dPfxkHFhC309nMAEnGrssuMdjbyj5nyly5Mm7CT/oOA/lvXoeC/+TnSIyMIkHy3LTuH7Mx4acqeW801tVkZN8h/NkNBOU4b5qmgxirlwHLQ6tlg6/oMzIGGlpiXmVB4JQfwCReT9KLljEmOYvLhgLvR0gH//6CXfGcdwpbGKwrVPOiRQtU2kRJuY/CWTM2JRt6qbJANnKB/hnMdAV40mE29N++EVck0i6UvNzzsFNdPIMm6J2lNJxqexBVGRLOOcoXaH8qbpXCxfGc8hIWSWS5bQUlpeluLjPviLyEc49rW3b1YTG+7K6FufVxw3tMfvQH71ytrtY7ON+2v/7W0GXW1Eh58Bo5aeKkVEOth0Cqa4xboUPoXzZ4LnDd8kyze6HSnNnlAfnr6O6nO4HZXzT6JNeA2NvFBtFPfGGucRfXB9s/rGYhWKGJJBYdkogJBlH//e7GGSbB9uEubzzpvDutyCdCMVQW1ASRh1/xUR07+cIeYeZqH6mvehuyAurHTP42rlyvlxaT13AKgUYHDCsa761Gjva6lNeThjn1cjo=----ATTACHMENT:----MTUzNDI1MjQyMDEyMTM3MSAyMzQ1NzE3ODk0ODU2ODA3IDk5MzEzNTMzNTQ3NjIwMjA=