Welcome to noiseprotocol’s documentation!¶
Documentation for the Code¶
- class noise.state.CipherState(noise_protocol)[source]¶
Implemented as per Noise Protocol specification - paragraph 5.1.
The initialize_key() function takes additional required argument - noise_protocol.
This class holds an instance of Cipher wrapper. It manages initialisation of underlying cipher function with appropriate key in initialize_key() and rekey() methods.
- decrypt_with_ad(ad: bytes, ciphertext: bytes) bytes [source]¶
If k is non-empty returns DECRYPT(k, n++, ad, ciphertext). Otherwise returns ciphertext. If an authentication failure occurs in DECRYPT() then n is not incremented and an error is signaled to the caller.
- Parameters:
ad – bytes sequence
ciphertext – bytes sequence
- Returns:
plaintext bytes sequence
- class noise.state.HandshakeState[source]¶
Implemented as per Noise Protocol specification - paragraph 5.3.
The initialize() function takes different required argument - noise_protocol, which contains handshake_pattern.
- classmethod initialize(noise_protocol: NoiseProtocol, initiator: bool, prologue: bytes = b'', s: _KeyPair = None, e: _KeyPair = None, rs: _KeyPair = None, re: _KeyPair = None) HandshakeState [source]¶
Constructor method. Comments below are mostly copied from specification. Instead of taking handshake_pattern as an argument, we take full NoiseProtocol object, that way we have access to protocol name and crypto functions
- Parameters:
noise_protocol – a valid NoiseProtocol instance
initiator – boolean indicating the initiator or responder role
prologue – byte sequence which may be zero-length, or which may contain context information that both parties want to confirm is identical
s – local static key pair
e – local ephemeral key pair
rs – remote party’s static public key
re – remote party’s ephemeral public key
- Returns:
initialized HandshakeState instance
- read_message(message: Union[bytes, bytearray], payload_buffer: bytearray)[source]¶
Comments below are mostly copied from specification.
- Parameters:
message – byte sequence containing a Noise handshake message
payload_buffer – buffer-like object
- Returns:
None or result of SymmetricState.split() - tuple (CipherState, CipherState)
- write_message(payload: Union[bytes, bytearray], message_buffer: bytearray)[source]¶
Comments below are mostly copied from specification.
- Parameters:
payload – byte sequence which may be zero-length
message_buffer – buffer-like object
- Returns:
None or result of SymmetricState.split() - tuple (CipherState, CipherState)
- class noise.state.SymmetricState[source]¶
Implemented as per Noise Protocol specification - paragraph 5.2.
The initialize_symmetric function takes different required argument - noise_protocol, which contains protocol_name.
- decrypt_and_hash(ciphertext: bytes) bytes [source]¶
Sets plaintext = DecryptWithAd(h, ciphertext), calls MixHash(ciphertext), and returns plaintext. Note that if k is empty, the DecryptWithAd() call will set plaintext equal to ciphertext.
- Parameters:
ciphertext – bytes sequence
- Returns:
plaintext bytes sequence
- encrypt_and_hash(plaintext: bytes) bytes [source]¶
Sets ciphertext = EncryptWithAd(h, plaintext), calls MixHash(ciphertext), and returns ciphertext. Note that if k is empty, the EncryptWithAd() call will set ciphertext equal to plaintext.
- Parameters:
plaintext – bytes sequence
- Returns:
ciphertext bytes sequence
- classmethod initialize_symmetric(noise_protocol: NoiseProtocol) SymmetricState [source]¶
Instead of taking protocol_name as an argument, we take full NoiseProtocol object, that way we have access to protocol name and crypto functions
Comments below are mostly copied from specification.
- Parameters:
noise_protocol – a valid NoiseProtocol instance
- Returns:
initialised SymmetricState instance