It seems that we have to break those out and use individual checks. Reason: different CPUs may support some but not all of these features.
On Tue, May 17, 2016 at 10:29 AM, Jeffrey Walton <[email protected]> wrote: > Hi Everyone, > > ARMv8 has optional Crypto extensions, and they are available in A-53, > A-57, etc. The Crypto extension collectively refers to AES, SAH1, SHA224 > and SHA-256. To enable them, you compile with: > > export CXXFLAGS="... -march=armv8-a+crypto -mcpu=cortex-a53" > > According to the ARM Cortex-A53 MPCore Processor ( > http://infocenter.arm.com/help/topic/com.arm.doc.ddi0500d/DDI0500D_cortex_a53_r0p2_trm.pdf), > the constituent parts can be selectively disabled. That is, AES could be > disabled, or SHA-1 could be disabled, etc. > > Testing for the features is not as easy as IA-32's CPUID because reading > an ARM Machine Status Register (MSR) is a privileged operation. Attempting > to read it results in a SIGILL. The best way I've found to determine > features is runtime testing, and catching the SIGILL (Linux) and > EXCEPTION_ILLEGAL_INSTRUCTION (Windows). Also see around line 260 of > http://github.com/weidai11/cryptopp/blob/arm-neon/cpu.cpp#L259 . > > I have not encountered a condition where AES is enabled, but SHA1 is > disabled. However, iOS comes close because both NEON and Crypto extensions > are available, but CRC32 extensions are not available. Its unclear what > Microsoft is doing in Store 10 and Phone 10 because their > production-released compilers do not currently support ARM-64. > > My question is, should we collectively use "hasCrypto", or should we break > them out and use "hasAES", "hasSHA1", etc? > > Jeff > > -- > -- > You received this message because you are subscribed to the "Crypto++ > Users" Google Group. > To unsubscribe, send an email to > [email protected]. > More information about Crypto++ and this group is available at > http://www.cryptopp.com. > --- > You received this message because you are subscribed to the Google Groups > "Crypto++ Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Regards, Mouse -- -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com. --- You received this message because you are subscribed to the Google Groups "Crypto++ Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
