> For the complete documentation index, see [llms.txt](https://beytullahakyuz.gitbook.io/otplib/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://beytullahakyuz.gitbook.io/otplib/delphi/usage.md).

# Usage

```pascal
uses OTPLib;
```

## TOTP&#x20;

{% tabs %}
{% tab title="Usage-SHA1" %}

```pascal
// Default: SHA1
var secretkey: string := 'JBSWY3DPEHPK3PXP';
var totp: TTOTP;
var otpcode: string;

totp := TTOTP.Create(30, 6);
//totp := TTOTP.Create(30, 6, TOTPHashAlgorithm.SHA1);
otpcode := totp.GenerateOTP(secretkey);
```

{% endtab %}

{% tab title="Usage-SHA256" %}

```pascal
// SHA256
var secretkey: string := 'JBSWY3DPEHPK3PXP';
var totp: TTOTP;
var otpcode: string;

totp := TTOTP.Create(30, 6, TOTPHashAlgorithm.SHA256);
otpcode := totp.GenerateOTP(secretkey);

// Set Hash Algorithm - SHA512
totp.SetAlgorithm(TOTPHashAlgorithm.SHA512);
```

{% endtab %}

{% tab title="Verification" %}

```pascal
var secretkey: string := 'JBSWY3DPEHPK3PXP';
var totp: TTOTP;
var verificationstatus: Boolean;

totp := TTOTP.Create(period, digits, algorithm);
//totp.SetPeriod(45);
verificationstatus := totp.Verify('otpcode', secretkey);
```

{% endtab %}

{% tab title="URL Generation" %}

```pascal
var secretkey: string := 'JBSWY3DPEHPK3PXP';
var totp: TTOTP;
var otpurl: string;

totp := TTOTP.Create(period, digits, algorithm);
otpurl := totp.GetOTPUrl('accountname', 'servicename', secretkey);
//otpurl := totp.GetOTPUrl('user@gmail.com', 'Microsoft', secretkey, period, digits, TOTPHashAlgorithm.SHA1);
```

{% endtab %}
{% endtabs %}

## HOTP

{% tabs %}
{% tab title="Usage-SHA1" %}

```pascal
// Default: SHA1
var secretkey: string := 'JBSWY3DPEHPK3PXP';
var hotp: THOTP;
var otpcode: string;

hotp := THOTP.Create(1000, 6);
//hotp := THOTP.Create(30, 6, TOTPHashAlgorithm.SHA1);
otpcode := hotp.GenerateOTP(secretkey);
```

{% endtab %}

{% tab title="Usage-SHA256" %}

```pascal
// SHA256
var secretkey: string := 'JBSWY3DPEHPK3PXP';
var hotp: TTOTP;
var otpcode: string;

hotp := THOTP.Create(30, 6, TOTPHashAlgorithm.SHA256);
otpcode := hotp.GenerateOTP(secretkey);

// Set Hash Algorithm - SHA512
hotp.SetAlgorithm(TOTPHashAlgorithm.SHA512);
```

{% endtab %}

{% tab title="Verification" %}

```pascal
var secretkey: string := 'JBSWY3DPEHPK3PXP';
var hotp: THOTP;
var verificationstatus: Boolean;
hotp := THOTP.Create(counter, digits, algorithm);
//hotp.SetCounter(652);
verificationstatus := hotp.Verify('otpcode', secretkey);
```

{% endtab %}

{% tab title="URL Generation" %}

```pascal
var secretkey: string := 'JBSWY3DPEHPK3PXP';
var hotp: THOTP;
var otpurl: string;

hotp := THOTP.Create(counter, digits, algorithm);
otpurl := hotp.GetOTPUrl('accountname', 'servicename', secretkey);
//otpurl := hotp.GetOTPUrl('user@gmail.com', 'Microsoft', secretkey, period, digits, TOTPHashAlgorithm.SHA1);
```

{% endtab %}
{% endtabs %}

## Class Functions

```pascal
// Encoding Base32 (TOTP or HTOP)
var secretkey: string := 'your-secret-key';
var encodedSecretkey: string;
encodedSecretkey := TOTPLib.Base32Encode(TEncoding.UTF8.GetBytes(secretkey));
//encodedSecretkey := TTOTP.Base32Encode(TEncoding.UTF8.GetBytes(secretkey));
//encodedSecretkey := THOTP.Base32Encode(TEncoding.UTF8.GetBytes(secretkey));

// Check Valid Secretkey (TOTP or HTOP)
var secretkey: string := 'OBGFELDJJRGWG4DSNFBCENSBMZNUM43J';
var checksecretkey: Boolean;
checksecretkey := TOTPLib.CheckValidSecretkey(secretkey);
//checksecretkey := TTOTP.CheckValidSecretkey(secretkey);
//checksecretkey := HTOTP.CheckValidSecretkey(secretkey);

// Generate Random Secret Key
var generatedsecretkey: string;
generatedsecretkey := TOTPLib.GenerateRandomSecretKey(30);
//generatedsecretkey := TTOTP.GenerateRandomSecretKey(30);
//generatedsecretkey := THOTP.GenerateRandomSecretKey(30);
```
