Skip to content

HOTP

  • Full name: \OTPHP\HOTP
  • Parent class: \OTPHP\OTP
  • This class is marked as final and can't be subclassed
  • This class implements: \OTPHP\HOTPInterface
  • This class is a Final class

See Also:

  • \OTPHP\Test\HOTPTest -

Constants

Constant Visibility Type Value
DEFAULT_WINDOW private 0

Methods

create

Create a new HOTP object.

public static create(null|string $secret = null, int $counter = self::DEFAULT_COUNTER, string $digest = self::DEFAULT_DIGEST, int $digits = self::DEFAULT_DIGITS): self

If the secret is null, a random 64 bytes secret will be generated.

  • This method is static.

Parameters:

Parameter Type Description
$secret null|string
$counter int
$digest string
$digits int

createFromSecret

Create a OTP object from an existing secret.

public static createFromSecret(string $secret): self
  • This method is static.

Parameters:

Parameter Type Description
$secret string

generate

Create a new OTP object. A random 64 bytes secret will be generated.

public static generate(): self
  • This method is static.

getCounter

The initial counter (a positive integer).

public getCounter(): 0|positive-int

getProvisioningUri

Get the provisioning URI.

public getProvisioningUri(): non-empty-string

verify

If the counter is not provided, the OTP is verified at the actual counter.

public verify(string $otp, null|int $counter = null, null|int $window = null): bool

Parameters:

Parameter Type Description
$otp string
$counter null|int
$window null|int

setCounter

public setCounter(int $counter): void

Parameters:

Parameter Type Description
$counter int

getParameterMap

protected getParameterMap(): array<non-empty-string,callable>

updateCounter

private updateCounter(positive-int $counter): void

Parameters:

Parameter Type Description
$counter positive-int

getWindow

private getWindow(null|0|positive-int $window): int

Parameters:

Parameter Type Description
$window null|0|positive-int

verifyOtpWithWindow

private verifyOtpWithWindow(non-empty-string $otp, 0|positive-int $counter, null|0|positive-int $window): bool

Parameters:

Parameter Type Description
$otp non-empty-string
$counter 0|positive-int
$window null|0|positive-int

Inherited methods

getParameters

public getParameters(): array<non-empty-string,mixed>

getSecret

public getSecret(): string

getLabel

public getLabel(): null|string

setLabel

public setLabel(string $label): void

Parameters:

Parameter Type Description
$label string

getIssuer

public getIssuer(): null|string

setIssuer

public setIssuer(string $issuer): void

Parameters:

Parameter Type Description
$issuer string

isIssuerIncludedAsParameter

public isIssuerIncludedAsParameter(): bool

setIssuerIncludedAsParameter

public setIssuerIncludedAsParameter(bool $issuer_included_as_parameter): void

Parameters:

Parameter Type Description
$issuer_included_as_parameter bool

getDigits

public getDigits(): int

getDigest

public getDigest(): string

hasParameter

public hasParameter(string $parameter): bool

Parameters:

Parameter Type Description
$parameter string

getParameter

public getParameter(string $parameter): mixed

Parameters:

Parameter Type Description
$parameter string

setParameter

public setParameter(string $parameter, mixed $value): void

Parameters:

Parameter Type Description
$parameter string
$value mixed

setSecret

public setSecret(string $secret): void

Parameters:

Parameter Type Description
$secret string

setDigits

public setDigits(int $digits): void

Parameters:

Parameter Type Description
$digits int

setDigest

public setDigest(string $digest): void

Parameters:

Parameter Type Description
$digest string

getParameterMap

protected getParameterMap(): array<non-empty-string,callable>

hasColon

private hasColon(non-empty-string $value): bool

Parameters:

Parameter Type Description
$value non-empty-string

__construct

protected __construct(non-empty-string $secret): mixed

Parameters:

Parameter Type Description
$secret non-empty-string

getQrCodeUri

Get the provisioning URI.

public getQrCodeUri(string $uri, string $placeholder): string

Parameters:

Parameter Type Description
$uri string The Uri of the QRCode generator with all parameters. This Uri MUST contain a placeholder that will be replaced by the method.
$placeholder string the placeholder to be replaced in the QR Code generator URI

at

public at(int $input): non-empty-string

Parameters:

Parameter Type Description
$input int

Return Value:

Return the OTP at the specified timestamp


generateSecret

final protected static generateSecret(): non-empty-string
  • This method is static.

  • This method is final.


generateOTP

The OTP at the specified input.

protected generateOTP(0|positive-int $input): non-empty-string

Parameters:

Parameter Type Description
$input 0|positive-int

filterOptions

protected filterOptions(array<non-empty-string,mixed>& $options): void

Parameters:

Parameter Type Description
$options array

generateURI

protected generateURI(non-empty-string $type, array<non-empty-string,mixed> $options): non-empty-string

Parameters:

Parameter Type Description
$type non-empty-string
$options array

compareOTP

protected compareOTP(non-empty-string $safe, non-empty-string $user): bool

Parameters:

Parameter Type Description
$safe non-empty-string
$user non-empty-string

getDecodedSecret

private getDecodedSecret(): non-empty-string

intToByteString

private intToByteString(0|positive-int $int): string

Parameters:

Parameter Type Description
$int 0|positive-int


Automatically generated on 2025-03-18