Add API for removing used one time keys
This commit is contained in:
parent
fb980849c4
commit
408530adf9
4 changed files with 36 additions and 2 deletions
|
@ -41,6 +41,10 @@ struct Account {
|
||||||
LocalKey const * lookup_key(
|
LocalKey const * lookup_key(
|
||||||
std::uint32_t id
|
std::uint32_t id
|
||||||
);
|
);
|
||||||
|
|
||||||
|
std::size_t remove_key(
|
||||||
|
std::uint32_t id
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,11 @@ size_t axolotl_matches_inbound_session(
|
||||||
void * one_time_key_message, size_t message_length
|
void * one_time_key_message, size_t message_length
|
||||||
);
|
);
|
||||||
|
|
||||||
|
size_t axolotl_remove_one_time_keys(
|
||||||
|
AxolotlAccount * account,
|
||||||
|
AxolotlSession * session
|
||||||
|
);
|
||||||
|
|
||||||
size_t axolotl_encrypt_message_type(
|
size_t axolotl_encrypt_message_type(
|
||||||
AxolotlSession * session
|
AxolotlSession * session
|
||||||
);
|
);
|
||||||
|
|
|
@ -11,6 +11,18 @@ axolotl::LocalKey const * axolotl::Account::lookup_key(
|
||||||
return 0;
|
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() {
|
std::size_t axolotl::Account::new_account_random_length() {
|
||||||
return 103 * 32;
|
return 103 * 32;
|
||||||
|
@ -21,6 +33,7 @@ std::size_t axolotl::Account::new_account(
|
||||||
) {
|
) {
|
||||||
if (random_length < new_account_random_length()) {
|
if (random_length < new_account_random_length()) {
|
||||||
last_error = axolotl::ErrorCode::NOT_ENOUGH_RANDOM;
|
last_error = axolotl::ErrorCode::NOT_ENOUGH_RANDOM;
|
||||||
|
return std::size_t(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned id = 0;
|
unsigned id = 0;
|
||||||
|
@ -46,8 +59,6 @@ std::size_t axolotl::Account::new_account(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace axolotl {
|
namespace axolotl {
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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(
|
size_t axolotl_encrypt_message_type(
|
||||||
AxolotlSession * session
|
AxolotlSession * session
|
||||||
) {
|
) {
|
||||||
|
|
Loading…
Reference in a new issue