diff options
author | Mark Haines <mark.haines@matrix.org> | 2015-06-22 11:02:42 +0100 |
---|---|---|
committer | Mark Haines <mark.haines@matrix.org> | 2015-06-22 11:02:42 +0100 |
commit | 408530adf9ec0fd7aa8a201103262eebfc9cfc3e (patch) | |
tree | 7eeeab21e409727b2d7b2b6b05332046081e8a01 /src | |
parent | fb980849c4ffc99bca7a2dd5a347e9f0b4b99469 (diff) |
Add API for removing used one time keys
Diffstat (limited to 'src')
-rw-r--r-- | src/account.cpp | 15 | ||||
-rw-r--r-- | src/axolotl.cpp | 14 |
2 files changed, 27 insertions, 2 deletions
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 ) { |