[PERS SDK - v2.3.26](/sdk-reference/readme) / [Exports](/sdk-reference/modules) / DPoPManager

# Class: DPoPManager

## Table of contents

### Constructors

- [constructor](/sdk-reference/classes/dpopmanager#constructor)


### Methods

- [hasStoredKeys](/sdk-reference/classes/dpopmanager#hasstoredkeys)
- [ensureKeyPair](/sdk-reference/classes/dpopmanager#ensurekeypair)
- [generateProofHeader](/sdk-reference/classes/dpopmanager#generateproofheader)
- [clearKeys](/sdk-reference/classes/dpopmanager#clearkeys)
- [getPublicKey](/sdk-reference/classes/dpopmanager#getpublickey)


## Constructors

### constructor

• **new DPoPManager**(`storage`, `cryptoProvider?`, `callbacks?`): [`DPoPManager`](/sdk-reference/classes/dpopmanager)

#### Parameters

| Name | Type |
|  --- | --- |
| `storage` | [`TokenStorage`](/sdk-reference/interfaces/tokenstorage) |
| `cryptoProvider?` | [`DPoPCryptoProvider`](/sdk-reference/interfaces/dpopcryptoprovider) |
| `callbacks?` | [`DPoPManagerCallbacks`](/sdk-reference/interfaces/dpopmanagercallbacks) |


#### Returns

[`DPoPManager`](/sdk-reference/classes/dpopmanager)

#### Defined in

[core/auth/dpop/dpop-manager.ts:26](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/auth/dpop/dpop-manager.ts#L26)

## Methods

### hasStoredKeys

▸ **hasStoredKeys**(): `Promise`<`boolean`>

Checks if DPoP keys exist in storage without generating new ones.
Useful for detecting if a key regeneration would be needed.

#### Returns

`Promise`<`boolean`>

#### Defined in

[core/auth/dpop/dpop-manager.ts:39](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/auth/dpop/dpop-manager.ts#L39)

### ensureKeyPair

▸ **ensureKeyPair**(): `Promise`<[`DPoPKeyPair`](/sdk-reference/interfaces/dpopkeypair)>

Ensures a DPoP key pair exists, loading from storage or generating new one.

IMPORTANT: If keys are regenerated (not loaded from storage), this will
invalidate any refresh tokens bound to the old keys. The onKeysRegenerated
callback should clear the refresh token to prevent "DPoP proof does not
match refresh token binding" errors.

#### Returns

`Promise`<[`DPoPKeyPair`](/sdk-reference/interfaces/dpopkeypair)>

#### Defined in

[core/auth/dpop/dpop-manager.ts:58](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/auth/dpop/dpop-manager.ts#L58)

### generateProofHeader

▸ **generateProofHeader**(`method`, `url`, `accessToken?`): `Promise`<`string`>

Generates the DPoP proof header value.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `method` | `string` | HTTP method |
| `url` | `string` | Request URL |
| `accessToken?` | `string` | Optional access token to bind the proof to (ath claim) |


#### Returns

`Promise`<`string`>

#### Defined in

[core/auth/dpop/dpop-manager.ts:150](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/auth/dpop/dpop-manager.ts#L150)

### clearKeys

▸ **clearKeys**(): `Promise`<`void`>

Clears DPoP keys (e.g. on logout)

#### Returns

`Promise`<`void`>

#### Defined in

[core/auth/dpop/dpop-manager.ts:183](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/auth/dpop/dpop-manager.ts#L183)

### getPublicKey

▸ **getPublicKey**(): `Promise`<`null` | `JsonWebKey`>

Gets the public key (for debugging/inspection)

#### Returns

`Promise`<`null` | `JsonWebKey`>

#### Defined in

[core/auth/dpop/dpop-manager.ts:192](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/auth/dpop/dpop-manager.ts#L192)