aboutsummaryrefslogtreecommitdiff
path: root/networking/tls.h
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-01-15 00:12:42 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2017-01-15 00:12:42 +0100
commit11d0096516c0d5395729caba5dfd940a10a6e20c (patch)
tree035f3f0461a42b42421df48c9479bdc1549c1c09 /networking/tls.h
parent2a17d1fc9bdcbc97d48dd08a9fa4941da25187fd (diff)
downloadbusybox-w32-11d0096516c0d5395729caba5dfd940a10a6e20c.tar.gz
busybox-w32-11d0096516c0d5395729caba5dfd940a10a6e20c.tar.bz2
busybox-w32-11d0096516c0d5395729caba5dfd940a10a6e20c.zip
tls: format and send CLIENT_KEY_EXCHANGE
$ ./busybox tls kernel.org insize:0 tail:0 got block len:74 got HANDSHAKE got SERVER_HELLO insize:79 tail:4265 got block len:4392 got HANDSHAKE got CERTIFICATE entered der @0x8b217a7:0x30 len:1452 inner_byte @0x8b217ab:0x30 entered der @0x8b217ab:0x30 len:1172 inner_byte @0x8b217af:0xa0 skipped der 0xa0, next byte 0x02 skipped der 0x02, next byte 0x30 skipped der 0x30, next byte 0x30 skipped der 0x30, next byte 0x30 skipped der 0x30, next byte 0x30 skipped der 0x30, next byte 0x30 entered der @0x8b218b4:0x30 len:418 inner_byte @0x8b218b8:0x30 skipped der 0x30, next byte 0x03 entered der @0x8b218c7:0x03 len:399 inner_byte @0x8b218cb:0x00 key bytes:399, first:0x00 entered der @0x8b218cc:0x30 len:394 inner_byte @0x8b218d0:0x02 binary bytes:385, first:0x00 skipped der 0x02, next byte 0x02 binary bytes:3, first:0x01 server_rsa_pub_key.size:384 insize:4397 tail:9 got block len:4 got SERVER_HELLO_DONE insize:9 tail:0 ^C Next step: send CHANGE_CIPHER_SPEC... and actually implement it. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/tls.h')
-rw-r--r--networking/tls.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/networking/tls.h b/networking/tls.h
new file mode 100644
index 000000000..20317ecc3
--- /dev/null
+++ b/networking/tls.h
@@ -0,0 +1,73 @@
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
39typedef uint64_t uint64;
40typedef int64_t int64;
41typedef uint32_t uint32;
42typedef int32_t int32;
43typedef uint16_t uint16;
44typedef int16_t int16;
45
46//FIXME
47typedef 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
57void 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"