# FrameSignature.validate

Returns whether a [`FrameSignature.FrameSignature`](/api/FrameSignature/types#framesignature) is structurally valid.

Performs the same checks as [`FrameSignature.assert`](/api/FrameSignature/assert), returning `false` instead of throwing. Does not verify that the signature authorizes a payload.

## Imports

:::code-group
```ts [Named]
import { FrameSignature } from 'ox'
```

```ts [Entrypoint]
import * as FrameSignature from 'ox/FrameSignature'
```
:::

## Examples

### Basic Usage

Require a signature when checking a protocol entry.

```ts twoslash
import { FrameSignature } from 'ox'

const entry = FrameSignature.from({ scheme: 'secp256k1' })
const valid = FrameSignature.validate(entry, {
  signed: true
})
// @log: false
```

## Definition

```ts
function validate(
  entry: FrameSignature,
  options?: assert.Options,
): boolean
```

**Source:** [src/core/FrameSignature.ts](https://github.com/wevm/ox/blob/main/src/core/FrameSignature.ts#L571)

## Parameters

### entry

* **Type:** `FrameSignature`

The signature entry to validate.

#### entry.payload

* **Type:** `0x${string}`
* **Optional**

Explicit nonzero digest. Omit or use empty bytes for the transaction signing hash.

#### entry.publicKey

* **Type:** `{ prefix: number; x: 0x${string}; y: 0x${string}; }`
* **Optional**

Public key, if already known. Empty wire signatures do not retain it.

#### entry.scheme

* **Type:** `2 | "p256"`

P-256 verification scheme.

#### entry.signature

* **Type:** `{ r: 0x${string}; s: 0x${string}; yParity?: number; }`

P-256 signature.

#### entry.signer

* **Type:** `Address.Address | undefined`
* **Optional**

Signer address. Omit to use the transaction sender.

### options

* **Type:** `assert.Options`
* **Optional**

Validation options.

#### options.signed

* **Type:** `boolean`
* **Optional**

Require a protocol signature. Does not perform cryptographic verification.

## Return Type

Whether the entry is structurally valid.

`boolean`
