Development discussion of WireGuard
 help / color / mirror / Atom feed
* [PATCH] Handle (a) changes in Screech and (b) borrow issue
@ 2017-02-14  5:09 Jason Dusek
  2017-02-17 13:50 ` Jason A. Donenfeld
  0 siblings, 1 reply; 3+ messages in thread
From: Jason Dusek @ 2017-02-14  5:09 UTC (permalink / raw)
  To: wireguard


[-- Attachment #1.1: Type: text/plain, Size: 93 bytes --]

Tried submitting this with git send-email but it doesn’t seem to have shown
up yet.
​

[-- Attachment #1.2: Type: text/html, Size: 693 bytes --]

[-- Attachment #2: 0001-Handle-a-changes-in-Screech-and-b-borrow-issue.patch --]
[-- Type: application/octet-stream, Size: 5051 bytes --]

From 1b216dbebd28c77614714bc08293fed65cf0fb4f Mon Sep 17 00:00:00 2001
From: Jason Dusek <jason.dusek@gmail.com>
Date: Mon, 13 Feb 2017 19:16:01 -0800
Subject: [PATCH] Handle (a) changes in Screech and (b) borrow issue

---
 contrib/external-tests/rust/Cargo.toml  |  2 +-
 contrib/external-tests/rust/src/main.rs | 66 +++++++++++++++++----------------
 2 files changed, 36 insertions(+), 32 deletions(-)

diff --git a/contrib/external-tests/rust/Cargo.toml b/contrib/external-tests/rust/Cargo.toml
index c064905..32499e5 100644
--- a/contrib/external-tests/rust/Cargo.toml
+++ b/contrib/external-tests/rust/Cargo.toml
@@ -3,7 +3,7 @@ name = "wireguard-keepalive"
 version = "0.1.0"
 authors = ["jason@zx2c4.com"]
 [dependencies]
-screech = { git = "https://github.com/trevp/screech" }
+screech = { git = "https://github.com/solidsnack/screech", branch = "wg" }
 rust-crypto = "*"
 byteorder = "*"
 rustc-serialize = "*"
diff --git a/contrib/external-tests/rust/src/main.rs b/contrib/external-tests/rust/src/main.rs
index 232375c..65baf47 100644
--- a/contrib/external-tests/rust/src/main.rs
+++ b/contrib/external-tests/rust/src/main.rs
@@ -38,39 +38,43 @@ fn main() {
 	owner.set_s(my_keypair);
 	owner.set_rs(&their_public);
 	let mut cipherstate1 : CipherState<CipherChaChaPoly> = Default::default();
-        let mut cipherstate2 : CipherState<CipherChaChaPoly> = Default::default();
-	let mut handshake = HandshakeState::new_from_owner(&mut owner, true, HandshakePattern::IK, "WireGuard v0 zx2c4 Jason@zx2c4.com".as_bytes(), Some(&my_preshared[..]), &mut cipherstate1, &mut cipherstate2);
+	let mut cipherstate2 : CipherState<CipherChaChaPoly> = Default::default();
 
-	let now = time::get_time();
-	let mut tai64n = [0; 12];
-	BigEndian::write_i64(&mut tai64n[0..], 4611686018427387914ULL + now.sec);
-	BigEndian::write_i32(&mut tai64n[8..], now.nsec);
-	let mut initiation_packet = [0; 148];
-	initiation_packet[0] = 1; /* Type: Initiation */
-	initiation_packet[1] = 0; /* Reserved */
-	initiation_packet[2] = 0; /* Reserved */
-	initiation_packet[3] = 0; /* Reserved */
-	LittleEndian::write_u32(&mut initiation_packet[4..], 28); /* Sender index: 28 (arbitrary) */
-	handshake.write_message(&tai64n, &mut initiation_packet[8..]);
-	let mut mac_material = [0; 148];
-	memcpy(&mut mac_material, &their_public);
-	memcpy(&mut mac_material[32..], &initiation_packet[0..116]);
-	let mut mac = [0; 16];
-	Blake2s::blake2s(&mut mac, &mac_material, &my_preshared);
-	memcpy(&mut initiation_packet[116..], &mac);
-	socket.send_to(&initiation_packet, &send_addr).unwrap();
+	let their_index = {
+		let mut handshake = HandshakeState::new_from_owner(&mut owner, true, HandshakePattern::IK, "WireGuard v0 zx2c4 Jason@zx2c4.com".as_bytes(), Some(&my_preshared[..]), &mut cipherstate1, &mut cipherstate2);
 
-	let mut response_packet = [0; 92];
-	socket.recv_from(&mut response_packet).unwrap();
-	assert!(response_packet[0] == 2 /* Type: Response */);
-	assert!(response_packet[1] == 0 /* Reserved */);
-	assert!(response_packet[2] == 0 /* Reserved */);
-	assert!(response_packet[3] == 0 /* Reserved */);
-	let their_index = LittleEndian::read_u32(&response_packet[4..]);
-	let our_index = LittleEndian::read_u32(&response_packet[8..]);
-	assert!(our_index == 28);
-	let (payload_len, last) = handshake.read_message(&response_packet[12..60], &mut empty_payload).unwrap();
-	assert!(payload_len == 0 && last);
+		let now = time::get_time();
+		let mut tai64n = [0; 12];
+		BigEndian::write_i64(&mut tai64n[0..], 4611686018427387914 + now.sec);
+		BigEndian::write_i32(&mut tai64n[8..], now.nsec);
+		let mut initiation_packet = [0; 148];
+		initiation_packet[0] = 1; /* Type: Initiation */
+		initiation_packet[1] = 0; /* Reserved */
+		initiation_packet[2] = 0; /* Reserved */
+		initiation_packet[3] = 0; /* Reserved */
+		LittleEndian::write_u32(&mut initiation_packet[4..], 28); /* Sender index: 28 (arbitrary) */
+		handshake.write_message(&tai64n, &mut initiation_packet[8..]);
+		let mut mac_material = [0; 148];
+		memcpy(&mut mac_material, &their_public);
+		memcpy(&mut mac_material[32..], &initiation_packet[0..116]);
+		let mut mac = [0; 16];
+		Blake2s::blake2s(&mut mac, &mac_material, &my_preshared);
+		memcpy(&mut initiation_packet[116..], &mac);
+		socket.send_to(&initiation_packet, &send_addr).unwrap();
+
+		let mut response_packet = [0; 92];
+		socket.recv_from(&mut response_packet).unwrap();
+		assert!(response_packet[0] == 2 /* Type: Response */);
+		assert!(response_packet[1] == 0 /* Reserved */);
+		assert!(response_packet[2] == 0 /* Reserved */);
+		assert!(response_packet[3] == 0 /* Reserved */);
+		let their_index = LittleEndian::read_u32(&response_packet[4..]);
+		let our_index = LittleEndian::read_u32(&response_packet[8..]);
+		assert!(our_index == 28);
+		let (payload_len, last) = handshake.read_message(&response_packet[12..60], &mut empty_payload).unwrap();
+		assert!(payload_len == 0 && last);
+		their_index
+	};
 
 	let mut keepalive_packet = [0; 32];
 	keepalive_packet[0] = 4; /* Type: Data */
-- 
2.10.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Handle (a) changes in Screech and (b) borrow issue
  2017-02-14  5:09 [PATCH] Handle (a) changes in Screech and (b) borrow issue Jason Dusek
@ 2017-02-17 13:50 ` Jason A. Donenfeld
  2017-02-17 18:39   ` Jason Dusek
  0 siblings, 1 reply; 3+ messages in thread
From: Jason A. Donenfeld @ 2017-02-17 13:50 UTC (permalink / raw)
  To: Jason Dusek; +Cc: WireGuard mailing list

Hey,

Thanks for the patch. This changes the screech repository to your own.
Has Trevor agreed for you to officially take over that project? If so,
please link me to the moderncrypto mailing list post about this. If
not, why should things switch to yours rather than moving your patches
upstream to Trevor?

Regards,
Jason

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Handle (a) changes in Screech and (b) borrow issue
  2017-02-17 13:50 ` Jason A. Donenfeld
@ 2017-02-17 18:39   ` Jason Dusek
  0 siblings, 0 replies; 3+ messages in thread
From: Jason Dusek @ 2017-02-17 18:39 UTC (permalink / raw)
  To: Jason A. Donenfeld; +Cc: WireGuard mailing list

[-- Attachment #1: Type: text/plain, Size: 1065 bytes --]

Hi Jason,

It was necessary to "vendor" Screech. A separate Git repo makes for a
cleaner patch than downloading and including all of Screech. The patch
makes some stuff public again that was once public and then went private:

https://github.com/solidsnack/screech/commit/6d91d075ad2f98f03c807a471953495c720a5696

I assume Trevor made them private for a reason; but also that the original
developer of the client used them for a reason. I would like to better
understand the application before making a suggestion as regards the
Screech API; but I would also really like the Rust client to build (as I
think we all would).

Kind Regards,
Jason

Jason A. Donenfeld <Jason@zx2c4.com> schrieb am Fr. 17. Feb. 2017 um 05:50:

> Hey,
>
> Thanks for the patch. This changes the screech repository to your own.
> Has Trevor agreed for you to officially take over that project? If so,
> please link me to the moderncrypto mailing list post about this. If
> not, why should things switch to yours rather than moving your patches
> upstream to Trevor?
>
> Regards,
> Jason
>

[-- Attachment #2: Type: text/html, Size: 1634 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-02-17 18:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-14  5:09 [PATCH] Handle (a) changes in Screech and (b) borrow issue Jason Dusek
2017-02-17 13:50 ` Jason A. Donenfeld
2017-02-17 18:39   ` Jason Dusek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).