Skip to main content

getrandom

Function getrandom 

Source
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 et NONBLOCK é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);