ZMQ\_CURVE\_PUBLIC(3) 0MQ Manual ZMQ\_CURVE\_PUBLIC(3)

# [NAME](#NAME)

zmq\_curve\_public - derive the public key from a private key

# [SYNOPSIS](#SYNOPSIS)

**int zmq\_curve\_public (char \*z85\_public\_key, char \*z85\_secret\_key);**

# [DESCRIPTION](#DESCRIPTION)

The *zmq\_curve\_public()* function shall derive the public key from a private key. The caller provides two buffers, each at least 41 octets large. In z85\_secret\_key the caller shall provide the private key, and the function will store the public key in z85\_public\_key. The keys are encoded using [**zmq\_z85\_encode**(3)](/man/os/zeromq/zmq_z85_encode.3).

# [RETURN VALUE](#RETURN_VALUE)

The *zmq\_curve\_public()* function shall return 0 if successful, else it shall return -1 and set *errno* to one of the values defined below.

# [ERRORS](#ERRORS)

**ENOTSUP**

The libzmq library was not built with cryptographic support (libsodium).

# [EXAMPLE](#EXAMPLE)

**Deriving the public key from a CURVE private key**.

```
char public_key [41];
char secret_key [41];
int rc = zmq_curve_keypair (public_key, secret_key);
assert (rc == 0);
char derived_public[41];
rc = zmq_curve_public (derived_public, secret_key);
assert (rc == 0);
assert (!strcmp (derived_public, public_key));
```

# [SEE ALSO](#SEE_ALSO)

[**zmq\_z85\_decode**(3)](/man/os/zeromq/zmq_z85_decode.3) [**zmq\_z85\_encode**(3)](/man/os/zeromq/zmq_z85_encode.3) [**zmq\_curve\_keypair**(3)](/man/os/zeromq/zmq_curve_keypair.3) [**zmq\_curve**(7)](/man/os/zeromq/zmq_curve.7)

# [AUTHORS](#AUTHORS)

This page was written by the 0MQ community. To make a change please read the 0MQ Contribution Policy at **http://www.zeromq.org/docs:contributing**.

10/26/2026 0MQ 4.3.5

---

Document: zmq_curve_public(3) from zeromq 4.3.5-r15 (Chainguard OS)
Source: https://github.com/zeromq/libzmq
