1% WireGuard tests 2 3# Type the following command to launch start the tests: 4# $ test/run_tests -P "load_contrib('wireguard')" -t test/contrib/wireguard.uts 5 6+ Build packets & dissect 7 8= Build and dissect Transport 9wgTransport = Wireguard()/WireguardTransport(receiver_index=1234, counter=1337, encrypted_encapsulated_packet=b"test123") 10assert bytes(wgTransport) == b'\x04\x00\x00\x00\xd2\x04\x00\x009\x05\x00\x00\x00\x00\x00\x00test123' 11 12wgTransport = Wireguard(b'\x04\x00\x00\x00\xe1\x10\x00\x00\x9a\x02\x00\x00\x00\x00\x00\x00test123') 13assert wgTransport.message_type == 4 14assert wgTransport[WireguardTransport].receiver_index == 4321 15assert wgTransport[WireguardTransport].counter == 666 16assert wgTransport[WireguardTransport].encrypted_encapsulated_packet == b"test123" 17 18= Build and dissect Init 19wgInit = Wireguard()/WireguardInitiation(sender_index=12345, 20 unencrypted_ephemeral=b"\xaf\xfe"*16, encrypted_static=b"lul", encrypted_timestamp=b"kukuk", mac1="\x01"*16, mac2="\x02"*16 21) 22assert bytes(wgInit) == b'\x01\x00\x00\x0090\x00\x00\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfe\xaf\xfelul\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00kukuk\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + b'\x01' * 16 + b'\x02' * 16 23 24wgInit = Wireguard(b'\x01\x00\x00\x0090\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffstatisch\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00nixgibts\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04') 25 26assert wgInit.message_type == 1 27assert wgInit[WireguardInitiation].sender_index == 12345 28assert wgInit[WireguardInitiation].unencrypted_ephemeral == b"\xff"*32 29assert wgInit[WireguardInitiation].encrypted_static == b"statisch" + b"\x00" * 40 30assert wgInit[WireguardInitiation].encrypted_timestamp == b"nixgibts" + b"\x00" * 20 31assert wgInit[WireguardInitiation].mac1 == b"\x03" * 16 32assert wgInit[WireguardInitiation].mac2 == b"\x04" * 16 33 34= Build and dissect Response 35wgResp = Wireguard()/WireguardResponse(sender_index=12345, receiver_index=7878, 36 unencrypted_ephemeral=b"\x41"*32, encrypted_nothing=b"empty", mac1=b"mac1", mac2=b"mac2" 37) 38 39assert bytes(wgResp) == b'\x02\x00\x00\x0090\x00\x00\xc6\x1e\x00\x00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAempty\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00mac1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00mac2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 40 41 42wgResp = Wireguard(b'\x02\x00\x00\x00W\x04\x00\x00\xae\x08\x00\x00BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBnotempty\x00\x00\x00\x00\x00\x00\x00\x00mac1lol\x00\x00\x00\x00\x00\x00\x00\x00\x00mac2lol\x00\x00\x00\x00\x00\x00\x00\x00\x00') 43 44assert wgResp.message_type == 2 45assert wgResp[WireguardResponse].sender_index == 1111 46assert wgResp[WireguardResponse].receiver_index == 2222 47assert wgResp[WireguardResponse].unencrypted_ephemeral == b"B"*32 48assert wgResp[WireguardResponse].encrypted_nothing == b"notempty" + b"\x00" * 8 49assert wgResp[WireguardResponse].mac1 == b"mac1lol" + b"\x00" * 9 50assert wgResp[WireguardResponse].mac2 == b"mac2lol" + b"\x00" * 9 51 52= Build and dissect Cookie Response 53wgCookie = Wireguard()/WireguardCookieReply(receiver_index=3333, 54 nonce=b"C"*24, encrypted_cookie=b"D"*16 + b"E"*16 55) 56 57assert bytes(wgCookie) == b'\x03\x00\x00\x00\x05\r\x00\x00CCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEE' 58 59 60wgCookie = Wireguard(b'\x03\x00\x00\x00\xb8"\x00\x00KKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMM') 61 62assert wgCookie.message_type == 3 63assert wgCookie[WireguardCookieReply].receiver_index == 8888 64assert wgCookie[WireguardCookieReply].nonce == b"K"*24 65assert wgCookie[WireguardCookieReply].encrypted_cookie == b"L" * 16 + b"M" * 16 66