mirror of
https://github.com/martijnvanbrummelen/nwipe.git
synced 2026-02-20 13:42:14 +00:00
Fixed has_aes_ni() as it didn't build on systems different other than x86. Now the check returns 0 if the system is other than x86. Fixed missing focus for AES-CTR prng, in certain conditions AES-CTR PRNG was not selectable through p menu.
This commit is contained in:
@@ -1640,7 +1640,6 @@ void nwipe_gui_prng( void )
|
||||
extern nwipe_prng_t nwipe_twister;
|
||||
extern nwipe_prng_t nwipe_isaac;
|
||||
extern nwipe_prng_t nwipe_isaac64;
|
||||
extern nwipe_prng_t nwipe_aes_ctr_prng;
|
||||
extern nwipe_prng_t nwipe_xoroshiro256_prng;
|
||||
extern nwipe_prng_t nwipe_add_lagg_fibonacci_prng;
|
||||
extern nwipe_prng_t nwipe_aes_ctr_prng;
|
||||
@@ -1979,6 +1978,11 @@ void nwipe_gui_prng( void )
|
||||
{
|
||||
nwipe_options.prng = &nwipe_xoroshiro256_prng;
|
||||
}
|
||||
if( focus == 5 )
|
||||
{
|
||||
nwipe_options.prng = &nwipe_aes_ctr_prng;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
case KEY_BACKSPACE:
|
||||
|
||||
@@ -39,20 +39,25 @@ nwipe_options_t nwipe_options;
|
||||
*/
|
||||
void cpuid( uint32_t eax, uint32_t* eax_out, uint32_t* ebx_out, uint32_t* ecx_out, uint32_t* edx_out )
|
||||
{
|
||||
#if defined( _MSC_VER ) // Microsoft compiler
|
||||
int registers[4];
|
||||
__cpuid( registers, eax );
|
||||
*eax_out = registers[0];
|
||||
*ebx_out = registers[1];
|
||||
*ecx_out = registers[2];
|
||||
*edx_out = registers[3];
|
||||
#elif defined( __GNUC__ ) // GCC and Clang
|
||||
#if defined( __i386__ ) || defined( __x86_64__ ) /* only on x86 */
|
||||
#if defined( _MSC_VER ) /* MSVC */
|
||||
int r[4];
|
||||
__cpuid( r, eax );
|
||||
*eax_out = r[0];
|
||||
*ebx_out = r[1];
|
||||
*ecx_out = r[2];
|
||||
*edx_out = r[3];
|
||||
#elif defined( __GNUC__ ) /* GCC/Clang */
|
||||
__asm__ __volatile__( "cpuid"
|
||||
: "=a"( *eax_out ), "=b"( *ebx_out ), "=c"( *ecx_out ), "=d"( *edx_out )
|
||||
: "a"( eax ) );
|
||||
#else
|
||||
#error "Unsupported compiler"
|
||||
#endif
|
||||
#else /* not-x86 */
|
||||
(void) eax;
|
||||
*eax_out = *ebx_out = *ecx_out = *edx_out = 0; /* CPUID = 0 */
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -61,9 +66,13 @@ void cpuid( uint32_t eax, uint32_t* eax_out, uint32_t* ebx_out, uint32_t* ecx_ou
|
||||
*/
|
||||
int has_aes_ni( void )
|
||||
{
|
||||
#if defined( __i386__ ) || defined( __x86_64__ ) /* only for x86 */
|
||||
uint32_t eax, ebx, ecx, edx;
|
||||
cpuid( 1, &eax, &ebx, &ecx, &edx );
|
||||
return ( ecx & ( 1 << 25 ) ) != 0; // Check if bit 25 in ECX is set
|
||||
return ( ecx & ( 1u << 25 ) ) != 0; /* Bit 25 = AES-NI */
|
||||
#else /* ARM, RISC-V … */
|
||||
return 0; /* no AES-NI */
|
||||
#endif
|
||||
}
|
||||
|
||||
int nwipe_options_parse( int argc, char** argv )
|
||||
|
||||
Reference in New Issue
Block a user