> ## 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.

# Pairing

> Auto-generated API documentation

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

***

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

# Pairing

## Functions

### batchVerify()

> **batchVerify**(`items`): `boolean`

Defined in: [src/crypto/Bls12381/Pairing/index.js:136](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Bls12381/Pairing/index.js#L136)

Batch verify multiple BLS signatures on different messages

#### Parameters

##### items

`object`\[]

Array of signature verification items

#### Returns

`boolean`

True if all signatures are valid

#### Throws

***

### pair()

> **pair**(`p`, `q`): `never`

Defined in: [src/crypto/Bls12381/Pairing/index.js:69](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Bls12381/Pairing/index.js#L69)

Compute single pairing e(P, Q)

#### Parameters

##### p

[`Bls12381G1PointType`](../../../index/index.mdx#bls12381g1pointtype)

G1 point

##### q

[`Bls12381G2PointType`](../../../index/index.mdx#bls12381g2pointtype)

G2 point

#### Returns

`never`

Throws - not implemented in pure JS

#### Throws

***

### pairingCheck()

> **pairingCheck**(`pairs`): `boolean`

Defined in: [src/crypto/Bls12381/Pairing/index.js:32](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Bls12381/Pairing/index.js#L32)

Pairing check: verify that product of pairings equals identity
e(P1, Q1) \* e(P2, Q2) \* ... \* e(Pn, Qn) = 1

This is the core operation used in BLS signature verification.

#### Parameters

##### pairs

\[[`Bls12381G1PointType`](../../../index/index.mdx#bls12381g1pointtype), [`Bls12381G2PointType`](../../../index/index.mdx#bls12381g2pointtype)]\[]

Array of (G1, G2) point pairs

#### Returns

`boolean`

True if pairing product equals identity

#### Throws

If any point is invalid

***

### verifyAggregateSignature()

> **verifyAggregateSignature**(`aggregatedSignature`, `aggregatedPublicKey`, `messagePoint`): `boolean`

Defined in: [src/crypto/Bls12381/Pairing/index.js:117](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Bls12381/Pairing/index.js#L117)

Verify aggregate BLS signature (same message)
All signers signed the same message.

#### Parameters

##### aggregatedSignature

[`Bls12381G1PointType`](../../../index/index.mdx#bls12381g1pointtype)

Aggregated signature (G1 point)

##### aggregatedPublicKey

[`Bls12381G2PointType`](../../../index/index.mdx#bls12381g2pointtype)

Aggregated public key (G2 point)

##### messagePoint

[`Bls12381G1PointType`](../../../index/index.mdx#bls12381g1pointtype)

Hashed message (G1 point)

#### Returns

`boolean`

True if aggregate signature is valid

#### Throws

***

### verifySignature()

> **verifySignature**(`signature`, `publicKey`, `messagePoint`): `boolean`

Defined in: [src/crypto/Bls12381/Pairing/index.js:97](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/crypto/Bls12381/Pairing/index.js#L97)

Verify BLS signature using pairing check
Verifies: e(signature, G2\_generator) = e(H(message), publicKey)
Equivalent to: e(signature, G2\_gen) \* e(-H(msg), pubKey) = 1

#### Parameters

##### signature

[`Bls12381G1PointType`](../../../index/index.mdx#bls12381g1pointtype)

Signature (G1 point)

##### publicKey

[`Bls12381G2PointType`](../../../index/index.mdx#bls12381g2pointtype)

Public key (G2 point)

##### messagePoint

[`Bls12381G1PointType`](../../../index/index.mdx#bls12381g1pointtype)

Hashed message (G1 point)

#### Returns

`boolean`

True if signature is valid

#### Throws
