Compare commits

...

911 commits

Author SHA1 Message Date
Adam Ierymenko
7d951783ca
A bunch of little warning removal and format fix things. 2020-12-04 15:52:30 -05:00
Adam Ierymenko
ec76f6e1d2
Mirror over a few more AES fixes. 2020-12-03 22:29:38 -05:00
Adam Ierymenko
c943d0e807
InetAddress fix ported from 1.6 2020-12-03 22:28:40 -05:00
Adam Ierymenko
a1ceccaf6e
Port back over some improvements from 1.6 2020-11-18 21:56:16 -05:00
Adam Ierymenko
326a871fac
Mirror over Mac fixes. 2020-11-02 19:57:57 -05:00
Adam Ierymenko
e462750bdd
Remove unnecessary includes that are not needed. 2020-10-30 16:14:44 -04:00
Adam Ierymenko
7c599fe83e
Typo / thinko 2020-10-27 10:41:46 -04:00
Adam Ierymenko
d7e4404c17
A little more clarity to locator display. 2020-10-26 22:41:49 -04:00
Adam Ierymenko
441f4986ac
Locator CLI plumbing. 2020-10-26 22:33:01 -04:00
Adam Ierymenko
d70cfe6850
typo 2020-10-26 20:32:27 -04:00
Adam Ierymenko
4ed77e0c0f
Upgrade Go modules. 2020-10-26 19:41:55 -04:00
Adam Ierymenko
f8e3251efe
Locator CGo API fixes. 2020-10-26 19:35:10 -04:00
Adam Ierymenko
1bb43476e8
Build fix, add Go unit tests for CGo Locator interface. 2020-10-26 18:44:45 -04:00
Adam Ierymenko
387d293793
Use Base32 everywhere for blobs to be consistent with core. 2020-10-23 18:10:25 -04:00
Adam Ierymenko
bd96e53bcc
Remove redundant includes. 2020-10-22 16:18:18 -04:00
Adam Ierymenko
bab9a7f508
Fix and modernize API peer list function. 2020-10-22 15:53:35 -04:00
Adam Ierymenko
31eb950750
Missing flag. 2020-10-20 18:53:11 -04:00
Adam Ierymenko
31ef205828
ARM build fixes. 2020-10-16 18:29:16 -04:00
Adam Ierymenko
a7350bc312
Bust out ARM crypto extensions AES into a separate file too. 2020-10-16 17:41:03 -04:00
Adam Ierymenko
0e396526e4
Some small Go stuff, and break out AES-NI into its own .cpp file for easier management. 2020-10-16 15:04:22 -04:00
Adam Ierymenko
8e5f8140a2
One more thing to move to CAPI.cpp. 2020-10-14 19:02:32 -04:00
Adam Ierymenko
8f746f5099
Move C API into its own source file, and fix some build flags to mirror fix in 1.6.0 to run on old Atom processors. 2020-10-14 18:10:59 -04:00
Adam Ierymenko
bc8aa6c359
Mirror over some AES function attribute changes. 2020-10-13 16:10:53 -04:00
Adam Ierymenko
00714f5f2e
cleanup 2020-10-08 19:03:46 -04:00
Adam Ierymenko
d20470d30f
cleanup 2020-09-18 19:54:27 -04:00
Adam Ierymenko
c2d14599c5
Make protocol versions same as 1.x series. 2020-08-25 08:06:59 -07:00
Adam Ierymenko
896656115f
Build fix for Go 1.15 2020-08-17 14:53:34 -07:00
Adam Ierymenko
72114e4cf8
Remove HTTP stuff from core API. This will be handled entirely in the service. 2020-08-13 17:46:58 -07:00
Adam Ierymenko
2abf2c5695
More certificate stuff... 2020-08-12 21:28:06 -07:00
Adam Ierymenko
fe01352412
Cert CLI stuff, module bump. 2020-08-12 16:40:17 -07:00
Adam Ierymenko
782f15f8c9 Small software GMAC optimization. 2020-08-11 20:50:36 +00:00
Adam Ierymenko
e0492a7e69
More Go CLI work, and some cleanup. 2020-08-11 13:24:27 -07:00
Adam Ierymenko
cb147a3e8a
Documentation in CLI, indicate what commands require a running node. 2020-08-10 16:04:05 -07:00
Adam Ierymenko
f97e9e1f5d
Warning removal, Go work... 2020-08-10 12:35:26 -07:00
Adam Ierymenko
f1b6cb2ace GMAC is faster in software now. 2020-08-07 17:33:27 +00:00
Adam Ierymenko
27939a5233 AES performance on rpi4 is now at least acceptable. 2020-08-06 23:09:34 +00:00
Adam Ierymenko
7d5ba6f739
AES on pi4 2020-08-06 14:34:34 -07:00
Adam Ierymenko
37360d5e2e
More test timing fixes. 2020-08-06 09:53:33 -07:00
Adam Ierymenko
ae13983b10
Fix benchmarks to not take forever on slower chips. 2020-08-06 09:48:07 -07:00
Adam Ierymenko
78670aea58
AES software optimizations to make rpi4 faster. 2020-08-06 09:34:37 -07:00
Adam Ierymenko
d0cc3ac333 Small AES optimizations on ARM64. 2020-08-03 23:14:02 +00:00
Adam Ierymenko
4273d89373
Linux/GCC fixes. 2020-07-31 16:18:06 -07:00
Adam Ierymenko
9ef780e05c
Build fix-- these are not needed. 2020-07-31 15:48:18 -07:00
Adam Ierymenko
9da0b43d2d
Fix some JSON names, regularize use of IP/port info in service code. 2020-07-31 15:32:09 -07:00
Adam Ierymenko
7c929099b3
Change date bump for v2.0 2020-07-31 14:26:55 -07:00
Adam Ierymenko
ea2f95ed70
Optimizations, make Locator deserialize the same regardless of serialized field order. 2020-07-31 14:05:54 -07:00
Adam Ierymenko
fc39894541
Small fix to reduce memory use a little bit more. 2020-07-31 13:53:11 -07:00
Adam Ierymenko
1fc4dce835
A bunch of cleanup, make Location serialization format saner, reduce core memory use. 2020-07-31 13:27:27 -07:00
Adam Ierymenko
0c56d7c769
Don't kick in AVX2/AVX512 VTEC unless the packet is larger than 256 bytes. 2020-07-30 10:02:37 -07:00
Adam Ierymenko
1f2a107d1d
Some formatting. 2020-07-29 22:10:54 -07:00
Adam Ierymenko
4474303b01
Indent fix. 2020-07-29 21:59:53 -07:00
Adam Ierymenko
3b773da8bc
Add separate accelerated() function for AES::GMAC. 2020-07-29 21:52:07 -07:00
Adam Ierymenko
7efaab2af1 Add 4X parallel ARM AES so VTEC will kick in, yo. Seems to help on Graviton, not much on small chips but thats okay. 2020-07-30 04:17:01 +00:00
Adam Ierymenko
064cb6dad7 AES-GMAC for ARM crypto extensions (pmull) 2020-07-30 03:45:40 +00:00
Adam Ierymenko
d5afba2610 ARM auto-detection (unfinished) 2020-07-29 21:17:17 +00:00
Adam Ierymenko
b4d0307d9e
Some AES NEON reorg. 2020-07-29 13:37:32 -07:00
Adam Ierymenko
71b72a1ef2 AES (but not yet GMAC) for ARM64 native AES intrinsics, performs really well! 2020-07-29 20:10:27 +00:00
Adam Ierymenko
b0e8bac310
Add CMake options to automatically add AArch64 flags for crypto enable, etc. 2020-07-29 09:13:55 -07:00
Adam Ierymenko
9a501a76d1
Starting on AES ARM intrinsics work. 2020-07-28 20:44:19 -07:00
Adam Ierymenko
becc4aa8ea
More certificate plumbing. 2020-07-28 14:38:41 -07:00
Adam Ierymenko
95d7970f34
Compiler flags, docs. 2020-07-28 09:41:43 -07:00
Adam Ierymenko
81530e5990
Certificate plumbing in Go. 2020-07-27 16:45:43 -07:00
Adam Ierymenko
825b19aedc
Code readability improvement. 2020-07-23 15:13:42 -07:00
Adam Ierymenko
0f04b5afc7
Add CRL fields to Go shadow of Certificate. 2020-07-23 15:05:12 -07:00
Adam Ierymenko
189dea7c96
Certificate work, and add an Endpoint attributes field to Locator for future use. 2020-07-22 20:38:57 -07:00
Adam Ierymenko
85ef9535d5
So that's where those NULLs came from... 2020-07-17 21:12:28 -07:00
Adam Ierymenko
71a2206c5d
Move a few things. 2020-07-17 10:57:01 -07:00
Adam Ierymenko
641d1a52c8
Warning removal. 2020-07-17 10:49:53 -07:00
Adam Ierymenko
407f737212
A bunch of Topology simplification, integrate some cert and root changes. 2020-07-16 20:04:05 -07:00
Adam Ierymenko
0d58865061
Fix certificte self-test. 2020-07-16 12:30:09 -07:00
Adam Ierymenko
cfb0bc4f8e
Better CRL implementation, AES fix. 2020-07-16 12:01:24 -07:00
Adam Ierymenko
dfe230be8b
CRL support 2020-07-16 10:51:54 -07:00
Adam Ierymenko
75ecfffd52
More tweaks. 2020-07-15 16:51:39 -07:00
Adam Ierymenko
883cbd182d
Some optimization work on crypto code. 2020-07-15 14:33:02 -07:00
Adam Ierymenko
866a20e85b
More small stuff. 2020-07-14 16:34:46 -07:00
Adam Ierymenko
a19bc1e826
Cleanup, remove legacy accessors, formatting. 2020-07-14 16:23:53 -07:00
Adam Ierymenko
a117c92a1e
Module update for Go code. 2020-07-13 15:53:49 -07:00
Adam Ierymenko
65ef40b091
Some Go reorg. 2020-07-13 15:44:54 -07:00
Adam Ierymenko
15f5125c8c
Hide some low-level stuff from public certificate API in Go. 2020-07-13 14:54:53 -07:00
Adam Ierymenko
e5f2314055
Fix another not-fun bug. Also exterminate a memory leak and do a few optimizations. 2020-07-10 16:38:32 -07:00
Adam Ierymenko
f018fefeb4
Even less bugs! 2020-07-09 20:08:08 -07:00
Adam Ierymenko
04d8c3dd79
Now with less bugs! 2020-07-09 14:57:44 -07:00
Adam Ierymenko
7994e3aa78
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-09 10:12:31 -07:00
Adam Ierymenko
1eacbdf374
Some cleanup, and fix a really obscure bug in Certificate. 2020-07-09 10:12:24 -07:00
Grant Limberg
492e78e2cf
back to not building all archs by default 2020-07-08 10:27:41 -07:00
Adam Ierymenko
8b1c691a5e
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-07 10:12:49 -07:00
Adam Ierymenko
b02fc1f28b
CGo hell, fix a thinko in CMakeFile. 2020-07-07 10:12:38 -07:00
Grant Limberg
ecf1fe9aa5
had these transposed 2020-07-07 08:57:53 -07:00
Adam Ierymenko
7e341ed397
More certificate plumbing. 2020-07-06 19:28:43 -07:00
Adam Ierymenko
e5e6f82a8e
Windows build fix. 2020-07-06 15:28:25 -07:00
Adam Ierymenko
eca929faef
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-06 15:16:05 -07:00
Adam Ierymenko
b027a83789
Minor stuff... 2020-07-06 15:15:21 -07:00
Grant Limberg
1ad0fbdb76
Revert "fix compilation of zt_service_tests on Windows"
This reverts commit 8f1e6a2fde.
2020-07-06 15:04:46 -07:00
Grant Limberg
8f1e6a2fde
fix compilation of zt_service_tests on Windows 2020-07-06 12:45:06 -07:00
Adam Ierymenko
451e6be180
Evil not very fun CGO glue for Certificate works! Also added a self-test project for Go code. Not using "go test" because of CMake build and CGO linking requirements that make it a pain in the derriere. 2020-07-03 16:05:43 -07:00
Adam Ierymenko
7b869684c6
More cert Go plumbing. 2020-07-03 14:42:29 -07:00
Adam Ierymenko
0d764f5a3d
CGO glue for certificates, and Go formatting and other boring stuff. 2020-07-03 13:08:40 -07:00
Adam Ierymenko
899f0c9749
Certificate API 2020-07-02 22:22:31 -07:00
Adam Ierymenko
727aa8e71f
Warning removal. 2020-07-02 15:03:12 -07:00
Adam Ierymenko
404b7a5493
Even more clever... and would crash if something weird happened, which is desirable. 2020-07-02 13:58:31 -07:00
Adam Ierymenko
befc50ac3a
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-02 13:57:32 -07:00
Adam Ierymenko
94c35d395e
A bit more optimization/cleanup. 2020-07-02 13:57:19 -07:00
Grant Limberg
7883e5d8ad Fix cast order of operations 2020-07-02 13:28:58 -07:00
Adam Ierymenko
97cd184211
cleanup 2020-07-02 13:09:59 -07:00
Adam Ierymenko
c17ac16728
Windows fix. 2020-07-02 11:53:47 -07:00
Adam Ierymenko
b696ab12b8
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-07-02 11:52:34 -07:00
Adam Ierymenko
e7ccd74a9e
Disable functions missing in MinGW 2020-07-02 11:52:20 -07:00
Grant Limberg
676a3444cd
fix s390x static section of jenkinsfile 2020-07-02 11:19:35 -07:00
Adam Ierymenko
bd0299f392
Some cleanup and optimization. 2020-07-02 10:33:34 -07:00
Adam Ierymenko
e213317532
-lm is needed on some platforms, harmless on others 2020-07-01 12:38:22 -07:00
Adam Ierymenko
206524b9e6
BSD fixes. 2020-07-01 12:30:41 -07:00
Adam Ierymenko
7a458e0138
BSD fixes. 2020-07-01 12:28:44 -07:00
Adam Ierymenko
9db9211ed3
Fix method name problem. 2020-07-01 11:14:01 -07:00
Adam Ierymenko
2ee550bbfd
Some optimization. 2020-06-30 23:44:24 -07:00
Adam Ierymenko
9029570452
Test certificate copy/construct. 2020-06-30 23:20:50 -07:00
Adam Ierymenko
6af39da61a
Some formatting and optimization. 2020-06-30 22:23:57 -07:00
Adam Ierymenko
ad692b07c3
Add CPUID output to self-test. 2020-06-30 20:51:14 -07:00
Adam Ierymenko
3f4809457f
A bunch of compile fixes, and an edge case fix in Dictionary. 2020-06-30 20:31:41 -07:00
Adam Ierymenko
53b85a2bbb
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-30 11:20:50 -07:00
Adam Ierymenko
92d2bbc63c
Some symbol renaming, performance improvements, a bug fix for compiling on some platforms, and some Topology work. 2020-06-30 11:20:44 -07:00
Grant Limberg
536be73006
s390x all static 2020-06-30 11:06:33 -07:00
Grant Limberg
115187204f
remove debug output 2020-06-30 10:04:19 -07:00
Grant Limberg
b482064a55
reenable some temporarily disabled stuff 2020-06-30 09:59:18 -07:00
Grant Limberg
722a50f7be
armel image build shortcut 2020-06-29 17:15:18 -07:00
Grant Limberg
623213ea0b
fix wheezy symlink 2020-06-29 17:13:56 -07:00
Grant Limberg
0589c4ab6a
fix stretch symlink 2020-06-29 17:12:52 -07:00
Grant Limberg
46c4a11a7a
fix jessie symlink 2020-06-29 17:11:55 -07:00
Grant Limberg
16d27dfddb
fix buster ld symlink 2020-06-29 17:09:15 -07:00
Grant Limberg
aee344fe47
kill a couple docker images 2020-06-29 15:18:01 -07:00
Grant Limberg
696c77f5c8
no static builds for armel
no support in Alpine, can't build it
2020-06-29 14:50:52 -07:00
Grant Limberg
8921914098
force use of vendored modules 2020-06-29 14:24:06 -07:00
Grant Limberg
f33574dfbc
needed on Jessie, too 2020-06-29 13:29:33 -07:00
Grant Limberg
e2bc081740
hack to run go on armel containers 2020-06-29 13:17:20 -07:00
Grant Limberg
a6d7f7cac2
-latomic for armel 2020-06-29 12:19:25 -07:00
Grant Limberg
c714112e00
fix building cmake on arm32 2020-06-29 09:23:48 -07:00
Adam Ierymenko
bae91724a1
Certificate passes all tests. 2020-06-27 14:52:55 -07:00
Adam Ierymenko
daef6a24d1
Now with less bugs, and less limits that could pose an issue later. 2020-06-27 13:52:12 -07:00
Adam Ierymenko
661ebfee94
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-26 13:09:35 -07:00
Adam Ierymenko
73d0e2e7e0
Interim commit of some cert and cert testing work, also other cleanup in Utils. 2020-06-26 13:09:24 -07:00
Grant Limberg
917cc58560
Only build problems left are the compiler errors adam has tickets for 2020-06-25 18:01:27 -07:00
Grant Limberg
1eea80194b
apparently not in backports as advertised 2020-06-25 15:40:10 -07:00
Grant Limberg
d569217ff5
echo, not cat 2020-06-25 15:38:21 -07:00
Grant Limberg
d823725eb6
update alpine base image 2020-06-25 15:23:09 -07:00
Grant Limberg
f08d20560b
stretch has mips golang 1.11 in backports
don't know if it'll work though
2020-06-25 15:15:16 -07:00
Grant Limberg
c0385466e2
no golang packages for buster or stretch on mips64
no mips on stretch at all
2020-06-25 15:07:12 -07:00
Grant Limberg
c22b002226
Looks like we have to turn off bullseye 32-bit ARM too 2020-06-25 14:55:01 -07:00
Grant Limberg
9aac1fc47f
default BUILD_ALL flag to true for now
since that's what I"m testing now
2020-06-25 14:52:08 -07:00
Grant Limberg
39d4fadf90
add mips64le to debian native build lists 2020-06-25 11:56:32 -07:00
Grant Limberg
4968afb89a
no 32-bit arm on sid for the time being 2020-06-25 11:41:09 -07:00
Grant Limberg
8b45018f28
remove ldflag on windows 2020-06-25 09:39:06 -07:00
Grant Limberg
007b3bd10b
openssl dev for sid 2020-06-25 08:49:23 -07:00
Adam Ierymenko
5e1b7f2ba6
Certificate stuff, but not plumbled through to CLI yet to actually make them. 2020-06-25 07:40:21 -07:00
Adam Ierymenko
40820ddea9
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-24 17:08:19 -07:00
Adam Ierymenko
4fbc29158d
A few more things to manually merge in CMakeLists.txt 2020-06-24 17:08:11 -07:00
Adam Ierymenko
6e1115ea03
More cert work, support certs in data store, and manually merge CMakefile. 2020-06-24 17:05:34 -07:00
Grant Limberg
d5d1f4a313
forgot the -y on apt-get 2020-06-24 14:59:38 -07:00
Grant Limberg
1e65aad95b
args 2020-06-24 14:53:02 -07:00
Grant Limberg
495ac17346
debian mips64 image fixes 2020-06-24 14:51:59 -07:00
Grant Limberg
2f82db97ed
blah 2020-06-24 14:46:30 -07:00
Grant Limberg
35f3d16084
bullseye base version 2020-06-24 14:23:30 -07:00
Grant Limberg
29dfe240e4
mips64le updates 2020-06-24 14:21:47 -07:00
Adam Ierymenko
aa9ca845e8
Merge edge, still need to resolve CMakeLists.txt 2020-06-24 10:50:16 -07:00
Adam Ierymenko
05a3831acb
Certificates, and rename credentials to credential since they are not truly certificates (according to the common definition). 2020-06-24 10:46:59 -07:00
Grant Limberg
9a7d26cd9e
fix package name 2020-06-24 10:07:08 -07:00
Grant Limberg
ab36607a48
docker & build parallelization 2020-06-24 09:57:38 -07:00
Grant Limberg
02a810b8d6
same issue on sid, apparently 2020-06-23 17:18:54 -07:00
Grant Limberg
2d1ca5f346
cmake version from debian-bullseye doesn't like ARM
so let's build the latest from src
2020-06-23 17:12:52 -07:00
Grant Limberg
65aca7d84a
let's not force the build server to swap out when building releases 2020-06-23 16:48:50 -07:00
Grant Limberg
d3a9ce95bc
more flag fixes 2020-06-23 16:41:55 -07:00
Grant Limberg
ee53f056ce
fix flags 2020-06-23 16:29:35 -07:00
Grant Limberg
f3defdf3a6
one more 2020-06-23 14:42:18 -07:00
Grant Limberg
6d88a13407
fix variable 2020-06-23 14:28:32 -07:00
Grant Limberg
9722bdef75
fix variable name 2020-06-23 13:33:59 -07:00
Grant Limberg
f87e41abee
jenkinsfile armhf/armel stuff 2020-06-23 12:56:29 -07:00
Grant Limberg
d7c6f8ae3f
armel/armhf differentiation in builds 2020-06-23 11:49:43 -07:00
Grant Limberg
4d80f7c41d
more go static build flags 2020-06-23 09:53:46 -07:00
Grant Limberg
de00486b80
no armhf for ubuntu focal 2020-06-23 09:41:45 -07:00
Grant Limberg
c2664033bc
try to force 32-bit package for centos7 i386 2020-06-23 09:04:45 -07:00
Grant Limberg
f96a9f63ea
. 2020-06-23 08:53:13 -07:00
Grant Limberg
78b18f2bdb
remove centos6 from jenkinsfile 2020-06-23 08:40:24 -07:00
Grant Limberg
8bb0753f62
get cmake from yum for centos8 2020-06-22 16:23:34 -07:00
Grant Limberg
0c5d1a793c
fix docker images for static targets 2020-06-22 15:58:49 -07:00
Grant Limberg
34692489cb
RIP Centos 6 2020-06-22 15:18:30 -07:00
Grant Limberg
52b619b38f
temporarily disable builds of Debian Stretch, FreeBSD, Ubuntu Bionic AMD64, and Ubuntu Xenial 2020-06-22 14:34:23 -07:00
Grant Limberg
9009a864ab
re-enable static build packaging with updates 2020-06-22 14:03:27 -07:00
Grant Limberg
09a8b66d3b
enable -DPACKAGE_STATIC=1 builds
Only configures the project for packaging of the statically built binary placed in build/
2020-06-22 13:50:35 -07:00
Grant Limberg
7c6f5e2c37
make install works on Linux 2020-06-22 11:00:48 -07:00
Grant Limberg
930bd91598
finish up rpm generation 2020-06-22 09:49:25 -07:00
Grant Limberg
050615f2d2
fix centos7 x64 2020-06-19 16:50:42 -07:00
Grant Limberg
05cc4ea36a
dont use __has_include 2020-06-19 16:36:04 -07:00
Grant Limberg
4cafc1b776
extraneous ` in rpm building 2020-06-19 16:32:43 -07:00
Grant Limberg
fb559434b6
jenkins builds rpms 2020-06-19 16:24:32 -07:00
Grant Limberg
02493d473f
basic RPM package
still needs systemd/init scripts
2020-06-19 16:21:47 -07:00
Grant Limberg
1abcb5adf5
parallelize make 2020-06-19 15:42:33 -07:00
Grant Limberg
1b8703db95
add cmake package args 2020-06-19 15:40:48 -07:00
Grant Limberg
517a171a6c
dont split debian description over multiple lines 2020-06-19 15:35:42 -07:00
Grant Limberg
b126bf727a
non-static build debian packages 2020-06-19 15:33:08 -07:00
Adam Ierymenko
cfc2a43f51
A whole bunch of minor refactoring, and rename a bunch of classes to be more canonical. A credential really is not a certficiate, so just call IdentificationCertificate Certificate and call the network auth stuff credentials. 2020-06-18 17:02:36 -07:00
Grant Limberg
0477e16860
freebsd doesn't like the root makefile 2020-06-18 16:31:15 -07:00
Grant Limberg
cc13bf1049
fix jenkinsfile 2020-06-18 15:35:35 -07:00
Grant Limberg
a66b4a6f5e
add freebsd build target 2020-06-18 15:26:29 -07:00
Grant Limberg
f989758159
parallelize windows build 2020-06-18 13:46:57 -07:00
Grant Limberg
ade8373c0c
because reasons 2020-06-18 13:44:19 -07:00
Grant Limberg
fa4ecea095
wtf 2020-06-18 13:34:01 -07:00
Grant Limberg
7ae9c6d55c
. 2020-06-18 13:19:30 -07:00
Grant Limberg
b369d4b9a1
fix 32-bit windows build 2020-06-18 13:01:05 -07:00
Grant Limberg
ea5bb43cf9
windows 32bit builds 2020-06-18 11:58:00 -07:00
Grant Limberg
6ea60bc429
let's see if paths with no spaces works 2020-06-18 11:26:57 -07:00
Grant Limberg
b094278b64
explicitly set SHELL environment variable 2020-06-18 10:59:46 -07:00
Grant Limberg
f21384e499
windows fun 2020-06-18 10:54:31 -07:00
Grant Limberg
620fa9ab54
🤷‍♂️ 2020-06-17 13:26:36 -07:00
Grant Limberg
d8c83dbb08
pita 2020-06-17 13:18:01 -07:00
Grant Limberg
992d1471b8
add CMake and Go to Windows PATH 2020-06-17 12:29:03 -07:00
Grant Limberg
27b14aefcd
help it find cmd.exe 2020-06-17 12:19:06 -07:00
Grant Limberg
a7fee6b02f
playing with paths 2020-06-17 12:14:50 -07:00
Grant Limberg
cea297b69d
enable windows builds 2020-06-17 12:04:29 -07:00
Adam Ierymenko
c348bfff30
Fix quote craziness. 2020-06-16 22:33:43 -07:00
Adam Ierymenko
224c468aa3 OMG Windows builds! 2020-06-16 22:26:47 -07:00
Adam Ierymenko
a472aafb3e Windows now builds at least to the point of running zt_core_tests. Go will need a revision to the command in CMake files. 2020-06-16 21:21:24 -07:00
Grant Limberg
b165b9dd4f another fix 2020-06-16 17:46:22 -07:00
Grant Limberg
7d388e0c79 fix mac jenkins 2020-06-16 17:34:58 -07:00
Grant Limberg
4036657e32
add macos build to jenkins 2020-06-16 16:13:01 -07:00
Grant Limberg
d50c6ee1ce
need ssl dev 2020-06-16 15:07:31 -07:00
Adam Ierymenko
143f4bef9f
Select the right C++ library, hopefully. 2020-06-16 15:00:59 -07:00
Adam Ierymenko
765dc413db
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-16 15:00:25 -07:00
Grant Limberg
423b0d891c need stdint.h on Windows, too 2020-06-16 14:48:27 -07:00
Grant Limberg
3db0e9d068
use correct dockerfile for Xenial x64 2020-06-16 14:07:40 -07:00
Grant Limberg
1f3f9bc341
for ptrdiff_t 2020-06-16 13:52:26 -07:00
Grant Limberg
e84bfca5a5
xenial needs newer cmake, too 2020-06-16 13:45:35 -07:00
Adam Ierymenko
bd488a08f8
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-16 13:36:48 -07:00
Adam Ierymenko
3c6448a717
Move all CGO flags into CMakeLists.txt so they can inherit all our system detection and stuff. 2020-06-16 13:36:43 -07:00
Grant Limberg
0a2dfc719a
fix centos 7 & debian stretch 2020-06-16 13:33:05 -07:00
Adam Ierymenko
f0fc4713d8
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-16 13:01:20 -07:00
Grant Limberg
b2132aa975
needs libssl dev 2020-06-16 12:19:31 -07:00
Grant Limberg
7739984c56
typo 2020-06-16 12:11:48 -07:00
Grant Limberg
034188b0ee
reset WORKDIR back to root once built 2020-06-16 12:07:20 -07:00
Grant Limberg
98ea27ecb0
have to build & install cmake on non-x64 versions of debian stretch 2020-06-16 11:59:08 -07:00
Adam Ierymenko
8d2a0f764b
Some minor reorg. 2020-06-16 11:51:41 -07:00
Grant Limberg
6c43e0b946
add scl-utils 2020-06-16 11:28:42 -07:00
Grant Limberg
77342f8571
try setting scl_source on centos7 for newer compilers 2020-06-16 10:40:01 -07:00
Grant Limberg
e808b4b45f
add ubuntu focal builds 2020-06-16 10:26:48 -07:00
Grant Limberg
86d91cb625
no ubuntu 20.04 for ArmV7 2020-06-16 10:10:51 -07:00
Grant Limberg
3f21e59ab4
more DEBIAN_FRONTEND=noninteractive 2020-06-16 09:53:42 -07:00
Grant Limberg
3669cac3c9
apparently apt now asks for your region interactively. Even in a docker image 2020-06-16 09:50:16 -07:00
Grant Limberg
b919f5a95b
helps to load the correct dockerfile 2020-06-16 09:46:42 -07:00
Grant Limberg
5e6484ff5a
add docker images for ubuntu 20.04 2020-06-16 09:08:26 -07:00
Adam Ierymenko
ecb09aa2e1
Fix bounds check bug. 2020-06-15 16:30:52 -07:00
Adam Ierymenko
346d4b572b
Fix symbol issues in static build. 2020-06-15 15:02:07 -07:00
Grant Limberg
1a38dfdbde
back to go main 2020-06-15 13:51:24 -07:00
Adam Ierymenko
69f1c8701b
Define uint since that is not a standard symbol. 2020-06-15 13:13:03 -07:00
Adam Ierymenko
9daf4540de
Certificates, and it builds again. 2020-06-15 11:17:24 -07:00
Adam Ierymenko
f447608d6b
Certificates, etc... work in progress. 2020-06-13 21:41:39 -07:00
Grant Limberg
001fb54b15
fix go static command line 2020-06-12 16:08:34 -07:00
Grant Limberg
ffc786d796
update make call for static 2020-06-12 15:59:53 -07:00
Grant Limberg
a1649d6cda
trying again for static build. also add static go flags 2020-06-12 15:58:00 -07:00
Grant Limberg
541b2cbef0
. 2020-06-12 15:49:28 -07:00
Grant Limberg
5166aa6913
added static build option 2020-06-12 15:43:12 -07:00
Grant Limberg
b88000c349
. 2020-06-12 15:39:02 -07:00
Grant Limberg
49eefe7e78
rename error for static 2020-06-12 15:31:34 -07:00
Grant Limberg
bfdac7a8f0
use alpine go package 2020-06-12 15:21:48 -07:00
Grant Limberg
d9dd77bc6e
let cgo find versionl.h 2020-06-12 15:09:31 -07:00
Grant Limberg
e46a342e17
ensure version.h is in the include path 2020-06-12 14:57:41 -07:00
Grant Limberg
760607f58a
static alpine builds reenabled 2020-06-12 14:46:48 -07:00
Grant Limberg
35b5780907
remove __has_include 2020-06-12 14:44:25 -07:00
Grant Limberg
51159601b0
one more time 2020-06-12 14:27:34 -07:00
Grant Limberg
4cb35a2975
yes pipe too 2020-06-12 13:58:50 -07:00
Grant Limberg
405250ce79
tell curl to follow redirects 2020-06-12 13:56:44 -07:00
Grant Limberg
81b11168c9
centos 8 update 2020-06-12 13:48:31 -07:00
Grant Limberg
066cdfe2ac
alternate newer cmake install 2020-06-12 13:46:40 -07:00
Grant Limberg
062189b589
add sid 32bit 2020-06-12 11:40:34 -07:00
Grant Limberg
a11d0027ce
cast to uintptr_t instead
should fix non 64-bit platforms
2020-06-12 09:22:58 -07:00
Grant Limberg
c9ae7e811f
Should fix non x64 platforms
Need adam to check
2020-06-12 09:22:17 -07:00
Grant Limberg
47ec246520
try to force 32 bit with BUILD_32BIT flag. force VERBOSE=1 cmake build too 2020-06-10 16:19:39 -07:00
Grant Limberg
42104cfc4c
go wrangling 2020-06-10 15:56:16 -07:00
Grant Limberg
1bab9b202f
default off 2020-06-10 15:40:14 -07:00
Grant Limberg
74ce98f39b
set CMAKE_SYSTEM_PROCESSOR to x86 2020-06-10 15:39:48 -07:00
Grant Limberg
3268effabf
enable 32bit builds on 64-bit hosts 2020-06-10 15:31:40 -07:00
Grant Limberg
96965647bc
wtf 2020-06-10 14:51:44 -07:00
Grant Limberg
808ab715d9
forgot to save a few files 2020-06-10 13:02:38 -07:00
Grant Limberg
fa1e16085b
permissions in docker containers 2020-06-10 12:40:44 -07:00
Grant Limberg
dd46e56af2
add include <mmintrin.h> 2020-06-10 12:27:22 -07:00
Grant Limberg
d8d871745e
add cmake 2020-06-10 10:50:01 -07:00
Grant Limberg
09c9e338bc
needs /bin? 2020-06-10 09:51:57 -07:00
Grant Limberg
df9483408d
CMake error if go not found 2020-06-10 09:33:48 -07:00
Grant Limberg
cb342bfb12
make GCC happy 2020-06-09 15:30:01 -07:00
Grant Limberg
04266a1180
don't build static binaries yet. Don't have the build config in there for it yet 2020-06-09 14:49:37 -07:00
Grant Limberg
86eda5fe65
use zerotier as binary name for 2.0 2020-06-09 14:31:00 -07:00
Grant Limberg
bc1fa3bf20
make it easier to update go version for docker build containers 2020-06-09 14:29:40 -07:00
Grant Limberg
e63920404c
copy over dockerbuild files for releases 2020-06-09 14:16:36 -07:00
Grant Limberg
4833478eee
Fix linux link ordering and add Dockerfile for central controllers
Builds but obviously won't actually do anything yet
2020-06-09 14:14:11 -07:00
Grant Limberg
c8b6850520
add central controller build target 2020-06-09 14:14:06 -07:00
Adam Ierymenko
938cbba449
Root set stuff, code formatting and other boring stuff. 2020-06-09 12:26:52 -07:00
Grant Limberg
c8f640f3f2
compile go code to static library & call via main.cpp
This allows CMake to manage the linkage of C/C++ libraries rather than an exponentially growing list of cgo directives based on build options
2020-06-09 12:03:16 -07:00
Grant Limberg
2272189955
macOS: link static versions of lipq and libhiredis on mac
will need to grab them via homebrew
2020-06-08 16:14:01 -07:00
Grant Limberg
736edeeed0
figure out conditional compilation & cgo based on go build tags 2020-06-08 15:54:10 -07:00
Adam Ierymenko
bf33368add
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-06-08 14:45:08 -07:00
Adam Ierymenko
40d48c969c
Some cleanup, revision to Endpoint string format, stub out HTTP API callbacks. 2020-06-08 14:41:13 -07:00
Grant Limberg
17f0dc9ba2
2.0 compiles with postgres/redis controller code
Probably doesn't work yet
2020-06-08 14:11:07 -07:00
Adam Ierymenko
016d85b169
Code formatting and similar. 2020-06-08 11:47:28 -07:00
Grant Limberg
2bceabdfa5
add redis dependencies for central controller 2020-06-08 11:23:41 -07:00
Adam Ierymenko
d18c33d6df
Code cleanup, Linux build fixes. 2020-06-05 22:18:58 -07:00
Adam Ierymenko
e2ca065f28
Cleanup, revise join command 2020-06-05 16:36:31 -07:00
Adam Ierymenko
fe28501126
Also clean CLion directories. 2020-06-05 14:40:04 -07:00
Adam Ierymenko
73795d05eb
Reorg done and builds 2020-06-05 14:38:35 -07:00
Adam Ierymenko
af846f7e3f
Fix clean 2020-06-05 13:45:43 -07:00
Adam Ierymenko
a0374da4f3
Reorg. 2020-06-05 13:42:34 -07:00
Adam Ierymenko
4e44fa009c
Clean up gitignore 2020-06-05 13:31:10 -07:00
Adam Ierymenko
3dd2c94f4e
Moar reorganization. 2020-06-05 13:26:35 -07:00
Adam Ierymenko
6da8f2bb05
Temporarily stash stuff in attic that needs update before beta/release. 2020-06-05 13:06:01 -07:00
Adam Ierymenko
e21fcb8104
Reorg. 2020-06-05 13:05:28 -07:00
Adam Ierymenko
3c11c13af4
More reorg, work in progress. 2020-06-05 13:04:37 -07:00
Adam Ierymenko
d3cf7b2202
Reorg. 2020-06-05 12:56:20 -07:00
Adam Ierymenko
03bcdf74a8
Some CLI help updates, some code formatting, pre-reorg. 2020-06-05 12:49:35 -07:00
Adam Ierymenko
45b90a0dfa
Formatting and boring stuff 2020-06-05 10:41:32 -07:00
Adam Ierymenko
9babfcb9b6
A bunch more go plumbing. 2020-06-04 16:03:11 -07:00
Adam Ierymenko
1b2a4f00f2
Take like ten on the addRoot thing, making it even simpler. Explicit locator commands are still present but they will remain just for use in creating subscriptions etc. 2020-06-04 10:32:13 -07:00
Adam Ierymenko
90b5acfca6
Docs, simplification. 2020-06-04 07:16:15 -07:00
Adam Ierymenko
741f7814c2
Various build fixes. 2020-06-03 22:15:19 -07:00
Adam Ierymenko
a4ae4941c3
Try to ignore temporary IPv6 addresses, fix Peer serialization, add an endpoint cache to Peer, some more Go stuff. 2020-06-03 22:03:34 -07:00
Adam Ierymenko
8a6ef33c4a
revert 2020-06-03 12:27:35 -07:00
Adam Ierymenko
5ac2596429
More CLI work, link go.mod and go.sum for some Go editors to work. 2020-06-03 11:59:24 -07:00
Adam Ierymenko
5dac2e82a7
A bunch of tweaks around CLI parameters and string formats of things. 2020-06-02 11:37:04 -07:00
Adam Ierymenko
8e29acd664
Causes build problems, revert. 2020-06-01 16:24:12 -07:00
Adam Ierymenko
1d29bc3e8e
Move go.mod and go.sum into base. 2020-06-01 16:07:49 -07:00
Adam Ierymenko
dc1ef0c49e
Code formatting and other boring stuff. 2020-06-01 15:40:00 -07:00
Adam Ierymenko
1003455160
Cleanup. 2020-05-31 15:30:24 -07:00
Adam Ierymenko
20ae12d385
Clean up some NAT traversal code, modify algorithm to eliminate the need for toggle-able options. 2020-05-31 15:11:47 -07:00
Adam Ierymenko
dcc686a3a7
Docs, YAGNI removal, use locator endpoints in peer contact attempts. 2020-05-31 06:47:56 -07:00
Adam Ierymenko
89c27c112a
Flesh out tests, fix a signing bug. 2020-05-30 19:08:45 -07:00
Adam Ierymenko
3621fe8897
Some AES cleanup and include controller with Go build. 2020-05-30 17:03:12 -07:00
Adam Ierymenko
33269cd29d
Some CGo fixes. 2020-05-30 12:07:52 -07:00
Adam Ierymenko
1970dab13d
Move some toString/fromString to C++ since any ZT code base would need it, and stub out the controller commands. 2020-05-30 11:42:59 -07:00
Adam Ierymenko
a5390b1bc8
Plumb new locator code through to Go, fix some cgo issues, fix some compiler warnings. 2020-05-29 10:16:38 -07:00
Adam Ierymenko
864e33cf2d
A bunch of build fixes. 2020-05-29 07:06:00 -07:00
Adam Ierymenko
b9bf6d1242
Simplification of addRoot/removeRoot, and some code reformatting and other cleanup across multiple files. 2020-05-29 06:30:02 -07:00
Adam Ierymenko
caad356b93
A bunch of go fixes, wire up root add/delete. 2020-05-25 18:05:34 -07:00
Adam Ierymenko
964c235ecf
Golang fixes 2020-05-25 14:23:48 -07:00
Adam Ierymenko
c881094202
Warning removal. 2020-05-25 09:55:47 -07:00
Adam Ierymenko
6051c973d3
A bunch of warning removal, build fixes, and cleanup. 2020-05-25 09:48:18 -07:00
Adam Ierymenko
1f9717250c
Update release notes, rip out trusted paths which were clunky and rarely used and of dubious value, and some other cleanup. 2020-05-21 13:04:27 -07:00
Adam Ierymenko
8ebbbc33cc
Clean up and revise how roots are added/specced. 2020-05-21 11:21:39 -07:00
Adam Ierymenko
98bcff1928
Warning fix. 2020-05-19 15:03:30 -07:00
Adam Ierymenko
cef708c8ad
Build fixes. 2020-05-19 15:01:52 -07:00
Adam Ierymenko
a925e2d783
Build fixes. 2020-05-19 14:02:32 -07:00
Adam Ierymenko
a1193f0e30
A few AES-GMAC-SIV tweaks to use a bit more IV state. 2020-05-19 12:18:50 -07:00
Adam Ierymenko
f209037efe
Cleanup, slightly slow down V1 identity generation, faster Salsa20 (by a bit). 2020-05-19 10:13:12 -07:00
Adam Ierymenko
b99dd7d916
Fix code generation for AES stuff so it runs on chips that do not have AVX or VAES. 2020-05-18 16:50:05 -07:00
Adam Ierymenko
aad21cf395
Blazing fast VAES (256 and 512) AES-CTR, Identity fixes, test fixes. 2020-05-18 16:29:41 -07:00
Adam Ierymenko
d537428421
Build fixes. 2020-05-18 09:44:23 -07:00
Adam Ierymenko
996589894d
Build fixes 2020-05-14 11:53:45 -07:00
Adam Ierymenko
d3777b3eb4
A bunch of boring formattings stuff, etc. 2020-05-14 10:55:41 -07:00
Adam Ierymenko
52e1f5502d
More VL1 work after re-re-re-refactor... 2020-05-13 14:26:53 -07:00
Adam Ierymenko
664a128e9e
Yet more work in progress... mostly cleanup and re-implementation without depending on struture padding. 2020-05-11 13:08:55 -07:00
Adam Ierymenko
666d44b14a
More endless work in progress... 2020-05-06 10:42:09 -07:00
Adam Ierymenko
b533c300d8
A ton more work... almost there 2020-04-28 19:52:09 -07:00
Adam Ierymenko
78d223d709
A bunch more cleanup, remove a ton of reinterpret_cast cruft in favor of a simple union in InetAddress. 2020-04-16 16:01:39 -07:00
Adam Ierymenko
2b0127c26d
Work in progress on crypto stuff, refactoring to back out of use of structs for encode/decode as it is questionably portable. 2020-04-16 12:34:51 -07:00
Adam Ierymenko
16a3c14c53
A bunch of cleanup and refactoring, implementation of prep for forward secrecy still in progress. 2020-04-13 12:22:08 -07:00
Adam Ierymenko
c65391a344
Add symmetric key container, tons of cleanup. 2020-04-06 16:54:35 -07:00
Adam Ierymenko
fbf4ae823b
Clean up timing stuff in Peer and make it more rational, implement some more P2P stuff, rename some methods, cleanup cleanup cleanup. 2020-04-03 10:18:46 -07:00
Adam Ierymenko
3d6d9c5808
LINT cleanliness. 2020-03-31 14:30:02 -07:00
Adam Ierymenko
64c533c189
More warning removal. 2020-03-31 14:09:17 -07:00
Adam Ierymenko
7fd78a87d1
Use static_assert more. 2020-03-31 13:45:05 -07:00
Adam Ierymenko
b9f60fc3c2
A bunch of warning removal and LINT cleanliness. 2020-03-31 12:35:54 -07:00
Adam Ierymenko
afa01074c5
File this idea away. 2020-03-31 11:03:02 -07:00
Adam Ierymenko
1f85b0402e
Just use unordered_map, and some other cleanup. 2020-03-31 09:01:58 -07:00
Adam Ierymenko
b3314cd34f
Small build fixes. 2020-03-30 18:09:11 -07:00
Adam Ierymenko
9428fc53f6
A bunch of cleanup, bug fix, just use unordered_map, etc. 2020-03-30 17:28:23 -07:00
Adam Ierymenko
0d05e4bcae
Remove capability chain of custody stuff which was never used and was really overly complex and a potential source of security problems. 2020-03-28 12:06:10 -07:00
Adam Ierymenko
87da45b3f5
Faster hash table, various other optimizations and simplification. 2020-03-28 01:06:29 -07:00
Adam Ierymenko
cbf174f96d
Warning removal. 2020-03-27 19:35:37 -07:00
Adam Ierymenko
0aa78d0ecb
Small fixes. 2020-03-27 19:03:09 -07:00
Adam Ierymenko
a87d4f1864
Build fix. 2020-03-27 17:26:49 -07:00
Adam Ierymenko
c0e86de6db
Forgot one spot. 2020-03-27 17:25:05 -07:00
Adam Ierymenko
60fa07bff2
Implement fingerprint option on join in Go land 2020-03-27 17:02:44 -07:00
Adam Ierymenko
1df7f21f5f
Add ability to fully specify controller fingerprint on join for the paranoid. 2020-03-27 16:36:38 -07:00
Adam Ierymenko
674edab814
docs 2020-03-27 15:09:09 -07:00
Adam Ierymenko
369df245e3
Some perf stuff, docs, HELLO design tweaks for ephemeral keys. 2020-03-27 13:09:37 -07:00
Adam Ierymenko
1f2e94a51d
Some optimization and raw memory access cleanup. 2020-03-27 07:40:14 -07:00
Adam Ierymenko
3f32cffc40
dead code removal 2020-03-26 15:56:26 -07:00
Adam Ierymenko
3914964a35
AES docs 2020-03-26 15:55:31 -07:00
Adam Ierymenko
bedf63e257
Some minor security tightening stuff and AES fixes. 2020-03-26 13:54:15 -07:00
Adam Ierymenko
d151d731a6
(1) Mask bit 31 of AES-CTR nonce to disallow uint32 overflow, (2) get rid of handling of uint32/uint64 overflow in our AES-CTR code to optimize, (3) optimize AES software a bit 2020-03-26 10:28:59 -07:00
Adam Ierymenko
2d862f1d32
Little comments and stuff 2020-03-26 08:38:23 -07:00
Adam Ierymenko
f92fca03a0
Update SIV diagram, length pad AAD. 2020-03-25 15:09:49 -07:00
Adam Ierymenko
b5c01999b8
More tweaks to COM stuff. 2020-03-25 14:10:26 -07:00
Adam Ierymenko
e9da35bac3
Harden some stuff around COMs and members of networks. 2020-03-25 13:21:50 -07:00
Adam Ierymenko
d3a7468e83
Implement AES-GMAC-SIV and benchmark, rework COM and add a lot of comments and docs, and comments and docs elsewhere too. 2020-03-25 09:05:44 -07:00
Adam Ierymenko
f3540a5c7c
Linux build fixes, warning removal. 2020-03-24 08:39:54 -07:00
Adam Ierymenko
8cf6808c50
build fix 2020-03-23 16:24:39 -07:00
Adam Ierymenko
274db26339
Fix accidentally removed file. 2020-03-23 16:15:36 -07:00
Adam Ierymenko
490b9c4d79
Moar build fixes, clock perf improvement. 2020-03-23 16:12:45 -07:00
Adam Ierymenko
2da096944d
Everything but root builds now. Back to testing. 2020-03-18 07:20:04 -07:00
Adam Ierymenko
83f830618f
It almost builds! 2020-03-17 16:27:31 -07:00
Adam Ierymenko
cdbb86b830
ARM64 stuff 2020-03-16 09:57:51 -07:00
Adam Ierymenko
483b47474d
ARM64 stuff 2020-03-16 09:51:18 -07:00
Adam Ierymenko
1d314858ef
ARM64 build fixes 2020-03-16 09:27:56 -07:00
Adam Ierymenko
37d4e83fad
ARM64 build fixes 2020-03-16 09:24:57 -07:00
Adam Ierymenko
c7f3f3add9
Small fix, docs, warning removal. 2020-03-16 06:14:41 -07:00
Adam Ierymenko
1c7baa544b
Reduce PoW cost just a bit. 2020-03-15 20:14:35 -07:00
Adam Ierymenko
3408839b33
build fix 2020-03-15 20:07:21 -07:00
Adam Ierymenko
a7409486bb
minor stuff 2020-03-15 19:44:40 -07:00
Adam Ierymenko
cf24ed4108
This PoW seems decent 2020-03-15 14:08:53 -07:00
Adam Ierymenko
8a379ba0a1
The MIMC thing was neat but unfortunately is amenable to too much GPU acceleration. 2020-03-14 20:29:44 -07:00
Adam Ierymenko
4b20638568
more test fixes 2020-03-14 15:27:01 -07:00
Adam Ierymenko
eebe2046f0
docs 2020-03-14 12:17:30 -07:00
Adam Ierymenko
1e457dbd76
Fix tests, fix identity issue 2020-03-14 12:08:40 -07:00
Adam Ierymenko
a20aebaaf8
Some work on delay function... which is delaying us... but need to get it right because its hard as hell to change later. 2020-03-09 15:19:58 -07:00
Adam Ierymenko
5463c70aaf
Minor stuff, and some docs 2020-03-06 12:18:20 -08:00
Adam Ierymenko
24e30a684b
A bunch of little nit-picky header and name cleanup. 2020-03-04 08:16:44 -08:00
Adam Ierymenko
05e52493a4
Go module update 2020-03-03 07:41:15 -08:00
Adam Ierymenko
d8f1e01b77
cleanup 2020-03-03 07:40:19 -08:00
Adam Ierymenko
da5b11bf2d
Rename version constants to something more canonical, and more cleanup. 2020-03-03 07:38:51 -08:00
Adam Ierymenko
b824ea7bcf
Add buffer life cycle stuff to API for fewer memcpys. 2020-03-02 17:15:00 -08:00
Adam Ierymenko
b96ea5ae03
Fingerprint string conversion, API stuff 2020-03-02 15:13:34 -08:00
Adam Ierymenko
fbd3e10488
cleanup 2020-03-02 14:41:15 -08:00
Adam Ierymenko
51f0882849
comments 2020-03-02 14:39:42 -08:00
Adam Ierymenko
416068f68e
Regularize use of fingerprint concept across code. 2020-03-02 12:09:38 -08:00
Adam Ierymenko
a8db4a8d2d
Minor future proofing and cleanup in CertificateOfMembership, improve comments in a few places. 2020-03-02 10:25:15 -08:00
Adam Ierymenko
6b49148d4e
More cross-platform build fixes and add tests for hton/ntoh/other byte order stuff because breakage there would be annoying. 2020-02-28 11:27:30 -08:00
Adam Ierymenko
77e59818a3
dead code removal 2020-02-27 15:59:39 -08:00
Adam Ierymenko
6262374205
Add tests for identity marshal/unmarshal and fix an issue found. 2020-02-27 15:40:31 -08:00
Adam Ierymenko
ed8271530f
cleanup 2020-02-27 14:54:15 -08:00
Adam Ierymenko
8e4d7c56d8
Stub out a protocol field in Endpoint INETADDR types for future use. 2020-02-27 14:24:11 -08:00
Adam Ierymenko
0598315d68
Fix V1 sample ID 2020-02-27 12:59:00 -08:00
Adam Ierymenko
05e5d08959
A little more delay margin 2020-02-27 12:13:12 -08:00
Adam Ierymenko
ca33eaf28d
FPU trick seems to always be faster 2020-02-27 12:09:26 -08:00
Adam Ierymenko
13e86fdb6c
lalala build fixes 2020-02-27 11:57:45 -08:00
Adam Ierymenko
ffbd18f4ef
build fix 2020-02-27 11:52:32 -08:00
Adam Ierymenko
fabb0f734a
build fix 2020-02-27 11:47:01 -08:00
Adam Ierymenko
1e59d92df3
warning removal 2020-02-27 11:45:56 -08:00
Adam Ierymenko
ecd09946e6
warning removal 2020-02-27 11:45:06 -08:00
Adam Ierymenko
789b8b8454
compile fix 2020-02-27 11:43:54 -08:00
Adam Ierymenko
f107a71796
docs, compile fixes. 2020-02-27 11:42:00 -08:00
Adam Ierymenko
066b4c27a4
tweaks 2020-02-27 10:31:55 -08:00
Adam Ierymenko
fbfa99fac5
Speed up V1 identity verification a little, and add some comments. 2020-02-27 09:43:58 -08:00
Adam Ierymenko
c5bd21a23e
various optimization 2020-02-26 17:00:03 -08:00
Adam Ierymenko
1c7e1da4d1
cleanup, docs 2020-02-26 12:40:29 -08:00
Adam Ierymenko
5cec5fe6b1
Make Fingerprint (a full length identity hash) a first class type 2020-02-26 11:39:18 -08:00
Adam Ierymenko
ea0961dfd2
docs 2020-02-26 11:32:54 -08:00
Adam Ierymenko
f20905b08a
Throw some more mulmod52 implementations in there (but currently disabled) for future use so we do not have to hunt them down again. 2020-02-26 11:31:03 -08:00
Adam Ierymenko
83e79e1a1b
V1 identities now use a VDF (verifiable delay function) 2020-02-26 11:08:03 -08:00
Adam Ierymenko
c6a7b5774c
MIMC52 2020-02-26 09:58:28 -08:00
Adam Ierymenko
27ab88db1e
little stuff 2020-02-25 16:21:51 -08:00
Adam Ierymenko
1b71b6d01a
hash() -> fingerprint() 2020-02-25 16:15:14 -08:00
Adam Ierymenko
dcb3d49d35
Cleanup, Address refactoring, tweak V1 identity generation a bit. 2020-02-25 16:08:27 -08:00
Adam Ierymenko
5c14a072d5
rename 2020-02-25 06:03:24 -08:00
Adam Ierymenko
4eb491065b
clean out old files 2020-02-25 06:03:04 -08:00
Adam Ierymenko
b87e8d8e41
readability++ 2020-02-25 06:00:52 -08:00
Adam Ierymenko
a58f11e601
Tweak protocol getPacketId(), unit tests for defragmenter, AES fix. 2020-02-25 05:36:48 -08:00
Adam Ierymenko
547f39bb49
Fixes for Buf, unit test 2020-02-24 15:40:19 -08:00
Adam Ierymenko
df99f5e3f3
More crypto benchmarks 2020-02-24 14:44:20 -08:00
Adam Ierymenko
15e88a8b7e
MOAR AES V-TEC 2020-02-24 13:53:50 -08:00
Adam Ierymenko
61b72d42b8
More AES tweaks 2020-02-24 13:30:35 -08:00
Adam Ierymenko
56bf504ec2
Small AES tweak 2020-02-24 12:48:56 -08:00
Adam Ierymenko
1f02250dd8
Ridiculously fast AES-CTR 2020-02-24 11:56:37 -08:00
Adam Ierymenko
5d0c6db19c
Crypto fixes and benchmarks. 2020-02-21 19:32:36 -08:00
Adam Ierymenko
4af3467757
AES-CTR test vectors and fixes to CTR code. 2020-02-21 17:22:26 -08:00
Adam Ierymenko
87890565f3
It builds, and basic stuff and crypto passes tests. 2020-02-21 16:43:12 -08:00
Adam Ierymenko
d603a73715
Build fixes. 2020-02-21 15:58:28 -08:00
Adam Ierymenko
55b0555aa0
A bunch more build fixes. 2020-02-21 14:46:01 -08:00
Adam Ierymenko
1a2378a3d4
More crypto unit tests. 2020-02-21 12:20:57 -08:00
Adam Ierymenko
c6ce6b46ce
build fixes 2020-02-21 08:44:53 -08:00
Adam Ierymenko
f109f2e612
Identity v1 hash tweak 2020-02-21 08:10:43 -08:00
Adam Ierymenko
8f8e3f4960
OS/platform include cleanup 2020-02-21 08:01:58 -08:00
Adam Ierymenko
1d885cf810
Build fixes, put uint128_t detection in one place. 2020-02-21 07:25:43 -08:00
Adam Ierymenko
5275a34b0b
more refactoring 2020-02-21 07:11:16 -08:00
Adam Ierymenko
c3b5c45fea
Fix InetAddress sizing by delving into crazy C++ weeds, fix Peer compile issues. 2020-02-20 13:55:09 -08:00
Adam Ierymenko
565a686be7
include cleanup 2020-02-20 13:25:56 -08:00
Adam Ierymenko
12cfb6501d
Cleanup in ECC384 including const-correctness, etc. 2020-02-20 13:11:51 -08:00
Adam Ierymenko
de1b54821e
Starting to (re)write unit tests. 2020-02-20 12:54:46 -08:00
Adam Ierymenko
320c8429c2
Yet more perf, security hardening, and compile fix tweaks. 2020-02-20 09:33:11 -08:00
Adam Ierymenko
a4e24c8390
Build fixes 2020-02-19 11:32:16 -08:00
Adam Ierymenko
0589964f99
Yet more cleanup, and add meters to paths. 2020-02-19 11:06:05 -08:00
Adam Ierymenko
1affb6814c
A little more cleanup and build fixes. 2020-02-19 10:32:02 -08:00
Adam Ierymenko
b70ab0d354
Include file cleanup, docs, and build fixes. 2020-02-19 10:18:52 -08:00
Adam Ierymenko
4a9266feef
Comment out not-yet-refactored code in Network 2020-02-19 09:42:11 -08:00
Adam Ierymenko
1e0a930d23
Create a container for identity hashes, replace some "volatile" hacky junk with std::atomic, clean up some security checks, rename raw data in Buf to unsafeData to permit search for unsafe. 2020-02-19 09:28:18 -08:00
Adam Ierymenko
46d3780e89
AES stuff, port sending network credentials to new packet format. 2020-02-18 17:17:10 -08:00
Adam Ierymenko
311c98e24e
Various other small things. 2020-02-18 14:20:49 -08:00
Adam Ierymenko
9ad8dd3700
Add Peer method for getting preferred cipher, various cleanup in VL1 2020-02-18 12:38:48 -08:00
Adam Ierymenko
0dc476518b
Documentation changes, and move HMAC auth on HELLO to before object decoding since this is good cryptographic practice. 2020-02-18 10:31:31 -08:00
Adam Ierymenko
8c8a3c58ec
Various little things... 2020-02-18 06:33:31 -08:00
Adam Ierymenko
a0ac4a744e
Change the type 1 identity a bit to make locallyValidate() super fast, eliminating a scaling issue with v0. 2020-02-17 15:09:26 -08:00
Adam Ierymenko
3448e6fc76
Yet MORE refactoring, including moving expected-reply-to out of Node and into its own class for cleanliness. 2020-02-14 14:12:42 -08:00
Adam Ierymenko
e5c7366e71
Yet more minor refactoring and redesign Meter to be more thread-safe. 2020-02-14 11:34:47 -08:00
Adam Ierymenko
e236d6f743
More minor refactoring 2020-02-14 10:19:45 -08:00
Adam Ierymenko
5db0d9438c
More built-in AES and GMAC primitive work. 2020-02-14 09:05:48 -08:00
Adam Ierymenko
08e06f9b8f
More refactoring and a bunch of AES goodness. 2020-02-13 14:44:18 -08:00
Adam Ierymenko
018fe04163
More nit-picky refactoring. 2020-02-12 14:14:31 -08:00
Adam Ierymenko
f21ecb3762
Yet more major and very nit-picky refactoring for performance, etc. Also use std::atomic<> now with a TODO to implement a shim if we ever do need to build this on a pre-c++11 compiler. 2020-02-12 14:04:25 -08:00
Adam Ierymenko
60de5ed3dd
It almost compiles again 2020-02-07 13:54:17 -08:00
Adam Ierymenko
df4b1e9b12
Yet more work on VL1/VL2 2020-02-07 00:02:29 -08:00
Adam Ierymenko
c3d3605f70
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-02-06 18:07:22 -08:00
Adam Ierymenko
a9003d16f2
Put Switch in attic too 2020-02-06 18:07:17 -08:00
Adam Ierymenko
84619a7788
A bunch more refactoring including splitting Switch into VL1 and VL2 2020-02-06 18:06:50 -08:00
Grant Limberg
db127887b6
libssl-dev on trusty images 2020-02-05 10:57:29 -08:00
Grant Limberg
e0588b89b2
libssl-dev 2020-02-04 12:48:58 -08:00
Grant Limberg
7d2eceef01
no building cmake on wheezy either 2020-02-04 12:36:39 -08:00
Grant Limberg
e5e444c7ae
can't even build cmake on Centos 6. Will need another method for packaging 2020-02-04 12:08:47 -08:00
Grant Limberg
4b083b8c41
more dependencies 2020-02-04 12:06:26 -08:00
Grant Limberg
245d92b40c
add openssl-devel to centos images 2020-02-04 11:46:09 -08:00
Grant Limberg
931ad1aca8
Add CMake to all the docker images 2020-02-04 11:38:42 -08:00
Grant Limberg
5e488d3aa0
fix PATH 2020-02-04 10:33:18 -08:00
Grant Limberg
cc52835ce3
remove unneeded output 2020-02-04 09:39:13 -08:00
Adam Ierymenko
7d11522768
Just about everything refactored for new Protocol/Buf code except Switch. 2020-02-03 16:18:33 -08:00
Grant Limberg
417cdc17dc
Skip generating packages on edge as that's not reimplemented in CMake yet 2020-02-03 14:00:46 -08:00
Grant Limberg
c537955c65
ensure go is in the PATH for jenkins builds 2020-02-03 13:57:03 -08:00
Grant Limberg
a0efea8e0f
Merge branch 'dev' into edge
# Conflicts:
#	.gitignore
#	Jenkinsfile
#	attic/macui/ZeroTier One.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
#	attic/service/OneService.cpp
2020-02-03 13:54:49 -08:00
Adam Ierymenko
df346a6df6
Work in progress... clean up memcpy and create an annotation for that, lots more porting to new Buf/Protocol code, etc. 2020-02-03 13:00:13 -08:00
Adam Ierymenko
cdc6c42375
Take Dictionary behind the barn... 2020-01-25 18:02:11 -08:00
Adam Ierymenko
d5b9a54c55
Continuing work on new buffer type... 2020-01-25 01:17:56 -08:00
Adam Ierymenko
59da359b06
More porting to new Buf system. 2020-01-24 23:36:08 -08:00
Adam Ierymenko
91ce4c4ea6
Refactoring protocol marshal/unmarshal code... 2020-01-24 21:16:07 -08:00
Adam Ierymenko
e9656ecf11
More wiring up of addroot/removeroot etc. 2020-01-24 13:27:01 -08:00
Adam Ierymenko
5c6bf9d0a4
Wiring up addroot/removeroot 2020-01-23 18:05:34 -08:00
Adam Ierymenko
0de194dab3
It builds again 2020-01-23 14:41:59 -08:00
Adam Ierymenko
33bb61c63d
Loads of refactoring, integration of new version of Trace. 2020-01-23 13:05:33 -08:00
Adam Ierymenko
e6273b3300
cleanup 2020-01-21 13:12:07 -08:00
Adam Ierymenko
d7b31fe014
Warning removal and build fixes. 2020-01-21 12:55:51 -08:00
Adam Ierymenko
5aae5f95bf
Merge commit 'bba132414527f1742dd1ca550dad5ecce94dfa40' into edge 2020-01-21 11:05:12 -08:00
Adam Ierymenko
bba1324145 One more sanity check. 2020-01-21 11:04:18 -08:00
Adam Ierymenko
182561f7e6
Port checking fixes. 2020-01-21 11:00:06 -08:00
Adam Ierymenko
41871c8b1e
Merge commit 'ff655292fba09c0a0d1ed4b4dda738c165ad4404' into edge 2020-01-21 10:59:44 -08:00
Adam Ierymenko
ff655292fb Allocate packet on heap, add extra sanity checks on packet size. 2020-01-21 10:58:41 -08:00
Adam Ierymenko
782b75a64e
Linux build fixes 2020-01-20 21:27:51 -08:00
Adam Ierymenko
0c58901469
cleanup 2020-01-20 21:05:29 -08:00
Adam Ierymenko
73b23f1b16
Go code cleanup and fixes, other cleanup. 2020-01-20 16:03:19 -08:00
Adam Ierymenko
5a29f9ba2d
cleanup 2020-01-20 11:18:38 -08:00
Adam Ierymenko
03190c5a55
Bunch of build fixes, some docs 2020-01-20 10:40:31 -08:00
Adam Ierymenko
dab968ed96
Put LZ4 in its own file. 2020-01-20 09:38:05 -08:00
Adam Ierymenko
b598263261
More 2.x notice updates. 2020-01-20 08:49:10 -08:00
Adam Ierymenko
eef70e198b
Version 2.x notice updates and other boring stuff. 2020-01-20 08:46:20 -08:00
Adam Ierymenko
89c41f88a4
Module version bump, vendor, cleanup 2020-01-20 08:23:30 -08:00
Adam Ierymenko
53b7c8f725
Make Peer bootstrap field an Endpoint even though we only support InetAddress right now, and a bunch more stuff. 2020-01-20 08:08:38 -08:00
Adam Ierymenko
d471142908
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-01-17 14:01:32 -08:00
Adam Ierymenko
3ff9ffd5d4
A bunch of wiring up of stuff... 2020-01-17 14:01:22 -08:00
Grant Limberg
2558bd1b9b
include iomanip 2020-01-16 09:11:12 -08:00
Grant Limberg
95d0944b9f
add /metrics endpoint for exposing root metrics to Prometheus 2020-01-16 09:08:52 -08:00
Grant Limberg
6e72b6fb37
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-01-15 16:12:51 -08:00
Grant Limberg
0c9be4de14
add /metrics endpoint for exposing root metrics to Prometheus 2020-01-15 16:12:34 -08:00
Adam Ierymenko
b53b7f4950
. 2020-01-14 15:34:06 -08:00
Adam Ierymenko
b2f0b35608
Move self-test so it can be called from CLI and always builds, implement Endpoint and Locator deserialization in Go as well as C++. 2020-01-14 14:37:49 -08:00
Adam Ierymenko
cba7a5d4d7
Self test is back, wiring up roots again. 2020-01-13 16:35:49 -08:00
Grant Limberg
8e1a88c2fb
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2020-01-13 15:32:31 -08:00
Adam Ierymenko
ee5a988f14
Wiring back up PUSH_DIRECT_PATHS and friends. 2020-01-13 14:04:17 -08:00
Adam Ierymenko
f814a07ab3
Go build works now 2020-01-10 22:12:56 -08:00
Adam Ierymenko
a5aea2f3bb
Everything but the Go code builds now! 2020-01-10 21:09:13 -08:00
Adam Ierymenko
7291ac2093
A bunch more cleanup and build fixes, and remove old version of multipath code to prep for new version. 2020-01-10 20:40:14 -08:00
Adam Ierymenko
790fe50fac
Go code cleanup for new changes 2020-01-10 16:54:01 -08:00
Adam Ierymenko
83eacdfada
New Buffer implementation (not used yet) and cleanup 2020-01-10 15:28:27 -08:00
Adam Ierymenko
2fbeaaf148
Bunch more fixes, implement C API for Identity operations. 2020-01-09 13:50:51 -08:00
Adam Ierymenko
57710cbc38
. 2020-01-09 08:39:47 -08:00
Adam Ierymenko
8bae0acaf9
More cleanup and build fixes, almost builds again! 2020-01-08 21:48:01 -08:00
Adam Ierymenko
ef64e6a336
Build fixes, cleanup 2020-01-08 21:24:47 -08:00
Adam Ierymenko
9642ff5fb9
. 2020-01-08 18:08:41 -08:00
Adam Ierymenko
263798d1c3
cleanup 2020-01-07 14:04:08 -08:00
Adam Ierymenko
3fbfad5585
cleanup 2020-01-07 14:03:50 -08:00
Adam Ierymenko
627533cf48
. 2020-01-07 13:24:15 -08:00
Adam Ierymenko
19899de5a6
. 2020-01-06 18:14:35 -08:00
Adam Ierymenko
c1b2c7903c
. 2020-01-02 19:04:36 -05:00
Adam Ierymenko
3b94ef99ae
Bunch of new-gen serialization work 2019-12-16 11:57:33 -08:00
Adam Ierymenko
6267c67888
A bunch of cleanup and refactoring toward 2.x 2019-12-12 16:15:49 -08:00
Adam Ierymenko
23d6a3aacd
Moar refactoring 2019-12-11 13:46:44 -08:00
Adam Ierymenko
72361fb1c8
Cleanup and refactor 2019-12-11 13:27:11 -08:00
Adam Ierymenko
b55f98b813
wip 2019-12-11 12:04:22 -08:00
Adam Ierymenko
5a4d681af8
Build fixes. 2019-11-19 16:45:53 -08:00
Adam Ierymenko
a16a0a8ce5
Warning removal. 2019-11-19 16:22:11 -08:00
Grant Limberg
203df51752
ignore workspace/ folder
It's where I usually put temporary identity, etc. files for testing
2019-11-13 12:48:32 -08:00
Adam Ierymenko
47b4efd49b
Work in progress... 2019-11-04 14:24:37 -08:00
Adam Ierymenko
14fab11081
Merge dev, clean up old files 2019-10-16 06:05:29 -07:00
Adam Ierymenko
4c55f3eaa5
Work in progress 2019-10-16 06:03:32 -07:00
Adam Ierymenko
891bf99894
work in progress 2019-10-15 12:49:03 -07:00
Adam Ierymenko
22e95b3bcb
. 2019-10-09 10:00:30 -07:00
Adam Ierymenko
4da315fab2
Plumb through external interface stuff 2019-10-03 10:43:28 -07:00
Adam Ierymenko
507ba7d26a
Go build stuff, root stuff 2019-10-02 17:55:15 -07:00
Adam Ierymenko
68ac884d47
. 2019-10-02 14:30:46 -07:00
Adam Ierymenko
e2f3996843
Fix callbacks 2019-10-02 13:39:48 -07:00
Adam Ierymenko
57ade250af
. 2019-10-02 12:19:37 -07:00
Adam Ierymenko
c3e0f262d1
Regularize JSON stuff 2019-10-02 09:34:44 -07:00
Adam Ierymenko
b9911d0db7
More plumbing 2019-10-02 07:09:54 -07:00
Adam Ierymenko
d1b780c7be
addroot 2019-10-01 13:09:53 -07:00
Adam Ierymenko
1711cced3e
. 2019-09-30 20:31:48 -07:00
Adam Ierymenko
63e6693255
. 2019-09-30 20:10:53 -07:00
Adam Ierymenko
9b8d191bb1
Locator fix 2019-09-30 20:09:35 -07:00
Adam Ierymenko
6db2b8c66d
. 2019-09-30 20:03:03 -07:00
Adam Ierymenko
47a08ccbd4
Identity management plumbing to Go 2019-09-30 18:59:57 -07:00
Adam Ierymenko
7fc78129f4
A bunch of CLI work 2019-09-30 16:12:08 -07:00
Adam Ierymenko
c4504fd3ff
Vendor Go modules 2019-09-30 12:41:21 -07:00
Adam Ierymenko
e4799ff8c4
Bunch of small warnings and stylistic things... 2019-09-30 11:10:47 -07:00
Adam Ierymenko
f680924585
Build fixes 2019-09-30 09:48:44 -07:00
Adam Ierymenko
b0d222768a
Root admin stuff 2019-09-30 09:32:00 -07:00
Adam Ierymenko
4303c43db7
. 2019-09-27 14:55:46 -07:00
Adam Ierymenko
3b3e6d2bfc
Simplify root API 2019-09-26 13:35:56 -07:00
Adam Ierymenko
7061f13b24
. 2019-09-26 09:34:31 -07:00
Adam Ierymenko
5175636d36
. 2019-09-25 14:31:08 -07:00
Adam Ierymenko
570032484f
. 2019-09-25 14:16:55 -07:00
Adam Ierymenko
9c37fc1a5f
. 2019-09-25 13:32:46 -07:00
Adam Ierymenko
105023bd87
Build fix 2019-09-25 12:43:14 -07:00
Adam Ierymenko
8a9669f130
. 2019-09-25 12:36:49 -07:00
Adam Ierymenko
e5bd230fb0
. 2019-09-24 16:44:29 -07:00
Adam Ierymenko
e3d47e588a
. 2019-09-24 12:32:35 -07:00
Adam Ierymenko
f4a5abeed9
Go CLI work 2019-09-24 12:19:28 -07:00
Adam Ierymenko
a7e38d2b00
. 2019-09-23 16:58:55 -07:00
Adam Ierymenko
84ba396ed3
. 2019-09-23 16:47:13 -07:00
Adam Ierymenko
6683280a37
. 2019-09-23 16:46:58 -07:00
Adam Ierymenko
1edf680464
. 2019-09-23 16:46:31 -07:00
Adam Ierymenko
4df090469a
Clean out obsolete dependencies. 2019-09-23 16:42:23 -07:00
Adam Ierymenko
3c63f58532
Build fix. 2019-09-23 16:21:43 -07:00
Adam Ierymenko
64c8171e13
Port binding check. 2019-09-23 16:21:02 -07:00
Adam Ierymenko
b6175bd408
Gogogogogogogo 2019-09-23 15:18:52 -07:00
Adam Ierymenko
b44bd19c53
. 2019-09-22 22:33:11 -07:00
Adam Ierymenko
536bc59abb
. 2019-09-22 22:25:55 -07:00
Adam Ierymenko
70d5da1e2a
. 2019-09-22 19:25:40 -07:00
Adam Ierymenko
90d4d79828
Peers and paths 2019-09-22 17:41:15 -07:00
Adam Ierymenko
ccc9be2d4d
All that cgo crap compiles! 2019-09-22 00:06:07 -07:00
Adam Ierymenko
3341c4a670
Rooting around 2019-09-21 22:54:58 -07:00
Adam Ierymenko
bcb9df9cdf
Network config stuff in Go 2019-09-21 20:40:06 -07:00
Adam Ierymenko
2eef9d22e6
getting there... 2019-09-21 18:22:25 -07:00
Adam Ierymenko
5e35346f17
Gogog 2019-09-21 15:35:27 -07:00
Adam Ierymenko
bb53ee9567
Going once... going twice! 2019-09-21 15:04:00 -07:00
Adam Ierymenko
9934a856dd
More go 2019-09-21 12:54:45 -07:00
Adam Ierymenko
24904c5083
Go F yourself 2019-09-21 11:56:31 -07:00
Adam Ierymenko
6ce4663a31
GoGoGo 2019-09-21 00:19:20 -07:00
Adam Ierymenko
fbf74d3baa
Go! Go! https://www.youtube.com/watch?v=hyGYdqMfrQQ 2019-09-20 21:00:54 -07:00
Adam Ierymenko
b540181990
Go! Go! Go! - Moby 2019-09-20 20:34:31 -07:00
Adam Ierymenko
02a6b15e6b
Moar Go 2019-09-20 19:51:57 -07:00
Adam Ierymenko
b34aa10bf8
Go code! 2019-09-20 18:48:48 -07:00
Adam Ierymenko
e0ddbc2f28
Update build process, Go glue builds now. 2019-09-20 15:00:53 -07:00
Adam Ierymenko
ed2024285d
More Go boilerplate. 2019-09-20 14:11:15 -07:00
Adam Ierymenko
ae2120eb96
New service, work in progress 2019-09-20 09:09:05 -07:00
Adam Ierymenko
3ceb2257e5
Plumb through roots via API. 2019-09-19 09:47:12 -07:00
Adam Ierymenko
624efde7e4
Make sure threads dont exit on spurious return values from recvfrom unless we are really dying. 2019-09-16 20:41:23 -07:00
Adam Ierymenko
50009fef6f
Merge branch 'dev' into edge 2019-09-16 20:26:41 -07:00
Adam Ierymenko
dde937e197
cleanup 2019-09-16 19:58:21 -07:00
Adam Ierymenko
07a480b37a
Build fix. 2019-09-16 18:04:32 -07:00
Adam Ierymenko
9f5bccec30
Add a recv timeout to root 2019-09-16 18:03:17 -07:00
Adam Ierymenko
ade52bf81e
Fix RENDEZVOUS issue and possibly improve GeoIP resolution. 2019-09-16 17:04:13 -07:00
Adam Ierymenko
71c766a3b2
Build fix 2019-09-16 15:09:56 -07:00
Adam Ierymenko
eef66aee9a
build fix 2019-09-16 14:51:02 -07:00
Adam Ierymenko
e245eb1eb5
Trim some unnecessary locks from root, and cleanup elsewhere. 2019-09-16 14:48:27 -07:00
Adam Ierymenko
e08fc81397
More threading improvements in root, more DNS TXT and multicast work (in progress) 2019-09-16 10:33:59 -07:00
Adam Ierymenko
9f9032ae36
Cleanup and warning removal. 2019-09-13 16:24:02 -07:00
Adam Ierymenko
063a16fcd6
Ensure SSE is enabled for Salsa20 on x64 2019-09-13 11:16:21 -07:00
Adam Ierymenko
0db4151492
cleanup 2019-09-13 11:10:56 -07:00
Adam Ierymenko
e44d7a553f
The root technically does not need to do this, and its slow. 2019-09-13 10:29:11 -07:00
Adam Ierymenko
53a2de98de
Packet ID fix 2019-09-13 10:23:35 -07:00
Adam Ierymenko
2deaaeef28
Some root cleanup and more lock contention reduction. 2019-09-13 10:20:29 -07:00
Adam Ierymenko
1f9e16f63e
AES optimization rabbit hole 2019-09-13 09:37:09 -07:00
Adam Ierymenko
87fe69c27c
AES optimization rabbit hole 2019-09-13 09:35:49 -07:00
Adam Ierymenko
2d1eeda188
Cleanup, optimization 2019-09-12 14:32:37 -07:00
Adam Ierymenko
5c06d40358
cleanup 2019-09-12 10:37:26 -07:00
Adam Ierymenko
31e193756d
cleanup 2019-09-12 09:59:46 -07:00
Adam Ierymenko
5aa744db84
Simplification and further concurrency improvements. 2019-09-12 08:41:34 -07:00
Adam Ierymenko
0ad82dad80
Linux build fix 2019-09-12 08:25:26 -07:00
Adam Ierymenko
99c36ed2f2
Parallelization improvements 2019-09-12 08:20:38 -07:00
Adam Ierymenko
44878e583a
Bug fixes 2019-09-11 16:10:06 -07:00
Adam Ierymenko
0723a85ab3
Build fixes. 2019-09-11 15:52:18 -07:00
Adam Ierymenko
d8dae365f6
Cleanup, optimization, multicast stuff, and it now compiles again. 2019-09-11 15:34:55 -07:00
Adam Ierymenko
bccb86a401
More multicast work... 2019-09-10 16:20:28 -07:00
Adam Ierymenko
592e743349
Yet more multicast work. 2019-09-09 15:49:17 -07:00
Adam Ierymenko
fb6161e9ac
May as well make it a full self-signature. 2019-09-09 10:45:49 -07:00
Adam Ierymenko
787277d282
More multicast work, add a signature in identity for safety margin, cleanup. 2019-09-09 10:44:31 -07:00
Adam Ierymenko
540ee69773
A bunch of multicast work... in progress. 2019-09-07 19:15:21 -07:00
Adam Ierymenko
0d2c87fe4e
map fix 2019-09-06 08:54:27 -07:00
Adam Ierymenko
2460de9713
map fix 2019-09-06 08:50:36 -07:00
Adam Ierymenko
0d32f42d26
map fix 2019-09-06 08:47:32 -07:00
Adam Ierymenko
277497684e
Revert "map fix"
This reverts commit f4a83e516c.
2019-09-06 08:45:39 -07:00
Adam Ierymenko
f4a83e516c
map fix 2019-09-06 08:41:03 -07:00
Adam Ierymenko
d2eb1ed9a5
map fix 2019-09-06 08:27:03 -07:00
Adam Ierymenko
a3ec5846df
map fix 2019-09-06 08:18:11 -07:00
Adam Ierymenko
b6047899a8
map fix 2019-09-06 08:12:46 -07:00
Adam Ierymenko
3516070b6e
map fix 2019-09-06 08:11:20 -07:00
Adam Ierymenko
56ec87e00e
map fix 2019-09-06 08:03:59 -07:00
Adam Ierymenko
fe0b896665
map fix 2019-09-06 07:58:43 -07:00
Adam Ierymenko
e4721417e6
map fix 2019-09-06 07:55:36 -07:00
Adam Ierymenko
45f5b3b648
map fix 2019-09-06 07:40:32 -07:00
Adam Ierymenko
3123102211
root cleanup and add nifty geoip thing 2019-09-06 07:37:44 -07:00
Adam Ierymenko
c6141ffbc7
cleanup 2019-09-05 18:06:48 -07:00
Adam Ierymenko
c0e92d06a5
faster without const variable second-guessing of the compiler 2019-09-05 17:31:12 -07:00
Adam Ierymenko
274b2682d6
cleanup and docs 2019-09-05 15:09:20 -07:00
Adam Ierymenko
171d661b84
cleanup 2019-09-05 12:17:04 -07:00
Adam Ierymenko
5cea8da664
Optimization and naming cleanup 2019-09-05 12:03:11 -07:00
Adam Ierymenko
44dd52d08f
KBKDF 2019-09-05 11:39:16 -07:00
Adam Ierymenko
70648d006d
Merge branch 'dev' into edge 2019-09-05 11:06:27 -07:00
Adam Ierymenko
43e6a9e9ee
more fastitude 2019-09-05 09:54:30 -07:00
Adam Ierymenko
0599c1710b
Merge branch 'dev' into edge 2019-09-04 16:41:05 -07:00
Adam Ierymenko
abf218a9cd
cleanup 2019-09-04 16:38:55 -07:00
Adam Ierymenko
55f4f9aaeb
cleanup 2019-09-04 16:15:10 -07:00
Adam Ierymenko
82b7e1dbcb
HMAC fix 2019-09-04 15:22:15 -07:00
Adam Ierymenko
e8f8b0f8e5
cleanup 2019-09-04 14:40:36 -07:00
Adam Ierymenko
7566d4fbab
Merge dev 2019-09-04 14:38:35 -07:00
Adam Ierymenko
3a0d385119
Implement changes to AES-GMAC-CTR: four keys with one for each role/purpose instead of just two, and simpler CTR-IV calculation. 2019-09-04 14:37:38 -07:00
Adam Ierymenko
a465afa83d
Merge branch 'dev' into edge 2019-09-04 08:19:39 -07:00
Adam Ierymenko
185e90c40f
AES-GMAC-CTR tweaks, self test tweaks, debian typo fix. 2019-09-04 08:19:12 -07:00
Adam Ierymenko
e29c2d0260
Fix field headers 2019-09-03 15:59:34 -07:00
Adam Ierymenko
acf6425ae9
Formatting fix 2019-09-03 15:55:23 -07:00
Adam Ierymenko
5e8d49de0f
Stats, tweak P2P success rate stat. 2019-09-03 15:48:10 -07:00
Adam Ierymenko
1f9456a462
Estimate P2P Success Rate 2019-09-03 15:19:17 -07:00
Adam Ierymenko
a7d8285c3a
Don't require siblings field 2019-09-03 14:57:54 -07:00
Adam Ierymenko
5f1dc4b851
cleanup 2019-09-03 14:57:02 -07:00
Adam Ierymenko
b1c22949c5
Cleanup, add support for distributing a new planet file 2019-09-03 14:44:13 -07:00
Adam Ierymenko
29be175743
Make relay max hops configurable on roots 2019-09-03 13:17:12 -07:00
Adam Ierymenko
b6c5ba264b
One more fix for discarding hops exceeded packets. 2019-09-03 13:01:01 -07:00
Adam Ierymenko
8e7e3c2b11
Fix max hops. 2019-09-03 12:58:23 -07:00
Adam Ierymenko
0e7df129d8
Fix variable shadowing bug. 2019-09-03 12:51:32 -07:00
Adam Ierymenko
50709cbd21
Fix siblings in peers list, fix meter. 2019-09-03 12:44:09 -07:00
Adam Ierymenko
fd6e8d8c5c
Add instrumentation to root, add capability to forward to siblings if no path is known to a peer. 2019-09-03 12:21:57 -07:00
Adam Ierymenko
2e7496130c
Fix silly thinko in root that harms p2p establishment. 2019-08-30 21:17:34 -07:00
Adam Ierymenko
9666ab5797
Merge branch 'dev' into edge 2019-08-30 17:57:11 -07:00
Adam Ierymenko
4c08ac7873
Fix MULTICAST_GATHER reply problem in root 2019-08-30 17:34:05 -07:00
Adam Ierymenko
5435ec7545
Merge dev 2019-08-30 15:40:00 -07:00
Adam Ierymenko
8764d50179
Merge branch 'dev' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-30 15:16:21 -07:00
Adam Ierymenko
62cdb8dc94
cleanup 2019-08-30 12:47:19 -07:00
Adam Ierymenko
9918a1092f
JSON fix 2019-08-30 09:39:46 -07:00
Adam Ierymenko
7d89511fda
JSON fix 2019-08-30 09:38:18 -07:00
Adam Ierymenko
795b6d13d1
Simple status output on root of HTTP tree 2019-08-30 09:29:06 -07:00
Adam Ierymenko
8328b6f657
Lib fix 2019-08-30 09:10:11 -07:00
Adam Ierymenko
9994e591bd
More root work and CMake-ify root 2019-08-30 09:08:39 -07:00
Adam Ierymenko
b27a38e55e
Implement WHOIS 2019-08-29 14:27:41 -07:00
Adam Ierymenko
f6d747a5a0
Fix some more multicast stuff (minor) 2019-08-29 12:02:37 -07:00
Adam Ierymenko
b7da7574d1
Helps to decompress the packet 2019-08-29 11:40:31 -07:00
Adam Ierymenko
dbad9585cd
Fix parsing of MULTICAST_GATHER 2019-08-29 11:23:23 -07:00
Adam Ierymenko
2d7a97bb94
Fix V4/V6 forwarding issue in root 2019-08-29 10:58:47 -07:00
Adam Ierymenko
da19da0360
RENDEZVOUS works now 2019-08-29 08:00:54 -07:00
Adam Ierymenko
ee7361ee2e
crash fix 2019-08-29 07:25:16 -07:00
Adam Ierymenko
6e3e09bed4
Add RENDEZVOUS to high throughput root 2019-08-29 07:17:18 -07:00
Adam Ierymenko
86762d2b40
high throughput root is working! 2019-08-28 15:52:18 -07:00
Adam Ierymenko
ef12c5af99
. 2019-08-28 15:22:28 -07:00
Adam Ierymenko
933404b1dd
. 2019-08-28 15:20:34 -07:00
Adam Ierymenko
ccec49e444
. 2019-08-28 15:17:16 -07:00
Adam Ierymenko
e5f1bf81f7
. 2019-08-28 15:15:21 -07:00
Adam Ierymenko
0e627f4f68
. 2019-08-28 15:07:38 -07:00
Adam Ierymenko
d33f7d2bf5
. 2019-08-28 14:49:16 -07:00
Adam Ierymenko
e07a019615
. 2019-08-28 14:47:05 -07:00
Adam Ierymenko
34ca3012e6
. 2019-08-28 14:43:37 -07:00
Adam Ierymenko
62634ca2da
. 2019-08-28 14:39:31 -07:00
Adam Ierymenko
846c96e8d5
. 2019-08-28 14:36:29 -07:00
Adam Ierymenko
63775723c1
. 2019-08-28 14:28:07 -07:00
Adam Ierymenko
2f7d3e655a
. 2019-08-28 14:26:13 -07:00
Adam Ierymenko
b19634d7e4
. 2019-08-28 14:21:02 -07:00
Adam Ierymenko
a92967a7c1
. 2019-08-28 14:16:14 -07:00
Adam Ierymenko
8915b88de5
. 2019-08-28 14:06:45 -07:00
Adam Ierymenko
7bca81464b
. 2019-08-28 14:04:42 -07:00
Adam Ierymenko
b974ece24f
. 2019-08-28 13:59:23 -07:00
Adam Ierymenko
b1c8e6ad59
. 2019-08-28 13:51:13 -07:00
Adam Ierymenko
64f7185e3a
. 2019-08-28 13:44:15 -07:00
Adam Ierymenko
807cc9afc3
. 2019-08-28 13:40:49 -07:00
Adam Ierymenko
0adf306dd4
. 2019-08-28 13:38:52 -07:00
Adam Ierymenko
db0f602e86
. 2019-08-28 13:10:36 -07:00
Adam Ierymenko
17ec47f5c0
. 2019-08-28 13:09:14 -07:00
Adam Ierymenko
cf831d9cd3
. 2019-08-28 13:04:58 -07:00
Adam Ierymenko
5e3c633f74
root work 2019-08-28 11:59:13 -07:00
Adam Ierymenko
4e4b27b6ab
build fix 2019-08-28 11:54:09 -07:00
Adam Ierymenko
c0c9590904
High throughput root stuff 2019-08-28 11:49:45 -07:00
Adam Ierymenko
24c9577e39
cleanup 2019-08-28 11:28:51 -07:00
Adam Ierymenko
59ee0cfe88
Safety upgrades to code 2019-08-28 10:34:32 -07:00
Adam Ierymenko
1977b9b764
Use -flto on Mac for release 2019-08-28 07:45:49 -07:00
Adam Ierymenko
6f9d1fc14c
Merge branch 'dev' into edge 2019-08-28 07:43:36 -07:00
Adam Ierymenko
8ac59ae2be
cleanup 2019-08-28 07:40:13 -07:00
Adam Ierymenko
46db37e06c
Yield in ticket lock 2019-08-28 07:34:24 -07:00
Adam Ierymenko
9d1207b339
Merge branch 'dev' into edge 2019-08-28 07:31:33 -07:00
Adam Ierymenko
6e730cfad1
Cleanup, multicast fingerprint, benchmark asymmetric crypto 2019-08-28 07:31:17 -07:00
Adam Ierymenko
199b3345a0
cleanup 2019-08-27 14:42:49 -07:00
Adam Ierymenko
b7f504b8a4
cleanup 2019-08-27 14:40:01 -07:00
Adam Ierymenko
1b459b0560
cleanup 2019-08-27 14:31:04 -07:00
Adam Ierymenko
40803a4dc1
cleanup 2019-08-27 14:25:11 -07:00
Adam Ierymenko
6f22570648
Optimization and cleanup 2019-08-26 20:18:28 -07:00
Adam Ierymenko
8203547cfc
Warning removal. 2019-08-26 20:01:54 -07:00
Adam Ierymenko
dad160209e
Add -mmacosx-version-min=10.9 2019-08-26 19:54:24 -07:00
Adam Ierymenko
8faaaec710
Add check for PCLMUL instruction too. Virtually all CPUs with AES-NI have it but good to be sure. 2019-08-26 19:48:56 -07:00
Adam Ierymenko
012fba617d
Set SSE/AES-NI flags only on x86/x64 targets. 2019-08-26 19:40:22 -07:00
Adam Ierymenko
9ca495229b
Revert "optimization stuff"
This reverts commit e63f624d3a.
2019-08-26 19:03:09 -07:00
Adam Ierymenko
e63f624d3a
optimization stuff 2019-08-26 19:02:28 -07:00
Adam Ierymenko
e1dd413266
cleanup 2019-08-26 18:44:56 -07:00
Adam Ierymenko
b9ef09dd58
Optimization stuff 2019-08-26 18:15:32 -07:00
Adam Ierymenko
990333e7ec
cleanup, re-enable AES-NI check 2019-08-26 16:35:28 -07:00
Adam Ierymenko
ec9582f3f2
More test vectors, software mode GCM. 2019-08-26 16:24:42 -07:00
Adam Ierymenko
ea65386e15
Merge branch 'dev' into edge 2019-08-26 12:22:20 -07:00
Adam Ierymenko
a0fd4ad23f
Cleanup, Linux build fix. 2019-08-26 12:17:23 -07:00
Adam Ierymenko
b6d7a95028
Merge branch 'dev' into edge 2019-08-26 11:09:19 -07:00
Adam Ierymenko
1d8f3cee62
cleanup 2019-08-23 21:12:24 -07:00
Adam Ierymenko
5ba6e21967
cleanup 2019-08-23 20:34:09 -07:00
Adam Ierymenko
52f7f6e6cf
Fully implement the packet encryption/decryption algorithms. 2019-08-23 20:20:32 -07:00
Adam Ierymenko
9fd5ec673b
Get rid of complicated AES-GCM + scramble construct in favor of a simpler construct thanks to "Squeamish Ossifrage" on crypto.stackexchange.com 2019-08-23 18:41:21 -07:00
Adam Ierymenko
e905b3c963
cleanup 2019-08-23 17:22:23 -07:00
Adam Ierymenko
f12370c348
more opt 2019-08-23 12:40:08 -07:00
Adam Ierymenko
b727e2a67a
More opt stuff 2019-08-23 12:34:45 -07:00
Adam Ierymenko
8e87319925
Optimization stuff 2019-08-23 12:18:02 -07:00
Adam Ierymenko
1ab29b1ab0
Merge branch 'dev' into edge 2019-08-23 12:11:07 -07:00
Adam Ierymenko
52d55e34e6
Licenses, and use full strength AES-128 in scramble. 2019-08-23 12:03:13 -07:00
Adam Ierymenko
c79360f58b
Merge dev 2019-08-23 11:37:40 -07:00
Adam Ierymenko
8057c826bc
cleanup 2019-08-23 09:34:26 -07:00
Adam Ierymenko
6f6138c500
Merge relicensing change from dev 2019-08-23 09:27:13 -07:00
Adam Ierymenko
903a18db1d
work in progress 2019-08-23 08:41:22 -07:00
Adam Ierymenko
0731f3f1a9
wiring more stuff up, and simplification of timing loops 2019-08-23 07:04:20 -07:00
Adam Ierymenko
37047a39f9
More cleanup, and fix SHA384 built-in C code. 2019-08-22 14:52:47 -07:00
Adam Ierymenko
91d0cbe892
cleanup 2019-08-22 13:08:10 -07:00
Adam Ierymenko
b66431bc29
Work in progress... 2019-08-22 13:06:08 -07:00
Adam Ierymenko
0e18b14087
Merge branch 'dev' into edge 2019-08-21 14:58:26 -07:00
Adam Ierymenko
31bd413166
stub out new verbs 2019-08-21 14:57:57 -07:00
Adam Ierymenko
95a6fce2b4
Yet more cleanup, it builds again now. 2019-08-21 14:36:56 -07:00
Adam Ierymenko
0b5472f9fb
Tons and tons of cleanup and cruft removal 2019-08-21 14:24:45 -07:00
Adam Ierymenko
5280d28505
cleanup 2019-08-21 10:44:52 -07:00
Adam Ierymenko
67a9898a99
Bunch more work on DNS, cleanup, removal of obsolete cruft. 2019-08-21 09:27:45 -07:00
Adam Ierymenko
fe8815f80f
cleanup 2019-08-20 15:36:18 -07:00
Adam Ierymenko
3a21fdc304
Crypto work, packet work 2019-08-20 15:34:30 -07:00
Adam Ierymenko
83d723eb79
type 1 (P-384) identities 2019-08-20 13:32:23 -07:00
Adam Ierymenko
6e771607c0
cleanup 2019-08-19 20:35:16 -07:00
Adam Ierymenko
e73b220104
cleanup 2019-08-19 20:30:34 -07:00
Adam Ierymenko
5c1fc43610
cleanup 2019-08-19 20:29:24 -07:00
Adam Ierymenko
cfbd7e3bf5
Add stubs to easily build and include all of libnatpmp and miniupnpc in osdep/ 2019-08-19 20:28:44 -07:00
Adam Ierymenko
c8ca1cfa3c
Kill old inline software update, we will use https and secondary auth for new versions. 2019-08-19 19:24:23 -07:00
Adam Ierymenko
5cfbb0a423
Clean up dead stuff from OneService and fix build errors. 2019-08-19 19:21:33 -07:00
Adam Ierymenko
900ec143a8
. 2019-08-19 16:45:29 -07:00
Adam Ierymenko
7bda3d0f74
put sse4.1 back 2019-08-19 15:49:13 -07:00
Adam Ierymenko
7650786fb5
cleanup, Locator fix and self-test 2019-08-19 15:43:15 -07:00
Adam Ierymenko
ca60d08621
cleanup, scrambler functions 2019-08-19 12:49:33 -07:00
Adam Ierymenko
b34218c8c2
auto-set -j option in makefile, and split out cmake setup rule 2019-08-19 10:06:39 -07:00
Adam Ierymenko
b14a59629c
cleanup 2019-08-19 06:58:42 -07:00
Adam Ierymenko
0914bf8cf0
Some ARM NEON code (not finished) 2019-08-16 19:22:03 -07:00
Adam Ierymenko
7bdca83de3
Add decrypt 2019-08-16 18:40:22 -07:00
Adam Ierymenko
846f03504e
Add DNS TXT resolver (need one for Windows) 2019-08-16 16:49:30 -07:00
Adam Ierymenko
01e8fd0b07
The newer C ed25519 is the same speed as the old ASM, so drop it to simplify. 2019-08-16 14:42:38 -07:00
Adam Ierymenko
7f301c44b7
more cleanup 2019-08-16 14:26:45 -07:00
Adam Ierymenko
51a25fdec9
Remove ASM Salsa20 since it will not be the default in 2.x any more... reduce build complexity. 2019-08-16 14:26:25 -07:00
Grant Limberg
2b681c37ac Consolidate common compiler flags 2019-08-16 11:42:43 -07:00
Grant Limberg
cb4ebfdbd2 Dragging adam into CMake kicking and screaming :) 2019-08-16 10:45:14 -07:00
Grant Limberg
206c85222c Fix Constants.hpp inclusion of version.h 2019-08-16 09:52:13 -07:00
ZeroTier
18071e038e Fix MacEthernetTapAgent & Cmake integration 2019-08-16 09:44:31 -07:00
Grant Limberg
39f7ce15ad mac compiler flags 2019-08-15 17:40:21 -07:00
Grant Limberg
e39b42bbd3 fixing some CMake stuff on Linux 2019-08-15 17:29:33 -07:00
Adam Ierymenko
607d8f72e8
cruftectomy 2019-08-15 15:43:35 -07:00
Adam Ierymenko
c483f75fb4
cleanup 2019-08-15 15:32:16 -07:00
Adam Ierymenko
81f0175251
cleanup 2019-08-15 14:14:49 -07:00
Adam Ierymenko
f753519729
A bit more optimization 2019-08-15 14:07:52 -07:00
Adam Ierymenko
f39693f97e
cleanup 2019-08-15 13:52:23 -07:00
Adam Ierymenko
f83ae0e39e
Add self-test for AES and AES-GCM using public test vectors. 2019-08-15 13:47:43 -07:00
Adam Ierymenko
521d371b5d
A bunch more refactoring to rip out obsolete stuff related to old root system and general cleanup. 2019-08-15 10:49:50 -07:00
Adam Ierymenko
b23d551d00
cleanup 2019-08-14 16:05:09 -07:00
Adam Ierymenko
1b20cc6075
More optimization and cleanup 2019-08-14 15:59:45 -07:00
Adam Ierymenko
2043e12ac2
. 2019-08-14 15:50:25 -07:00
Adam Ierymenko
9461bc948f
. 2019-08-14 15:28:10 -07:00
Adam Ierymenko
9740ab8bd6
more cleanup 2019-08-14 15:17:06 -07:00
Adam Ierymenko
6947a6b1d4
more cleanup 2019-08-14 15:12:49 -07:00
Adam Ierymenko
4da8036222
More refactor 2019-08-14 15:00:18 -07:00
Adam Ierymenko
e6b4006c70
Refactoring to eliminate duplicated code 2019-08-14 14:55:37 -07:00
Adam Ierymenko
8f5f7f1baa
More work in progress 2019-08-14 12:48:45 -07:00
Adam Ierymenko
573d3eea87
Merge branch 'dev' into edge 2019-08-14 10:53:03 -07:00
Adam Ierymenko
eb84eec0f4
Merge branch 'dev' into edge 2019-08-14 10:48:07 -07:00
Adam Ierymenko
d7a31088ba
Cleanup, warning removal, cppcheck informed cleanup. 2019-08-14 10:35:57 -07:00
Adam Ierymenko
a028e04ab9
Merge branch 'dev' into edge 2019-08-13 15:51:19 -07:00
Adam Ierymenko
a0520536df
. 2019-08-13 08:49:25 -07:00
Adam Ierymenko
af137fd5d3
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-12 15:37:55 -07:00
Adam Ierymenko
f7bc9f01c9
More AES stuff 2019-08-12 15:37:50 -07:00
Grant Limberg
e4ce1ffd85 Windows detection of AES-NI 2019-08-12 15:28:42 -07:00
Grant Limberg
2384b49156 set cmake windows build target to Windows 7 2019-08-12 15:28:30 -07:00
Adam Ierymenko
f5e71f64ed
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-12 13:27:07 -07:00
Adam Ierymenko
927ef22cf8
Merge branch 'dev' into edge 2019-08-12 13:27:00 -07:00
Grant Limberg
b6eaec1278 run selftest 2019-08-12 13:26:34 -07:00
Grant Limberg
c7d1eb71da build & run selftest as part of jenkins 2019-08-12 13:25:14 -07:00
Grant Limberg
7d41d267a3 silencing warnings for code paths that will never be hit 2019-08-12 13:18:21 -07:00
Grant Limberg
0ead65ad2d change this 2019-08-12 13:11:43 -07:00
Grant Limberg
8c5481a3d5 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-12 12:58:20 -07:00
Grant Limberg
741258051e this should work better 2019-08-12 12:58:10 -07:00
Adam Ierymenko
0f4fc8635b
Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2019-08-12 12:51:38 -07:00
Adam Ierymenko
d02d3f72fe
AES-GCM code 2019-08-12 12:51:32 -07:00
Grant Limberg
710b69fc75 kill build dir before jenkins build 2019-08-12 12:44:47 -07:00
Grant Limberg
4fae382ffd Auto-generate version.h 2019-08-12 12:43:51 -07:00
Grant Limberg
68b94a3188 CMake for edge branch 2019-08-12 12:35:07 -07:00
Grant Limberg
8e04f83232 Merge branch 'edge' into cmake 2019-08-12 12:24:25 -07:00
Grant Limberg
cc9fd9f8ce Merge branch 'dev' into cmake 2019-08-12 12:23:36 -07:00
Adam Ierymenko
1e8fcf1344
Add AES to build 2019-08-09 13:42:40 -05:00
Adam Ierymenko
809c8305b1
AES code 2019-08-09 10:54:08 -05:00
Adam Ierymenko
652c7e8f37
Locator work 2019-08-08 23:23:16 -05:00
Adam Ierymenko
beebca98fe
Merge branch 'dev' into edge 2019-08-08 19:42:16 -05:00
Adam Ierymenko
ce67abc32f
Merge branch 'dev' into edge 2019-08-08 18:49:03 -05:00
Adam Ierymenko
52cc482521
Merge branch 'dev' into edge 2019-08-08 15:59:58 -05:00
Adam Ierymenko
5eacad444d
workinprogress 2019-08-08 15:03:52 -05:00
Adam Ierymenko
e8155cbbeb
Merge dev 2019-08-08 13:05:28 -05:00
Adam Ierymenko
663376e385
cleanup 2019-08-08 08:42:27 -05:00
Adam Ierymenko
3c590994db
Finish up ECC384 identity generation. 2019-08-07 23:50:47 -05:00
Adam Ierymenko
14c8564893
Merge branch 'dev' into edge 2019-08-07 22:35:27 -05:00
Adam Ierymenko
91a37f8868
Add base64 code (unpadded standard alphabet) 2019-08-07 22:35:17 -05:00
Adam Ierymenko
1a2ff884b3
Merge branch 'dev' into edge 2019-08-07 19:08:35 -05:00
Adam Ierymenko
0298719be0
Use SHA384 with ECC384 to match FIPS / Suite B recommendation. 2019-08-07 17:06:03 -05:00
Adam Ierymenko
d0746da5e2
Add SHA384 support, more cleanup 2019-08-07 16:41:58 -05:00
Adam Ierymenko
5b1cf33b1b
Merge branch 'dev' into edge 2019-08-07 11:31:32 -05:00
Adam Ierymenko
54a1bbd016
. 2019-08-07 11:20:12 -05:00
Adam Ierymenko
455cd5551b
. 2019-08-06 17:06:39 -05:00
Adam Ierymenko
b3e1783658
. 2019-08-06 16:46:13 -05:00
Adam Ierymenko
906c83af83
Merge branch 'dev' into edge 2019-08-06 15:47:54 -05:00
Adam Ierymenko
f9900cc6fb
Merge dev to edge 2019-08-06 14:13:07 -05:00
ZeroTier
8e20187d8c set OS X deployment target to 10.9 2019-08-01 15:58:32 -07:00
ZeroTier
28dac7ff0e build MacEthernetTapAgent 2019-08-01 15:41:50 -07:00
Grant Limberg
e385b3d377 Merge branch 'dev' into cmake 2019-08-01 15:16:31 -07:00
Grant Limberg
7e5c68c553 update jenkins to use cmake for builds 2019-08-01 15:13:06 -07:00
Grant Limberg
39ad7bc741 update cmake to add LFDB and force C++11 2019-08-01 14:36:35 -07:00
Grant Limberg
c2f9aab068 Merge branch 'master' into cmake 2019-08-01 13:49:30 -07:00
Adam Ierymenko
7e105343e2 WIP 2019-07-17 16:53:33 -05:00
Adam Ierymenko
fe2215df00 TON of refactoring, moon/planet is DEAD, ECC P-384 is integrated (but not enabled), and multicast work and cleanup. Whew. 2019-07-17 10:52:08 -05:00
Adam Ierymenko
640bbaabbf Safer value 2019-07-16 17:28:42 -05:00
Adam Ierymenko
da2965cb4e P-384 test vectors 2019-07-16 17:25:25 -05:00
Adam Ierymenko
94ba242c33 Nist P-384 guts and glory 2019-07-16 16:09:14 -05:00
Adam Ierymenko
debd5a5c5e Add capability for P2P multicast propagation, and some cleanup. 2019-07-16 13:33:11 -05:00
Adam Ierymenko
98bbb84a63 Merge branch 'dev' into edge 2019-07-15 19:40:52 -05:00
Adam Ierymenko
9d908a11ed Some new stuff, may not live forever... 2019-07-15 13:57:42 -05:00
Grant Limberg
4d599e2f9f Linux build with CMake 2019-06-21 15:16:20 -07:00
Grant Limberg
d3b33e5512 Can now build the Windows UI via CMake as well 2019-06-21 12:54:53 -07:00
Grant Limberg
c8487cc395 no message 2019-06-20 16:15:19 -07:00
Grant Limberg
0b3b5f6174 Beginning CMake configuration for ZT
Only tested on Windows so far
2019-06-20 16:13:52 -07:00
913 changed files with 111212 additions and 125674 deletions

3
.dockerignore Normal file
View file

@ -0,0 +1,3 @@
.git/
build/
!build/zerotier

120
.gitignore vendored Executable file → Normal file
View file

@ -1,60 +1,23 @@
# Main binaries created in *nix builds
/zerotier-one
/zerotier-idtool
/zerotier-cli
/zerotier-selftest
/zerotier
/nltest
# OS-created garbage files from various platforms
/build
/cmake-build-debug
/cmake-build-release
/core/version.h
/.idea
/.ide-*
.DS_Store
.Trashes
*.swp
._*
*~
*~.nib
*.secret
.Apple*
Thumbs.db
@eaDir
._*
# Windows build droppings
/windows/ZeroTierOne.sdf
/windows/ZeroTierOne.v11.suo
/windows/x64
/windows/Win32
/windows/*/x64
/windows/*/Win32
/windows/ZeroTierOne/Release
/windows/ZeroTierOneService/obj
/windows/ZeroTierOneService/bin
/windows/Build
/windows/Debug
/windows/Release
/windows/WebUIWrapper/bin
/windows/WebUIWrapper/obj
/windows/lib
/ext/installfiles/windows/ZeroTier One-SetupFiles
/ext/installfiles/windows/Prerequisites
/ext/installfiles/windows/*-cache
/ZeroTier One.msi
/windows/.vs
*.vcxproj.backup
/windows/TapDriver6/Win7Debug
/windows/TapDriver6/win7Release
/windows/*.db
/windows/*.opendb
enc_temp_folder
/windows/copyutil/bin
/windows/copyutil/obj
# *nix/Mac build droppings
/build-*
/ZeroTierOneInstaller-*
/examples/docker/zerotier-one
/examples/docker/test-*.env
/world/mkworld
/world/*.c25519
zt1-src.tar.gz
/MacEthernetTapAgent
# Miscellaneous temporaries, build files, etc.
.vscode
__pycache__
*.log
*.bak
*.opensdf
*.user
*.cache
@ -63,10 +26,6 @@ zt1-src.tar.gz
*.pid
*.pkg
*.o
/*.a
*.dylib
*.so
*.so.*
*.o-*
*.core
*.deb
@ -75,49 +34,6 @@ zt1-src.tar.gz
*.tmp
.depend
node_modules
zt1_update_*
debian/files
debian/zerotier-one
debian/zerotier-one*.debhelper
debian/*.log
debian/zerotier-one.substvars
root-watcher/config.json
# Java/Android/JNI build droppings
java/obj/
java/libs/
java/bin/
java/classes/
java/doc/
java/build_win64/
java/build_win32/
/java/mac32_64/
windows/WinUI/obj/
windows/WinUI/bin/
windows/ZeroTierOne/Debug/
/ext/installfiles/windows/chocolatey/zerotier-one/*.nupkg
# Miscellaneous mac/Xcode droppings
.DS_Store
.Trashes
*.swp
*~.nib
DerivedData/
build/
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
!default.pbxuser
!default.mode1v3
!default.mode2v3
!default.perspectivev3
*.xccheckout
xcuserdata/
ext/librethinkdbxx/build
.vscode
__pycache__
*~
attic/world/*.c25519
attic/world/mkworld
workspace/
*.vcxproj.backup
/*.db
/*.opendb

View file

@ -9,7 +9,7 @@
* Java JNI Interface to enable Android application development, and Android app itself (code for that is elsewhere)<br>
Grant Limberg / glimberg@gmail.com
* ZeroTier SDK (formerly known as Network Containers)<br>
* ZeroTier SDK / libzt<br>
Joseph Henry / joseph.henry@zerotier.com
## Third Party Contributors
@ -32,44 +32,30 @@ ZeroTier includes the following third party code, either in ext/ or incorporated
* LZ4 compression algorithm by Yann Collet
* Files: node/Packet.cpp (bundled within anonymous namespace)
* Files: node/LZ4.cpp
* Home page: http://code.google.com/p/lz4/
* License grant: BSD 2-clause
* http-parser by Joyent, Inc. (many authors)
* Files: ext/http-parser/*
* Home page: https://github.com/joyent/http-parser/
* License grant: MIT/Expat
* License: BSD 2-clause
* C++11 json (nlohmann/json) by Niels Lohmann
* Files: ext/json/*
* Home page: https://github.com/nlohmann/json
* License grant: MIT
* License: MIT
* tap-windows6 by the OpenVPN project
* Files: windows/TapDriver6/*
* Home page: https://github.com/OpenVPN/tap-windows6/
* License grant: GNU GPL v2
* ZeroTier Modifications: change name of driver to ZeroTier, add ioctl() to get L2 multicast memberships (source is in ext/ and modifications inherit GPL)
* License: GNU GPL v2
* Salsa20 stream cipher, Curve25519 elliptic curve cipher, Ed25519 digital signature algorithm, and Poly1305 MAC algorithm, all by Daniel J. Bernstein
* Files: node/Salsa20.* node/C25519.* node/Poly1305.*
* Home page: http://cr.yp.to/
* License grant: public domain
* ZeroTier Modifications: slight cryptographically-irrelevant modifications for inclusion into ZeroTier core
* MiniUPNPC and libnatpmp by Thomas Bernard
* Files: ext/libnatpmp/* ext/miniupnpc/*
* Home page: http://miniupnp.free.fr/
* License grant: BSD attribution no-endorsement
* License: public domain
* cpp-httplib by yhirose
* Files: ext/cpp-httplib/*
* Home page: https://github.com/yhirose/cpp-httplib
* License grant: MIT
* License: MIT

View file

@ -1,12 +1,346 @@
# CMake build script for libzerotiercore.a
cmake_minimum_required (VERSION 3.8)
cmake_minimum_required (VERSION 2.8)
project (zerotiercore)
cmake_policy(SET CMP0048 NEW)
set (PROJ_DIR ${PROJECT_SOURCE_DIR})
set (ZT_DEFS -std=c++11)
if(${CMAKE_VERSION} VERSION_LESS 3.15)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
else()
cmake_policy(VERSION 3.15)
endif()
file(GLOB core_src_glob ${PROJ_DIR}/node/*.cpp)
add_library(zerotiercore STATIC ${core_src_glob})
set(ZEROTIER_VERSION_MAJOR 1 CACHE INTERNAL "")
set(ZEROTIER_VERSION_MINOR 9 CACHE INTERNAL "")
set(ZEROTIER_VERSION_REVISION 0 CACHE INTERNAL "")
set(ZEROTIER_VERSION_BUILD 0 CACHE INTERNAL "")
target_compile_options(zerotiercore PRIVATE ${ZT_DEFS})
project(zerotier
VERSION ${ZEROTIER_VERSION_MAJOR}.${ZEROTIER_VERSION_MINOR}.${ZEROTIER_VERSION_REVISION}.${ZEROTIER_VERSION_BUILD}
DESCRIPTION "ZeroTier Network Hypervisor"
LANGUAGES CXX C)
if(NOT PACKAGE_STATIC)
find_program(
GO go
HINTS "/usr/local/go/bin" "/usr/bin" "/usr/local/bin" "C:/go/bin"
)
if(NOT GO)
message(FATAL_ERROR "Golang not found")
else(NOT GO)
message(STATUS "Found Golang at ${GO}")
endif(NOT GO)
set(default_build_type "Release")
if(WIN32)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_SYSTEM_VERSION "7" CACHE STRING INTERNAL FORCE)
else(WIN32)
if(APPLE)
set(CMAKE_CXX_STANDARD 17)
else(APPLE)
set(CMAKE_CXX_STANDARD 11)
endif(APPLE)
endif(WIN32)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
option(BUILD_CENTRAL_CONTROLLER "Build ZeroTier Central Controller" OFF)
if(BUILD_CENTRAL_CONTROLLER)
find_package(PkgConfig REQUIRED)
if(APPLE)
set(CMAKE_PREFIX_PATH
${CMAKE_PREFIX_PATH}
/usr/local/opt/libpq
/usr/local/lib
)
endif(APPLE)
find_package(PostgreSQL REQUIRED)
pkg_check_modules(hiredis REQUIRED IMPORTED_TARGET hiredis)
add_subdirectory(controller/thirdparty/redis-plus-plus-1.1.1)
set(redispp_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/controller/thirdparty/redis-plus-plus-1.1.1/src/sw)
set(redispp_STATIC_LIB redispp_static)
endif(BUILD_CENTRAL_CONTROLLER)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DZT_DEBUG)
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
if(WIN32)
message("++ Setting Windows Compiler Flags ${CMAKE_BUILD_TYPE}")
add_definitions(-DNOMINMAX)
add_compile_options(
-Wall
-Wno-deprecated
-Wno-unused-function
-Wno-format
$<$<CONFIG:DEBUG>:-g>
$<$<CONFIG:DEBUG>:-O0>
$<$<CONFIG:RELEASE>:-O3>
$<$<CONFIG:RELEASE>:-ffast-math>
$<$<CONFIG:RELWITHDEBINFO>:-O3>
$<$<CONFIG:RELWITHDEBINFO>:-g>
)
set(GOFLAGS
-a
-trimpath
)
if(BUILD_32BIT)
set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
set(GOARCH "GOARCH=386" CACHE STRING "go architecture")
add_compile_options(
-m32
)
add_link_options(
-m32
)
endif(BUILD_32BIT)
else(WIN32)
set(GOFLAGS
-trimpath
-buildmode=pie
)
if(APPLE)
message("++ Setting MacOS Compiler Flags ${CMAKE_BUILD_TYPE}")
set(MACOS_VERSION_MIN "10.12")
add_compile_options(
-Wall
-Wno-deprecated
-Wno-unused-function
-mmacosx-version-min=${MACOS_VERSION_MIN}
$<$<CONFIG:DEBUG>:-g>
$<$<CONFIG:DEBUG>:-O0>
$<$<CONFIG:RELEASE>:-Ofast>
$<$<CONFIG:RELEASE>:-ffast-math>
$<$<CONFIG:RELEASE>:-fPIE>
$<$<CONFIG:RELEASE>:-flto>
$<$<CONFIG:RELWITHDEBINFO>:-O1>
$<$<CONFIG:RELWITHDEBINFO>:-fPIE>
$<$<CONFIG:RELWITHDEBINFO>:-g>
)
add_link_options(
-mmacosx-version-min=${MACOS_VERSION_MIN}
$<$<CONFIG:RELEASE>:-flto>
)
set(GOFLAGS
${GOFLAGS}
-a
-ldflags '-w -extldflags \"-Wl,-undefined -Wl,dynamic_lookup\"'
)
else(APPLE)
message("++ Setting Linux/BSD/Posix Compiler Flags (${CMAKE_BUILD_TYPE})")
add_compile_options(
-Wall
-Wno-deprecated
-Wno-unused-function
-Wno-format
$<$<CONFIG:DEBUG>:-g>
$<$<CONFIG:DEBUG>:-O0>
$<$<CONFIG:RELEASE>:-O3>
$<$<CONFIG:RELEASE>:-ffast-math>
$<$<CONFIG:RELEASE>:-fPIE>
$<$<CONFIG:RELWITHDEBINFO>:-O3>
$<$<CONFIG:RELWITHDEBINFO>:-fPIE>
$<$<CONFIG:RELWITHDEBINFO>:-g>
)
option(BUILD_32BIT "Force building as 32-bit binary" OFF)
option(BUILD_STATIC "Build statically linked executable" OFF)
option(BUILD_ARM_V5 "Build ARMv5" OFF)
option(BUILD_ARM_V6 "Build ARMv6" OFF)
if(BUILD_ARM_V5 AND BUILD_ARM_V6)
message(FATAL_ERROR "BUILD_ARM_V5 and BUILD_ARM_V6 are mutually exclusive!")
endif(BUILD_ARM_V5 AND BUILD_ARM_V6)
if(BUILD_32BIT)
set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
set(GOARCH "GOARCH=386" CACHE STRING "go architecture")
add_compile_options(
-m32
)
endif(BUILD_32BIT)
if(BUILD_STATIC)
add_link_options(
-static
)
set(CMAKE_EXE_LINKER_FLAGS "-static ${CMAKE_EXE_LINKER_FLAGS}")
set(GOFLAGS
${GOFLAGS}
-a
-tags osusergo,netgo
-ldflags '-w -extldflags \"-static -Wl,-unresolved-symbols=ignore-all\"'
)
else(BUILD_STATIC)
set(GOFLAGS
${GOFLAGS}
-a
-ldflags '-w -extldflags \"-Wl,-unresolved-symbols=ignore-all\"'
)
endif(BUILD_STATIC)
if(BUILD_ARM_V5)
set(GOARM "GOARM=5")
endif(BUILD_ARM_V5)
if(BUILD_ARM_V6)
set(GOARM "GOARM=6")
endif(BUILD_ARM_V6)
endif(APPLE)
endif(WIN32)
if (
CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "amd64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "X86_64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "x64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "X64"
)
message("++ Adding flags for processor ${CMAKE_SYSTEM_PROCESSOR}")
add_compile_options(-maes -mrdrnd -mpclmul -msse -msse2)
endif()
if (
CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "arm64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "AARCH64"
)
message("++ Adding flags for processor ${CMAKE_SYSTEM_PROCESSOR}")
add_compile_options(-march=armv8-a+aes+crypto -mtune=generic -mstrict-align)
endif()
set(GO_BUILD_TAGS)
if(BUILD_CENTRAL_CONTROLLER)
add_definitions(-DZT_CONTROLLER_USE_LIBPQ=1)
set(GO_BUILD_TAGS -tags central)
endif(BUILD_CENTRAL_CONTROLLER)
add_subdirectory(core)
add_subdirectory(controller)
add_subdirectory(osdep)
add_subdirectory(serviceiocore)
file(GLOB go_src
${CMAKE_SOURCE_DIR}/cmd/*.go
${CMAKE_SOURCE_DIR}/cmd/cmd/*.go
${CMAKE_SOURCE_DIR}/pkg/zerotier/*.go
)
file(GLOB go_zt_service_tests_cmd_src
${CMAKE_SOURCE_DIR}/cmd/zt_service_tests/*.go
)
if(WIN32)
set(GO_EXE_NAME "zerotier.exe")
set(GO_SERVICE_TESTS_EXE_NAME "zt_service_tests.exe")
set(GO_EXTRA_LIBRARIES "-lstdc++ -lwsock32 -lws2_32 -liphlpapi -lole32 -loleaut32 -lrpcrt4 -luuid")
else(WIN32)
set(GO_EXE_NAME "zerotier")
set(GO_SERVICE_TESTS_EXE_NAME "zt_service_tests")
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
set(GO_EXTRA_LIBRARIES "-lstdc++")
if(BUILD_ARM_V5)
set(GO_EXTRA_LIBRARIES
${GO_EXTRA_LIBRARIES}
"-latomic"
)
endif(BUILD_ARM_V5)
else()
set(GO_EXTRA_LIBRARIES "-lc++" "-lm")
endif()
endif(WIN32)
add_custom_target(
zt_service_tests ALL
BYPRODUCTS ${CMAKE_BINARY_DIR}/zt_service_tests
SOURCES ${go_src} ${go_zt_service_tests_cmd_src}
COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} ${GOARM} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$<TARGET_FILE:zt_core> $<TARGET_FILE:zt_controller> $<TARGET_FILE:zt_service_io_core> $<TARGET_FILE:zt_osdep> ${GO_EXTRA_LIBRARIES}\" ${GO} build -mod=vendor ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_SERVICE_TESTS_EXE_NAME} ${go_zt_service_tests_cmd_src}
COMMENT "Compiling zt_service_tests (Go/cgo self-tests)..."
)
add_dependencies(zt_service_tests zt_osdep zt_core zt_controller zt_service_io_core)
add_custom_target(
zerotier ALL
BYPRODUCTS ${CMAKE_BINARY_DIR}/zerotier
SOURCES ${go_src}
COMMAND ${CMAKE_COMMAND} -E env ${GOARCH} ${GOARM} CGO_ENABLED=1 CGO_CFLAGS=\"-O3\" CGO_LDFLAGS=\"$<TARGET_FILE:zt_core> $<TARGET_FILE:zt_controller> $<TARGET_FILE:zt_service_io_core> $<TARGET_FILE:zt_osdep> ${GO_EXTRA_LIBRARIES}\" ${GO} build -mod=vendor ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/${GO_EXE_NAME} ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go
COMMENT "Compiling Go Code..."
)
add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zerotier DESTINATION bin)
else(NOT PACKAGE_STATIC)
if(BUILD_32BIT)
set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
add_compile_options(
-m32
)
endif(BUILD_32BIT)
set(STATIC_BINARY ${CMAKE_BINARY_DIR}/zerotier)
set(IMPORTED_LOCATION ${CMAKE_BINARY_DIR})
add_executable(zerotier IMPORTED GLOBAL)
install(PROGRAMS ${STATIC_BINARY} DESTINATION bin)
endif(NOT PACKAGE_STATIC)
# Linux packaging
if("${CMAKE_SYSTEM_NAME}" EQUAL "Linux")
if(IS_DIRECTORY /lib/systemd/system)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/zerotier.service
DESTINATION /lib/systemd/system
)
elseif(IS_DIRECTORY /usr/lib/systemd/system)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/zerotier.service
DESTINATION /usr/lib/systemd/system
)
else()
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/zerotier.init
DESTINATION /etc/init.d
)
endif()
endif()
if("${ZT_PACKAGE_FORMAT}" MATCHES "DEB")
include(packaging/debian.cmake)
elseif("${ZT_PACKAGE_FORMAT}" MATCHES "RPM")
include(packaging/rpm.cmake)
else()
endif()

View file

@ -1,5 +1,5 @@
ZeroTier One, an endpoint server for the ZeroTier virtual network layer.
Copyright © 20112019 ZeroTier, Inc.
Copyright © 20132020 ZeroTier, Inc.
ZeroTier is released under the terms of the BSL version 1.1. See the
file LICENSE.txt for details.

305
Jenkinsfile vendored
View file

@ -7,6 +7,9 @@ pipeline {
parameters {
booleanParam(name: "BUILD_ALL", defaultValue: false, description: "Build all supported platform/architecture combos. Defaults to x86/x64 only")
}
environment {
PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
}
agent none
@ -18,7 +21,10 @@ pipeline {
tasks << buildStaticBinaries()
tasks << buildDebianNative()
tasks << buildCentosNative()
tasks << buildMacOS()
tasks << buildWindows()
tasks << buildFreeBSD()
parallel tasks
}
}
@ -33,12 +39,81 @@ pipeline {
}
}
def buildMacOS() {
def tasks = [:]
tasks << getTasks(['mac'],['amd64'], {unused1, unused2 ->
def myNode = {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
node ('mac') {
dir("build") {
checkout scm
sh 'make'
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
return myNode
})
return tasks
}
def buildWindows() {
def tasks = [:]
tasks << getTasks(['windows'], ['amd64', 'i386'], { unused1, platform ->
def myNode = {
node ('windows') {
env.SHELL = 'C:/Windows/System32/cmd.exe'
dir ("build") {
checkout scm
dir ("build") {
withEnv(["PATH=C:\\TDM-GCC-64\\bin;C:\\WINDOWS;C:\\Windows\\system32;C:\\CMake\\bin;C:\\Go\\bin"]) {
def cmakeFlags = ""
if (platform == "i386") {
cmakeFlags = '-DBUILD_32BIT=1'
}
bat """
cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ${cmakeFlags} ..
mingw32-make -j8
"""
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
}
return myNode
})
return tasks
}
def buildFreeBSD() {
def tasks = [:]
tasks << getTasks(['freebsd12'], ['amd64'], { unused1, unused2 ->
def myNode = {
node ('freebsd12') {
dir('build') {
checkout scm
sh 'make setup'
dir('build') {
sh 'make -j4'
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
return myNode
})
return tasks
}
def buildStaticBinaries() {
def tasks = [:]
def dist = ["alpine"]
def archs = []
if (params.BUILD_ALL == true) {
archs = ["arm64", "amd64", "i386", "armhf", "armel", "ppc64le", "s390x"]
archs = ["arm64", "amd64", "i386", "armhf", "ppc64le", "s390x"]
} else {
archs = ["amd64", "i386"]
}
@ -46,17 +121,26 @@ def buildStaticBinaries() {
tasks << getTasks(dist, archs, { distro, platform ->
def myNode = {
node ('linux-build') {
env.PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
sh "echo ${distro}-${platform}"
def runtime = docker.image("ztbuild/${distro}-${platform}:latest")
runtime.inside {
dir("build") {
sh 'make -j8 ZT_STATIC=1 all'
sh "file ./zerotier-one"
sh "mv zerotier-one zerotier-one-static-${platform}"
stash includes: 'zerotier-one-static-*', name: "static-${platform}"
def cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1"'
if (platform == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1"'
} else if (platform == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DBUILD_ARM_V6=1"'
}
sh "${cmakeFlags} make"
dir("build") {
sh "mv zerotier zerotier-static-${platform}"
stash includes: 'zerotier-static-*', name: "static-${platform}"
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
@ -82,37 +166,13 @@ def getTasks(axisDistro, axisPlatform, task) {
def packageStatic() {
def tasks = [:]
def centos6 = ["centos6"]
def centos6Arch = ["i386", "amd64"]
tasks << getTasks(centos6, centos6Arch, { distro, arch ->
def myNode = {
node ('linux-build') {
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
dir("build") {
unstash "static-${arch}"
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one"
sh "make redhat"
sh "mkdir -p ${distro}"
sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/"
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
}
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
}
return myNode
})
def centos7 = ["centos7"]
def centos7Arch = ["i386"]
tasks << getTasks(centos7, centos7Arch, { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
@ -120,10 +180,14 @@ def packageStatic() {
runtime.inside {
dir("build") {
unstash "static-${arch}"
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one"
sh "make redhat"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh 'CMAKE_ARGS="-DBUILD_32BIT=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=RPM" make setup'
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/"
sh "cp -av build/*.rpm ${distro}/"
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
}
}
@ -134,22 +198,31 @@ def packageStatic() {
})
if (params.BUILD_ALL == true) {
def clefos7 = ["clefos"]
def clefos7Arch = ["s390x"]
tasks << getTasks(clefos7, clefos7Arch, { distro, arch ->
def s390xStatics = ["clefos", "debian-buster", "debian-sid", "debian-bullseye", "debian-stretch", "ubuntu-bionic", "ubuntu-eoan", "ubuntu-focal"]
def s390x = ["s390x"]
tasks << getTasks(s390xStatics, s390x , { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
def pkgFormat = "DEB"
if (distro == "clefos") {
pkgFormat = "RPM"
}
runtime.inside {
dir("build/") {
unstash "static-${arch}"
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one"
sh "make redhat"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh "CMAKE_ARGS=\"-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=${pkgFormat}\" make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/"
sh "cp -av build/*.rpm ${distro}/"
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
}
}
@ -163,30 +236,40 @@ def packageStatic() {
def debianJessie = ["debian-jessie"]
def debianJessieArchs = []
if (params.BUILD_ALL == true) {
debianJessieArch = ["armhf", "armel", "amd64", "i386"]
debianJessieArch = ["armhf", "amd64", "i386"]
} else {
debianJessieArch = ["amd64", "i386"]
}
tasks << getTasks(debianJessie, debianJessieArch, { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
sh "ls -la ."
dir('build/') {
sh "ls -la ."
def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
if (arch == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
unstash "static-${arch}"
sh "pwd"
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one && file ./zerotier-one"
sh "mv -f debian/rules.static debian/rules"
sh "make debian"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh "${cmakeFlags} make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av build/*.deb ${distro}/"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
}
sh "mkdir -p ${distro}"
sh "mv *.deb ${distro}"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
@ -197,30 +280,40 @@ def packageStatic() {
def ubuntuTrusty = ["ubuntu-trusty"]
def ubuntuTrustyArch = []
if (params.BUILD_ALL == true) {
ubuntuTrustyArch = ["i386", "amd64", "armhf", "arm64", "ppc64le"]
ubuntuTrustyArch = ["i386", "amd64", "arm64", "ppc64le"]
} else {
ubuntuTrustyArch = ["i386", "amd64"]
}
tasks << getTasks(ubuntuTrusty, ubuntuTrustyArch, { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
sh "ls -la ."
dir('build/') {
sh "ls -la ."
def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
if (arch == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
unstash "static-${arch}"
sh "pwd"
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one && file ./zerotier-one"
sh "mv -f debian/rules.static debian/rules"
sh "make debian"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh "${cmakeFlags} make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av build/*.deb ${distro}/"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
}
sh "mkdir -p ${distro}"
sh "mv *.deb ${distro}"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
@ -231,28 +324,39 @@ def packageStatic() {
def debianWheezy = ["debian-wheezy"]
def debianWheezyArchs = []
if (params.BUILD_ALL == true) {
debianWheezyArchs = ["armhf", "armel", "amd64", "i386"]
debianWheezyArchs = ["armhf", "amd64", "i386"]
} else {
debianWheezyArchs = ["amd64", "i386"]
}
tasks << getTasks(debianJessie, debianJessieArch, { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
dir('build/') {
def cmakeFlags = 'CMAKE_ARGS="-DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
if (arch == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_STATIC=1 -DPACKAGE_STATIC=1 -DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
unstash "static-${arch}"
sh "mv zerotier-one-static-${arch} zerotier-one && chmod +x zerotier-one && file ./zerotier-one"
sh "mv -f debian/rules.wheezy.static debian/rules"
sh "mv -f debian/control.wheezy debian/control"
sh "make debian"
sh "mkdir -p build"
sh "mv zerotier-static-${arch} build/zerotier && chmod +x build/zerotier"
sh "${cmakeFlags} make setup"
dir("build") {
sh 'make package -j4 VERBOSE=1'
}
sh "mkdir -p ${distro}"
sh "cp -av build/*.deb ${distro}/"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
}
sh "mkdir -p ${distro}"
sh "mv *.deb ${distro}"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
}
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
@ -265,27 +369,40 @@ def packageStatic() {
def buildDebianNative() {
def tasks = [:]
def buster = ["debian-buster", "debian-stretch", "debian-bullseye", "debian-sid"]
def busterArchs = []
def debian = ["debian-buster" , "debian-stretch", "debian-sid", "debian-bullseye"]
def debianArchs = []
if (params.BUILD_ALL) {
busterArchs = ["s390x", "ppc64le", "i386", "armhf", "armel", "arm64", "amd64"]
debianArchs = ["ppc64le", "i386", "armhf", "armel", "arm64", "amd64"]
} else {
busterArchs = ["amd64", "i386"]
debianArchs = ["amd64", "i386"]
}
def build = { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
def cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB"'
if (arch == "i386") {
cmakeFlags = 'CMAKE_ARGS="-DBUILD_32BIT=1 -DZT_PACKAGE_FORMAT=DEB"'
} else if (arch == "armel") {
cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V5=1"'
} else if (arch == "armhf") {
cmakeFlags = 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=DEB -DBUILD_ARM_V6=1"'
}
dir("build") {
sh 'make debian'
sh "${cmakeFlags} make setup"
dir("build") {
sh "make package -j4 VERBOSE=1"
}
}
sh "mkdir -p ${distro}"
sh "mv *.deb ${distro}"
sh "mv build/build/*.deb ${distro}"
archiveArtifacts artifacts: "${distro}/*.deb", onlyIfSuccessful: true
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}
@ -294,8 +411,8 @@ def buildDebianNative() {
return myNode
}
tasks << getTasks(buster, busterArchs, build)
tasks << getTasks(debian, debianArchs, build)
// bash is broken when running under QEMU-s390x on Xenial
def xenial = ["ubuntu-xenial"]
def xenialArchs = []
@ -309,12 +426,21 @@ def buildDebianNative() {
def ubuntu = ["ubuntu-bionic", "ubuntu-eoan"]
def ubuntuArchs = []
if (params.BUILD_ALL == true) {
ubuntuArchs = ["i386", "amd64", "armhf", "arm64", "ppc64le", "s390x"]
ubuntuArchs = ["i386", "amd64", "armhf", "arm64", "ppc64le"]
} else {
ubuntuArchs = ["i386", "amd64"]
}
tasks << getTasks(ubuntu, ubuntuArchs, build)
def ubuntuFocal = ["ubuntu-focal"]
def ubuntuFocalArchs = []
if (params.BUILD_ALL == true) {
ubuntuFocalArchs = ["amd64", "arm64", "ppc64le"]
} else {
ubuntuFocalArchs = ["amd64"]
}
tasks << getTasks(ubuntuFocal, ubuntuFocalArchs, build)
def kali = ["kali-rolling"]
def kaliArchs = ["amd64"]
tasks << getTasks(kali, kaliArchs, build)
@ -328,18 +454,29 @@ def buildCentosNative() {
def build = { distro, arch ->
def myNode = {
node ('linux-build') {
env.PATH = env.PATH + ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/home/jenkins-build/go/bin"
dir ("build") {
checkout scm
}
def runtime = docker.image("ztbuild/${distro}-${arch}:latest")
runtime.inside {
dir("build") {
sh 'make -j4'
sh 'make redhat'
sh "mkdir -p ${distro}"
sh "cp -av `find ~/rpmbuild/ -type f -name \"*.rpm\"` ${distro}/"
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
if (distro == 'centos7' && arch == 'amd64') {
sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && CMAKE_ARGS="-DZT_PACKAGE_FORMAT=RPM" make setup'
} else {
sh 'CMAKE_ARGS="-DZT_PACKAGE_FORMAT=RPM" make setup'
}
dir ("build") {
if (distro == 'centos7' && arch == 'amd64') {
sh 'source scl_source enable devtoolset-8 llvm-toolset-7 && make package -j4 VERBOSE=1'
} else {
sh 'make package -j4 VERBOSE=1'
}
}
}
sh "mkdir -p ${distro}"
sh "cp -av build/build/*.rpm ${distro}/"
archiveArtifacts artifacts: "${distro}/*.rpm", onlyIfSuccessful: true
cleanWs deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true
}

View file

@ -10,8 +10,8 @@ License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
Parameters
Licensor: ZeroTier, Inc.
Licensed Work: ZeroTier Network Virtualization Engine 1.4.4
The Licensed Work is (c)2019 ZeroTier, Inc.
Licensed Work: ZeroTier Network Virtualization Engine
The Licensed Work is (c)2013-2020 ZeroTier, Inc.
Additional Use Grant: You may make use of the Licensed Work, provided you
do not use it in any of the following ways:
@ -26,7 +26,7 @@ Additional Use Grant: You may make use of the Licensed Work, provided you
ZeroTier behind the scenes to operate a service not
related to ZeroTier network administration.
* Create Non-Open-Source Commercial Derviative Works
* Create Non-Open-Source Commercial Derivative Works
(2) Link or directly include the Licensed Work in a
commercial or for-profit application or other product
@ -47,7 +47,7 @@ Additional Use Grant: You may make use of the Licensed Work, provided you
services, social welfare, senior care, child care, and
the care of persons with disabilities.
Change Date: 2023-01-01
Change Date: 2025-01-01
Change License: Apache License version 2.0 as published by the Apache
Software Foundation

View file

@ -1,28 +1,31 @@
# Common makefile -- loads make rules for each platform
BUILDDIR := build
TIMESTAMP=$(shell date +"%Y%m%d%H%M")
OSTYPE=$(shell uname -s)
.PHONY: all
ifeq ($(OSTYPE),Darwin)
include make-mac.mk
endif
all: setup
cd ${BUILDDIR} && $(MAKE) -j4 VERBOSE=1
ifeq ($(OSTYPE),Linux)
include make-linux.mk
endif
setup:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Release ${CMAKE_ARGS}
ifeq ($(OSTYPE),FreeBSD)
CC=clang
CXX=clang++
ZT_BUILD_PLATFORM=7
include make-bsd.mk
endif
ifeq ($(OSTYPE),OpenBSD)
CC=egcc
CXX=eg++
ZT_BUILD_PLATFORM=9
include make-bsd.mk
endif
setup-debug:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Debug ${CMAKE_ARGS}
ifeq ($(OSTYPE),NetBSD)
include make-netbsd.mk
endif
debug:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Debug ${CMAKE_ARGS} && $(MAKE)
central-controller:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_CENTRAL_CONTROLLER=1 ${CMAKE_ARGS} && $(MAKE) -j4
central-controller-debug:
mkdir -p ${BUILDDIR} && cd ${BUILDDIR} && cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_CENTRAL_CONTROLLER=1 ${CMAKE_ARGS} && $(MAKE) -j4
central-controller-docker:
docker build -t registry.zerotier.com/zerotier-central/ztcentral-controller:${TIMESTAMP} -f controller/central-docker/Dockerfile .
clean:
rm -rf ${BUILDDIR}
distclean:
rm -rf ${BUILDDIR}

View file

@ -1,6 +1,43 @@
ZeroTier Release Notes
======
# Version 1.9.0 (2.0 beta)
Version 2.0 is a very significant release with many changes. It remains backward compatibility to version 1.4.0 (and possibly earlier versions but this is not guaranteed) but makes numerous local and behavioral changes that should be reviewed before upgrading production systems.
After this release we're going to be working to get to a more frequent, less extreme, more "agile" release cadence.
Protocol changes:
* Trusted paths have been completely removed. The new AES mode is so fast on CPUs with AES acceleration that much of the rationale for this is gone, and this feature was never used much to begin with due to inconvenience and obvious security concerns. Environments using trusted paths will need to upgrade all nodes at once.
* The symmetric encryption algorithm and mode is now AES-GMAC-SIV, a variation of AES-GCM using the same primitives but offering superior security bounds and behavior under non-ideal conditions. It's also a lot faster than Salsa20/12 and Poly1305 on CPUs with AES acceleration (almost all desktops, laptops, and newer routers and phones). Salsa20/12 with Poly1305 is still supported for communication with older versions and small devices that lack AES acceleration.
* A new identity type (1) has been introduced that contains both Curve25519 and NIST P-384 public key types, but classic type 0 remains the default for new identities for now. ECDH key agreement between V1 identities uses both keys and hashes the resulting secrets to yield security equal to the best of the two, but V1 identities can also agree with V0 identities using only their Curve25519 component.
* Roots can now be joined and left like networks in a much more convenient way, and the old "moon" and "planet" terminology is deprecated.
* A new peer to peer multicast algorithm has been introduced that offers much better scalability and better performance, especially when the physical network itself is hub-and-spoke with many low latency peers connected by higher latency WAN links.
* Forward secrecy is finally supported via periodic re-keying using ephemeral asymmetric keys. Both Curve25519 and NIST P-384 keys are used with secrets being hashed to provide security equal to the stronger of the two curves.
* As part of forward secrecy implementation peers now always exchange HELLO messages even if they don't have a direct path.
* Compression is only enabled for control packets as almost all data packets are largely un-compressable.
* New NAT traversal tricks have been added, such as (ab)use of port 500.
Code changes:
* Migrated from GNU make to cmake for easier cross platform builds and simplified build files.
* The core network hypervisor has been significantly refactored, almost amounting to a partial rewrite.
* Critical packet handling paths have been streamlined with unnecessary memcpy() steps removed.
* Host service code has been completely rewritten in Go. Packet handling code remains in C++, but Go offers superior developer productivity when it comes to implementing more complex local service and local API features. Go imposes a little bit more memory overhead but not much and has been tuned to minimize memory use.
User interface:
* Command line interface has been redesigned and rewritten. Old commands names are supported but their output will be different.
Other things:
* The V2 design, protocol, and cryptographic primitives (AES-GMAC-SIV) have been security audited by [Trail of Bits](https://www.trailofbits.com), and the code is being audited as well prior to full 2.0 release.
---
# Older version release notes
# 2019-08-30 -- Version 1.4.6
* Update default root list to latest

119
attic/PeerList.hpp Normal file
View file

@ -0,0 +1,119 @@
/*
* Copyright (c)2013-2020 ZeroTier, Inc.
*
* Use of this software is governed by the Business Source License included
* in the LICENSE.TXT file in the project's root directory.
*
* Change Date: 2025-01-01
*
* On the date above, in accordance with the Business Source License, use
* of this software will be governed by version 2.0 of the Apache License.
*/
/****/
#ifndef ZT_PEERLIST_HPP
#define ZT_PEERLIST_HPP
#include "Constants.hpp"
#include "SharedPtr.hpp"
#include "Peer.hpp"
namespace ZeroTier {
/**
* A list of peers
*
* This is a simple vector optimized for the case where there will almost always
* be zero or one element. In that case it doesn't allocate. If there's more than
* one element, it will grow to include all elements.
*
* It's used to return lookups in Topology where there will almost always be zero
* or one peers returned but where there technically (but very rarely) can be more.
*/
class PeerList
{
public:
ZT_INLINE PeerList() noexcept:
m_onePeer(),
m_peers(&m_onePeer),
m_peerCount(0)
{}
ZT_INLINE PeerList(const PeerList &pl)
{
const unsigned int pc = pl.m_peerCount;
if (likely(pc <= 1)) {
m_onePeer = pl.m_onePeer;
m_peers = &m_onePeer;
} else {
m_peers = new SharedPtr<Peer>[pc];
for (unsigned int i = 0;i < pc;++i)
m_peers[i] = pl.m_peers[i];
}
m_peerCount = pc;
}
ZT_INLINE ~PeerList()
{
if (unlikely(m_peers != &m_onePeer))
delete[] m_peers;
}
ZT_INLINE PeerList &operator=(const PeerList &pl)
{
if (&pl != this) {
if (unlikely(m_peers != &m_onePeer))
delete[] m_peers;
if (likely(pl.m_peerCount <= 1)) {
m_onePeer = pl.m_onePeer;
m_peers = &m_onePeer;
} else {
m_onePeer.zero();
m_peers = new SharedPtr<Peer>[pl.m_peerCount];
for (unsigned int i = 0;i < pl.m_peerCount;++i)
m_peers[i] = pl.m_peers[i];
}
m_peerCount = pl.m_peerCount;
}
return *this;
}
/**
* Resize the peer list to store a given number of members
*
* To populate the list, this must be called first followed by each member
* being set with the [] operator. List content after this call is undefined
* and may contain old data if the object is being re-used.
*
* @param s New size of list
*/
ZT_INLINE void resize(const unsigned int s)
{
if (unlikely(m_peers != &m_onePeer))
delete[] m_peers;
m_peerCount = s;
if (likely(s <= 1)) {
m_peers = &m_onePeer;
} else {
m_peers = new SharedPtr<Peer>[s];
}
}
ZT_INLINE SharedPtr <Peer> &operator[](const unsigned int i) noexcept
{ return m_peers[i]; }
ZT_INLINE const SharedPtr <Peer> &operator[](const unsigned int i) const noexcept
{ return m_peers[i]; }
ZT_INLINE unsigned int size() const noexcept
{ return m_peerCount; }
private:
SharedPtr <Peer> m_onePeer;
SharedPtr <Peer> *m_peers;
unsigned int m_peerCount;
};
} // namespace ZeroTier
#endif

BIN
attic/doc/2015-GCM-SIV.pdf Normal file

Binary file not shown.

BIN
attic/doc/AES-GMAC-SIV.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

149
attic/doc/SECURITY.md Normal file
View file

@ -0,0 +1,149 @@
ZeroTier security and cryptographic design
=======
(c)2020 ZeroTier, Inc.
Author(s): Adam Ierymenko <adam@zerotier.com>
# Introduction
This document describes the core components of ZeroTier's cryptographic and security architecture. It focuses primarily on version 2.0 and only briefly touches on v1.x constructions that are being phased out.
The intended audience for this document is developers, auditors, and security professionals wishing to understand ZeroTier's design from a security posture point of view. It's also written to serve as the basis for professional security audits of the ZeroTier protocol and code base.
## High-Level Protocol Design
ZeroTier's protocol is split into two conceptual layers that we term **VL1** and **VL2**.
VL1 stands for *virtual layer 1* and is a cryptographically addressed secure global peer-to-peer network responsible for moving packets between ZeroTier nodes. It's a virtual analogue of the physical wire or radio transciever in an Ethernet or WiFi network respectively. Think of it as a gigantic wire closet for planet Earth.
VL2 stands for *virtual layer 2* and is a full Ethernet emulation layer incorporating cryptographic certificate and token based access control. It is similar (but not identical) to other Ethernet virtualization protocols like VXLAN. VL2 is conceptually separate from VL1 but for the sake of simplicity and ease of use leverages VL1's cryptographic infrastructure for its own authentication needs.
## VL1 Asymmetric Cryptography: Identities, and Addressing
VL1 peers are cryptographically addressed, meaning addresses are strongly bound to public keys. Cryptographic addressing is extremely convenient in peer-to-peer networks as it leverages authenticated (AEAD) encryption to implicity authenticate endpoint addresses.
A ZeroTier identity is comprised of one or more cryptographic public keys and a short **ZeroTier address** derived from a hash of those keys. In addition to this short address there also exists a longer fingerprint in the form of a SHA-384 hash of identity public key(s).
#### Identity Types and Corresponding Algorithms
* **Type 0** (v1.x and v2.x): one Curve25519 key for elliptic curve Diffie-Hellman and one Ed25519 key for Ed25519 signatures, with the address and fingerprint computed from a hash of both.
* **Type 1** (v2.x only): Curve25519, Ed25519, and NIST P-384 public keys, with the latter being used for signatures (the Ed25519 key is still there but is presently unused) and with *both* Curve25519 and NIST P-384 being used for elliptic curve Diffie-Hellman key agreement. In key agreement the resulting raw secret keys are hashed together using SHA-384 to combine them and yield a single session key.
Session keys resulting from identity key exchange and agreement are *long-lived keys* that remain static for the lifetime of a particular pair of identities. A different mechanism is used for ephemeral key negotiation.
#### ZeroTier Addresses and Identity Fingerprints
In the simplest form of cryptographic addressing, keys are used directly as addresses throughout the system. Unfortunately even public key cryptosystems with short keys like Curve25519 still result in string representations that are prohibitively long for human beings to type. ZeroTier mitigates this usability problem by using a short hash of the public key termed a **ZeroTier address** to refer to a peer's full identity. This short address is also used at the wire level to reduce the size of the packet header. Peers may request full identities based on addresses from from root servers.
ZeroTier addresses are very short: only 40 bits or 10 hexadecimal digits, e.g. `89e92ceee5.` This makes them convenient to type, but such a short hash would in a naive implementation introduce a significant risk that an attacker could create a duplicate identity with a different key pair but the same address. With 40 bits an intentional collision would require only an average of about 549,755,813,888 attempts for a 50% chance of colliding. If an attempt requires 0.5ms of CPU time on a typical contemporary desktop or server CPU, this would require about 3,000 CPU-days. Since this type of search is easy to parallelize, it would take only a few days for someone with access to a few thousand CPU cores.
To provide this short hash with a larger security margin, an intentionally slow one-way "hashcash" or "proof of work" function is required during identity generation. This work function is slow to compute but fast to verify, and an address is not valid unless its work checks out. This gives identity address derivation the following costs:
* Type 1 identities: an average of about 500ms per key pair per typical 2.4ghz CPU core, requiring around 3 million CPU-days to reach a 50% collision probability.
* Type 2 identities: an average of about one second per key pair per typical 2.4ghz CPU core, requiring around 6.3 million CPU-days to reach a 50% collision probability.
While too costly for the vast majority of attackers, this cost may not be prohibitive to a nation-state level attacker or to a criminal with significant funds and/or access to a very large "botnet." It's also possible that FPGA, GPU, or ASIC acceleration could be leveraged to decrease this time in a manner similar to what's been accomplished in the area of cryptocurrency mining.
Fingerprints are full SHA-384 hashes of identity public keys. In base32-encoding they look like this:
```
bzg7fc3sn46fzyxcxw2ev4c4m2u5fyisb3o4wz5hfmvexbzwk6et3fsglkdcn6nnjobxi3bq7hgxqox3n4u4k
```
These are too large to type but not to copy/paste, store in databases, or use in scripts and APIs.
Once a device has joined a network, network controllers will remember and check its full identity or identity fingerprint (depending on implementation) rather than just the device's ZeroTier address.
## VL1 Wire Protocol
ZeroTier's wire protocol is packet based with packets having the following format:
```
[0:8] 64-bit packet ID and cryptographic nonce
[8:13] 40-bit destination ZeroTier address
[13:18] 40-bit source ZeroTier address
[18:19] 8-bit cleartext flags, cipher, and hop count (bits: FFCCCHHH)
[19:27] 64-bit message authentication code (MAC)
-- BEGIN ENCRYPTED SECTION --
[27:28] 8-bit inner flags and 5-bit protocol verb (bits: FFFVVVVV)
[28:...] Verb-specific packet payload
```
All fields (both those that remain cleartext and those that are encrypted) in a packet are authenticated except for the last three "hops" bits of the combined flags/cipher/hops field. These are masked to zero during MAC computation and verification. This is because the hops field is the only field that can be modified by third party peers in transit. It's incremented whenever a packet is forwarded by a root server or connectivity-assisting peer and is checked against a limit to prevent infinite forwarding loops.
Packets can be up to 16,384 bytes in size. Since the most common transport is UDP and this transport does not reliably support fragmentation, ZeroTier implements its own packet fragmentation and re-assembly scheme using fragments with the following wire format:
```
[0:8] 64-bit packet ID of packet of which this is a fragment
[8:13] 40-bit destination ZeroTier address
[13:14] 0xff here indicates a fragment since addresses cannot start with this byte
[14:15] 4-bit total fragments and 4-bit fragment number (bits: TTTTNNNN)
[15:16] 5 reserved bits, 3-bit hop count (bits: rrrrrHHH)
[16:...] Fragment data
```
A fragmented packet is indicated by the presence of the flag 0x40 in its cleartext flags field. If this flag is present the receiver must expect the receipt of one or more fragments in addition to the packet's header and first fragment. The total number of fragments expected is not contained in the header but will be contained within each subsequent fragment. If a fragment is received prior to its head, it's held in the event that its head arrives as the protocol does support out of order receipt of fragments.
Fragmentation can be effectively ignored from a security point of view (with the exception of denial of service concerns, which are mitigated by way of limits and heuristics in the code) since packet message authentication codes are checked at the packet level. Any improperly fragmented packet will fail cryptographic MAC check and be discarded.
*Legacy: In v1.x the packet ID and nonce field was assigned from a counter maintained to avoid duplicate nonce assignment and the MAC field was the first 64 bits of a Poly1305 MAC of the packet. The overall construction was identical in form to the NaCl Salsa20/Poly1305 "secret box" construction in which the first 32 bytes of Salsa20 output are used as a one-time Poly1305 key for each packet.*
In v2.x the packet ID and MAC field are in reality a single split 128-bit encrypted nonce and MAC field. See AES-GMAC-SIV below.
## Symmetric Encryption: AES-GMAC-SIV
**This is a draft and may change based on peer review and feedback.**
In v1.x there is a risk of nonce re-use due in part to the small size of the MAC and in part to the way ZeroTier is used. More specifically the risk arises when ZeroTier VMs are cloned or ZeroTier is used on small devices that have the potential to lack both accurate timekeeping and native strong random sources.
Salsa20 was used in v1.x since at the time the protocol was initially designed AES acceleration was not available on most mobile phones, embedded chips, and small ARM processors such as those use on Raspberry Pi and similar devices. This is no longer the case.
For v2.x our design has three objectives:
- Make use of FIPS140-compliant cryptographic primitives that would be available in a FIPS140-ceritified library (e.g. a FIPS build of crypto++ or openssl libcrypto), and use them in a way that could pass FIPS/NIST/NSA review.
- Use AES with hardware acceleration for extremely high performance processors with AES hardware acceleration, which is most non-trivial CPUs today.
- Incorporate some form of nonce-reuse-resistance to reduce the risk of duplicate nonces when virtual machines are cloned or on small devices, and to mitigate the short MAC.
The proposed AES-GMAC-SIV construction attempts to achieve all these objectives by using GMAC combined with AES-CTR (both FIPS140 primitives) in a way that achieves the security bounds and characteristics of AES-GCM-SIV but could be certified as FIPS compliant. The design is almost identical to another proposed mode called AES-GCM-SIV except that GMAC is used "as-is" for FIPS-certifiability reasons.
#### AES-GMAC-SIV Session Setup
For each new session key, derive two sub-keys **K0** and **K1** using a key derivation function such as KBKDF-HMAC-SHA384.
#### AES-GMAC-SIV Encryption
<img src="AES-GMAC-SIV.png">
As with all other SIV (synthetic IV) modes of operation, encryption requires two passes. Since messages are small in our system it's very likely that the second pass would be operating on data already in CPU L0 cache, reducing the additional overhead of this two-pass requirement.
1. Generate a new unique 64-bit packet ID in the same manner as v1.x.
2. Expand this 64-bit ID to a 96-bit AES-GMAC nonce by padding the remainder with the size of the packet in bytes and the direction of communication (sender > recipient or recipient > sender). This adds a small amount of additional entropy taken from characteristics of the packet.
3. Using session sub-key **K0** compute AES-GMAC(K0, plaintext) to yield a 128-bit GMAC tag.
4. Take the first 64 bits of this 128-bit GMAC tag and append it to the 64-bit packet ID generated in step 1 to yield a 128-bit combined nonce+MAC field.
5. Obtain a 128-bit AES-CTR nonce by encrypting this 128-bit combined nonce+MAC field as a single AES block using **K1**. This is done because GMAC alone is not a cryptographic PRF (pseudo-random function) and we want to ensure that we destroy any algebraic structure before using it with AES-CTR.
6. Using the encrypted nonce+MAC field as a 128-bit nonce, encrypt the encrypted section of the packet with AES-CTR. This is also done using **K1**, meaning that the first block of CTR padding data is actually AES(K1,AES(K1,nonce+MAC)).
7. Encrypt the 128-bit AES-CTR nonce again as a single AES block using **K0** to yield a final encrypted 128-bit combined nonce and MAC. *(Question for peer review: does this step have any attack-mitigating value? AES-CTR does not require that its nonce/IV be a secret.)*
8. Split this final encrypted nonce+IV into two 64-bit chunks, replacing the packet ID with one and placing the other in the packet MAC field.
#### AES-GMAC-SIV Decryption
Unlike encryption, SIV decryption can be performed in a single pass if there is a performance benefit to doing so.
1. Re-combine the packet ID and MAC fields into a single 128-bit block.
2. Decrypt this block with AES using **K0** to yield the AES-CTR nonce.
3. Decrypt the packet using AES-CTR with **K1**.
4. Decrypt the 128-bit AES-CTR nonce field *again* as a single AES block using **K1** to obtain the original packet nonce and 64-bit truncated GMAC tag.
5. Expand the 64-bit packet ID / nonce into a 96-bit GMAC nonce as in encryption step 2.
6. Compute AES-GMAC(K0,plaintext) as in encryption step 3.
7. Verify that the first 64 bytes of the resulting GMAC tag equals the tag (last 64 bits) obtained in decryption step 4 and discard the packet if they do not match.
#### Discussion
Most standard stream cipher modes such as AES-GCM or Salsa20/Poly1305 require that message nonce/IV values are never duplicated for the same session key. Since these stream modes generate key streams that are simply XORed with message plaintext, nonce duplication reveals the plaintext of both messages for which the nonce is duplicated due to the commutativity of the XOR operation. It may also allow the MAC (GMAC or Poly1305) itself to be attacked in such a way as to enable message forgery.
SIV modes mitigate these attacks by making the actual cryptographic nonce used for stream encryption dependent on the content of the message. If a nonce is repeated when two messages differ, ciphertext will still be unique unless a MAC collision also occurs. The chance of this is quite small, only 1/2^64 in our system for any given pair of repeated nonce values. If a repeated nonce occurs and both messages are the same, the protocol will leak only the fact that a message was repeated. The actual plaintext and MAC are not compromised.
Our AES-GMAC-SIV mode is almost identical to a proposed mode called [AES-GCM-SIV](https://cyber.biu.ac.il/aes-gcm-siv/). The proposed AES-GCM-SIV mode uses a variant of GMAC called POLYVAL with very minor performance improvements while ours retains standard GMAC for compatibility with existing standards and libraries. We call our mode AES-GMAC-SIV to distinguish it.
*Question for peer review: both GMAC and AES-CTR are FIPS140 approved primitives, and the use of AES-CTR with an approved MAC is permitted. Is it actually feasible that this could be FIPS certified if it were documented in a correct and "strategic" way? It would be described as GMAC authenticated AES-CTR with the CTR IV being constructed via keyed hash (AES) from an initial plaintext IV and a "salt" taken from the MAC, or some similar description.*

View file

@ -0,0 +1,23 @@
FROM alpine:3.11.3
ARG go_pkg_url
RUN apk add --update alpine-sdk linux-headers cmake openssh curl
RUN adduser -D -s /bin/ash jenkins && \
passwd -u jenkins && \
ssh-keygen -A && \
mkdir /home/jenkins/.ssh && \
chown -R jenkins:jenkins /home/jenkins
RUN curl -s $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz
COPY authorized_keys /home/jenkins/.ssh/authorized_keys
RUN chown -R jenkins:jenkins /home/jenkins/.ssh && \
chmod 600 /home/jenkins/.ssh/authorized_keys
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

View file

@ -0,0 +1,32 @@
FROM centos:7
ARG go_pkg_url
RUN yum install -y epel-release
RUN yum install -y curl git wget openssh-server sudo make development-tools rpmdevtools clang gcc-c++ ruby ruby-devel centos-release-scl devtoolset-8 llvm-toolset-7 openssl-devel && yum clean all
RUN curl -sL https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3.tar.gz -o cmake.tar.gz && \
tar -xzf cmake.tar.gz && \
cd cmake-3.16.3 && \
./bootstrap && \
make -j4 && \
make install
RUN curl -s $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN wget -qO- "https://cmake.org/files/v3.15/cmake-3.15.1-Linux-x86_64.tar.gz" | tar --strip-components=1 -xz -C /usr/local
RUN /usr/bin/ssh-keygen -A
RUN useradd jenkins-build
RUN echo $'\n\
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin\n\
source scl_source enable devtoolset-8 llvm-toolset-7\n'\
>> ~/.bash_profile
RUN mkdir /rpmbuild && chmod 777 /rpmbuild
CMD ["/usr/sbin/sshd", "-D"]

View file

@ -0,0 +1,29 @@
FROM centos:7
ARG go_pkg_url
RUN yum install -y curl git wget openssh-server sudo make development-tools rpmdevtools clang gcc-c++ ruby ruby-devel openssl-devel && yum clean all
RUN curl -sL https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3.tar.gz -o cmake.tar.gz && \
tar -xzf cmake.tar.gz && \
cd cmake-3.16.3 && \
./bootstrap && \
make -j4 && \
make install
RUN curl -s $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN /usr/bin/ssh-keygen -A
RUN useradd jenkins-build
RUN echo $'\n\
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin\n'\
>> ~/.bash_profile
RUN mkdir /rpmbuild && chmod 777 /rpmbuild
CMD ["/usr/sbin/sshd", "-D"]

View file

@ -0,0 +1,25 @@
FROM centos:8
ARG go_pkg_url
RUN yum install -y epel-release
RUN yum install -y curl git wget openssh-server sudo make rpmdevtools clang gcc-c++ ruby ruby-devel cmake && yum clean all
RUN curl -s $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN wget -qO- "https://cmake.org/files/v3.15/cmake-3.15.1-Linux-x86_64.tar.gz" | tar --strip-components=1 -xz -C /usr/local
RUN /usr/bin/ssh-keygen -A
RUN useradd jenkins-build
RUN echo $'\n\
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin\n\
source scl_source enable devtoolset-8 llvm-toolset-7\n'\
>> ~/.bash_profile
RUN mkdir /rpmbuild && chmod 777 /rpmbuild
CMD ["/usr/sbin/sshd", "-D"]

View file

@ -0,0 +1,26 @@
FROM s390x/clefos:7
ARG go_pkg_url
RUN yum install -y curl git wget openssh-server sudo make development-tools rpmdevtools clang gcc-c++ ruby ruby-devel openssl-devel && yum clean all
RUN curl -sL https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3.tar.gz -o cmake.tar.gz && \
tar -xzf cmake.tar.gz && \
cd cmake-3.16.3 && \
./bootstrap && \
make -j4 && \
make install
RUN curl -s $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN /usr/bin/ssh-keygen -A
RUN echo $'\n\
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin\n'\
>> ~/.bash_profile
RUN mkdir /rpmbuild && chmod 777 /rpmbuild
CMD ["/usr/sbin/sshd", "-D"]

View file

@ -0,0 +1,15 @@
FROM debian:bullseye-20191224
ARG go_pkg_url
RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd cmake
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,15 @@
FROM debian:buster-20191224
ARG go_pkg_url
RUN apt-get update && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd cmake
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,22 @@
FROM debian:jessie-20191224
ARG go_pkg_url
RUN apt-get update && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd libssl-dev
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN curl -sL https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3.tar.gz -o cmake.tar.gz && \
tar -xzf cmake.tar.gz && \
cd cmake-3.16.3 && \
./bootstrap && \
make -j4 && \
make install
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,15 @@
FROM debian:sid-20191224
ARG go_pkg_url
RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd cmake
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,22 @@
FROM debian:stretch-20191224
ARG go_pkg_url
RUN apt-get update && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd libssl-dev
RUN curl -sL https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3.tar.gz -o cmake.tar.gz && \
tar -xzf cmake.tar.gz && \
cd cmake-3.16.3 && \
./bootstrap && \
make -j4 && \
make install
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,23 @@
FROM debian:wheezy-20190228
ARG go_pkg_url
RUN echo "deb http://archive.debian.org/debian/ wheezy contrib main non-free" > /etc/apt/sources.list && \
echo "deb-src http://archive.debian.org/debian/ wheezy contrib main non-free" >> /etc/apt/sources.list && \
apt-get update && apt-get install -y apt-utils && \
apt-get install -y --force-yes \
curl gcc make sudo expect gnupg fakeroot perl-base=5.14.2-21+deb7u3 perl \
libc-bin=2.13-38+deb7u10 libc6=2.13-38+deb7u10 libc6-dev build-essential \
cdbs devscripts equivs automake autoconf libtool libaudit-dev selinux-basics \
libdb5.1=5.1.29-5 libdb5.1-dev libssl1.0.0=1.0.1e-2+deb7u20 procps gawk libsigsegv2 \
curl ca-certificates devscripts
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,15 @@
FROM kalilinux/kali-rolling:latest
ARG go_pkg_url
RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd cmake
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,15 @@
FROM ubuntu:bionic-20200112
ARG go_pkg_url
RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd cmake
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,15 @@
FROM ubuntu:eoan-20200114
ARG go_pkg_url
RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd cmake
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,22 @@
FROM ubuntu:trusty-20191217
ARG go_pkg_url
RUN apt-get update && apt-get upgrade -y && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd libssl-dev
RUN curl -sL https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3.tar.gz -o cmake.tar.gz && \
tar -xzf cmake.tar.gz && \
cd cmake-3.16.3 && \
./bootstrap && \
make -j4 && \
make install
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

View file

@ -0,0 +1,22 @@
FROM ubuntu:xenial-20200114
ARG go_pkg_url
RUN apt-get update && apt-get -y install build-essential curl ca-certificates devscripts dh-systemd
RUN curl -sL https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3.tar.gz -o cmake.tar.gz && \
tar -xzf cmake.tar.gz && \
cd cmake-3.16.3 && \
./bootstrap && \
make -j4 && \
make install
RUN curl -s -k $go_pkg_url -o go.tar.gz && \
tar -C /usr/local -xzf go.tar.gz && \
rm go.tar.gz
RUN groupadd -g 1000 jenkins-build && useradd -u 1000 -g 1000 jenkins-build
RUN chmod 777 /home
CMD ["/usr/bin/sshd", "-D"]

111
attic/dockerbuild/Makefile Normal file
View file

@ -0,0 +1,111 @@
.PHONY: all
all: alpine centos clefos debian ubuntu kali-rolling
alpine:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.alpine . -t ztbuild/alpine-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.alpine . -t ztbuild/alpine-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.alpine . -t ztbuild/alpine-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v6 -f Dockerfile.alpine . -t ztbuild/alpine-armel --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.alpine . -t ztbuild/alpine-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.alpine . -t ztbuild/alpine-ppc64le --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-s390x.tar.gz" --platform linux/s390x -f Dockerfile.alpine . -t ztbuild/alpine-s390x --load
centos:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.centos7 . -t ztbuild/centos7-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.centos7-i386 . -t ztbuild/centos7-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.centos6 . -t ztbuild/centos6-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.centos6-i386 . -t ztbuild/centos6-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.centos8 . -t ztbuild/centos8-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.centos8 . -t ztbuild/centos8-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.centos8 . -t ztbuild/centos8-ppc64le --load
clefos:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-s390x.tar.gz" --platform linux/s390x -f Dockerfile.clefos-s390x . -t ztbuild/clefos-s390x --load
debian: debian-wheezy debian-jessie debian-buster debian-stretch debian-bullseye debian-sid
debian-wheezy:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.debian-wheezy . -t ztbuild/debian-wheezy-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.debian-wheezy . -t ztbuild/debian-wheezy-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v6 -f Dockerfile.debian-wheezy . -t ztbuild/debian-wheezy-armel --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.debian-wheezy . -t ztbuild/debian-wheezy-i386 --load
debian-jessie:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.debian-jessie . -t ztbuild/debian-jessie-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.debian-jessie . -t ztbuild/debian-jessie-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v6 -f Dockerfile.debian-jessie . -t ztbuild/debian-jessie-armel --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.debian-jessie . -t ztbuild/debian-jessie-i386 --load
debian-buster:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.debian-buster . -t ztbuild/debian-buster-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.debian-buster . -t ztbuild/debian-buster-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v6 -f Dockerfile.debian-buster . -t ztbuild/debian-buster-armel --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.debian-buster . -t ztbuild/debian-buster-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.debian-buster . -t ztbuild/debian-buster-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.debian-buster . -t ztbuild/debian-buster-ppc64le --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-s390x.tar.gz" --platform linux/s390x -f Dockerfile.debian-buster . -t ztbuild/debian-buster-s390x --load
debian-stretch:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.debian-stretch . -t ztbuild/debian-stretch-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.debian-stretch . -t ztbuild/debian-stretch-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v6 -f Dockerfile.debian-stretch . -t ztbuild/debian-stretch-armel --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.debian-stretch . -t ztbuild/debian-stretch-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.debian-stretch . -t ztbuild/debian-stretch-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.debian-stretch . -t ztbuild/debian-stretch-ppc64le --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-s390x.tar.gz" --platform linux/s390x -f Dockerfile.debian-stretch . -t ztbuild/debian-stretch-s390x --load
debian-bullseye:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.debian-bullseye . -t ztbuild/debian-bullseye-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.debian-bullseye . -t ztbuild/debian-bullseye-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v6 -f Dockerfile.debian-bullseye . -t ztbuild/debian-bullseye-armel --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.debian-bullseye . -t ztbuild/debian-bullseye-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.debian-bullseye . -t ztbuild/debian-bullseye-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.debian-bullseye . -t ztbuild/debian-bullseye-ppc64le --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-s390x.tar.gz" --platform linux/s390x -f Dockerfile.debian-bullseye . -t ztbuild/debian-bullseye-s390x --load
debian-sid:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.debian-sid . -t ztbuild/debian-sid-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.debian-sid . -t ztbuild/debian-sid-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v6 -f Dockerfile.debian-sid . -t ztbuild/debian-sid-armel --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.debian-sid . -t ztbuild/debian-sid-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.debian-sid . -t ztbuild/debian-sid-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.debian-sid . -t ztbuild/debian-sid-ppc64le --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-s390x.tar.gz" --platform linux/s390x -f Dockerfile.debian-sid . -t ztbuild/debian-sid-s390x --load
ubuntu: ubuntu-trusty ubuntu-xenial ubuntu-bionic ubuntu-eoan
ubuntu-trusty:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.ubuntu-trusty . -t ztbuild/ubuntu-trusty-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.ubuntu-trusty . -t ztbuild/ubuntu-trusty-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.ubuntu-trusty . -t ztbuild/ubuntu-trusty-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.ubuntu-trusty . -t ztbuild/ubuntu-trusty-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.ubuntu-trusty . -t ztbuild/ubuntu-trusty-ppc64le --load
ubuntu-xenial:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.ubuntu-xenial . -t ztbuild/ubuntu-xenial-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.ubuntu-xenial . -t ztbuild/ubuntu-xenial-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.ubuntu-xenial . -t ztbuild/ubuntu-xenial-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.ubuntu-xenial . -t ztbuild/ubuntu-xenial-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.ubuntu-xenial . -t ztbuild/ubuntu-xenial-ppc64le --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-s390x.tar.gz" --platform linux/s390x -f Dockerfile.ubuntu-xenial . -t ztbuild/ubuntu-xenial-s390x --load
ubuntu-bionic:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.ubuntu-bionic . -t ztbuild/ubuntu-bionic-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.ubuntu-bionic . -t ztbuild/ubuntu-bionic-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.ubuntu-bionic . -t ztbuild/ubuntu-bionic-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.ubuntu-bionic . -t ztbuild/ubuntu-bionic-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.ubuntu-bionic . -t ztbuild/ubuntu-bionic-ppc64le --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-s390x.tar.gz" --platform linux/s390x -f Dockerfile.ubuntu-bionic . -t ztbuild/ubuntu-bionic-s390x --load
ubuntu-eoan:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.ubuntu-eoan . -t ztbuild/ubuntu-eoan-amd64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-arm64.tar.gz" --platform linux/arm64 -f Dockerfile.ubuntu-eoan . -t ztbuild/ubuntu-eoan-arm64 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-armv6l.tar.gz" --platform linux/arm/v7 -f Dockerfile.ubuntu-eoan . -t ztbuild/ubuntu-eoan-armhf --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-386.tar.gz" --platform linux/386 -f Dockerfile.ubuntu-eoan . -t ztbuild/ubuntu-eoan-i386 --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-ppc64le.tar.gz" --platform linux/ppc64le -f Dockerfile.ubuntu-eoan . -t ztbuild/ubuntu-eoan-ppc64le --load
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-s390x.tar.gz" --platform linux/s390x -f Dockerfile.ubuntu-eoan . -t ztbuild/ubuntu-eoan-s390x --load
kali-rolling:
@docker buildx build --build-arg go_pkg_url="https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz" --platform linux/amd64 -f Dockerfile.kali-rolling . -t ztbuild/kali-rolling-amd64 --load

View file

@ -0,0 +1,2 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8hgysbj2Luu3aN/Ya2wr4Y9LpUGqWWfn3k+UhIwOIE/Kd7/YpLjxHpseUA1hLnj9kHFShH8eiqoY0S6EDIYrTUwbXMMu8454lX/LcJOCJ9RlSeMMf7vpkxcI7cVRgOA430a3FR7M0Q8vKlyJzxxAEjMIxMyuVyinknfanNt+sQFiDUvOXoacqgZAHBWMlO7wOPyHWHNOzy7g8N0dHiJveKZqX/UUwuqJuS6UBq7MBMSU6TcMvJwHr+AbNvfyIUWCqlTByqFL9cmviRbIvQanxoRxi/5fVUGhtVBXUYvbCdFxDw5W2Svo9fDMm4Z5xWAD7rY1J3AM15RVyRTTtYvgD

View file

@ -17,8 +17,8 @@ LOCAL_CFLAGS := -DZT_USE_MINIUPNPC
LOCAL_SRC_FILES := \
$(ZT1)/node/C25519.cpp \
$(ZT1)/node/Capability.cpp \
$(ZT1)/node/CertificateOfMembership.cpp \
$(ZT1)/node/CertificateOfOwnership.cpp \
$(ZT1)/node/MembershipCredential.cpp \
$(ZT1)/node/OwnershipCredential.cpp \
$(ZT1)/node/Identity.cpp \
$(ZT1)/node/IncomingPacket.cpp \
$(ZT1)/node/InetAddress.cpp \

View file

@ -64,14 +64,14 @@ endif
# Debug mode -- dump trace output, build binary with -g
ifeq ($(ZT_DEBUG),1)
ZT_TRACE=1
CFLAGS+=-Wall -g $(INCLUDES) $(DEFS)
CFLAGS+=-Wall -g -maes -mpclmul $(INCLUDES) $(DEFS)
STRIP=echo
# The following line enables optimization for the crypto code, since
# C25519 in particular is almost UNUSABLE in heavy testing without it.
node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CFLAGS = -Wall -O2 -g $(INCLUDES) $(DEFS)
node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o node/AES.o: CFLAGS = -Wall -O2 -g -maes -mpclmul $(INCLUDES) $(DEFS)
else
CFLAGS?=-Ofast -fstack-protector-strong
CFLAGS+=$(ARCH_FLAGS) -Wall -flto -fPIE -mmacosx-version-min=10.7 -DNDEBUG -Wno-unused-private-field $(INCLUDES) $(DEFS)
CFLAGS+=$(ARCH_FLAGS) -Wall -flto -fPIE -maes -msse -msse2 -msse3 -mpclmul -mmacosx-version-min=10.9 -DNDEBUG -Wno-unused-private-field $(INCLUDES) $(DEFS)
STRIP=strip
endif

Some files were not shown because too many files have changed in this diff Show more