1. Go to this page and download the library: Download equit/totp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
equit / totp example snippets
use CitrusLab\Totp\Factory;
$user->totpSecret = Factory::randomSecret()->raw()
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\UrlGenerator;
$factory = new Factory();
UrlGenerator::for($user->username)->urlFor($factory->totp(new Secret($user->totpSecret)))
use CitrusLab\Totp\Factory;
$factory = new Factory();
$factory->totp(new Secret($user->totpSecret))->verify($inputOtp)
use CitrusLab\Totp\Factory;
$user->totpSecret = encrypt(Factory::randomSecret());
$user->save();
use CitrusLab\Totp\Factory;
$user->totpSecret = encrypt(Factory::randomSecret()->base32());
$user->save();
use CitrusLab\Totp\Codecs\Base32;
$user->notify(Base32::encode(decrypt($user->totpSecret)));
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Secret;
use CitrusLab\Totp\UrlGenerator;
$factory = new Factory()
$user->notify(UrlGenerator::from("MyWebApp")->for($user->username)->urlFor($factory->totp(new Secret(decrypt($user->totpSecret))));
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Secret;
use function CitrusLab\Totp\scrubString;
$factory = new Factory()
$isVerified = $factory->totp(new Secret(decrypt($user->totpSecret)))->verify($inputOtp);
scrubString($inputOtp);
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Secret;
use function CitrusLab\Totp\scrubString;
$factory = new Factory()
$isVerified = $factory->totp(new Secret(decrypt($user->totpSecret)))->verify(password: $inputOtp, window: 1);
scrubString($inputOtp);
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Secret;
use CitrusLab\Totp\UrlGenerator;
$factory = new Factory()
$generator = UrlGenerator::from("CitrusLab");
foreach ($users as $user) {
$user->totpSecret = encrypt(Factory::randomSecret());
$user->save();
$user->notify($generator->for($user->username)->urlFor($factory->totp(new Secret(decrypt($user->totpSecret)))));
}
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Secret;
use function CitrusLab\Totp\scrubString;
$factory = new Factory()
$isVerified = $factory->totp(new Secret(decrypt($user->totpSecret)))->verify($inputOtp);
scrubString($inputOtp);
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Secret;
use function CitrusLab\Totp\scrubString;
$factory = new Factory()
$isVerified = $factory->totp(new Secret(decrypt($user->totpSecret)))->verify(password: $inputOtp, window: 1);
scrubString($inputOtp);
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Secret;
use function CitrusLab\Totp\scrubString;
$factory = new Factory()
$totp = $factory->totp(new Secret(decrypt($user->totpSecret)));
if ($user->highestUsedTotpCounter < $totp->counter()) {
if ($totp->verify($inputOtp)) {
$user->highestUsedTotpCounter = $totp->counter();
$user->save();
// user is authenticated
} else {
// incorrect OTP
}
} else {
// OTP has already been used
}
// ensure the secret is shredded
scrubString($inputOtp);
unset($totp);
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Secret;
use function CitrusLab\Totp\scrubString;
$factory = new Factory()
$totp = $factory->totp(new Secret(decrypt($user->totpSecret)));
$window = min(1, $totp->counter() - $user->highestUsedTotpCounter - 1);
if (0 <= $window) {
if ($totp->verify(password: $inputOtp, window: $window)) {
...
}
}
// ensure the secret is shredded
scrubString($inputOtp);
unset($totp);
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\HashAlgorithm;
$factory = new Factory(hashAlgorithm: new HashAlgorithm(HashAlgorithm::Sha256Algorithm));
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\HashAlgorithm;
$factory = new Factory(hashAlgorithm: new HashAlgorithm(HashAlgorithm::Sha512Algorithm));
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\TimeStep;
$factory = new Factory(timeStep: new TimeStep(60));
use CitrusLab\Totp\Factory;
$factory = new Factory(referenceTime: 86400);
use CitrusLab\Totp\Factory;
$factory = new Factory(referenceTime: new DateTime("1970-01-02 00:00:00", new DateTimeZone("UTC")));
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\TimeStep;
$factory = new Factory(timeStep: new TimeStep(60), referenceTime: new DateTime("1970-01-02 00:00:00", new DateTimeZone("UTC")));
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\TimeStep;
$factory = new Factory(
timeStep: new TimeStep(60),
referenceTime: new DateTime("1970-01-02 00:00:00", new DateTimeZone("UTC")),
hashAlgorithm: new HashAlgorithm(HashAlgorithm::Sha512Algorithm),
);
use CitrusLab\Totp\Factory;
$factory = Factory::eightDigits();
use CitrusLab\Totp\Factory;
$factory = Factory::eightDigits(
timeStep: new TimeStep(60),
referenceTime: new DateTime("1970-01-02 00:00:00", new DateTimeZone("UTC")),
hashAlgorithm: new HashAlgorithm(HashAlgorithm::Sha512Algorithm),
);
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Digits;
$factory = Factory::integer(new Digits(9));
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Types\Digits;
use CitrusLab\Totp\Types\HashAlgorithm;
use CitrusLab\Totp\Types\TimeStep;
$factory = Factory::integer(
digits: new Digits(9),
timeStep: new TimeStep(60),
referenceTime: new DateTime("1970-01-02 00:00:00", new DateTimeZone("UTC")),
hashAlgorithm: new HashAlgorithm(HashAlgorithm::Sha512Algorithm),
);
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Renderers\Steam;
$factory = new Factory(renderer: new Steam());
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Renderers\Steam;
use CitrusLab\Totp\Types\Digits;
use CitrusLab\Totp\Types\HashAlgorithm;
use CitrusLab\Totp\Types\TimeStep;
$factory = new Factory(
renderer: new Steam(),
timeStep: new TimeStep(60),
referenceTime: new DateTime("1970-01-02 00:00:00", new DateTimeZone("UTC")),
hashAlgorithm: new HashAlgorithm(HashAlgorithm::Sha512Algorithm),
);
use CitrusLab\Totp\Factory;
use CitrusLab\Totp\Codecs\Base32;
use CitrusLab\Totp\Codecs\Base64;
$factory = new Factory();
$totp = $factory->totp(new Secret(Base32::decode(decrypt($user->totpSecret))));
$totp = $factory->totp(new Secret(Base64::decode(decrypt($user->totpSecret))));
use CitrusLab\Totp\Factory;
$factory = new Factory();
$totp = $factory->totp(Secret::fromBase32(decrypt($user->totpSecret)));
$totp = $factory->totp(Secret::fromBase64(decrypt($user->totpSecret)));
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.