2 * Copyright (C) 2017 Denys Vlasenko
4 * Licensed under GPLv2, see file LICENSE in this source tree.
6 /* Interface glue between bbox code and minimally tweaked matrixssl
7 * code. All C files (matrixssl and bbox (ones which need TLS))
8 * include this file, and guaranteed to see a consistent API,
15 #define HAVE_NATIVE_INT64
16 #undef USE_1024_KEY_SPEED_OPTIMIZATIONS
17 #undef USE_2048_KEY_SPEED_OPTIMIZATIONS
19 #undef USE_AES_CBC_EXTERNAL
27 /* pstm: multiprecision numbers */
29 #if defined(__GNUC__) && defined(__i386__)
33 //test this before enabling:
34 //#if defined(__GNUC__) && defined(__x86_64__)
36 //# define PSTM_X86_64
38 //#if SOME_COND #define PSTM_MIPS, #define PSTM_32BIT
39 //#if SOME_COND #define PSTM_ARM, #define PSTM_32BIT
44 #define PS_ARG_FAIL -6 /* Failure due to bad function param */
45 #define PS_PLATFORM_FAIL -7 /* Failure as a result of system call error */
46 #define PS_MEM_FAIL -8 /* Failure to allocate requested memory */
47 #define PS_LIMIT_FAIL -9 /* Failure on sanity/limit tests */
55 //#???? ENDIAN_32BITWORD
56 // controls only STORE32L, which we don't use
58 # define ENDIAN_LITTLE 1
62 typedef uint64_t uint64;
63 typedef int64_t int64;
64 typedef uint32_t uint32;
65 typedef int32_t int32;
66 typedef uint16_t uint16;
67 typedef int16_t int16;
69 //typedef char psPool_t;
71 //#ifdef PS_PUBKEY_OPTIMIZE_FOR_SMALLER_RAM
72 #define PS_EXPTMOD_WINSIZE 3
73 //#ifdef PS_PUBKEY_OPTIMIZE_FOR_FASTER_SPEED
74 //#define PS_EXPTMOD_WINSIZE 5
76 #define PUBKEY_TYPE 0x01
77 #define PRIVKEY_TYPE 0x02
79 void tls_get_random(void *buf, unsigned len);
81 #define matrixCryptoGetPrngData(buf, len, userPtr) (tls_get_random(buf, len), PS_SUCCESS)
83 #define psFree(p, pool) free(p)
84 #define psTraceCrypto(...) bb_error_msg_and_die(__VA_ARGS__)
87 #define memset_s(A,B,C,D) memset((A),(C),(D))
88 /* Constant time memory comparison */
89 #define memcmpct(s1, s2, len) memcmp((s1), (s2), (len))
91 #define min(x, y) ((x) < (y) ? (x) : (y))
96 #include "tls_symmetric.h"