SD_ID128_GET_MACHINE - Online Linux Manual Page

Section : 3
Updated :
Source : systemd 250
Note : sd_id128_get_machine

NAMEsd_id128_get_machine, sd_id128_get_machine_app_specific, sd_id128_get_boot, sd_id128_get_boot_app_specific, sd_id128_get_invocation − Retrieve 128−bit IDs

SYNOPSIS#include <systemd/sd−id128​.h>int sd_id128_get_machine(sd_id128_t *ret); int sd_id128_get_machine_app_specific(sd_id128_t app_id, sd_id128_t *ret); int sd_id128_get_boot(sd_id128_t *ret); int sd_id128_get_boot_app_specific(sd_id128_t app_id, sd_id128_t *ret); int sd_id128_get_invocation(sd_id128_t *ret);

DESCRIPTIONsd_id128_get_machine() returns the machine ID of the executing host​. This reads and parses the machine-id(5) file​. This function caches the machine ID internally to make retrieving the machine ID a cheap operation​. This ID may be used wherever a unique identifier for the local system is needed​. However, it is recommended to use this ID as−is only in trusted environments​. In untrusted environments it is recommended to derive an application specific ID from this machine ID, in an irreversible (cryptographically secure) way​. To make this easy sd_id128_get_machine_app_specific() is provided, see below​. sd_id128_get_machine_app_specific() is similar to sd_id128_get_machine(), but retrieves a machine ID that is specific to the application that is identified by the indicated application ID​. It is recommended to use this function instead of sd_id128_get_machine() when passing an ID to untrusted environments, in order to make sure that the original machine ID may not be determined externally​. This way, the ID used by the application remains stable on a given machine, but cannot be easily correlated with IDs used in other applications on the same machine​. The application−specific ID should be generated via a tool like systemd−id128 new, and may be compiled into the application​. This function will return the same application−specific ID for each combination of machine ID and application ID​. Internally, this function calculates HMAC−SHA256 of the application ID, keyed by the machine ID​. sd_id128_get_boot() returns the boot ID of the executing kernel​. This reads and parses the /proc/sys/kernel/random/boot_id file exposed by the kernel​. It is randomly generated early at boot and is unique for every running kernel instance​. See random(4) for more information​. This function also internally caches the returned ID to make this call a cheap operation​. It is recommended to use this ID as−is only in trusted environments​. In untrusted environments it is recommended to derive an application specific ID using sd_id128_get_machine_app_specific(), see below​. sd_id128_get_boot_app_specific() is analogous to sd_id128_get_machine_app_specific() but returns an ID that changes between boots​. Some machines may be used for a long time without rebooting, hence the boot ID may remain constant for a long time, and has properties similar to the machine ID during that time​. sd_id128_get_invocation() returns the invocation ID of the currently executed service​. In its current implementation, this reads and parses the $INVOCATION_ID environment variable that the service manager sets when activating a service, see systemd.exec(5) for details​. The ID is cached internally​. In future a different mechanism to determine the invocation ID may be added​. Note that sd_id128_get_machine_app_specific(), sd_id128_get_boot(), sd_id128_get_boot_app_specific(), and sd_id128_get_invocation() always return UUID Variant 1 Version 4 compatible IDs​. sd_id128_get_machine() will also return a UUID Variant 1 Version 4 compatible ID on new installations but might not on older​. It is possible to convert the machine ID non−reversibly into a UUID Variant 1 Version 4 compatible one​. For more information, see machine-id(5)​. It is hence guaranteed that these functions will never return the ID consisting of all zero or all one bits (SD_ID128_NULL, SD_ID128_ALLF) — with the possible exception of sd_id128_get_machine(), as mentioned​. For more information about the "sd_id128_t" type see sd-id128(3)​.

RETURN VALUEThose calls return 0 on success (in which case ret is filled in), or a negative errno−style error code​.

ErrorsReturned errors may indicate the following problems: −ENOENT Returned by sd_id128_get_machine(), sd_id128_get_machine_app_specific(), and sd_id128_get_boot_app_specific() when /etc/machine−id is missing​. −ENOMEDIUM Returned by sd_id128_get_machine(), sd_id128_get_machine_app_specific(), and sd_id128_get_boot_app_specific() when /etc/machine−id is empty or all zeros​. −ENXIO Returned by sd_id128_get_invocation() if no invocation ID is set​. −EIO Returned by any of the functions described here when the configured value has invalid format​. −EPERM Requested information could not be retrieved because of insufficient permissions​.

NOTESThese APIs are implemented as a shared library, which can be compiled and linked to with the libsystemd ​pkg-config(1) file​.

EXAMPLESExample ​1. ​Application−specific machine ID First, generate the application ID: $ systemd−id128 −p new As string: c273277323db454ea63bb96e79b53e97 As UUID: c2732773−23db−454e−a63b−b96e79b53e97 As man:sd−id128(3) macro: #define MESSAGE_XYZ SD_ID128_MAKE(c2,73,27,73,23,db,45,4e,a6,3b,b9,6e,79,b5,3e,97) ​.​.​.Then use the new identifier in an example application: /* SPDX−License−Identifier: CC0−1​.0 */ #include <stdio​.h> #include <systemd/sd−id128​.h> #define OUR_APPLICATION_ID SD_ID128_MAKE(c2,73,27,73,23,db,45,4e,a6,3b,b9,6e,79,b5,3e,97) int main(int argc, char *argv[]) { sd_id128_t id; sd_id128_get_machine_app_specific(OUR_APPLICATION_ID, &id); printf("Our application ID: " SD_ID128_FORMAT_STR "\n", SD_ID128_FORMAT_VAL(id)); return 0; }

SEE ALSOsystemd(1), systemd-id128(1), sd-id128(3), machine-id(5), systemd.exec(5), sd_id128_randomize(3), random(4)
0
Johanes Gumabo
Data Size   :   20,072 byte
man-sd_id128_get_invocation.3Build   :   2025-03-22, 13:26   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   11 / 1,215,361
Visitor ID   :     :  
Visitor IP   :   18.222.161.175   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 25.03.22
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36


Very long time ago, I have the best tutor, Wenzel Svojanovsky. If someone knows the email address of Wenzel Svojanovsky, please send an email to johanesgumabo@gmail.com.
Help me, linux0001.com will expire on July 16, 2025. I have no money to renew it. View detail

If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.