Skip to main content
@tevm/voltaire
@tevm/voltaire / primitives/SignedData

primitives/SignedData

Classes

InvalidSignedDataFormatError

Defined in: src/primitives/SignedData/errors.ts:17 Error thrown when signed data has invalid format

Extends

  • Error

Constructors

Constructor
new InvalidSignedDataFormatError(message, context?): InvalidSignedDataFormatError
Defined in: src/primitives/SignedData/errors.ts:18
Parameters
message
string
context?
unknown
Returns
InvalidSignedDataFormatError
Overrides
Error.constructor

Properties

context?
optional context: unknown
Defined in: src/primitives/SignedData/errors.ts:24

InvalidSignedDataVersionError

Defined in: src/primitives/SignedData/errors.ts:4 Error thrown when signed data has invalid version byte

Extends

  • Error

Constructors

Constructor
new InvalidSignedDataVersionError(message, context?): InvalidSignedDataVersionError
Defined in: src/primitives/SignedData/errors.ts:5
Parameters
message
string
context?
unknown
Returns
InvalidSignedDataVersionError
Overrides
Error.constructor

Properties

context?
optional context: unknown
Defined in: src/primitives/SignedData/errors.ts:11

SignatureVerificationError

Defined in: src/primitives/SignedData/errors.ts:30 Error thrown when signature verification fails

Extends

  • Error

Constructors

Constructor
new SignatureVerificationError(message, context?): SignatureVerificationError
Defined in: src/primitives/SignedData/errors.ts:31
Parameters
message
string
context?
unknown
Returns
SignatureVerificationError
Overrides
Error.constructor

Properties

context?
optional context: unknown
Defined in: src/primitives/SignedData/errors.ts:37

Type Aliases

SignedDataType

SignedDataType = Uint8Array & object
Defined in: src/primitives/SignedData/SignedDataType.ts:12 EIP-191 signed data type Represents signed data according to EIP-191 specification. The version byte determines the signature format:
  • 0x00: Data with validator address
  • 0x01: Structured data (EIP-712)
  • 0x45: Personal message (“E” for Ethereum Signed Message)

Type Declaration

__tag
readonly __tag: "SignedData"

See

https://eips.ethereum.org/EIPS/eip-191

SignedDataVersion

SignedDataVersion = 0 | 1 | 69
Defined in: src/primitives/SignedData/SignedDataType.ts:24 EIP-191 version byte Determines the format and validation rules for signed data:
  • 0x00: Data with intended validator (contract address)
  • 0x01: Structured data following EIP-712
  • 0x45: Personal message with “\x19Ethereum Signed Message:\n” prefix

Variables

EIP191_PREFIX

const EIP191_PREFIX: 25 = 0x19
Defined in: src/primitives/SignedData/constants.js:15 EIP-191 prefix byte

PERSONAL_MESSAGE_PREFIX

const PERSONAL_MESSAGE_PREFIX: “\u0019Ethereum Signed Message:\n” = "\x19Ethereum Signed Message:\n"
Defined in: src/primitives/SignedData/constants.js:18 Personal message prefix string

VERSION_DATA_WITH_VALIDATOR

const VERSION_DATA_WITH_VALIDATOR: 0 = 0x00
Defined in: src/primitives/SignedData/constants.js:6 Version 0x00: Data with validator

VERSION_PERSONAL_MESSAGE

const VERSION_PERSONAL_MESSAGE: 69 = 0x45
Defined in: src/primitives/SignedData/constants.js:12 Version 0x45: Personal message

VERSION_STRUCTURED_DATA

const VERSION_STRUCTURED_DATA: 1 = 0x01
Defined in: src/primitives/SignedData/constants.js:9 Version 0x01: Structured data (EIP-712)

Functions

from()

from(version, versionData, data): SignedDataType
Defined in: src/primitives/SignedData/from.js:35 Create EIP-191 signed data from components Format: 0x19 <version byte> <version specific data>
  • Version 0x00: 0x19 0x00 <validator address (20 bytes)> <data>
  • Version 0x01: 0x19 0x01 <domainSeparator (32 bytes)> <data>
  • Version 0x45: 0x19 0x45 <ascii "thereum Signed Message:\n" + len> <data>

Parameters

version
number Version byte (0x00, 0x01, or 0x45)
versionData
Uint8Array<ArrayBufferLike> Version-specific data (validator address or domain separator)
data
Uint8Array<ArrayBufferLike> Message data

Returns

SignedDataType EIP-191 formatted signed data

Throws

If version is not valid

Example

import { from } from './primitives/SignedData/from.js';

// Personal message (0x45)
const signedData = from(0x45, new Uint8Array(), message);

// Data with validator (0x00)
const signedData = from(0x00, validatorAddress, data);

Hash()

Hash(deps): (message) => HashType
Defined in: src/primitives/SignedData/hash.js:10 Factory: Create EIP-191 personal message hash function

Parameters

deps
Crypto dependencies
keccak256
(data) => Uint8Array Keccak256 hash function

Returns

(message): HashType
Parameters
message
string | Uint8Array<ArrayBufferLike>
Returns
HashType

Verify()

Verify(deps): (message, signature, expectedAddress) => boolean
Defined in: src/primitives/SignedData/verify.js:12 Factory: Create signature verification function for EIP-191 personal messages

Parameters

deps
Crypto dependencies
addressFromPublicKey
(x, y) => AddressType Address derivation from public key
keccak256
(data) => Uint8Array Keccak256 hash function
recoverPublicKey
(signature, messageHash) => Uint8Array secp256k1 public key recovery

Returns

(message, signature, expectedAddress): boolean
Parameters
message
string | Uint8Array<ArrayBufferLike>
signature
r
Uint8Array
s
Uint8Array
v
number
expectedAddress
AddressType
Returns
boolean