ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
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 49 of file DataSigner.php.

Constructor & Destructor Documentation

◆ __construct()

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

Definition at line 59 of file DataSigner.php.

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

Member Function Documentation

◆ getSignedStreamToken()

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

Definition at line 85 of file DataSigner.php.

References $payload.

91  : string {
92  $payload = $this->payload_builder->shortFile(
93  $stream,
94  $filename,
95  $disposition
96  );
97 
98  if ($until !== null) {
99  $payload->setUntil($until->getTimestamp());
100  }
101 
102  return $this->signing_serializer->sign(
103  $payload,
104  $this->salt_factory->create('stream')
105  );
106  }
if(count($parts) !=3) $payload
Definition: ltitoken.php:67
$filename
Definition: buildRTE.php:78

◆ sign()

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

Definition at line 117 of file DataSigner.php.

References $payload.

121  : string {
122  $payload = new StructuredPayload($data);
123 
124  if ($until !== null) {
125  $payload->setUntil($until->getTimestamp());
126  }
127 
128  return $this->signing_serializer->sign(
129  $payload,
130  $this->salt_factory->create($salt)
131  );
132  }
if(count($parts) !=3) $payload
Definition: ltitoken.php:67

◆ verify()

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

Definition at line 134 of file DataSigner.php.

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

137  : ?array {
138  return $this->signing_serializer->verify(
139  $token,
140  $this->salt_factory->create($salt)
141  )?->get();
142  }
$token
Definition: xapitoken.php:67
+ Here is the caller graph for this function:

◆ verifyStreamToken()

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

Definition at line 108 of file DataSigner.php.

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

108  : ?Payload
109  {
110  $data = $this->verify($token, 'stream');
111  if ($data === null) {
112  return null;
113  }
114  return $this->payload_builder->shortFileFromRaw($data);
115  }
verify(string $token, string $salt)
Definition: DataSigner.php:134
$token
Definition: xapitoken.php:67
+ Here is the call graph for this function:

Field Documentation

◆ $compression

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

Definition at line 55 of file DataSigner.php.

◆ $payload_builder

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

Definition at line 57 of file DataSigner.php.

◆ $salt_factory

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

Definition at line 54 of file DataSigner.php.

◆ $serializer

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

Definition at line 52 of file DataSigner.php.

◆ $signer

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

Definition at line 51 of file DataSigner.php.

◆ $signing_serializer

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

Definition at line 53 of file DataSigner.php.

◆ $transport

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

Definition at line 56 of file DataSigner.php.


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