---
name: "gnutls_privkey_import_ext4"
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_privkey_import_ext4"
---

# gnutls\_privkey\_import\_ext4(3)

API function

## NAME

gnutls\_privkey\_import\_ext4 - API function

## SYNOPSIS

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

**int gnutls\_privkey\_import\_ext4(gnutls\_privkey\_t** *pkey***, void \*** *userdata***, gnutls\_privkey\_sign\_data\_func** *sign\_data\_fn***, gnutls\_privkey\_sign\_hash\_func** *sign\_hash\_fn***, gnutls\_privkey\_decrypt\_func** *decrypt\_fn***, gnutls\_privkey\_deinit\_func** *deinit\_fn***, gnutls\_privkey\_info\_func** *info\_fn***, unsigned int** *flags***);**

## ARGUMENTS

- gnutls\_privkey\_t pkey

  The private key

- void \* userdata

  private data to be provided to the callbacks

- gnutls\_privkey\_sign\_data\_func sign\_data\_fn

  callback for signature operations (may be **NULL**)

- gnutls\_privkey\_sign\_hash\_func sign\_hash\_fn

  callback for signature operations (may be **NULL**)

- gnutls\_privkey\_decrypt\_func decrypt\_fn

  callback for decryption operations (may be **NULL**)

- gnutls\_privkey\_deinit\_func deinit\_fn

  a deinitialization function

- gnutls\_privkey\_info\_func info\_fn

  returns info about the public key algorithm (should not be **NULL**)

- unsigned int flags

  Flags for the import

## DESCRIPTION

This function will associate the given callbacks with the **gnutls\_privkey\_t** type. At least one of the callbacks must be non-null. If a deinitialization function is provided then flags is assumed to contain **GNUTLS\_PRIVKEY\_IMPORT\_AUTO\_RELEASE**.

Note that in contrast with the signing function of **gnutls\_privkey\_import\_ext3()**, the signing functions provided to this function take explicitly the signature algorithm as parameter and different functions are provided to sign the data and hashes.

The  *sign\_hash\_fn* is to be called to sign pre-hashed data. The input to the callback is the output of the hash (such as SHA256) corresponding to the signature algorithm. For RSA PKCS**1** signatures, the signature algorithm can be set to **GNUTLS\_SIGN\_RSA\_RAW**, and in that case the data should be handled as if they were an RSA PKCS**1** DigestInfo structure.

The  *sign\_data\_fn* is to be called to sign data. The input data will be he data to be signed (and hashed), with the provided signature algorithm. This function is to be used for signature algorithms like Ed25519 which cannot take pre-hashed data as input.

When both  *sign\_data\_fn* and  *sign\_hash\_fn* functions are provided they must be able to operate on all the supported signature algorithms, unless prohibited by the type of the algorithm (e.g., as with Ed25519).

The  *info\_fn* must provide information on the signature algorithms supported by this private key, and should support the flags **GNUTLS\_PRIVKEY\_INFO\_PK\_ALGO**, **GNUTLS\_PRIVKEY\_INFO\_HAVE\_SIGN\_ALGO** and **GNUTLS\_PRIVKEY\_INFO\_PK\_ALGO\_BITS**. It must return -1 on unknown flags.

## RETURNS

On success, **GNUTLS\_E\_SUCCESS** (0) is returned, otherwise a negative error value.

## SINCE

3\.6.0

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