Adding pynacl to requirements

Adding noise-c echo-like script
This commit is contained in:
Piotr Lizonczyk
2017-02-19 00:52:28 +01:00
parent 4c77b8abdb
commit 7a998277ea
3 changed files with 107 additions and 0 deletions

57
noise/client-script.py Executable file
View File

@@ -0,0 +1,57 @@
import base64
import socket
import logging
import struct
import nacl
from constants import *
logger = logging.getLogger(__name__)
with open('../noise-keys/psk') as fd:
psk = fd.readline()
# psk = base64.b64decode(fd.readline())
protocol_id = struct.Struct('BBBBB')
noise_name = 'NoisePSK_NN_448_ChaChaPoly_BLAKE2b'
s = socket.socket()
s.connect(('localhost', 2000))
def get_packed_protocol_id(name):
if not name.startswith('Noise'):
logger.info('Wrong pattern: does not begin with "Noise"')
name = name[5:]
if name.startswith('PSK'):
psk_byte = PSK.PSK_ENABLED.value
name = name[3:]
else:
psk_byte = PSK.PSK_DISABLED.value
name = name.lstrip('_')
pattern = name[:2]
pattern_byte = getattr(PATTERN, 'PATTERN_' + pattern).value
name = name[2:].lstrip('_')
dh = name.split('_')[0]
dh_byte = getattr(DH, 'DH_' + dh).value
name = name.lstrip(dh).lstrip('_')
cipher = name.split('_')[0]
cipher_byte = getattr(CIPHER, 'CIPHER_' + cipher.upper()).value
name = name.lstrip(cipher).lstrip('_')
hashing = name.split('_')[0]
hashing_byte = getattr(HASH, 'HASH_' + hashing).value
return protocol_id.pack(psk_byte, pattern_byte, cipher_byte, dh_byte, hashing_byte)
s.send(get_packed_protocol_id(noise_name))
s.send.
# import ipdb; ipdb.set_trace()

49
noise/constants.py Normal file
View File

@@ -0,0 +1,49 @@
from enum import Enum
class PSK(Enum):
PSK_DISABLED = 0x00
PSK_ENABLED = 0x01
class PATTERN(Enum):
PATTERN_NN = 0x00
PATTERN_KN = 0x01
PATTERN_NK = 0x02
PATTERN_KK = 0x03
PATTERN_NX = 0x04
PATTERN_KX = 0x05
PATTERN_XN = 0x06
PATTERN_IN = 0x07
PATTERN_XK = 0x08
PATTERN_IK = 0x09
PATTERN_XX = 0x0A
PATTERN_IX = 0x0B
PATTERN_HFS = 0x80
class CIPHER(Enum):
CIPHER_CHACHAPOLY = 0x00
CIPHER_AESGCM = 0x01
class DH(Enum):
DH_25519 = 0x00
DH_448 = 0x01
DH_NEWHOPE = 0x02
DH_MASK = 0x0F
class HYBRID(Enum):
HYBRID_NONE = 0x00
HYBRID_25519 = 0x10
HYBRID_448 = 0x20
HYBRID_NEWHOPE = 0x30
HYBRID_MASK = 0xF0
class HASH(Enum):
HASH_SHA256 = 0x00
HASH_SHA512 = 0x01
HASH_BLAKE2s = 0x02
HASH_BLAKE2b = 0x03

View File

@@ -1 +1,2 @@
nose2
pynacl