ILIAS  trunk Revision v11.0_alpha-2662-g519ff7d528f
ILIAS\FileDelivery\Token\DataSigner Class Reference
+ Collaboration diagram for ILIAS\FileDelivery\Token\DataSigner:

Public Member Functions

 __construct (SecretKeyRotation $key_rotation)
 
 getSignedStreamToken (FileStream $stream, string $filename, Disposition $disposition, int $user_id, ?\DateTimeImmutable $until=null)
 
 verifyStreamToken (string $token)
 
 sign (array $data, string $salt, ?\DateTimeImmutable $until=null)
 
 verify (string $token, string $salt)
 

Private Attributes

Signer $signer
 
Serializer $serializer
 
SigningSerializer $signing_serializer
 
Factory $salt_factory
 
Compression $compression
 
Transport $transport
 
Builder $payload_builder
 

Detailed Description

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

Definition at line 46 of file DataSigner.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\FileDelivery\Token\DataSigner::__construct ( SecretKeyRotation  $key_rotation)

Definition at line 56 of file DataSigner.php.

58  {
59  $this->salt_factory = new Factory();
60  $compression = new DeflateCompression();
61  $transport = new URLSafeTransport();
62  $algorithm = new SHA1();
63 
64  $this->signing_serializer = new SigningSerializer(
65  new KeyRotatingSigner(
66  $key_rotation,
67  new HMACSigner(
68  $algorithm
69  ),
70  new HMACSigningKeyGenerator(
71  $algorithm
72  )
73  ),
74  new JSONSerializer(),
77  );
78 
79  $this->payload_builder = new Builder();
80  }

Member Function Documentation

◆ getSignedStreamToken()

ILIAS\FileDelivery\Token\DataSigner::getSignedStreamToken ( FileStream  $stream,
string  $filename,
Disposition  $disposition,
int  $user_id,
?\DateTimeImmutable  $until = null 
)

Definition at line 82 of file DataSigner.php.

References $payload, and null.

88  : string {
89  $payload = $this->payload_builder->shortFile(
90  $stream,
91  $filename
92  );
93 
94  if ($until !== null) {
95  $payload->setUntil($until->getTimestamp());
96  }
97 
98  return $this->signing_serializer->sign(
99  $payload,
100  $this->salt_factory->create('stream')
101  );
102  }
if(count($parts) !=3) $payload
Definition: ltitoken.php:67
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
$filename
Definition: buildRTE.php:78

◆ sign()

ILIAS\FileDelivery\Token\DataSigner::sign ( array  $data,
string  $salt,
?\DateTimeImmutable  $until = null 
)

Definition at line 113 of file DataSigner.php.

References $payload, and null.

117  : string {
118  $payload = new StructuredPayload($data);
119 
120  if ($until !== null) {
121  $payload->setUntil($until->getTimestamp());
122  }
123 
124  return $this->signing_serializer->sign(
125  $payload,
126  $this->salt_factory->create($salt)
127  );
128  }
if(count($parts) !=3) $payload
Definition: ltitoken.php:67
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null

◆ verify()

ILIAS\FileDelivery\Token\DataSigner::verify ( string  $token,
string  $salt 
)

Definition at line 130 of file DataSigner.php.

Referenced by ILIAS\FileDelivery\Token\DataSigner\verifyStreamToken().

133  : ?array {
134  return $this->signing_serializer->verify(
135  $token,
136  $this->salt_factory->create($salt)
137  )?->get();
138  }
$token
Definition: xapitoken.php:70
+ Here is the caller graph for this function:

◆ verifyStreamToken()

ILIAS\FileDelivery\Token\DataSigner::verifyStreamToken ( string  $token)

Definition at line 104 of file DataSigner.php.

References $data, null, and ILIAS\FileDelivery\Token\DataSigner\verify().

104  : ?Payload
105  {
106  $data = $this->verify($token, 'stream');
107  if ($data === null) {
108  return null;
109  }
110  return $this->payload_builder->shortFileFromRaw($data);
111  }
verify(string $token, string $salt)
Definition: DataSigner.php:130
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
$token
Definition: xapitoken.php:70
+ Here is the call graph for this function:

Field Documentation

◆ $compression

Compression ILIAS\FileDelivery\Token\DataSigner::$compression
private

Definition at line 52 of file DataSigner.php.

◆ $payload_builder

Builder ILIAS\FileDelivery\Token\DataSigner::$payload_builder
private

Definition at line 54 of file DataSigner.php.

◆ $salt_factory

Factory ILIAS\FileDelivery\Token\DataSigner::$salt_factory
private

Definition at line 51 of file DataSigner.php.

◆ $serializer

Serializer ILIAS\FileDelivery\Token\DataSigner::$serializer
private

Definition at line 49 of file DataSigner.php.

◆ $signer

Signer ILIAS\FileDelivery\Token\DataSigner::$signer
private

Definition at line 48 of file DataSigner.php.

◆ $signing_serializer

SigningSerializer ILIAS\FileDelivery\Token\DataSigner::$signing_serializer
private

Definition at line 50 of file DataSigner.php.

◆ $transport

Transport ILIAS\FileDelivery\Token\DataSigner::$transport
private

Definition at line 53 of file DataSigner.php.


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