49 Commits

Author SHA1 Message Date
Nate Brown
5a73e02a33 Roll back static key in the face of failure 2021-03-30 16:50:25 -04:00
Gerardo Di Giacomo
2492fe189a fixing XXfallback (#29) 2018-03-26 23:05:43 -04:00
Gerardo Di Giacomo
d1c47b3565 added XXfallback handshake, getters for local and peer ephemeral (#28) 2018-03-26 17:13:16 -04:00
Nathan Brown
953535c65f Add a getter for handshake msgIdx (#27) 2018-03-08 15:40:28 -05:00
Jonathan Rudenberg
01638cb52d
Revert "added GetNonce and SetNonce following Noise revision 33 (aimed at UDP-based protocols) (#25)" (#26)
This reverts commit 0530451f2f3cf213f6e237b9b056876e3edc4e97.
2018-01-24 15:22:32 -05:00
David Wong
0530451f2f added GetNonce and SetNonce following Noise revision 33 (aimed at UDP-based protocols) (#25)
* added GetNonce and SetNonce following Noise revision 33 (aimed at UDP-based protocols)

* removing CipherState.invalid and Cipher() functions now that SetNonce and GetNonce are here
2018-01-24 13:44:44 -05:00
Ryan Huber
7e398aa738 Replace panics with errors (#24)
* remove panics per PanicAndRecover guidance from go authors

* revert constructors to panic()

* fix vectorgen

* fix Write call too
2018-01-09 21:48:36 -05:00
Jonathan Rudenberg
f9b5bb75e2 Use HTTPS for Noise website
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2017-12-28 18:14:00 -05:00
David Wong
fc3a9f3b3c Removed the XR pattern and added the initiator check in WriteMessage and ReadMessage according to spec (#22)
* removed the XR pattern and added the initiator check in WriteMessage and ReadMessage according to spec

* removed extra space I shouldn't have added

* fixed vectors

* re-generated via vectorgen
2017-09-27 19:37:07 -04:00
Jonathan Rudenberg
c49e9fa15d Merge pull request #20 from mimoo/mimoo-patch-1
added golang's blake2b implementation
2017-09-22 09:30:08 -04:00
David Wong
a80962bd80 added golang's blake2b implementation 2017-09-22 14:18:33 +01:00
Jonathan Rudenberg
01cefa3e20 Merge pull request #15 from Katzenpost/add_rekey.1
Add Rekey as per latest specification
2017-07-11 13:14:38 -04:00
David Stainton
39e9953cb9 Add the Rekey feature as described in spec
Signed-off-by: David Stainton <dstainton415@gmail.com>
2017-07-11 17:07:19 +00:00
David Stainton
b519438a73 gofmt
Signed-off-by: David Stainton <dstainton415@gmail.com>
2017-07-11 17:07:04 +00:00
Jonathan Rudenberg
c90ff62230 Merge pull request #11 from zx2c4/psk-rework
psk mode: update for redesign
2017-05-15 09:59:50 -04:00
Jason A. Donenfeld
bac779d5eb vectorgen: create even more vector combinations
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-05-15 13:31:05 +02:00
Jason A. Donenfeld
167d176148 noise_test: update psk tests
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-05-15 13:27:28 +02:00
Jason A. Donenfeld
1dc278ed6c noise_test: use 32-byte psk
The noise spec mandates 256-bit preshared keys.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-05-15 13:24:16 +02:00
Jason A. Donenfeld
5d56e55c10 vector_test: update to new psk mode
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-05-15 13:24:16 +02:00
Jason A. Donenfeld
3bc46b50a9 vectorgen: generate psk test vectors
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-05-15 13:24:16 +02:00
Jason A. Donenfeld
1b34a57a83 vectorgen: use 32-byte psk
The noise specification mandates that preshared keys are 256-bits.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-05-15 13:21:07 +02:00
Jason A. Donenfeld
6a0d1cad82 psk mode: update for redesign
The PSK mode has been redesigned in the latest revision of Noise, which
WireGuard is using. This patch updates the library to use this new
construction. It adds a outputs parameter to HKDF, a
PresharedKeyPlacement config parameter, as well as a PSK token. This has
been tested against the latest WireGuard git master, and the two are
compatible.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-05-15 13:21:07 +02:00
Sergey Matveev
6902797927 Use faster ChaCha20-Poly1305 implementation from golang.org/x/crypto
This implementation contains SSE* related assembler code.

Signed-off-by: Sergey Matveev <stargrave@stargrave.org>
2017-01-09 11:35:45 -05:00
Sergey Matveev
ab15322ad1 Use faster BLAKE2s implementation from golang.org/x/crypto
This implementation contains SSE* related assembler code.

Signed-off-by: Sergey Matveev <stargrave@stargrave.org>
2017-01-09 11:35:45 -05:00
Sergey Matveev
c01f33c418 Nicely formatted long structs, for reading easiness
Signed-off-by: Sergey Matveev <stargrave@stargrave.org>
2017-01-03 10:35:34 -05:00
Jonathan Rudenberg
7e06e15681 Ensure that the handshake state doesn’t get lost if decryption fails
This allows decoding potentially malicious messages under certain
circumstances.

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-14 21:27:05 -04:00
Jonathan Rudenberg
bc8ae75ea2 Use optimized BLAKE2b implementation
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-14 12:55:09 -04:00
Jonathan Rudenberg
9d48b3b0f8 Add PeerStatic method to HandshakeState
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-13 19:53:24 -04:00
Jonathan Rudenberg
b16acbb322 Add method to get channel binding
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-13 15:28:03 -04:00
Jonathan Rudenberg
ad132441f7 Update package import in vectorgen
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-12 22:58:03 -04:00
Jonathan Rudenberg
f63da97e27 Hide cipher functions from docs
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-12 22:56:22 -04:00
Jonathan Rudenberg
9d237a2bfc Fix docs typos
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-12 22:45:32 -04:00
Jonathan Rudenberg
ca5f81ebf0 Improve Config docs
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-12 22:44:26 -04:00
Jonathan Rudenberg
7f7abf1289 Add travis config
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-12 22:23:58 -04:00
Jonathan Rudenberg
01ee159114 Add README and CONTRIBUTING docs
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-12 22:22:06 -04:00
Jonathan Rudenberg
8035b36042 Add docs
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-12 22:20:06 -04:00
Jonathan Rudenberg
d4248be25d Add method to get Cipher from CipherState
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-12 21:32:38 -04:00
Jonathan Rudenberg
9a626dbd0b Unexport SymmetricState
This struct is only used internally.

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2016-07-12 21:25:40 -04:00
Jonathan Rudenberg
c0dae35557 Implement XR pattern 2016-04-03 11:35:23 -04:00
Jonathan Rudenberg
3512ab15d1 Purge _E handshake patterns 2016-04-03 11:27:42 -04:00
Jonathan Rudenberg
77186df246 Add encryption messages to vectors and vectors from cacophony 2015-11-16 22:08:16 -05:00
Jonathan Rudenberg
82839267d3 Copy PeerEphemeral to avoid buffer corruption 2015-11-16 22:07:11 -05:00
Jonathan Rudenberg
3881dc9640 Add test vector generator and tester 2015-11-16 20:57:02 -05:00
Jonathan Rudenberg
4db302538c Update vectors from screech 2015-11-16 16:40:09 -05:00
Jonathan Rudenberg
b11a33c4ae Add handshake Config struct
Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2015-11-16 13:09:47 -05:00
Jonathan Rudenberg
d760bc3534 MixPresharedKey and new vectors 2015-11-16 11:37:33 -05:00
Jonathan Rudenberg
0e9c47ad19 Implement NoisePSK revision 2 2015-11-15 17:18:33 -05:00
Jonathan Rudenberg
f7b9b28336 Add checks from revision 18 2015-11-15 12:56:24 -05:00
Jonathan Rudenberg
14af5e1fc8 Initial implementation 2015-11-15 12:50:34 -05:00