Syscall BSD#500
svc · unix #500
getentropy
Remplit un buffer (jusqu'à 256 octets) de données aléatoires de qualité depuis le CSPRNG noyau.
Prototype
int getentropy(void *buffer, size_t size);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| buffer | void | - | |
| size | size_t | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-3789.1.32 | macOS 10.12 Sierra | 500 |
| xnu-4570.1.46 | macOS 10.13 High Sierra | 500 |
| xnu-4903.221.2 | macOS 10.14 Mojave | 500 |
| xnu-6153.11.26 | macOS 10.15 Catalina | 500 |
| xnu-7195.50.7.100.1 | macOS 11.0 Big Sur | 500 |
| xnu-8019.41.5 | macOS 12.0 Monterey | 500 |
| xnu-8792.41.9 | macOS 13.0 Ventura | 500 |
| xnu-10002.1.13 | macOS 14.0 Sonoma | 500 |
| xnu-11215.1.10 | macOS 15.0 Sequoia | 500 |
| xnu-11417.101.15 | macOS 15.4 Sequoia | 500 |
| xnu-12377.1.9 | macOS 26.0 Tahoe | 500 |
| xnu-10002.41.9 | — | 500 |
| xnu-10002.61.3 | — | 500 |
| xnu-10002.81.5 | — | 500 |
| xnu-10063.101.15 | — | 500 |
| xnu-10063.121.3 | — | 500 |
| xnu-10063.141.1 | — | 500 |
| xnu-11215.41.3 | — | 500 |
| xnu-11215.61.5 | — | 500 |
| xnu-11215.81.4 | — | 500 |
| xnu-11417.121.6 | — | 500 |
| xnu-11417.140.69 | — | 500 |
| xnu-12377.101.15 | — | 500 |
| xnu-12377.41.6 | — | 500 |
| xnu-12377.61.12 | — | 500 |
| xnu-12377.81.4 | — | 500 |
| xnu-3789.21.4 | — | 500 |
| xnu-3789.31.2 | — | 500 |
| xnu-3789.41.3 | — | 500 |
| xnu-3789.51.2 | — | 500 |
| xnu-3789.60.24 | — | 500 |
| xnu-3789.70.16 | — | 500 |
| xnu-4570.20.62 | — | 500 |
| xnu-4570.31.3 | — | 500 |
| xnu-4570.41.2 | — | 500 |
| xnu-4570.51.1 | — | 500 |
| xnu-4570.61.1 | — | 500 |
| xnu-4570.71.2 | — | 500 |
| xnu-4903.231.4 | — | 500 |
| xnu-4903.241.1 | — | 500 |
| xnu-4903.270.47 | — | 500 |
| xnu-6153.101.6 | — | 500 |
| xnu-6153.121.1 | — | 500 |
| xnu-6153.141.1 | — | 500 |
| xnu-6153.41.3 | — | 500 |
| xnu-6153.61.1 | — | 500 |
| xnu-6153.81.5 | — | 500 |
| xnu-7195.101.1 | — | 500 |
| xnu-7195.121.3 | — | 500 |
| xnu-7195.141.2 | — | 500 |
| xnu-7195.60.75 | — | 500 |
| xnu-7195.81.3 | — | 500 |
| xnu-8019.61.5 | — | 500 |
| xnu-8019.80.24 | — | 500 |
| xnu-8020.101.4 | — | 500 |
| xnu-8020.121.3 | — | 500 |
| xnu-8020.140.41 | — | 500 |
| xnu-8792.61.2 | — | 500 |
| xnu-8792.81.2 | — | 500 |
| xnu-8796.101.5 | — | 500 |
| xnu-8796.121.2 | — | 500 |
| xnu-8796.141.3 | — | 500 |
Exemples
Generate a 32-byte key
#include <sys/random.h>
unsigned char key[32];
if (getentropy(key, sizeof key) != 0) {
perror("getentropy");
}Notes
Repose sur le RNG noyau macOS (style Fortuna) alimenté par des sources matérielles (SEP sur Apple Silicon, RDRAND ou entropie de boot sur Intel). Ne peut pas échouer en conditions normales et ne bloque jamais ; les seuls EFAULT/EINVAL viennent d'un mauvais pointeur ou d'une taille >256. Primitive recommandée pour clés, nonces et tokens — à préférer à /dev/random.
API associées
gethostuuidgettimeofdaygetpid