| 
Classes | 
| struct | aesni1xm128i_key_t | 
| class | r123::AESNI1xm128i | 
| class | r123::AESNI1xm128i_R< ROUNDS > | 
| class | r123::ARS1xm128i_R< ROUNDS > | 
| class | r123::ARS4x32_R< ROUNDS > | 
| 
Defines | 
| #define | aesni4x32(c, k)   aesni4x32_R(aesni4x32_rounds, c, k) | 
| #define | ars1xm128i(c, k)   ars1xm128i_R(ars1xm128i_rounds, c, k) | 
| #define | ars4x32(c, k)   ars4x32_R(ars4x32_rounds, c, k) | 
| 
Typedefs | 
| typedef struct r123array1xm128i | aesni1xm128i_ctr_t | 
| typedef struct r123array1xm128i | aesni1xm128i_ukey_t | 
| typedef struct r123array4x32 | aesni4x32_ukey_t | 
| typedef struct r123array4x32 | aesni4x32_ctr_t | 
| typedef aesni1xm128i_key_t | aesni4x32_key_t | 
| typedef struct r123array1xm128i | ars1xm128i_ctr_t | 
| typedef struct r123array1xm128i | ars1xm128i_key_t | 
| typedef struct r123array1xm128i | ars1xm128i_ukey_t | 
| typedef struct r123array4x32 | ars4x32_ctr_t | 
| typedef struct r123array4x32 | ars4x32_key_t | 
| typedef struct r123array4x32 | ars4x32_ukey_t | 
| 
Enumerations | 
| enum | r123_enum_aesni1xm128i { aesni1xm128i_rounds =  10
 } | 
| enum | r123_enum_aesni4x32 { aesni4x32_rounds =  10
 } | 
| enum | r123_enum_ars1xm128i { ars1xm128i_rounds =  7
 } | 
| enum | r123_enum_ars4x32 { ars4x32_rounds =  7
 } | 
| 
Functions | 
| static aesni1xm128i_ctr_t | aesni1xm128i (aesni1xm128i_ctr_t in, aesni1xm128i_key_t k) | 
| static aesni1xm128i_ctr_t | aesni1xm128i_R (unsigned R, aesni1xm128i_ctr_t in, aesni1xm128i_key_t k) | 
| static aesni4x32_key_t | aesni4x32keyinit (aesni4x32_ukey_t uk) | 
| static aesni4x32_ctr_t | aesni4x32_R (unsigned int Nrounds, aesni4x32_ctr_t c, aesni4x32_key_t k) | 
| static ars1xm128i_key_t | ars1xm128ikeyinit (ars1xm128i_ukey_t uk) | 
| static ars1xm128i_ctr_t | ars1xm128i_R (unsigned int Nrounds, ars1xm128i_ctr_t in, ars1xm128i_key_t k) | 
| static ars4x32_key_t | ars4x32keyinit (ars4x32_ukey_t uk) | 
| static ars4x32_ctr_t | ars4x32_R (unsigned int Nrounds, ars4x32_ctr_t c, ars4x32_key_t k) | 
Detailed Description
The ARS4x32, ARS1xm128i, AESNI4x32 and AESNI1xm128i classes export the member functions, typedefs and operator overloads required by a CBRNG class.
ARS1xm128i and AESNI1xm128i are based on the AES block cipher and rely on the AES-NI hardware instructions available on some some new (2011) CPUs.
The ARS1xm128i CBRNG and the use of AES for random number generation are described in Parallel Random Numbers: As Easy as 1, 2, 3 . Although it uses some cryptographic primitives, ARS1xm128i uses a cryptographically weak key schedule and is not suitable for cryptographic use. 
Define Documentation
      
        
          | #define aesni4x32 | ( |  | c, | 
        
          |  |  |  | k |  | 
        
          |  | ) |  |  | aesni4x32_R(aesni4x32_rounds, c, k) | 
      
 
The aesni4x32 macro provides a C API to the AESNI CBRNG, uses the default number of rounds i.e. aesni4x32_rounds 
 
 
      
        
          | #define ars1xm128i | ( |  | c, | 
        
          |  |  |  | k |  | 
        
          |  | ) |  |  | ars1xm128i_R(ars1xm128i_rounds, c, k) | 
      
 
The ars1mx128i macro provides a C API interface to the ARS CBRNG with the default number of rounds i.e. ars1xm128i_rounds 
 
 
      
        
          | #define ars4x32 | ( |  | c, | 
        
          |  |  |  | k |  | 
        
          |  | ) |  |  | ars4x32_R(ars4x32_rounds, c, k) | 
      
 
The ars4x32 macro provides a C API interface to the ARS CBRNG with the default number of rounds i.e. ars4x32_rounds 
 
 
Typedef Documentation
Enumeration Type Documentation
Function Documentation
The aesni4x32_R function provides a C API to the AESNI CBRNG, allowing the number of rounds to be specified explicitly