Axolotl data, according to https://github.com/trevp/axolotl/wiki . More...
Data Fields | |
struct CadetTunnelSkippedKey * | skipped_head |
A (double linked) list of stored message keys and associated header keys for "skipped" messages, i.e. More... | |
struct CadetTunnelSkippedKey * | skipped_tail |
Skipped messages' keys DLL, tail. More... | |
struct GNUNET_CRYPTO_SymmetricSessionKey | RK |
32-byte root key which gets updated by DH ratchet. More... | |
struct GNUNET_CRYPTO_SymmetricSessionKey | HKs |
32-byte header key (currently used for sending). More... | |
struct GNUNET_CRYPTO_SymmetricSessionKey | HKr |
32-byte header key (currently used for receiving) More... | |
struct GNUNET_CRYPTO_SymmetricSessionKey | NHKs |
32-byte next header key (for sending), used once the ratchet advances. More... | |
struct GNUNET_CRYPTO_SymmetricSessionKey | NHKr |
32-byte next header key (for receiving). More... | |
struct GNUNET_CRYPTO_SymmetricSessionKey | CKs |
32-byte chain keys (used for forward-secrecy) for sending messages. More... | |
struct GNUNET_CRYPTO_SymmetricSessionKey | CKr |
32-byte chain keys (used for forward-secrecy) for receiving messages. More... | |
struct GNUNET_CRYPTO_EcdhePrivateKey | kx_0 |
ECDH for key exchange (A0 / B0). More... | |
struct GNUNET_CRYPTO_EcdhePrivateKey | DHRs |
ECDH Ratchet key (our private key in the current DH). More... | |
struct GNUNET_CRYPTO_EcdhePublicKey | DHRr |
ECDH Ratchet key (other peer's public key in the current DH). More... | |
struct GNUNET_CRYPTO_EcdhePublicKey | last_ephemeral |
Last ephemeral public key received from the other peer, for duplicate detection. More... | |
struct GNUNET_TIME_Absolute | ratchet_expiration |
Time when the current ratchet expires and a new one is triggered (if ratchet_allowed is GNUNET_YES). More... | |
unsigned int | skipped |
Number of elements in skipped_head <-> skipped_tail. More... | |
uint32_t | Ns |
Message number (reset to 0 with each new ratchet, next message to send). More... | |
uint32_t | Nr |
Message number (reset to 0 with each new ratchet, next message to recv). More... | |
uint32_t | PNs |
Previous message numbers (# of msgs sent under prev ratchet) More... | |
int | ratchet_flag |
True (GNUNET_YES) if we have to send a new ratchet key in next msg. More... | |
int | ratchet_allowed |
True (GNUNET_YES) if we have received a message from the other peer that uses the keys from our last ratchet step. More... | |
unsigned int | ratchet_counter |
Number of messages received since our last ratchet advance. More... | |
Axolotl data, according to https://github.com/trevp/axolotl/wiki .
Definition at line 119 of file gnunet-service-cadet_tunnels.c.
struct CadetTunnelSkippedKey* CadetTunnelAxolotl::skipped_head |
A (double linked) list of stored message keys and associated header keys for "skipped" messages, i.e.
messages that have not been received despite the reception of more recent messages, (head).
Definition at line 126 of file gnunet-service-cadet_tunnels.c.
Referenced by cleanup_ax(), delete_skipped_key(), store_skipped_key(), and try_old_ax_keys().
struct CadetTunnelSkippedKey* CadetTunnelAxolotl::skipped_tail |
Skipped messages' keys DLL, tail.
Definition at line 131 of file gnunet-service-cadet_tunnels.c.
Referenced by delete_skipped_key(), store_ax_keys(), and store_skipped_key().
struct GNUNET_CRYPTO_SymmetricSessionKey CadetTunnelAxolotl::RK |
32-byte root key which gets updated by DH ratchet.
Definition at line 136 of file gnunet-service-cadet_tunnels.c.
Referenced by GCT_handle_kx_auth(), send_kx_auth(), t_ax_decrypt_and_validate(), t_ax_encrypt(), and update_ax_by_kx().
struct GNUNET_CRYPTO_SymmetricSessionKey CadetTunnelAxolotl::HKs |
32-byte header key (currently used for sending).
Definition at line 141 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_encrypt(), t_h_encrypt(), and update_ax_by_kx().
struct GNUNET_CRYPTO_SymmetricSessionKey CadetTunnelAxolotl::HKr |
32-byte header key (currently used for receiving)
Definition at line 146 of file gnunet-service-cadet_tunnels.c.
Referenced by store_skipped_key(), t_ax_decrypt_and_validate(), t_h_decrypt(), and update_ax_by_kx().
struct GNUNET_CRYPTO_SymmetricSessionKey CadetTunnelAxolotl::NHKs |
32-byte next header key (for sending), used once the ratchet advances.
We are sure that the sender has this key as well only after ratchet_allowed is GNUNET_YES.
Definition at line 153 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_encrypt(), and update_ax_by_kx().
struct GNUNET_CRYPTO_SymmetricSessionKey CadetTunnelAxolotl::NHKr |
32-byte next header key (for receiving).
To be tried when decrypting with HKr fails and thus the sender may have advanced the ratchet.
Definition at line 160 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_decrypt_and_validate(), and update_ax_by_kx().
struct GNUNET_CRYPTO_SymmetricSessionKey CadetTunnelAxolotl::CKs |
32-byte chain keys (used for forward-secrecy) for sending messages.
Updated for every message.
Definition at line 166 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_encrypt(), and update_ax_by_kx().
struct GNUNET_CRYPTO_SymmetricSessionKey CadetTunnelAxolotl::CKr |
32-byte chain keys (used for forward-secrecy) for receiving messages.
Updated for every message. If messages are skipped, the respective derived MKs (and the current HKr) are kept in the skipped_head DLL.
Definition at line 174 of file gnunet-service-cadet_tunnels.c.
Referenced by store_skipped_key(), t_ax_decrypt(), t_ax_decrypt_and_validate(), and update_ax_by_kx().
struct GNUNET_CRYPTO_EcdhePrivateKey CadetTunnelAxolotl::kx_0 |
ECDH for key exchange (A0 / B0).
Definition at line 179 of file gnunet-service-cadet_tunnels.c.
Referenced by cleanup_ax(), GCT_handle_kx_auth(), send_kx(), send_kx_auth(), and update_ax_by_kx().
struct GNUNET_CRYPTO_EcdhePrivateKey CadetTunnelAxolotl::DHRs |
ECDH Ratchet key (our private key in the current DH).
Definition at line 184 of file gnunet-service-cadet_tunnels.c.
Referenced by cleanup_ax(), new_ephemeral(), send_kx(), send_kx_auth(), t_ax_decrypt_and_validate(), and t_ax_encrypt().
struct GNUNET_CRYPTO_EcdhePublicKey CadetTunnelAxolotl::DHRr |
ECDH Ratchet key (other peer's public key in the current DH).
Definition at line 189 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_decrypt_and_validate(), t_ax_encrypt(), and update_ax_by_kx().
struct GNUNET_CRYPTO_EcdhePublicKey CadetTunnelAxolotl::last_ephemeral |
Last ephemeral public key received from the other peer, for duplicate detection.
Definition at line 195 of file gnunet-service-cadet_tunnels.c.
Referenced by send_kx_auth(), and update_ax_by_kx().
struct GNUNET_TIME_Absolute CadetTunnelAxolotl::ratchet_expiration |
Time when the current ratchet expires and a new one is triggered (if ratchet_allowed is GNUNET_YES).
Definition at line 201 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_encrypt(), and update_ax_by_kx().
unsigned int CadetTunnelAxolotl::skipped |
Number of elements in skipped_head <-> skipped_tail.
Definition at line 206 of file gnunet-service-cadet_tunnels.c.
Referenced by cleanup_ax(), delete_skipped_key(), store_ax_keys(), and store_skipped_key().
uint32_t CadetTunnelAxolotl::Ns |
Message number (reset to 0 with each new ratchet, next message to send).
Definition at line 211 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_encrypt().
uint32_t CadetTunnelAxolotl::Nr |
Message number (reset to 0 with each new ratchet, next message to recv).
Definition at line 216 of file gnunet-service-cadet_tunnels.c.
Referenced by store_ax_keys(), store_skipped_key(), and t_ax_decrypt_and_validate().
uint32_t CadetTunnelAxolotl::PNs |
Previous message numbers (# of msgs sent under prev ratchet)
Definition at line 221 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_encrypt().
int CadetTunnelAxolotl::ratchet_flag |
True (GNUNET_YES) if we have to send a new ratchet key in next msg.
Definition at line 226 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_encrypt(), and update_ax_by_kx().
int CadetTunnelAxolotl::ratchet_allowed |
True (GNUNET_YES) if we have received a message from the other peer that uses the keys from our last ratchet step.
This implies that we are again allowed to advance the ratchet, otherwise we have to wait until the other peer sees our current ephemeral key and advances first.
GNUNET_NO if we have advanced the ratched but lack any evidence that the other peer has noticed this.
Definition at line 238 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_decrypt_and_validate(), and t_ax_encrypt().
unsigned int CadetTunnelAxolotl::ratchet_counter |
Number of messages received since our last ratchet advance.
If this counter = 0, we cannot send a new ratchet key in the next message.
If this counter > 0, we could (but don't have to) send a new key.
Once the ratchet_counter is larger than ratchet_messages (or ratchet_expiration time has past), and ratchet_allowed is GNUNET_YES, we advance the ratchet.
Definition at line 252 of file gnunet-service-cadet_tunnels.c.
Referenced by t_ax_encrypt().