ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
ILIAS\FileDelivery\Token\SigningSerializer Class Reference
+ Collaboration diagram for ILIAS\FileDelivery\Token\SigningSerializer:

Public Member Functions

 __construct (private KeyRotatingSigner $signer, private Serializer $serializer, private Compression $compression, private Transport $transport)
 
 sign (Payload $payload, Salt $salt)
 
 verify (string $data, Salt $salt)
 

Private Attributes

const SEPARATOR = '<<>>'
 

Detailed Description

Author
Fabian Schmid fabia.nosp@m.n@sr.nosp@m..solu.nosp@m.tion.nosp@m.s

Definition at line 37 of file SigningSerializer.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\FileDelivery\Token\SigningSerializer::__construct ( private KeyRotatingSigner  $signer,
private Serializer  $serializer,
private Compression  $compression,
private Transport  $transport 
)

Definition at line 41 of file SigningSerializer.php.

46  {
47  }

Member Function Documentation

◆ sign()

ILIAS\FileDelivery\Token\SigningSerializer::sign ( Payload  $payload,
Salt  $salt 
)

Definition at line 49 of file SigningSerializer.php.

References ILIAS\FileDelivery\Token\Signer\Payload\Payload\get(), and ILIAS\FileDelivery\Token\Signer\Payload\Payload\until().

49  : string
50  {
51  // serialize payload
52  $serialized_payload = $this->serializer->serializePayload($payload->get());
53  $serialized_validity = $this->serializer->serializeValidity($payload->until());
54  $signable_payload = $serialized_payload . self::SEPARATOR . $serialized_validity;
55 
56  // sign payload
57  $signature = $this->signer->sign($signable_payload, $salt);
58 
59  $signed_payload = $signable_payload . self::SEPARATOR . $signature;
60 
61  $compressed_payload = $this->compression->compress($signed_payload);
62 
63  $prepare_for_transport = $this->transport->prepareForTransport($compressed_payload);
64 
65  return $prepare_for_transport;
66  }
if(count($parts) !=3) $payload
Definition: ltitoken.php:67
+ Here is the call graph for this function:

◆ verify()

ILIAS\FileDelivery\Token\SigningSerializer::verify ( string  $data,
Salt  $salt 
)

Definition at line 68 of file SigningSerializer.php.

References Vendor\Package\$e.

68  : ?Payload
69  {
70  // decompress payload
71  try {
72  $decompressed_payload = $this->compression->decompress(
73  $this->transport->readFromTransport($data)
74  );
75  } catch (\Throwable $e) {
76  return null;
77  }
78 
79  $split_data = explode(self::SEPARATOR, $decompressed_payload);
80  $serialized_payload = $split_data[0] ?? '';
81  $validity = $split_data[1] ?? '';
82  $signature = $split_data[2] ?? '';
83 
84  $payload_with_validity = $serialized_payload . self::SEPARATOR . $validity;
85 
86  if ($this->signer->verify($payload_with_validity, $signature, (int) $validity, $salt) === false) {
87  return null;
88  }
89 
90  return new StructuredPayload($this->serializer->unserializePayload($serialized_payload));
91  }

Field Documentation

◆ SEPARATOR

const ILIAS\FileDelivery\Token\SigningSerializer::SEPARATOR = '<<>>'
private

Definition at line 39 of file SigningSerializer.php.


The documentation for this class was generated from the following file: