pub fn getrandom(
buffer: &mut [u8],
flags: GetrandomFlags,
) -> Result<usize, Errno>Expand description
Remplit buffer avec des octets aléatoires cryptographiquement sûrs.
Utilise le syscall getrandom(2) (Linux 3.17+), qui puise dans le
CSPRNG kernel — mécanisme recommandé par Air pour toute génération
d’entropie. Ne passe jamais par /dev/urandom ni par la libc.
Peut retourner moins d’octets que buffer.len() (surtout pour les
grands buffers). L’appelant doit boucler si nécessaire.
§Parameters
buffer: buffer de destination à remplir.flags: drapeaux de comportement (GetrandomFlags::empty()pour le cas nominal).
§Errors
EINTR: interrompu par un signal (conforme à ADR-021 convention 2 ; l’appelant doit retry explicitement si désiré).EAGAIN: entropie non disponible etNONBLOCKétait positionné (au démarrage, avant l’initialisation du pool).EFAULT: pointeur invalide (ne se produit pas via cette API safe).
§Examples
use air_sys_syscall::system::getrandom;
use air_sys_types::GetrandomFlags;
let mut buffer = [0u8; 32];
let n = getrandom(&mut buffer, GetrandomFlags::empty()).expect("getrandom");
assert!(n > 0);