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)
-
classmethod
-
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
-