Module: diffie_hellman_ratchet_curve25519

class doubleratchet.recommended.diffie_hellman_ratchet_curve25519.DiffieHellmanRatchet[source]

Bases: DiffieHellmanRatchet

An implementation of DiffieHellmanRatchet using Curve25519 keys and performing X25519 key exchanges.

Implementation relies on the Python package cryptography.

static _generate_priv()[source]
Return type

bytes

Returns

A freshly generated private key, capable of performing Diffie-Hellman key exchanges with the public key of another party.

Note

This function is recommended to generate a key pair based on the Curve25519 or Curve448 elliptic curves (https://signal.org/docs/specifications/doubleratchet/#recommended-cryptographic-algorithms).

static _derive_pub(priv)[source]

Derive the public key from a private key as generated by _generate_priv().

Parameters

priv (bytes) – The private key as returned by _generate_priv().

Return type

bytes

Returns

The public key corresponding to the private key.

static _perform_diffie_hellman(own_priv, other_pub)[source]
Parameters
  • own_priv (bytes) – The own ratchet private key.

  • other_pub (bytes) – The ratchet public key of the other party.

Return type

bytes

Returns

A shared secret agreed on via Diffie-Hellman. This method is recommended to perform X25519 or X448. There is no need to check for invalid public keys (https://signal.org/docs/specifications/doubleratchet/#recommended-cryptographic-algorithms).