NeahFront2/node_modules/@panva/hkdf/README.md
2025-04-08 20:36:59 +02:00

73 lines
1.8 KiB
Markdown

# hkdf
> HKDF with no dependencies using runtime's native crypto
HKDF is a simple key derivation function defined in [RFC 5869][].
## Documentation
**hkdf**(`digest`, `ikm`, `salt`, `info`, `keylen`): `Promise`<`Uint8Array`\>
The given `ikm`, `salt` and `info` are used with the `digest` to derive a key of `keylen` bytes.
### Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| `digest` | ``"sha256"`` \| ``"sha384"`` \| ``"sha512"`` \| ``"sha1"`` | The digest algorithm to use. |
| `ikm` | `Uint8Array` \| `string` | The input keying material. It must be at least one byte in length. |
| `salt` | `Uint8Array` \| `string` | The salt value. Must be provided but can be zero-length. |
| `info` | `Uint8Array` \| `string` | Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes. |
| `keylen` | `number` | The length in bytes of the key to generate. Must be greater than 0 and no more than 255 times the digest size. |
### Returns
`Promise`<`Uint8Array`\>
### Example
**`example`** ESM import
```js
import hkdf from '@panva/hkdf'
```
**`example`** CJS import
```js
const { hkdf } = require('@panva/hkdf')
```
**`example`** Deno import
```js
import hkdf from 'https://deno.land/x/hkdf/index.ts'
```
**`example`** Usage
```js
const derivedKey = await hkdf(
'sha256',
'key',
'salt',
'info',
64
)
```
## Supported Runtimes
The supported JavaScript runtimes include ones that
- are reasonably up to date ECMAScript
- support the utilized Web API globals and standard built-in objects
- These are
- _(This is not an exhaustive list)_
- Browsers
- Cloudflare Workers
- Deno
- Electron
- Netlify Edge Functions
- Next.js Middlewares
- Node.js
- Vercel Edge Functions
[RFC 5869]: https://www.rfc-editor.org/rfc/rfc5869.html