> ## Documentation Index
> Fetch the complete documentation index at: https://voltaire.tevm.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# crypto/Keystore

> Auto-generated API documentation

[**@tevm/voltaire**](../index.mdx)

***

[@tevm/voltaire](../index.mdx) / crypto/Keystore

# crypto/Keystore

## Classes

### DecryptionError

Defined in: [src/crypto/Keystore/errors.js:52](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L52)

Error thrown when decryption fails

#### Extends

* [`KeystoreError`](#keystoreerror)

#### Constructors

##### Constructor

> **new DecryptionError**(`message`): [`DecryptionError`](#decryptionerror)

Defined in: [src/crypto/Keystore/errors.js:53](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L53)

###### Parameters

###### message

`string` = `"Decryption failed"`

###### Returns

[`DecryptionError`](#decryptionerror)

###### Overrides

[`KeystoreError`](#keystoreerror).[`constructor`](#constructor-3)

#### Properties

##### name

> **name**: `string`

Defined in: [src/crypto/Keystore/errors.js:55](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L55)

###### Inherited from

[`KeystoreError`](#keystoreerror).[`name`](#name-3)

***

### EncryptionError

Defined in: [src/crypto/Keystore/errors.js:62](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L62)

Error thrown when encryption fails

#### Extends

* [`KeystoreError`](#keystoreerror)

#### Constructors

##### Constructor

> **new EncryptionError**(`message`): [`EncryptionError`](#encryptionerror)

Defined in: [src/crypto/Keystore/errors.js:63](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L63)

###### Parameters

###### message

`string` = `"Encryption failed"`

###### Returns

[`EncryptionError`](#encryptionerror)

###### Overrides

[`KeystoreError`](#keystoreerror).[`constructor`](#constructor-3)

#### Properties

##### name

> **name**: `string`

Defined in: [src/crypto/Keystore/errors.js:65](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L65)

###### Inherited from

[`KeystoreError`](#keystoreerror).[`name`](#name-3)

***

### InvalidMacError

Defined in: [src/crypto/Keystore/errors.js:16](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L16)

Error thrown when MAC verification fails

#### Extends

* [`KeystoreError`](#keystoreerror)

#### Constructors

##### Constructor

> **new InvalidMacError**(`message`): [`InvalidMacError`](#invalidmacerror)

Defined in: [src/crypto/Keystore/errors.js:17](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L17)

###### Parameters

###### message

`string` = `"MAC verification failed - invalid password or corrupted keystore"`

###### Returns

[`InvalidMacError`](#invalidmacerror)

###### Overrides

[`KeystoreError`](#keystoreerror).[`constructor`](#constructor-3)

#### Properties

##### name

> **name**: `string`

Defined in: [src/crypto/Keystore/errors.js:21](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L21)

###### Inherited from

[`KeystoreError`](#keystoreerror).[`name`](#name-3)

***

### KeystoreError

Defined in: [src/crypto/Keystore/errors.js:6](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L6)

Base error for Keystore operations

#### Extends

* `Error`

#### Extended by

* [`InvalidMacError`](#invalidmacerror)
* [`UnsupportedVersionError`](#unsupportedversionerror)
* [`UnsupportedKdfError`](#unsupportedkdferror)
* [`DecryptionError`](#decryptionerror)
* [`EncryptionError`](#encryptionerror)

#### Constructors

##### Constructor

> **new KeystoreError**(`message`): [`KeystoreError`](#keystoreerror)

Defined in: [src/crypto/Keystore/errors.js:7](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L7)

###### Parameters

###### message

`any`

###### Returns

[`KeystoreError`](#keystoreerror)

###### Overrides

`Error.constructor`

#### Properties

##### name

> **name**: `string`

Defined in: [src/crypto/Keystore/errors.js:9](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L9)

###### Inherited from

`Error.name`

***

### UnsupportedKdfError

Defined in: [src/crypto/Keystore/errors.js:41](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L41)

Error thrown when KDF is unsupported

#### Extends

* [`KeystoreError`](#keystoreerror)

#### Constructors

##### Constructor

> **new UnsupportedKdfError**(`kdf`): [`UnsupportedKdfError`](#unsupportedkdferror)

Defined in: [src/crypto/Keystore/errors.js:42](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L42)

###### Parameters

###### kdf

`any`

###### Returns

[`UnsupportedKdfError`](#unsupportedkdferror)

###### Overrides

[`KeystoreError`](#keystoreerror).[`constructor`](#constructor-3)

#### Properties

##### kdf

> **kdf**: `any`

Defined in: [src/crypto/Keystore/errors.js:45](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L45)

##### name

> **name**: `string`

Defined in: [src/crypto/Keystore/errors.js:44](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L44)

###### Inherited from

[`KeystoreError`](#keystoreerror).[`name`](#name-3)

***

### UnsupportedVersionError

Defined in: [src/crypto/Keystore/errors.js:28](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L28)

Error thrown when keystore version is unsupported

#### Extends

* [`KeystoreError`](#keystoreerror)

#### Constructors

##### Constructor

> **new UnsupportedVersionError**(`version`): [`UnsupportedVersionError`](#unsupportedversionerror)

Defined in: [src/crypto/Keystore/errors.js:29](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L29)

###### Parameters

###### version

`any`

###### Returns

[`UnsupportedVersionError`](#unsupportedversionerror)

###### Overrides

[`KeystoreError`](#keystoreerror).[`constructor`](#constructor-3)

#### Properties

##### name

> **name**: `string`

Defined in: [src/crypto/Keystore/errors.js:33](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L33)

###### Inherited from

[`KeystoreError`](#keystoreerror).[`name`](#name-3)

##### version

> **version**: `any`

Defined in: [src/crypto/Keystore/errors.js:34](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/errors.js#L34)

## Type Aliases

### EncryptOptions

> **EncryptOptions** = `object`

Defined in: [src/crypto/Keystore/KeystoreType.ts:49](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L49)

Options for encryption

#### Properties

##### includeAddress?

> `optional` **includeAddress**: `boolean`

Defined in: [src/crypto/Keystore/KeystoreType.ts:67](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L67)

Include address in keystore (default: false)

##### iv?

> `optional` **iv**: `Uint8Array`

Defined in: [src/crypto/Keystore/KeystoreType.ts:55](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L55)

Custom IV (default: random 16 bytes)

##### kdf?

> `optional` **kdf**: `"scrypt"` | `"pbkdf2"`

Defined in: [src/crypto/Keystore/KeystoreType.ts:51](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L51)

KDF to use (default: scrypt)

##### pbkdf2C?

> `optional` **pbkdf2C**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:65](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L65)

PBKDF2 iterations (default: 262144)

##### salt?

> `optional` **salt**: `Uint8Array`

Defined in: [src/crypto/Keystore/KeystoreType.ts:57](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L57)

Custom salt (default: random 32 bytes)

##### scryptN?

> `optional` **scryptN**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:59](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L59)

Scrypt N parameter (default: 262144)

##### scryptP?

> `optional` **scryptP**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:63](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L63)

Scrypt p parameter (default: 1)

##### scryptR?

> `optional` **scryptR**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:61](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L61)

Scrypt r parameter (default: 8)

##### uuid?

> `optional` **uuid**: `string`

Defined in: [src/crypto/Keystore/KeystoreType.ts:53](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L53)

Custom UUID (default: auto-generated)

***

### KeystoreV3

> **KeystoreV3** = `object`

Defined in: [src/crypto/Keystore/KeystoreType.ts:30](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L30)

Web3 Secret Storage Definition v3 keystore

#### Properties

##### address?

> `optional` **address**: `string`

Defined in: [src/crypto/Keystore/KeystoreType.ts:33](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L33)

##### crypto

> **crypto**: `object`

Defined in: [src/crypto/Keystore/KeystoreType.ts:34](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L34)

###### cipher

> **cipher**: `"aes-128-ctr"`

###### cipherparams

> **cipherparams**: `object`

###### cipherparams.iv

> **iv**: `string`

###### ciphertext

> **ciphertext**: `string`

###### kdf

> **kdf**: `"scrypt"` | `"pbkdf2"`

###### kdfparams

> **kdfparams**: [`ScryptParams`](#scryptparams) | [`Pbkdf2Params`](#pbkdf2params)

###### mac

> **mac**: `string`

##### id

> **id**: `string`

Defined in: [src/crypto/Keystore/KeystoreType.ts:32](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L32)

##### version

> **version**: `3`

Defined in: [src/crypto/Keystore/KeystoreType.ts:31](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L31)

***

### Pbkdf2Params

> **Pbkdf2Params** = `object`

Defined in: [src/crypto/Keystore/KeystoreType.ts:20](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L20)

PBKDF2 KDF parameters

#### Properties

##### c

> **c**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:21](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L21)

##### dklen

> **dklen**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:22](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L22)

##### prf

> **prf**: `"hmac-sha256"`

Defined in: [src/crypto/Keystore/KeystoreType.ts:23](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L23)

##### salt

> **salt**: `string`

Defined in: [src/crypto/Keystore/KeystoreType.ts:24](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L24)

***

### ScryptParams

> **ScryptParams** = `object`

Defined in: [src/crypto/Keystore/KeystoreType.ts:9](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L9)

Scrypt KDF parameters

#### Properties

##### dklen

> **dklen**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:10](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L10)

##### n

> **n**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:11](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L11)

##### p

> **p**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:12](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L12)

##### r

> **r**: `number`

Defined in: [src/crypto/Keystore/KeystoreType.ts:13](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L13)

##### salt

> **salt**: `string`

Defined in: [src/crypto/Keystore/KeystoreType.ts:14](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/KeystoreType.ts#L14)

## Variables

### Keystore

> `const` **Keystore**: `object`

Defined in: [src/crypto/Keystore/index.ts:19](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/index.ts#L19)

#### Type Declaration

##### decrypt()

> **decrypt**: (`keystore`, `password`) => [`PrivateKeyType`](../primitives/PrivateKey.mdx#privatekeytype)

Decrypt Web3 Secret Storage v3 keystore to private key

###### Parameters

###### keystore

[`KeystoreV3`](#keystorev3)

Encrypted keystore

###### password

`string`

Password for decryption

###### Returns

[`PrivateKeyType`](../primitives/PrivateKey.mdx#privatekeytype)

Decrypted private key

###### See

[https://voltaire.tevm.sh/crypto](https://voltaire.tevm.sh/crypto) for crypto documentation

###### Since

0.0.0

###### Throws

If keystore version is not 3

###### Throws

If KDF is not scrypt or pbkdf2

###### Throws

If MAC verification fails (wrong password or corrupted)

###### Throws

If decryption fails

###### Example

```javascript theme={null}
import * as Keystore from './crypto/Keystore/index.js';

const keystore = { version: 3, id: '...', crypto: { ... } };
const privateKey = Keystore.decrypt(keystore, 'my-password');
```

##### encrypt()

> **encrypt**: (`privateKey`, `password`, `options?`) => `Promise`\<[`KeystoreV3`](#keystorev3)>

Encrypt private key to Web3 Secret Storage v3 keystore

###### Parameters

###### privateKey

[`PrivateKeyType`](../primitives/PrivateKey.mdx#privatekeytype)

Private key (32 bytes)

###### password

`string`

Password for encryption

###### options?

[`EncryptOptions`](#encryptoptions) = `{}`

Encryption options

###### Returns

`Promise`\<[`KeystoreV3`](#keystorev3)>

Encrypted keystore

###### See

[https://voltaire.tevm.sh/crypto](https://voltaire.tevm.sh/crypto) for crypto documentation

###### Since

0.0.0

###### Throws

If encryption fails

###### Example

```javascript theme={null}
import * as Keystore from './crypto/Keystore/index.js';
import * as PrivateKey from './primitives/PrivateKey/index.js';

const privateKey = PrivateKey.from('0x...');
const keystore = await Keystore.encrypt(privateKey, 'my-password');
```

## Functions

### decrypt()

> **decrypt**(`keystore`, `password`): [`PrivateKeyType`](../primitives/PrivateKey.mdx#privatekeytype)

Defined in: [src/crypto/Keystore/decrypt.js:33](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/decrypt.js#L33)

Decrypt Web3 Secret Storage v3 keystore to private key

#### Parameters

##### keystore

[`KeystoreV3`](#keystorev3)

Encrypted keystore

##### password

`string`

Password for decryption

#### Returns

[`PrivateKeyType`](../primitives/PrivateKey.mdx#privatekeytype)

Decrypted private key

#### See

[https://voltaire.tevm.sh/crypto](https://voltaire.tevm.sh/crypto) for crypto documentation

#### Since

0.0.0

#### Throws

If keystore version is not 3

#### Throws

If KDF is not scrypt or pbkdf2

#### Throws

If MAC verification fails (wrong password or corrupted)

#### Throws

If decryption fails

#### Example

```javascript theme={null}
import * as Keystore from './crypto/Keystore/index.js';

const keystore = { version: 3, id: '...', crypto: { ... } };
const privateKey = Keystore.decrypt(keystore, 'my-password');
```

***

### encrypt()

> **encrypt**(`privateKey`, `password`, `options?`): `Promise`\<[`KeystoreV3`](#keystorev3)>

Defined in: [src/crypto/Keystore/encrypt.js:27](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Keystore/encrypt.js#L27)

Encrypt private key to Web3 Secret Storage v3 keystore

#### Parameters

##### privateKey

[`PrivateKeyType`](../primitives/PrivateKey.mdx#privatekeytype)

Private key (32 bytes)

##### password

`string`

Password for encryption

##### options?

[`EncryptOptions`](#encryptoptions) = `{}`

Encryption options

#### Returns

`Promise`\<[`KeystoreV3`](#keystorev3)>

Encrypted keystore

#### See

[https://voltaire.tevm.sh/crypto](https://voltaire.tevm.sh/crypto) for crypto documentation

#### Since

0.0.0

#### Throws

If encryption fails

#### Example

```javascript theme={null}
import * as Keystore from './crypto/Keystore/index.js';
import * as PrivateKey from './primitives/PrivateKey/index.js';

const privateKey = PrivateKey.from('0x...');
const keystore = await Keystore.encrypt(privateKey, 'my-password');
```

## References

### default

Renames and re-exports [Keystore](#keystore)
