---
name: "gnutls_hpke_init"
section: "3"
platform: "linux"
package: "gnutls"
version: "3.8.13-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/gnutls_hpke_init"
---

# gnutls\_hpke\_init(3)

API function

## NAME

gnutls\_hpke\_init - API function

## SYNOPSIS

**#include \<gnutls/hpke.h\>**

**int gnutls\_hpke\_init(gnutls\_hpke\_context\_t \*** *ctx***, gnutls\_hpke\_mode\_t** *mode***, gnutls\_hpke\_role\_t** *role***, gnutls\_hpke\_kem\_t** *kem***, gnutls\_hpke\_kdf\_t** *kdf***, gnutls\_hpke\_aead\_t** *aead***);**

## ARGUMENTS

- gnutls\_hpke\_context\_t \* ctx

  A pointer to the HPKE context to initialize.

- gnutls\_hpke\_mode\_t mode

  The HPKE mode to use (Base, PSK, Auth, or AuthPSK).

- gnutls\_hpke\_role\_t role

  The role of the context (Sender or Receiver).

- gnutls\_hpke\_kem\_t kem

  The KEM algorithm to use (e.g., DHKEM(X25519)).

- gnutls\_hpke\_kdf\_t kdf

  The KDF algorithm to use (e.g., HKDF-SHA256).

- gnutls\_hpke\_aead\_t aead

  The AEAD algorithm to use (e.g., AES-128-GCM).

## DESCRIPTION

This function initializes the HPKE context with the specified parameters. It allocates memory for the context and sets the initial values for the fields based on the provided parameters.

The context must be deinitialized using **gnutls\_hpke\_deinit()** when it is no longer needed to free any allocated resources and securely erase sensitive information.

## RETURNS

0 on success, or a negative error code on failure

## SINCE

3\.8.13

## REPORTING BUGS

Report bugs to \<bugs@gnutls.org\>.\
 Home page: https://www.gnutls.org

## 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

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/
