tls: format and send CLIENT_KEY_EXCHANGE
[oweals/busybox.git] / networking / tls.h
1 /*
2  * Copyright (C) 2017 Denys Vlasenko
3  *
4  * Licensed under GPLv2, see file LICENSE in this source tree.
5  */
6 #include "libbb.h"
7
8 /* config tweaks */
9 #define HAVE_NATIVE_INT64 1
10 #undef  DISABLE_PSTM
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
17
18
19 #define PS_SUCCESS              0
20 #define PS_FAILURE              -1
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 */
25
26 #define PS_TRUE         1
27 #define PS_FALSE        0
28
29 #if BB_BIG_ENDIAN
30 # define ENDIAN_BIG     1
31 # undef  ENDIAN_LITTLE
32 //#????  ENDIAN_32BITWORD
33 // controls only STORE32L, which we don't use
34 #else
35 # define ENDIAN_LITTLE  1
36 # undef  ENDIAN_BIG
37 #endif
38
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;
45
46 //FIXME
47 typedef char psPool_t;
48
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
53
54 #define PUBKEY_TYPE     0x01
55 #define PRIVKEY_TYPE    0x02
56
57 void tls_get_random(void *buf, unsigned len);
58
59 #define matrixCryptoGetPrngData(buf, len, userPtr) (tls_get_random(buf, len), PS_SUCCESS)
60
61 #define psFree(p, pool)    free(p)
62 #define psTraceCrypto(msg) bb_error_msg_and_die(msg)
63
64 /* Secure zerofill */
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))
68 #undef min
69 #define min(x, y) ((x) < (y) ? (x) : (y))
70
71
72 #include "tls_pstm.h"
73 #include "tls_rsa.h"