19 declare(strict_types=1);
54 $serialized_payload = $this->serializer->serializePayload($payload->
get());
55 $serialized_validity = $this->serializer->serializeValidity($payload->
until());
56 $signable_payload = $serialized_payload . self::SEPARATOR . $serialized_validity;
59 $signature = $this->signer->sign($signable_payload, $salt);
61 $signed_payload = $signable_payload . self::SEPARATOR . $signature;
63 $compressed_payload = $this->compression->compress($signed_payload);
65 $prepare_for_transport = $this->transport->prepareForTransport($compressed_payload);
67 return $prepare_for_transport;
74 $decompressed_payload = $this->compression->decompress(
75 $this->transport->readFromTransport($data)
81 $split_data = explode(self::SEPARATOR, $decompressed_payload);
82 $serialized_payload = $split_data[0] ??
'';
83 $validity = $split_data[1] ??
'';
84 $signature = $split_data[2] ??
'';
86 $payload_with_validity = $serialized_payload . self::SEPARATOR . $validity;
88 if ($this->signer->verify($payload_with_validity, $signature, (
int) $validity, $salt) ===
false) {
92 return new StructuredPayload($this->serializer->unserializePayload($serialized_payload));
sign(Payload $payload, Salt $salt)
if(count($parts) !=3) $payload
__construct(private KeyRotatingSigner $signer, private Serializer $serializer, private Compression $compression, private Transport $transport)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
The salt is combined with the secret key to derive a unique key for distinguishing different contexts...
verify(string $data, Salt $salt)