gnutls\_hpke\_decap(3) gnutls gnutls\_hpke\_decap(3)

# [NAME](#NAME)

gnutls\_hpke\_decap - API function

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;gnutls/hpke.h&gt;**

**int gnutls\_hpke\_decap(gnutls\_hpke\_context\_t ctx, const gnutls\_datum\_t * info, const gnutls\_datum\_t * enc, const gnutls\_privkey\_t receiver\_privkey, const gnutls\_pubkey\_t sender\_pubkey, const gnutls\_datum\_t * psk, const gnutls\_datum\_t * psk\_id);**

# [ARGUMENTS](#ARGUMENTS)

[gnutls\_hpke\_context\_t ctx](#gnutls_hpke_context_t)

The HPKE context to use for decapsulation.

[const gnutls\_datum\_t * info](#const)

The application-specific information that was included in the key schedule (optional).

[const gnutls\_datum\_t * enc](#const~2)

A pointer to a gnutls\_datum\_t structure containing the encapsulated key received from the sender.

[const gnutls\_privkey\_t receiver\_privkey](#const~3)

The receiver's private key to use for decapsulation.

[const gnutls\_pubkey\_t sender\_pubkey](#const~4)

The sender's public key for AuthDecap operation (optional).

[const gnutls\_datum\_t * psk](#const~5)

The pre-shared key (optional).

[const gnutls\_datum\_t * psk\_id](#const~6)

The pre-shared key identifier (optional).

# [DESCRIPTION](#DESCRIPTION)

This function performs the decapsulation operation of HPKE. It takes the encapsulated key ( *enc* ) received from the sender and uses it along with the receiver's private key to derive the shared secret. It then uses this shared secret along with any provided application-specific information ( *info* ) to set up the necessary keys and nonces in the HPKE context for subsequent sealing and opening operations.

This function must be used once per HPKE context and before any calls to **gnutls\_hpke\_open()**.

*enc* should be the same encapsulated key that was generated by **gnutls\_hpke\_encap()** on the sender's side.

*receiver\_privkey* must be a valid private key that is compatible with the KEM algorithm specified in the HPKE context and that corresponds to the receiver's public key used during encapsulation.

For **GNUTLS\_HPKE\_MODE\_AUTH** or **GNUTLS\_HPKE\_MODE\_AUTH\_PSK**,  
*sender\_pubkey* must be a valid public key that can be used for authentication. For **GNUTLS\_HPKE\_MODE\_PSK** or **GNUTLS\_HPKE\_MODE\_AUTH\_PSK**, a pre-shared key ( *psk* ) and its identifier ( *psk\_id* ) must be supplied.

# [RETURNS](#RETURNS)

0 on success, or a negative error code on failure

# [SINCE](#SINCE)

3.8.13

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to &lt;bugs@gnutls.org&gt;.  
Home page: https://www.gnutls.org

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2001-2023 Free Software Foundation, Inc., and others.  
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.

# [SEE ALSO](#SEE_ALSO)

The full documentation for **gnutls** is maintained as a Texinfo manual. If the /usr/share/doc/gnutls/ directory does not contain the HTML form visit

[https://www.gnutls.org/manual/](https://www.gnutls.org/manual/)

3.8.13 gnutls

---

Document: gnutls_hpke_decap(3) from gnutls 3.8.13-r1 (Chainguard OS)
Source: https://gitlab.com/gnutls/gnutls
