---
name: "keyctl_get_keyring_ID"
section: "3"
platform: "linux"
package: "keyutils"
version: "1.6.3-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/keyctl_get_keyring_ID"
---

# keyctl\_get\_keyring\_ID(3)

get the ID of a special keyring

## NAME

keyctl\_get\_keyring\_ID - get the ID of a special keyring

## SYNOPSIS

```
#include <keyutils.h>

key_serial_t keyctl_get_keyring_ID(key_serial_t key,
 int create);
```

## DESCRIPTION

**keyctl\_get\_keyring\_ID**() maps a special *key* or keyring ID to the serial number of the key actually representing that feature.  The serial number will be returned if that key exists.

If the key or keyring does not yet exist, then if *create* is non-zero, the key or keyring will be created if it is appropriate to do so.

The following special key IDs may be specified as *key*:

- **KEY\_SPEC\_THREAD\_KEYRING**

  This specifies the caller's thread-specific keyring.

- **KEY\_SPEC\_PROCESS\_KEYRING**

  This specifies the caller's process-specific keyring.

- **KEY\_SPEC\_SESSION\_KEYRING**

  This specifies the caller's session-specific keyring.

- **KEY\_SPEC\_USER\_KEYRING**

  This specifies the caller's UID-specific keyring.

- **KEY\_SPEC\_USER\_SESSION\_KEYRING**

  This specifies the caller's UID-session keyring.

- **KEY\_SPEC\_REQKEY\_AUTH\_KEY**

  This specifies the authorisation key created by **request\_key**() and passed to the process it spawns to generate a key.

If a valid keyring ID is passed in, then this will simply be returned if the key exists; an error will be issued if it doesn't exist.

## RETURN VALUE

On success **keyctl\_get\_keyring\_ID**() returns the serial number of the key it found.  On error, the value **-1** will be returned and *errno* will have been set to an appropriate error.

## ERRORS

- **ENOKEY**

  No matching key was found.

- **ENOMEM**

  Insufficient memory to create a key.

- **EDQUOT**

  The key quota for this user would be exceeded by creating this key or linking it to the keyring.

## LINKING

This is a library function that can be found in *libkeyutils*. When linking, **-lkeyutils** should be specified to the linker.

## SEE ALSO

[**keyctl**(1)](/keyctl/1.md), [**add\_key**(2)](/add_key/2.md), [**keyctl**(2)](/keyctl/2.md), [**request\_key**(2)](/request_key/2.md), [**keyctl**(3)](/keyctl/3.md), [**keyrings**(7)](/keyrings/7.md), [**keyutils**(7)](/keyutils/7.md)
