# OPRF To Derive Keys From Low-Entropy Data

You will make a standard request to the relay node with the state (see [Making Requests](/for-developers/making-requests-to-human-network.md)) using the Secp256k1 method.

Here is an example request using the OPRFSecp256k1 method:

```json
{
  "method": "OPRFSecp256k1",
  "point": [2,58,211,253,26,34,132,83,157,111,80,144,179,1,88,82,243,119,99,104,156,248,158,115,87,30,114,39,90,142,78,236,28],
  "epoch": 123,
  "request_per_user": 69,
  "signature": {
    "r": "0xe3fbde1404800f5ac238b30f2118b69a1cdb604d0b4227056f18f87beb83abf2",
    "s": "0x9132d353ef806f526ef5e48cbee6872a11fcf688c2d92023a384d0f02082466",
    "v": 28
  },
  "extra_data": null
}
```

However, you will need to get the point to send for the OPRF:

## Getting the point

### With mishtiwasm

Install:

```bash
npm i @holonym-foundation/mishtiwasm
```

Import:

<pre class="language-javascript"><code class="lang-javascript">import init, { oprf_client_step1_secp256k1, unmask_secp256k1 } from "@holonym-foundation/mishtiwasm"
<strong>// important to call init -- wasm is initialized asynchronously.
</strong><strong>// without it, the other functions won't work
</strong><strong>await init();
</strong></code></pre>

Use:

```rust
// Salt and secret input are arrays of uint8s
const { encoded_masked_point, secret_mask } = oprf_client_step1_secp256k1(salt, secret);
```

&#x20;`encoded_masked_point` can be the value for `point` in the RequestToNetwork

### Unmasking the point

After querying the network and receiving the point `response_from_network`, unmask the response via

```javascript
// Salt and secret input are arrays of uint8s
const result = unmask_secp256k1(response_from_network, secret_mask);
```

This is the output of the OPRF!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.network.human.tech/for-developers/types-of-requests/oprf-to-derive-keys-from-low-entropy-data.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
