2 * Copyright (C) 2017 Denys Vlasenko
4 * Licensed under GPLv2, see file LICENSE in this source tree.
9 #define HAVE_NATIVE_INT64 1
11 #undef USE_1024_KEY_SPEED_OPTIMIZATIONS
12 #undef USE_2048_KEY_SPEED_OPTIMIZATIONS
13 //TODO: enable to use asm:
14 //#if defined(__GNUC__) && defined(__i386__) -> #define PSTM_32BIT and PSTM_X86
15 //#if defined(__GNUC__) && defined(__x86_64__) -> #define PSTM_64BIT and PSTM_X86_64
16 //ARM and MIPS also have these
21 #define PS_ARG_FAIL -6 /* Failure due to bad function param */
22 #define PS_PLATFORM_FAIL -7 /* Failure as a result of system call error */
23 #define PS_MEM_FAIL -8 /* Failure to allocate requested memory */
24 #define PS_LIMIT_FAIL -9 /* Failure on sanity/limit tests */
32 //#???? ENDIAN_32BITWORD
33 // controls only STORE32L, which we don't use
35 # define ENDIAN_LITTLE 1
39 typedef uint64_t uint64;
40 typedef int64_t int64;
41 typedef uint32_t uint32;
42 typedef int32_t int32;
43 typedef uint16_t uint16;
44 typedef int16_t int16;
47 typedef char psPool_t;
49 //#ifdef PS_PUBKEY_OPTIMIZE_FOR_SMALLER_RAM
50 #define PS_EXPTMOD_WINSIZE 3
51 //#ifdef PS_PUBKEY_OPTIMIZE_FOR_FASTER_SPEED
52 //#define PS_EXPTMOD_WINSIZE 5
54 #define PUBKEY_TYPE 0x01
55 #define PRIVKEY_TYPE 0x02
57 void tls_get_random(void *buf, unsigned len);
59 #define matrixCryptoGetPrngData(buf, len, userPtr) (tls_get_random(buf, len), PS_SUCCESS)
61 #define psFree(p, pool) free(p)
62 #define psTraceCrypto(msg) bb_error_msg_and_die(msg)
65 #define memset_s(A,B,C,D) memset((A),(C),(D))
66 /* Constant time memory comparison */
67 #define memcmpct(s1, s2, len) memcmp((s1), (s2), (len))
69 #define min(x, y) ((x) < (y) ? (x) : (y))