Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90b06ac7 authored by Doug Zongker's avatar Doug Zongker
Browse files

only use faster SHA-1 code on machines with good libc

Macs don't have byteswap.h or endian.h.  Change conditionals to only
use the faster SHA-1 code on little-endian machines with byteswap.h.
parent a2f441b8
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -29,7 +29,6 @@
#define _EMBEDDED_SHA_H_
#define _EMBEDDED_SHA_H_


#include <inttypes.h>
#include <inttypes.h>
#include <endian.h>


#ifdef __cplusplus
#ifdef __cplusplus
extern "C" {
extern "C" {
@@ -38,7 +37,7 @@ extern "C" {
typedef struct SHA_CTX {
typedef struct SHA_CTX {
    uint64_t count;
    uint64_t count;
    uint32_t state[5];
    uint32_t state[5];
#if __BYTE_ORDER == __LITTLE_ENDIAN
#if defined(HAVE_ENDIAN_H) && defined(HAVE_LITTLE_ENDIAN)
    union {
    union {
        uint8_t b[64];
        uint8_t b[64];
        uint32_t w[16];
        uint32_t w[16];
+8 −6
Original line number Original line Diff line number Diff line
@@ -25,13 +25,15 @@
** ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
** ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*/


#include <byteswap.h>
#include <endian.h>
#include <memory.h>

#include "mincrypt/sha.h"
#include "mincrypt/sha.h"


#if __BYTE_ORDER == __LITTLE_ENDIAN
// Some machines lack byteswap.h and endian.h.  These have to use the
// slower code, even if they're little-endian.

#if defined(HAVE_ENDIAN_H) && defined(HAVE_LITTLE_ENDIAN)

#include <byteswap.h>
#include <memory.h>


// This version is about 28% faster than the generic version below,
// This version is about 28% faster than the generic version below,
// but assumes little-endianness.
// but assumes little-endianness.
@@ -186,7 +188,7 @@ const uint8_t* SHA_final(SHA_CTX* ctx) {
    return ctx->buf.b;
    return ctx->buf.b;
}
}


#else   // __BYTE_ORDER == BIG_ENDIAN
#else   // #if defined(HAVE_ENDIAN_H) && defined(HAVE_LITTLE_ENDIAN)


#define rol(bits, value) (((value) << (bits)) | ((value) >> (32 - (bits))))
#define rol(bits, value) (((value) << (bits)) | ((value) >> (32 - (bits))))