From 408530adf9ec0fd7aa8a201103262eebfc9cfc3e Mon Sep 17 00:00:00 2001 From: Mark Haines Date: Mon, 22 Jun 2015 11:02:42 +0100 Subject: Add API for removing used one time keys --- src/account.cpp | 15 +++++++++++++-- src/axolotl.cpp | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/account.cpp b/src/account.cpp index 02ad5ba..95bafa8 100644 --- a/src/account.cpp +++ b/src/account.cpp @@ -11,6 +11,18 @@ axolotl::LocalKey const * axolotl::Account::lookup_key( return 0; } +std::size_t axolotl::Account::remove_key( + std::uint32_t id +) { + LocalKey * i; + for (i = one_time_keys.begin(); i != one_time_keys.end(); ++i) { + if (i->id == id) { + one_time_keys.erase(i); + return id; + } + } + return std::size_t(-1); +} std::size_t axolotl::Account::new_account_random_length() { return 103 * 32; @@ -21,6 +33,7 @@ std::size_t axolotl::Account::new_account( ) { if (random_length < new_account_random_length()) { last_error = axolotl::ErrorCode::NOT_ENOUGH_RANDOM; + return std::size_t(-1); } unsigned id = 0; @@ -46,8 +59,6 @@ std::size_t axolotl::Account::new_account( } - - namespace axolotl { diff --git a/src/axolotl.cpp b/src/axolotl.cpp index e835c9b..c195a7c 100644 --- a/src/axolotl.cpp +++ b/src/axolotl.cpp @@ -468,6 +468,20 @@ size_t axolotl_matches_inbound_session( } +size_t axolotl_remove_one_time_keys( + AxolotlAccount * account, + AxolotlSession * session +) { + size_t result = from_c(account)->remove_key( + from_c(session)->bob_one_time_key_id + ); + if (result == std::size_t(-1)) { + from_c(account)->last_error = axolotl::ErrorCode::BAD_MESSAGE_KEY_ID; + } + return result; +} + + size_t axolotl_encrypt_message_type( AxolotlSession * session ) { -- cgit v1.2.3