---
product: Chilkat
product_version: 11.7.0
language: pascal
language_label: Lazarus Pascal
class: OAuth1
license: bundle
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/pascal_OAuth1Ref.html
---
# Chilkat OAuth1 — Lazarus Pascal — v11.7.0

> Chilkat 11.7.0 · language=pascal · class=OAuth1
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/OAuth1.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/guide.md`.

## Purpose

**Generate OAuth 1.0 signatures, authorization headers, and signed request URLs.**

`Chilkat.OAuth1` builds the signed OAuth 1.0 authentication data needed for APIs that still require OAuth 1.0 request signing. It can generate the signature base string, HMAC key, signature, URL-encoded signature, normalized signed parameter string, Authorization header, and generated URL containing OAuth query parameters. It supports consumer credentials, access tokens, nonce and timestamp generation, extra signed parameters, optional realm handling, HMAC-SHA1, HMAC-SHA256, RSA-SHA1, and RSA-SHA256 signing.

**OAuth 1.0 signing**

Generate the OAuth 1.0 signature and related authentication values from the HTTP method, request URL, credentials, token, nonce, and timestamp.

**Authorization header**

Produce the value to send in the HTTP `Authorization` header when OAuth parameters should be supplied as a header.

**Signed URL output**

Generate a URL that includes the OAuth 1.0 query parameters when the API expects authentication data in the request URL.

**Extra signed parameters**

Add or remove request-specific name/value parameters that must be included in the normalized parameter string and signature calculation.

**HMAC or RSA signatures**

Sign with `HMAC-SHA1`, `HMAC-SHA256`, `RSA-SHA1`, or `RSA-SHA256`, with RSA private keys supplied by `SetRsaKey`.

**Debuggable signing details**

Inspect the exact `BaseString`, `HmacKey`, `QueryString`, `Signature`, and `EncodedSignature` used to build the OAuth request.

**Common pattern:** Set `OauthMethod` and `OauthUrl`, provide the consumer key and secret, set any token and token secret, generate or assign `Nonce` and `Timestamp`, add request parameters with `AddParam`, then call `Generate`. Use `AuthorizationHeader` when sending OAuth data in an HTTP header, or `GeneratedUrl` when the signed OAuth parameters should be placed in the URL.

**URL guidance:** Set `OauthUrl` to the base request URL without query parameters. Add query parameters separately with `AddParam` so they are included correctly in the OAuth 1.0 signature calculation.

## Object creation, unlocking and error handling

**Create / Free**

```pascal
uses
  Chilkat.OAuth1;

var
  obj: TOAuth1;
begin
  obj := TOAuth1.Create;
  try
    if not obj.IsValid then
      raise Exception.Create('Failed to create a TOAuth1 instance.');

    // ... use obj ...

  finally
    obj.Free;
  end;
end;
```

`constructor Create;`

Allocates the underlying CkOAuth1 object and returns a new TOAuth1 instance. Simply adding **Chilkat.OAuth1** to the unit's `uses` clause is enough to locate and bind to the Chilkat shared library (DLL / .so / .dylib) at runtime — no separate load step is required. Check `obj.IsValid` after calling `Create`; it is `False` if the underlying library could not be found/loaded or the object could not be allocated (for example, when unlicensed).

`destructor Destroy; override;`

Every TOAuth1 created by calling `Create` should eventually be released by calling `.Free` (inherited from `TObject`). The destructor automatically disposes the underlying CkOAuth1 handle. A native (unmanaged) memory leak occurs if the object is never freed.

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Lazarus Pascal.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `property DebugLogFilePath: string read GetDebugLogFilePath write SetDebugLogFilePath;` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `property LastErrorHtml: string read GetLastErrorHtml;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `property LastErrorText: string read GetLastErrorText;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `property LastErrorXml: string read GetLastErrorXml;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `property LastMethodSuccess: Boolean read GetLastMethodSuccess write SetLastMethodSuccess;` | read/write | Indicates the success or failure of the most recent method call: `True` means success, `False` means failure. |
| `VerboseLogging` | `property VerboseLogging: Boolean read GetVerboseLogging write SetVerboseLogging;` | read/write | If set to `True`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `property Version: string read GetVersion;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `AuthorizationHeader` | property, read-only | `property AuthorizationHeader: string read GetAuthorizationHeader;` |
| `BaseString` | property, read-only | `property BaseString: string read GetBaseString;` |
| `ConsumerKey` | property, read/write | `property ConsumerKey: string read GetConsumerKey write SetConsumerKey;` |
| `ConsumerSecret` | property, read/write | `property ConsumerSecret: string read GetConsumerSecret write SetConsumerSecret;` |
| `EncodedSignature` | property, read-only | `property EncodedSignature: string read GetEncodedSignature;` |
| `GeneratedUrl` | property, read-only | `property GeneratedUrl: string read GetGeneratedUrl;` |
| `HmacKey` | property, read-only | `property HmacKey: string read GetHmacKey;` |
| `Nonce` | property, read/write | `property Nonce: string read GetNonce write SetNonce;` |
| `OauthMethod` | property, read/write | `property OauthMethod: string read GetOauthMethod write SetOauthMethod;` |
| `OauthUrl` | property, read/write | `property OauthUrl: string read GetOauthUrl write SetOauthUrl;` |
| `OauthVersion` | property, read/write | `property OauthVersion: string read GetOauthVersion write SetOauthVersion;` |
| `QueryString` | property, read-only | `property QueryString: string read GetQueryString;` |
| `Realm` | property, read/write | `property Realm: string read GetRealm write SetRealm;` |
| `Signature` | property, read-only | `property Signature: string read GetSignature;` |
| `SignatureMethod` | property, read/write | `property SignatureMethod: string read GetSignatureMethod write SetSignatureMethod;` |
| `Timestamp` | property, read/write | `property Timestamp: string read GetTimestamp write SetTimestamp;` |
| `Token` | property, read/write | `property Token: string read GetToken write SetToken;` |
| `TokenSecret` | property, read/write | `property TokenSecret: string read GetTokenSecret write SetTokenSecret;` |
| `UncommonOptions` | property, read/write | `property UncommonOptions: string read GetUncommonOptions write SetUncommonOptions;` |
| `AddParam` | method | `function AddParam(const name: string;     const value: string): Boolean;` |
| `Generate` | method | `function Generate: Boolean;` |
| `GenNonce` | method | `function GenNonce(numBytes: Integer): Boolean;` |
| `GenTimestamp` | method | `function GenTimestamp: Boolean;` |
| `RemoveParam` | method | `function RemoveParam(const name: string): Boolean;` |
| `SetRsaKey` | method | `// privKey is a TPrivateKey object. function SetRsaKey(privKey: TChilkatBase): Boolean;` |

## Properties

### OAuth1.AuthorizationHeader

`Chilkat 11.7.0 · pascal · OAuth1 · AuthorizationHeader · property · read-only · since 9.5.0.53`

```pascal
property AuthorizationHeader: string read GetAuthorizationHeader;
```

The authorization header. This is what would be included in the Authorization HTTP request header if it is going to be used as the means for providing the OAuth1 authorization information.

### OAuth1.BaseString

`Chilkat 11.7.0 · pascal · OAuth1 · BaseString · property · read-only · since 9.5.0.53`

```pascal
property BaseString: string read GetBaseString;
```

This is the exact string that was signed. For example, if the signature method is HMAC-SHA1, the BaseString is the exact string that passed to the HMAC-SHA1. An application does not set the BaseString property. The BaseString is exposed as a property to allow for debugging and to see the exact string that is signed.

### OAuth1.ConsumerKey

`Chilkat 11.7.0 · pascal · OAuth1 · ConsumerKey · property · read/write · since 9.5.0.53`

```pascal
property ConsumerKey: string read GetConsumerKey write SetConsumerKey;
```

The consumer key.

### OAuth1.ConsumerSecret

`Chilkat 11.7.0 · pascal · OAuth1 · ConsumerSecret · property · read/write · since 9.5.0.53`

```pascal
property ConsumerSecret: string read GetConsumerSecret write SetConsumerSecret;
```

The consumer secret.

### OAuth1.EncodedSignature

`Chilkat 11.7.0 · pascal · OAuth1 · EncodedSignature · property · read-only · since 9.5.0.53`

```pascal
property EncodedSignature: string read GetEncodedSignature;
```

The URL encoded representation of the Signature property

### OAuth1.GeneratedUrl

`Chilkat 11.7.0 · pascal · OAuth1 · GeneratedUrl · property · read-only · since 9.5.0.53`

```pascal
property GeneratedUrl: string read GetGeneratedUrl;
```

The URL that includes the OAuth1 query params.

### OAuth1.HmacKey

`Chilkat 11.7.0 · pascal · OAuth1 · HmacKey · property · read-only · since 9.5.0.53`

```pascal
property HmacKey: string read GetHmacKey;
```

The exact HMAC key used to sign the BaseString. An application does not directly set the HmacKey. The HmacKey property is read-only and is provided for debugging to see the exact HMAC key used to sign the BaseString. The HMAC key is composed from the consumer secret (if it exists) and the token secret (if it exists).

### OAuth1.Nonce

`Chilkat 11.7.0 · pascal · OAuth1 · Nonce · property · read/write · since 9.5.0.53`

```pascal
property Nonce: string read GetNonce write SetNonce;
```

The nonce.

### OAuth1.OauthMethod

`Chilkat 11.7.0 · pascal · OAuth1 · OauthMethod · property · read/write · since 9.5.0.53`

```pascal
property OauthMethod: string read GetOauthMethod write SetOauthMethod;
```

The HTTP method, such as `GET`, `POST`, `PUT`, `DELETE`, or `HEAD`. Defaults to `GET`.

### OAuth1.OauthUrl

`Chilkat 11.7.0 · pascal · OAuth1 · OauthUrl · property · read/write · since 9.5.0.53`

```pascal
property OauthUrl: string read GetOauthUrl write SetOauthUrl;
```

The OAuth URL, such as `http://echo.lab.madgex.com/echo.ashx`. See http://bettiolo.github.io/oauth-reference-page/ to compare Chilkat results with another tool's results.

**Note:** The OAuthUrl should not include query parameters. For example, do not set the OAuthUrl equal to

```
https://rest.sandbox.netsuite.com/app/site/hosting/restlet.nl?script=165&deploy=1
```

Instead, set OAuthUrl equal to

```
https://rest.sandbox.netsuite.com/app/site/hosting/restlet.nl
```

and then subsequently call AddParam for each query parameter.

### OAuth1.OauthVersion

`Chilkat 11.7.0 · pascal · OAuth1 · OauthVersion · property · read/write · since 9.5.0.53`

```pascal
property OauthVersion: string read GetOauthVersion write SetOauthVersion;
```

The oauth_version. Defaults to `1.0`. May be set to the empty string to exclude.

### OAuth1.QueryString

`Chilkat 11.7.0 · pascal · OAuth1 · QueryString · property · read-only · since 9.5.0.53`

```pascal
property QueryString: string read GetQueryString;
```

Contains the normalized set of request parameters that are signed. This is a read-only property made available for debugging purposes.

### OAuth1.Realm

`Chilkat 11.7.0 · pascal · OAuth1 · Realm · property · read/write · since 9.5.0.70`

```pascal
property Realm: string read GetRealm write SetRealm;
```

The realm (optional).

### OAuth1.Signature

`Chilkat 11.7.0 · pascal · OAuth1 · Signature · property · read-only · since 9.5.0.53`

```pascal
property Signature: string read GetSignature;
```

The generated base64 signature.

### OAuth1.SignatureMethod

`Chilkat 11.7.0 · pascal · OAuth1 · SignatureMethod · property · read/write · since 9.5.0.53`

```pascal
property SignatureMethod: string read GetSignatureMethod write SetSignatureMethod;
```

The signature method. Defaults to `HMAC-SHA1`. Other possible choices are `HMAC-SHA256`, `RSA-SHA1`, and `RSA-SHA256` (or the equivalent `RSA-SHA2`).

### OAuth1.Timestamp

`Chilkat 11.7.0 · pascal · OAuth1 · Timestamp · property · read/write · since 9.5.0.53`

```pascal
property Timestamp: string read GetTimestamp write SetTimestamp;
```

The timestamp, such as `1441632569`.

### OAuth1.Token

`Chilkat 11.7.0 · pascal · OAuth1 · Token · property · read/write · since 9.5.0.53`

```pascal
property Token: string read GetToken write SetToken;
```

The token.

### OAuth1.TokenSecret

`Chilkat 11.7.0 · pascal · OAuth1 · TokenSecret · property · read/write · since 9.5.0.53`

```pascal
property TokenSecret: string read GetTokenSecret write SetTokenSecret;
```

The token secret

### OAuth1.UncommonOptions

`Chilkat 11.7.0 · pascal · OAuth1 · UncommonOptions · property · read/write · since 9.5.0.85`

```pascal
property UncommonOptions: string read GetUncommonOptions write SetUncommonOptions;
```

This is a catch-all property to be used for uncommon needs. This property defaults to the empty string and should typically remain empty.

Can be set to a list of the following comma separated keywords:

- `INCLUDE_REALM` - Introduced in v9.5.0.85. Include the Realm in the signature calculation and outputs.

## Methods

### OAuth1.AddParam

`Chilkat 11.7.0 · pascal · OAuth1 · AddParam · method · since 9.5.0.53`

```pascal
function  AddParam(const name: string;
    const value: string): Boolean;
```

Adds an extra name/value parameter to the OAuth1 signature.

Returns True for success, False for failure.

### OAuth1.Generate

`Chilkat 11.7.0 · pascal · OAuth1 · Generate · method · since 9.5.0.53`

```pascal
function  Generate: Boolean;
```

Generate the signature based on the property settings. Input properties are OauthVersion, OauthMethod, Url, ConsumerKey, ConsumerSecret, Token, TokenSecret, Nonce, and Timestamp. Properties set by this method include: BaseString, Signature, HmacKey, EncodedSignature, QueryString, GeneratedUrl, andAuthorizationHeader.

Returns True for success, False for failure.

### OAuth1.GenNonce

`Chilkat 11.7.0 · pascal · OAuth1 · GenNonce · method · since 9.5.0.55`

```pascal
function  GenNonce(numBytes: Integer): Boolean;
```

Generates a random nonce `numBytes` in length and sets the Nonce property to the hex encoded value.

Returns True for success, False for failure.

### OAuth1.GenTimestamp

`Chilkat 11.7.0 · pascal · OAuth1 · GenTimestamp · method · since 9.5.0.55`

```pascal
function  GenTimestamp: Boolean;
```

Sets the Timestamp property to the current date/time.

Returns True for success, False for failure.

### OAuth1.RemoveParam

`Chilkat 11.7.0 · pascal · OAuth1 · RemoveParam · method · since 9.5.0.53`

```pascal
function  RemoveParam(const name: string): Boolean;
```

Removes a name/value parameter from the OAuth1 signature.

Returns True for success, False for failure.

### OAuth1.SetRsaKey

`Chilkat 11.7.0 · pascal · OAuth1 · SetRsaKey · method · since 9.5.0.64`

```pascal
// privKey is a TPrivateKey object.

function  SetRsaKey(privKey: TChilkatBase): Boolean;
```

Sets the RSA key to be used when the SignatureMethod is set to `RSA-SHA1` or `RSA-SHA2`.

Returns True for success, False for failure.

## Related classes

[`PrivateKey`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/PrivateKey.md)

