ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
ILIAS\FileDelivery\Token\DataSigner Class Reference
+ Inheritance diagram for ILIAS\FileDelivery\Token\DataSigner:
+ Collaboration diagram for ILIAS\FileDelivery\Token\DataSigner:

Public Member Functions

 __construct (SecretKeyRotation $key_rotation, ?Algorithm $algorithm=null, ?Compression $compression=null, ?Transport $transport=null)
 
 getSignedStreamToken (FileStream $stream, string $filename, Disposition $disposition, int $user_id, ?\DateTimeImmutable $until=null)
 
 getSignedStreamTokenWithoutIsolation (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)
 
 getSignedStreamToken (FileStream $stream, string $filename, Disposition $disposition, int $user_id, ?\DateTimeImmutable $until=null)
 
 getSignedStreamTokenWithoutIsolation (FileStream $stream, string $filename, Disposition $disposition, int $user_id, ?\DateTimeImmutable $until=null)
 Signs the token for delivery on the ILIAS domain instead of the content domain of User Content Isolation. More...
 
 verifyStreamToken (string $token)
 
 sign (array $data, string $salt, ?\DateTimeImmutable $until=null)
 
 verify (string $token, string $salt)
 

Private Member Functions

 signStreamToken (FileStream $stream, string $filename, ?\DateTimeImmutable $until, bool $isolated)
 

Private Attributes

SigningSerializer $signing_serializer
 
Factory $salt_factory
 
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 44 of file DataSigner.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\FileDelivery\Token\DataSigner::__construct ( SecretKeyRotation  $key_rotation,
?Algorithm  $algorithm = null,
?Compression  $compression = null,
?Transport  $transport = null 
)

Definition at line 50 of file DataSigner.php.

55 {
56 $this->salt_factory = new Factory();
57 $compression ??= new DeflateCompression();
58 $transport ??= new URLSafeTransport();
59 $algorithm ??= new ShortenedSHA1();
60
61 $this->signing_serializer = new SigningSerializer(
62 new KeyRotatingSigner(
63 $key_rotation,
64 new HMACSigner(
65 $algorithm
66 ),
67 new HMACSigningKeyGenerator(
68 $algorithm
69 )
70 ),
71 new JSONSerializer(),
72 $compression,
73 $transport
74 );
75
76 $this->payload_builder = new Builder();
77 }
The salt is combined with the secret key to derive a unique key for distinguishing different contexts...
Definition: Factory.php:38

Member Function Documentation

◆ getSignedStreamToken()

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

Implements ILIAS\FileDelivery\Token\DataSigning.

Definition at line 79 of file DataSigner.php.

85 : string {
86 return $this->signStreamToken($stream, $filename, $until, true);
87 }
$filename
Definition: buildRTE.php:78
signStreamToken(FileStream $stream, string $filename, ?\DateTimeImmutable $until, bool $isolated)
Definition: DataSigner.php:102

◆ getSignedStreamTokenWithoutIsolation()

ILIAS\FileDelivery\Token\DataSigner::getSignedStreamTokenWithoutIsolation ( FileStream  $stream,
string  $filename,
Disposition  $disposition,
int  $user_id,
?\DateTimeImmutable  $until = null 
)
Deprecated:
see {
See also
DataSigning::getSignedStreamTokenWithoutIsolation()}

Implements ILIAS\FileDelivery\Token\DataSigning.

Definition at line 92 of file DataSigner.php.

98 : string {
99 return $this->signStreamToken($stream, $filename, $until, false);
100 }

◆ sign()

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

Implements ILIAS\FileDelivery\Token\DataSigning.

Definition at line 133 of file DataSigner.php.

137 : string {
138 $payload = new StructuredPayload($data);
139
140 if ($until !== null) {
141 $payload->setUntil($until->getTimestamp());
142 }
143
144 return $this->signing_serializer->sign(
145 $payload,
146 $this->salt_factory->create($salt)
147 );
148 }
$data
Definition: storeScorm.php:45

References ILIAS\FileDelivery\Token\Signer\Payload\StructuredPayload\setUntil().

+ Here is the call graph for this function:

◆ signStreamToken()

ILIAS\FileDelivery\Token\DataSigner::signStreamToken ( FileStream  $stream,
string  $filename,
?\DateTimeImmutable  $until,
bool  $isolated 
)
private

Definition at line 102 of file DataSigner.php.

107 : string {
108 $payload = $this->payload_builder->shortFile(
109 $stream,
110 $filename,
111 $isolated
112 );
113
114 if ($until !== null) {
115 $payload->setUntil($until->getTimestamp());
116 }
117
118 return $this->signing_serializer->sign(
119 $payload,
120 $this->salt_factory->create('stream')
121 );
122 }

◆ verify()

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

Implements ILIAS\FileDelivery\Token\DataSigning.

Definition at line 150 of file DataSigner.php.

153 : ?array {
154 return $this->signing_serializer->verify(
155 $token,
156 $this->salt_factory->create($salt)
157 )?->get();
158 }
$token
Definition: xapitoken.php:69

◆ verifyStreamToken()

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

Implements ILIAS\FileDelivery\Token\DataSigning.

Definition at line 124 of file DataSigner.php.

124 : ?Payload
125 {
126 $data = $this->verify($token, 'stream');
127 if ($data === null) {
128 return null;
129 }
130 return $this->payload_builder->shortFileFromRaw($data);
131 }
verify(string $token, string $salt)
Definition: DataSigner.php:150

References $data, and $token.

Field Documentation

◆ $payload_builder

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

Definition at line 48 of file DataSigner.php.

◆ $salt_factory

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

Definition at line 47 of file DataSigner.php.

◆ $signing_serializer

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

Definition at line 46 of file DataSigner.php.


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