Fehlende ALTCHA-Bibliotheksdateien ergaenzt
This commit is contained in:
@@ -0,0 +1,53 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AltchaOrg\Altcha\V1;
|
||||||
|
|
||||||
|
use AltchaOrg\Altcha\V1\Hasher\Algorithm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phpstan-import-type ChallengeParams from BaseChallengeOptions
|
||||||
|
*/
|
||||||
|
class ChallengeOptions extends BaseChallengeOptions
|
||||||
|
{
|
||||||
|
private const DEFAULT_SALT_LENGTH = 12;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options for creation of a new challenge with sane defaults.
|
||||||
|
*
|
||||||
|
* @param int $maxNumber Maximum number for the random number generator (default: 1,000,000)
|
||||||
|
* @param Algorithm $algorithm Hashing algorithm to use (`SHA-1`, `SHA-256`, `SHA-512`, default:
|
||||||
|
* `SHA-256`).
|
||||||
|
* @param null|\DateTimeInterface $expires Optional expiration time for the challenge.
|
||||||
|
* @param ChallengeParams $params Optional URL-encoded query parameters.
|
||||||
|
* @param int<1, max> $saltLength Length of the random salt (default: 12 bytes).
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
Algorithm $algorithm = Algorithm::SHA256,
|
||||||
|
int $maxNumber = self::DEFAULT_MAX_NUMBER,
|
||||||
|
?\DateTimeInterface $expires = null,
|
||||||
|
array $params = [],
|
||||||
|
int $saltLength = self::DEFAULT_SALT_LENGTH,
|
||||||
|
) {
|
||||||
|
parent::__construct(
|
||||||
|
$algorithm,
|
||||||
|
$maxNumber,
|
||||||
|
$expires,
|
||||||
|
bin2hex(self::randomBytes($saltLength)),
|
||||||
|
self::randomInt($maxNumber),
|
||||||
|
$params
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function randomInt(int $max): int
|
||||||
|
{
|
||||||
|
return random_int(0, $max);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int<1, max> $length
|
||||||
|
*/
|
||||||
|
private static function randomBytes(int $length): string
|
||||||
|
{
|
||||||
|
return random_bytes($length);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user