Commit Graph

98 Commits

Author SHA1 Message Date
Marten Seemann
ac63554791 drop support for Go 1.7 2017-07-12 18:43:18 +07:00
Marten Seemann
2c920dbfc8 remove obsolete check for tls.Config.ServerName when verifying the cert
The hostname is set to tls.Config.ServerName in the client already, thus
we don't have to read that value again when verifying the certificate.
2017-06-20 09:54:08 +02:00
Marten Seemann
987905149b run gofmt to fix ordering of imports 2017-06-13 18:07:22 +02:00
Marten Seemann
c0b09c8646 make utils an internal package 2017-06-09 22:28:40 +02:00
Marten Seemann
ef4699adef use ASN1 to marshal source address tokens 2017-05-25 11:49:24 +08:00
Marten Seemann
eb72b494b2 generate valid tokens for remote addresses that are not UDP addresses 2017-05-20 23:27:40 +08:00
Marten Seemann
8e01921495 move comparison of the source address in the STK to the STKGenerator 2017-05-20 23:27:40 +08:00
Marten Seemann
9562df5838 move the STK generation from the ServerConfig to a separate struct 2017-05-20 23:27:40 +08:00
Marten Seemann
81985f44bd move the STK expiration check to the cryptoSetup 2017-05-20 23:27:39 +08:00
Marten Seemann
3c223b22a2 include peer perspective in nullAEAD
ref #375
2017-04-27 18:05:24 +07:00
Lucas Clemente
013d7fdb30 Simplify code in a few places
Found by running `gosimple ./...`
2017-04-13 16:43:58 +02:00
Lucas Clemente
723f86c725 Don't use GetConfigForClient on go < 1.8 2017-03-02 10:40:20 +01:00
Lucas Clemente
219ce60a5e Call GetConfigForClient in tls.Config if present 2017-03-01 21:11:52 +01:00
Lucas Clemente
1bb4a26965 Fix reading of tls.Config certificates
This commit mostly copies the getCertificate function from crypto/tls to
align our certificate reading with the standard library.

Should fix #458.
2017-03-01 18:33:05 +01:00
Marten Seemann
7fe2a37c76 use byte-slice instead of net.IP for generating source address tokens 2017-02-22 23:03:07 +07:00
Marten Seemann
e9666c6313 add a test for the Root CA specified in the TLS client config
ref #407
2017-02-04 10:27:50 +07:00
Marten Seemann
713df41c8b verify certificates using a client TLS config, if given
ref #407
2017-02-03 15:46:38 +07:00
Marten Seemann
63f2faec85 send common certificate sets in the client hello 2017-01-14 18:52:22 +07:00
Marten Seemann
44303fcd4b don’t panic if the certificate chain contains cached entries 2017-01-14 18:52:22 +07:00
Marten Seemann
a3dcac8239 implement certificate decompressing using common certificate sets 2017-01-14 18:52:22 +07:00
Marten Seemann
86da7dce81 send leaf certificate hash (XLCT) in client hello 2017-01-14 18:52:22 +07:00
Marten Seemann
8161e1f4a1 simplify server proof verification function signature 2017-01-14 18:52:20 +07:00
Marten Seemann
6f5b2d308d simplify certificate verification in certManager 2017-01-14 18:52:19 +07:00
Marten Seemann
41c66f9a60 save parsed certificate chain in certManager 2017-01-14 18:52:19 +07:00
Marten Seemann
4b8508c017 verify certificate chain in certManager 2017-01-14 18:52:19 +07:00
Marten Seemann
6913f5ae75 add tests for certChain, simplify constructor 2017-01-14 18:52:18 +07:00
Marten Seemann
bb1af0db1e move server proof verification to crypto package 2017-01-14 18:52:18 +07:00
Marten Seemann
0535491f30 rename crypto.Signer to crypto.CertChain 2017-01-14 18:52:18 +07:00
Marten Seemann
a388d6bf6a fix error code for invalid certificate chains 2017-01-14 18:52:17 +07:00
Marten Seemann
f6cef67c3d create interface for crypto.CertManager 2017-01-14 18:52:16 +07:00
Marten Seemann
731dd87872 also keys for the client in AESGCM key derivation 2017-01-14 18:52:15 +07:00
Marten Seemann
c5f88e01f5 implement a CertManager for the certificate chain sent by the server 2017-01-14 18:52:14 +07:00
Marten Seemann
060d02cb4f implement certificate decompression, without cached and common certs 2017-01-14 18:45:17 +07:00
Marten Seemann
863467f344 validate XLCT tag in client hello
fixes #363
2017-01-04 11:41:43 +07:00
Marten Seemann
98ff7ccb50 use FNV1a hash for cached certificates
fixes #383
2017-01-04 10:56:36 +07:00
Lucas Clemente
5d0399bfe3 use LRU cache for cached certificates
fixes #268
2016-09-08 23:08:57 +02:00
Lucas Clemente
5dda3b8e69 remove support for version 32 from crypto 2016-09-01 12:20:19 +02:00
Lucas Clemente
6239d80492 remove leftover code from v30 2016-08-18 10:31:28 +02:00
Lucas Clemente
3bf525ed16 update common certificate sets from chrome 2016-08-17 23:53:10 +02:00
Lucas Clemente
fe531dd65e cache compressed certificate chains
fixes #227
2016-08-09 14:34:49 +02:00
Lucas Clemente
4eb9077f1b simplify crypto/rand reading 2016-08-09 13:08:42 +02:00
Lucas Clemente
125842d80d simplify key derivation 2016-08-06 17:54:11 +02:00
Lucas Clemente
ed15c18387 disable chacha20 build until we have solved the dependency situation 2016-08-01 16:28:22 +02:00
Lucas Clemente
8a08171322 move nonce generation to separate file 2016-08-01 16:27:38 +02:00
Lucas Clemente
d5255a4075 update AEADs to allow in-place encryption and decryption
ref #217
2016-07-26 15:13:15 +02:00
Andreas Auernhammer
c5be7d0d62 Replace ChaCha20Poly1305 implementation
Improve AEAD speed with slightly faster poly1305 implementation.
Avoid memory allocations whenever possible. (AEAD)
But currently missing AVX2 support.

BenchmarkSeal64B-8     1561 ns/op       40.97 MB/s
BenchmarkSeal1K-8      5570 ns/op      183.82 MB/s
BenchmarkSeal64K-8     161271 ns/op    406.37 MB/s
BenchmarkOpen64B-8     1747 ns/op       45.79 MB/s
BenchmarkOpen1K-8      5741 ns/op      181.14 MB/s
BenchmarkOpen64K-8     157116 ns/op    417.22 MB/s
2016-07-17 23:23:30 +02:00
Lucas Clemente
705da8fd00 switch to AES-GCM as symmetric cipher
fixes #200
2016-07-05 12:13:41 +02:00
Lucas Clemente
240946dfde replace version number literals with constants to make grepping easier 2016-06-03 11:09:48 +02:00
Lucas Clemente
d87e20efc9 remove DiversificationNonce() from the AEAD interface 2016-06-02 16:13:48 +02:00
Lucas Clemente
981d4e7fb8 add support for ECDSA private keys
fixes #158
2016-05-31 23:06:38 +02:00