Skip to main content
@tevm/voltaire
@tevm/voltaire / crypto/Keystore

crypto/Keystore

Classes

DecryptionError

Defined in: src/crypto/Keystore/errors.js:52 Error thrown when decryption fails

Extends

Constructors

Constructor
new DecryptionError(message): DecryptionError
Defined in: src/crypto/Keystore/errors.js:53
Parameters
message
string = "Decryption failed"
Returns
DecryptionError
Overrides
KeystoreError.constructor

Properties

name
name: string
Defined in: src/crypto/Keystore/errors.js:55
Inherited from
KeystoreError.name

EncryptionError

Defined in: src/crypto/Keystore/errors.js:62 Error thrown when encryption fails

Extends

Constructors

Constructor
new EncryptionError(message): EncryptionError
Defined in: src/crypto/Keystore/errors.js:63
Parameters
message
string = "Encryption failed"
Returns
EncryptionError
Overrides
KeystoreError.constructor

Properties

name
name: string
Defined in: src/crypto/Keystore/errors.js:65
Inherited from
KeystoreError.name

InvalidMacError

Defined in: src/crypto/Keystore/errors.js:16 Error thrown when MAC verification fails

Extends

Constructors

Constructor
new InvalidMacError(message): InvalidMacError
Defined in: src/crypto/Keystore/errors.js:17
Parameters
message
string = "MAC verification failed - invalid password or corrupted keystore"
Returns
InvalidMacError
Overrides
KeystoreError.constructor

Properties

name
name: string
Defined in: src/crypto/Keystore/errors.js:21
Inherited from
KeystoreError.name

KeystoreError

Defined in: src/crypto/Keystore/errors.js:6 Base error for Keystore operations

Extends

  • Error

Extended by

Constructors

Constructor
new KeystoreError(message): KeystoreError
Defined in: src/crypto/Keystore/errors.js:7
Parameters
message
any
Returns
KeystoreError
Overrides
Error.constructor

Properties

name
name: string
Defined in: src/crypto/Keystore/errors.js:9
Inherited from
Error.name

UnsupportedKdfError

Defined in: src/crypto/Keystore/errors.js:41 Error thrown when KDF is unsupported

Extends

Constructors

Constructor
new UnsupportedKdfError(kdf): UnsupportedKdfError
Defined in: src/crypto/Keystore/errors.js:42
Parameters
kdf
any
Returns
UnsupportedKdfError
Overrides
KeystoreError.constructor

Properties

kdf
kdf: any
Defined in: src/crypto/Keystore/errors.js:45
name
name: string
Defined in: src/crypto/Keystore/errors.js:44
Inherited from
KeystoreError.name

UnsupportedVersionError

Defined in: src/crypto/Keystore/errors.js:28 Error thrown when keystore version is unsupported

Extends

Constructors

Constructor
new UnsupportedVersionError(version): UnsupportedVersionError
Defined in: src/crypto/Keystore/errors.js:29
Parameters
version
any
Returns
UnsupportedVersionError
Overrides
KeystoreError.constructor

Properties

name
name: string
Defined in: src/crypto/Keystore/errors.js:33
Inherited from
KeystoreError.name
version
version: any
Defined in: src/crypto/Keystore/errors.js:34

Type Aliases

EncryptOptions

EncryptOptions = object
Defined in: src/crypto/Keystore/KeystoreType.ts:49 Options for encryption

Properties

includeAddress?
optional includeAddress: boolean
Defined in: src/crypto/Keystore/KeystoreType.ts:67 Include address in keystore (default: false)
iv?
optional iv: Uint8Array
Defined in: src/crypto/Keystore/KeystoreType.ts:55 Custom IV (default: random 16 bytes)
kdf?
optional kdf: "scrypt" | "pbkdf2"
Defined in: src/crypto/Keystore/KeystoreType.ts:51 KDF to use (default: scrypt)
pbkdf2C?
optional pbkdf2C: number
Defined in: src/crypto/Keystore/KeystoreType.ts:65 PBKDF2 iterations (default: 262144)
salt?
optional salt: Uint8Array
Defined in: src/crypto/Keystore/KeystoreType.ts:57 Custom salt (default: random 32 bytes)
scryptN?
optional scryptN: number
Defined in: src/crypto/Keystore/KeystoreType.ts:59 Scrypt N parameter (default: 262144)
scryptP?
optional scryptP: number
Defined in: src/crypto/Keystore/KeystoreType.ts:63 Scrypt p parameter (default: 1)
scryptR?
optional scryptR: number
Defined in: src/crypto/Keystore/KeystoreType.ts:61 Scrypt r parameter (default: 8)
uuid?
optional uuid: string
Defined in: src/crypto/Keystore/KeystoreType.ts:53 Custom UUID (default: auto-generated)

KeystoreV3

KeystoreV3 = object
Defined in: src/crypto/Keystore/KeystoreType.ts:30 Web3 Secret Storage Definition v3 keystore

Properties

address?
optional address: string
Defined in: src/crypto/Keystore/KeystoreType.ts:33
crypto
crypto: object
Defined in: src/crypto/Keystore/KeystoreType.ts:34
cipher
cipher: "aes-128-ctr"
cipherparams
cipherparams: object
cipherparams.iv
iv: string
ciphertext
ciphertext: string
kdf
kdf: "scrypt" | "pbkdf2"
kdfparams
kdfparams: ScryptParams | Pbkdf2Params
mac
mac: string
id
id: string
Defined in: src/crypto/Keystore/KeystoreType.ts:32
version
version: 3
Defined in: src/crypto/Keystore/KeystoreType.ts:31

Pbkdf2Params

Pbkdf2Params = object
Defined in: src/crypto/Keystore/KeystoreType.ts:20 PBKDF2 KDF parameters

Properties

c
c: number
Defined in: src/crypto/Keystore/KeystoreType.ts:21
dklen
dklen: number
Defined in: src/crypto/Keystore/KeystoreType.ts:22
prf
prf: "hmac-sha256"
Defined in: src/crypto/Keystore/KeystoreType.ts:23
salt
salt: string
Defined in: src/crypto/Keystore/KeystoreType.ts:24

ScryptParams

ScryptParams = object
Defined in: src/crypto/Keystore/KeystoreType.ts:9 Scrypt KDF parameters

Properties

dklen
dklen: number
Defined in: src/crypto/Keystore/KeystoreType.ts:10
n
n: number
Defined in: src/crypto/Keystore/KeystoreType.ts:11
p
p: number
Defined in: src/crypto/Keystore/KeystoreType.ts:12
r
r: number
Defined in: src/crypto/Keystore/KeystoreType.ts:13
salt
salt: string
Defined in: src/crypto/Keystore/KeystoreType.ts:14

Variables

Keystore

const Keystore: object
Defined in: src/crypto/Keystore/index.ts:19

Type Declaration

decrypt()
decrypt: (keystore, password) => PrivateKeyType
Decrypt Web3 Secret Storage v3 keystore to private key
Parameters
keystore
KeystoreV3 Encrypted keystore
password
string Password for decryption
Returns
PrivateKeyType Decrypted private key
See
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
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>
Encrypt private key to Web3 Secret Storage v3 keystore
Parameters
privateKey
PrivateKeyType Private key (32 bytes)
password
string Password for encryption
options?
EncryptOptions = {} Encryption options
Returns
Promise<KeystoreV3> Encrypted keystore
See
https://voltaire.tevm.sh/crypto for crypto documentation
Since
0.0.0
Throws
If encryption fails
Example
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
Defined in: src/crypto/Keystore/decrypt.js:33 Decrypt Web3 Secret Storage v3 keystore to private key

Parameters

keystore
KeystoreV3 Encrypted keystore
password
string Password for decryption

Returns

PrivateKeyType Decrypted private key

See

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

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>
Defined in: src/crypto/Keystore/encrypt.js:27 Encrypt private key to Web3 Secret Storage v3 keystore

Parameters

privateKey
PrivateKeyType Private key (32 bytes)
password
string Password for encryption
options?
EncryptOptions = {} Encryption options

Returns

Promise<KeystoreV3> Encrypted keystore

See

https://voltaire.tevm.sh/crypto for crypto documentation

Since

0.0.0

Throws

If encryption fails

Example

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