> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://viem-exm6ay6it-wevm.vercel.app/api/mcp` to find what you need.

# MlDsa44.fromSeed

:::info
`MlDsa44.fromSeed` is a re-export of ox's [`MlDsa44.fromSeed`](https://oxlib.sh/api/MlDsa44/fromSeed). Refer to the ox documentation for the full reference.
:::

Derives an ML-DSA-44 private key from a seed.

The seed must contain at least 32 bytes of cryptographically strong key material. Do not pass a password directly; use a password KDF first.

The permanent derivation contract uses the seed as the HMAC-SHA256 key. The HMAC message uses the `ox.mldsa44.fromSeed.v1` domain followed by a 32-bit big-endian counter set to zero.

## Imports

```ts
import { MlDsa44 } from 'viem/utils'
```

## Examples

```ts twoslash
// @noErrors
import { MlDsa44 } from 'viem/utils'

const privateKey = MlDsa44.fromSeed(
  '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
)
```

## Definition

```ts
function fromSeed<as>(
  seed: Hex.Hex | Bytes.Bytes,
  options?: fromSeed.Options<as>,
): fromSeed.ReturnType<as>
```

## Parameters

### seed

* **Type:** `Hex.Hex | Bytes.Bytes`

Seed containing at least 32 bytes of cryptographically strong key material.

### options

* **Type:** `fromSeed.Options<as>`
* **Optional**

Options.

#### options.as

* **Type:** `"Bytes" | "Hex" | as`
* **Optional**

Format of the returned private key.

## Return Type

An ML-DSA-44 private key (32-byte seed).

`fromSeed.ReturnType<as>`
