aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Hodgson <matthew@matrix.org>2015-06-27 01:15:23 +0200
committerMatthew Hodgson <matthew@matrix.org>2015-06-27 01:15:23 +0200
commit09d4125ff164f5ca686d12ccb0790c35ce721a6b (patch)
tree7ac8192180180705327d5090c5e603f54ddde2a0 /src
parentfe958472453b1bac99854a419ef667d8f2cd351d (diff)
Rename axolotlpp as olm to avoid confusion with Axolotl-the-spec and Axolotl-the-OWS-libraries at moxie's request
Diffstat (limited to 'src')
-rw-r--r--src/account.cpp88
-rw-r--r--src/base64.cpp10
-rw-r--r--src/cipher.cpp46
-rw-r--r--src/crypto.cpp70
-rw-r--r--src/memory.cpp6
-rw-r--r--src/message.cpp20
-rw-r--r--src/olm.cpp (renamed from src/axolotl.cpp)234
-rw-r--r--src/pickle.cpp38
-rw-r--r--src/ratchet.cpp258
-rw-r--r--src/session.cpp170
10 files changed, 470 insertions, 470 deletions
diff --git a/src/account.cpp b/src/account.cpp
index cafa014..45e4b6d 100644
--- a/src/account.cpp
+++ b/src/account.cpp
@@ -12,20 +12,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/account.hh"
-#include "axolotl/pickle.hh"
+#include "olm/account.hh"
+#include "olm/pickle.hh"
-axolotl::LocalKey const * axolotl::Account::lookup_key(
+olm::LocalKey const * olm::Account::lookup_key(
std::uint32_t id
) {
- for (axolotl::LocalKey const & key : one_time_keys) {
+ for (olm::LocalKey const & key : one_time_keys) {
if (key.id == id) return &key;
}
return 0;
}
-std::size_t axolotl::Account::remove_key(
+std::size_t olm::Account::remove_key(
std::uint32_t id
) {
LocalKey * i;
@@ -38,34 +38,34 @@ std::size_t axolotl::Account::remove_key(
return std::size_t(-1);
}
-std::size_t axolotl::Account::new_account_random_length() {
+std::size_t olm::Account::new_account_random_length() {
return 103 * 32;
}
-std::size_t axolotl::Account::new_account(
+std::size_t olm::Account::new_account(
uint8_t const * random, std::size_t random_length
) {
if (random_length < new_account_random_length()) {
- last_error = axolotl::ErrorCode::NOT_ENOUGH_RANDOM;
+ last_error = olm::ErrorCode::NOT_ENOUGH_RANDOM;
return std::size_t(-1);
}
unsigned id = 0;
identity_key.id = ++id;
- axolotl::generate_key(random, identity_key.key);
+ olm::generate_key(random, identity_key.key);
random += 32;
random += 32;
last_resort_one_time_key.id = ++id;
- axolotl::generate_key(random, last_resort_one_time_key.key);
+ olm::generate_key(random, last_resort_one_time_key.key);
random += 32;
for (unsigned i = 0; i < 10; ++i) {
LocalKey & key = *one_time_keys.insert(one_time_keys.end());
key.id = ++id;
- axolotl::generate_key(random, key.key);
+ olm::generate_key(random, key.key);
random += 32;
}
@@ -73,94 +73,94 @@ std::size_t axolotl::Account::new_account(
}
-namespace axolotl {
+namespace olm {
static std::size_t pickle_length(
- axolotl::LocalKey const & value
+ olm::LocalKey const & value
) {
- return axolotl::pickle_length(value.id) + axolotl::pickle_length(value.key);
+ return olm::pickle_length(value.id) + olm::pickle_length(value.key);
}
static std::uint8_t * pickle(
std::uint8_t * pos,
- axolotl::LocalKey const & value
+ olm::LocalKey const & value
) {
- pos = axolotl::pickle(pos, value.id);
- pos = axolotl::pickle(pos, value.key);
+ pos = olm::pickle(pos, value.id);
+ pos = olm::pickle(pos, value.key);
return pos;
}
static std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::LocalKey & value
+ olm::LocalKey & value
) {
- pos = axolotl::unpickle(pos, end, value.id);
- pos = axolotl::unpickle(pos, end, value.key);
+ pos = olm::unpickle(pos, end, value.id);
+ pos = olm::unpickle(pos, end, value.key);
return pos;
}
static std::size_t pickle_length(
- axolotl::SignedKey const & value
+ olm::SignedKey const & value
) {
- return axolotl::pickle_length((axolotl::LocalKey const &) value) + 64;
+ return olm::pickle_length((olm::LocalKey const &) value) + 64;
}
static std::uint8_t * pickle(
std::uint8_t * pos,
- axolotl::SignedKey const & value
+ olm::SignedKey const & value
) {
- pos = axolotl::pickle(pos, (axolotl::LocalKey const &) value);
- pos = axolotl::pickle_bytes(pos, value.signature, 64);
+ pos = olm::pickle(pos, (olm::LocalKey const &) value);
+ pos = olm::pickle_bytes(pos, value.signature, 64);
return pos;
}
static std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::SignedKey & value
+ olm::SignedKey & value
) {
- pos = axolotl::unpickle(pos, end, (axolotl::LocalKey &) value);
- pos = axolotl::unpickle_bytes(pos, end, value.signature, 64);
+ pos = olm::unpickle(pos, end, (olm::LocalKey &) value);
+ pos = olm::unpickle_bytes(pos, end, value.signature, 64);
return pos;
}
-} // namespace axolotl
+} // namespace olm
-std::size_t axolotl::pickle_length(
- axolotl::Account const & value
+std::size_t olm::pickle_length(
+ olm::Account const & value
) {
std::size_t length = 0;
- length += axolotl::pickle_length(value.identity_key);
- length += axolotl::pickle_length(value.last_resort_one_time_key);
- length += axolotl::pickle_length(value.one_time_keys);
+ length += olm::pickle_length(value.identity_key);
+ length += olm::pickle_length(value.last_resort_one_time_key);
+ length += olm::pickle_length(value.one_time_keys);
return length;
}
-std::uint8_t * axolotl::pickle(
+std::uint8_t * olm::pickle(
std::uint8_t * pos,
- axolotl::Account const & value
+ olm::Account const & value
) {
- pos = axolotl::pickle(pos, value.identity_key);
- pos = axolotl::pickle(pos, value.last_resort_one_time_key);
- pos = axolotl::pickle(pos, value.one_time_keys);
+ pos = olm::pickle(pos, value.identity_key);
+ pos = olm::pickle(pos, value.last_resort_one_time_key);
+ pos = olm::pickle(pos, value.one_time_keys);
return pos;
}
-std::uint8_t const * axolotl::unpickle(
+std::uint8_t const * olm::unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::Account & value
+ olm::Account & value
) {
- pos = axolotl::unpickle(pos, end, value.identity_key);
- pos = axolotl::unpickle(pos, end, value.last_resort_one_time_key);
- pos = axolotl::unpickle(pos, end, value.one_time_keys);
+ pos = olm::unpickle(pos, end, value.identity_key);
+ pos = olm::unpickle(pos, end, value.last_resort_one_time_key);
+ pos = olm::unpickle(pos, end, value.one_time_keys);
return pos;
}
diff --git a/src/base64.cpp b/src/base64.cpp
index 6fafa44..a8631a1 100644
--- a/src/base64.cpp
+++ b/src/base64.cpp
@@ -12,7 +12,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/base64.hh"
+#include "olm/base64.hh"
namespace {
@@ -45,14 +45,14 @@ static const std::uint8_t DECODE_BASE64[128] = {
} // namespace
-std::size_t axolotl::encode_base64_length(
+std::size_t olm::encode_base64_length(
std::size_t input_length
) {
return 4 * ((input_length + 2) / 3) + (input_length + 2) % 3 - 2;
}
-void axolotl::encode_base64(
+void olm::encode_base64(
std::uint8_t const * input, std::size_t input_length,
std::uint8_t * output
) {
@@ -87,7 +87,7 @@ void axolotl::encode_base64(
}
-std::size_t axolotl::decode_base64_length(
+std::size_t olm::decode_base64_length(
std::size_t input_length
) {
if (input_length % 4 == 1) {
@@ -98,7 +98,7 @@ std::size_t axolotl::decode_base64_length(
}
-void axolotl::decode_base64(
+void olm::decode_base64(
std::uint8_t const * input, std::size_t input_length,
std::uint8_t * output
) {
diff --git a/src/cipher.cpp b/src/cipher.cpp
index 2d700b1..2202746 100644
--- a/src/cipher.cpp
+++ b/src/cipher.cpp
@@ -12,12 +12,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/cipher.hh"
-#include "axolotl/crypto.hh"
-#include "axolotl/memory.hh"
+#include "olm/cipher.hh"
+#include "olm/crypto.hh"
+#include "olm/memory.hh"
#include <cstring>
-axolotl::Cipher::~Cipher() {
+olm::Cipher::~Cipher() {
}
@@ -26,9 +26,9 @@ namespace {
static const std::size_t SHA256_LENGTH = 32;
struct DerivedKeys {
- axolotl::Aes256Key aes_key;
+ olm::Aes256Key aes_key;
std::uint8_t mac_key[SHA256_LENGTH];
- axolotl::Aes256Iv aes_iv;
+ olm::Aes256Iv aes_iv;
};
@@ -38,7 +38,7 @@ static void derive_keys(
DerivedKeys & keys
) {
std::uint8_t derived_secrets[80];
- axolotl::hkdf_sha256(
+ olm::hkdf_sha256(
key, key_length,
nullptr, 0,
kdf_info, kdf_info_length,
@@ -47,7 +47,7 @@ static void derive_keys(
std::memcpy(keys.aes_key.key, derived_secrets, 32);
std::memcpy(keys.mac_key, derived_secrets + 32, 32);
std::memcpy(keys.aes_iv.iv, derived_secrets + 64, 16);
- axolotl::unset(derived_secrets);
+ olm::unset(derived_secrets);
}
static const std::size_t MAC_LENGTH = 8;
@@ -55,26 +55,26 @@ static const std::size_t MAC_LENGTH = 8;
} // namespace
-axolotl::CipherAesSha256::CipherAesSha256(
+olm::CipherAesSha256::CipherAesSha256(
std::uint8_t const * kdf_info, std::size_t kdf_info_length
) : kdf_info(kdf_info), kdf_info_length(kdf_info_length) {
}
-std::size_t axolotl::CipherAesSha256::mac_length() const {
+std::size_t olm::CipherAesSha256::mac_length() const {
return MAC_LENGTH;
}
-std::size_t axolotl::CipherAesSha256::encrypt_ciphertext_length(
+std::size_t olm::CipherAesSha256::encrypt_ciphertext_length(
std::size_t plaintext_length
) const {
- return axolotl::aes_encrypt_cbc_length(plaintext_length);
+ return olm::aes_encrypt_cbc_length(plaintext_length);
}
-std::size_t axolotl::CipherAesSha256::encrypt(
+std::size_t olm::CipherAesSha256::encrypt(
std::uint8_t const * key, std::size_t key_length,
std::uint8_t const * plaintext, std::size_t plaintext_length,
std::uint8_t * ciphertext, std::size_t ciphertext_length,
@@ -88,28 +88,28 @@ std::size_t axolotl::CipherAesSha256::encrypt(
derive_keys(kdf_info, kdf_info_length, key, key_length, keys);
- axolotl::aes_encrypt_cbc(
+ olm::aes_encrypt_cbc(
keys.aes_key, keys.aes_iv, plaintext, plaintext_length, ciphertext
);
- axolotl::hmac_sha256(
+ olm::hmac_sha256(
keys.mac_key, SHA256_LENGTH, output, output_length - MAC_LENGTH, mac
);
std::memcpy(output + output_length - MAC_LENGTH, mac, MAC_LENGTH);
- axolotl::unset(keys);
+ olm::unset(keys);
return output_length;
}
-std::size_t axolotl::CipherAesSha256::decrypt_max_plaintext_length(
+std::size_t olm::CipherAesSha256::decrypt_max_plaintext_length(
std::size_t ciphertext_length
) const {
return ciphertext_length;
}
-std::size_t axolotl::CipherAesSha256::decrypt(
+std::size_t olm::CipherAesSha256::decrypt(
std::uint8_t const * key, std::size_t key_length,
std::uint8_t const * input, std::size_t input_length,
std::uint8_t const * ciphertext, std::size_t ciphertext_length,
@@ -120,20 +120,20 @@ std::size_t axolotl::CipherAesSha256::decrypt(
derive_keys(kdf_info, kdf_info_length, key, key_length, keys);
- axolotl::hmac_sha256(
+ olm::hmac_sha256(
keys.mac_key, SHA256_LENGTH, input, input_length - MAC_LENGTH, mac
);
std::uint8_t const * input_mac = input + input_length - MAC_LENGTH;
- if (!axolotl::is_equal(input_mac, mac, MAC_LENGTH)) {
- axolotl::unset(keys);
+ if (!olm::is_equal(input_mac, mac, MAC_LENGTH)) {
+ olm::unset(keys);
return std::size_t(-1);
}
- std::size_t plaintext_length = axolotl::aes_decrypt_cbc(
+ std::size_t plaintext_length = olm::aes_decrypt_cbc(
keys.aes_key, keys.aes_iv, ciphertext, ciphertext_length, plaintext
);
- axolotl::unset(keys);
+ olm::unset(keys);
return plaintext_length;
}
diff --git a/src/crypto.cpp b/src/crypto.cpp
index b287919..ebe4724 100644
--- a/src/crypto.cpp
+++ b/src/crypto.cpp
@@ -12,8 +12,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/crypto.hh"
-#include "axolotl/memory.hh"
+#include "olm/crypto.hh"
+#include "olm/memory.hh"
#include <cstring>
@@ -110,7 +110,7 @@ inline void hmac_sha256_init(
}
::sha256_init(context);
::sha256_update(context, i_pad, SHA256_BLOCK_LENGTH);
- axolotl::unset(i_pad);
+ olm::unset(i_pad);
}
@@ -129,16 +129,16 @@ inline void hmac_sha256_final(
::sha256_init(&final_context);
::sha256_update(&final_context, o_pad, sizeof(o_pad));
::sha256_final(&final_context, output);
- axolotl::unset(final_context);
- axolotl::unset(o_pad);
+ olm::unset(final_context);
+ olm::unset(o_pad);
}
} // namespace
-void axolotl::generate_key(
+void olm::generate_key(
std::uint8_t const * random_32_bytes,
- axolotl::Curve25519KeyPair & key_pair
+ olm::Curve25519KeyPair & key_pair
) {
std::memcpy(key_pair.private_key, random_32_bytes, 32);
::curve25519_donna(
@@ -147,17 +147,17 @@ void axolotl::generate_key(
}
-void axolotl::curve25519_shared_secret(
- axolotl::Curve25519KeyPair const & our_key,
- axolotl::Curve25519PublicKey const & their_key,
+void olm::curve25519_shared_secret(
+ olm::Curve25519KeyPair const & our_key,
+ olm::Curve25519PublicKey const & their_key,
std::uint8_t * output
) {
::curve25519_donna(output, our_key.private_key, their_key.public_key);
}
-void axolotl::curve25519_sign(
- axolotl::Curve25519KeyPair const & our_key,
+void olm::curve25519_sign(
+ olm::Curve25519KeyPair const & our_key,
std::uint8_t const * message, std::size_t message_length,
std::uint8_t * output
) {
@@ -174,8 +174,8 @@ void axolotl::curve25519_sign(
}
-bool axolotl::curve25519_verify(
- axolotl::Curve25519PublicKey const & their_key,
+bool olm::curve25519_verify(
+ olm::Curve25519PublicKey const & their_key,
std::uint8_t const * message, std::size_t message_length,
std::uint8_t const * signature
) {
@@ -191,16 +191,16 @@ bool axolotl::curve25519_verify(
);
}
-std::size_t axolotl::aes_encrypt_cbc_length(
+std::size_t olm::aes_encrypt_cbc_length(
std::size_t input_length
) {
return input_length + AES_BLOCK_LENGTH - input_length % AES_BLOCK_LENGTH;
}
-void axolotl::aes_encrypt_cbc(
- axolotl::Aes256Key const & key,
- axolotl::Aes256Iv const & iv,
+void olm::aes_encrypt_cbc(
+ olm::Aes256Key const & key,
+ olm::Aes256Iv const & iv,
std::uint8_t const * input, std::size_t input_length,
std::uint8_t * output
) {
@@ -224,14 +224,14 @@ void axolotl::aes_encrypt_cbc(
input_block[i] ^= AES_BLOCK_LENGTH - input_length;
}
::aes_encrypt(input_block, output, key_schedule, 256);
- axolotl::unset(key_schedule);
- axolotl::unset(input_block);
+ olm::unset(key_schedule);
+ olm::unset(input_block);
}
-std::size_t axolotl::aes_decrypt_cbc(
- axolotl::Aes256Key const & key,
- axolotl::Aes256Iv const & iv,
+std::size_t olm::aes_decrypt_cbc(
+ olm::Aes256Key const & key,
+ olm::Aes256Iv const & iv,
std::uint8_t const * input, std::size_t input_length,
std::uint8_t * output
) {
@@ -246,15 +246,15 @@ std::size_t axolotl::aes_decrypt_cbc(
xor_block<AES_BLOCK_LENGTH>(&output[i], block1);
std::memcpy(block1, block2, AES_BLOCK_LENGTH);
}
- axolotl::unset(key_schedule);
- axolotl::unset(block1);
- axolotl::unset(block2);
+ olm::unset(key_schedule);
+ olm::unset(block1);
+ olm::unset(block2);
std::size_t padding = output[input_length - 1];
return (padding > input_length) ? std::size_t(-1) : (input_length - padding);
}
-void axolotl::sha256(
+void olm::sha256(
std::uint8_t const * input, std::size_t input_length,
std::uint8_t * output
) {
@@ -262,10 +262,10 @@ void axolotl::sha256(
::sha256_init(&context);
::sha256_update(&context, input, input_length);
::sha256_final(&context, output);
- axolotl::unset(context);
+ olm::unset(context);
}
-void axolotl::hmac_sha256(
+void olm::hmac_sha256(
std::uint8_t const * key, std::size_t key_length,
std::uint8_t const * input, std::size_t input_length,
std::uint8_t * output
@@ -276,12 +276,12 @@ void axolotl::hmac_sha256(
hmac_sha256_init(&context, hmac_key);
::sha256_update(&context, input, input_length);
hmac_sha256_final(&context, hmac_key, output);
- axolotl::unset(hmac_key);
- axolotl::unset(context);
+ olm::unset(hmac_key);
+ olm::unset(context);
}
-void axolotl::hkdf_sha256(
+void olm::hkdf_sha256(
std::uint8_t const * input, std::size_t input_length,
std::uint8_t const * salt, std::size_t salt_length,
std::uint8_t const * info, std::size_t info_length,
@@ -320,7 +320,7 @@ void axolotl::hkdf_sha256(
hmac_sha256_final(&context, hmac_key, step_result);
}
std::memcpy(output, step_result, bytes_remaining);
- axolotl::unset(context);
- axolotl::unset(hmac_key);
- axolotl::unset(step_result);
+ olm::unset(context);
+ olm::unset(hmac_key);
+ olm::unset(step_result);
}
diff --git a/src/memory.cpp b/src/memory.cpp
index deb3076..16a4683 100644
--- a/src/memory.cpp
+++ b/src/memory.cpp
@@ -12,10 +12,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/memory.hh"
+#include "olm/memory.hh"
-void axolotl::unset(
+void olm::unset(
void volatile * buffer, std::size_t buffer_length
) {
char volatile * pos = reinterpret_cast<char volatile *>(buffer);
@@ -26,7 +26,7 @@ void axolotl::unset(
}
-bool axolotl::is_equal(
+bool olm::is_equal(
std::uint8_t const * buffer_a,
std::uint8_t const * buffer_b,
std::size_t length
diff --git a/src/message.cpp b/src/message.cpp
index 343b094..af43916 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -12,7 +12,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/message.hh"
+#include "olm/message.hh"
namespace {
@@ -161,7 +161,7 @@ std::uint8_t const * skip_unknown(
} // namespace
-std::size_t axolotl::encode_message_length(
+std::size_t olm::encode_message_length(
std::uint32_t counter,
std::size_t ratchet_key_length,
std::size_t ciphertext_length,
@@ -176,8 +176,8 @@ std::size_t axolotl::encode_message_length(
}
-void axolotl::encode_message(
- axolotl::MessageWriter & writer,
+void olm::encode_message(
+ olm::MessageWriter & writer,
std::uint8_t version,
std::uint32_t counter,
std::size_t ratchet_key_length,
@@ -192,8 +192,8 @@ void axolotl::encode_message(
}
-void axolotl::decode_message(
- axolotl::MessageReader & reader,
+void olm::decode_message(
+ olm::MessageReader & reader,
std::uint8_t const * input, std::size_t input_length,
std::size_t mac_length
) {
@@ -240,7 +240,7 @@ static std::uint8_t const MESSAGE_TAG = 042;
} // namespace
-std::size_t axolotl::encode_one_time_key_message_length(
+std::size_t olm::encode_one_time_key_message_length(
std::uint32_t one_time_key_id,
std::size_t identity_key_length,
std::size_t base_key_length,
@@ -255,8 +255,8 @@ std::size_t axolotl::encode_one_time_key_message_length(
}
-void axolotl::encode_one_time_key_message(
- axolotl::PreKeyMessageWriter & writer,
+void olm::encode_one_time_key_message(
+ olm::PreKeyMessageWriter & writer,
std::uint8_t version,
std::uint32_t one_time_key_id,
std::size_t identity_key_length,
@@ -273,7 +273,7 @@ void axolotl::encode_one_time_key_message(
}
-void axolotl::decode_one_time_key_message(
+void olm::decode_one_time_key_message(
PreKeyMessageReader & reader,
std::uint8_t const * input, std::size_t input_length
) {
diff --git a/src/axolotl.cpp b/src/olm.cpp
index 2586204..f5425fa 100644
--- a/src/axolotl.cpp
+++ b/src/olm.cpp
@@ -12,31 +12,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/axolotl.hh"
-#include "axolotl/session.hh"
-#include "axolotl/account.hh"
-#include "axolotl/base64.hh"
-#include "axolotl/cipher.hh"
+#include "olm/olm.hh"
+#include "olm/session.hh"
+#include "olm/account.hh"
+#include "olm/base64.hh"
+#include "olm/cipher.hh"
#include <new>
#include <cstring>
namespace {
-static AxolotlAccount * to_c(axolotl::Account * account) {
- return reinterpret_cast<AxolotlAccount *>(account);
+static OlmAccount * to_c(olm::Account * account) {
+ return reinterpret_cast<OlmAccount *>(account);
}
-static AxolotlSession * to_c(axolotl::Session * account) {
- return reinterpret_cast<AxolotlSession *>(account);
+static OlmSession * to_c(olm::Session * account) {
+ return reinterpret_cast<OlmSession *>(account);
}
-static axolotl::Account * from_c(AxolotlAccount * account) {
- return reinterpret_cast<axolotl::Account *>(account);
+static olm::Account * from_c(OlmAccount * account) {
+ return reinterpret_cast<olm::Account *>(account);
}
-static axolotl::Session * from_c(AxolotlSession * account) {
- return reinterpret_cast<axolotl::Session *>(account);
+static olm::Session * from_c(OlmSession * account) {
+ return reinterpret_cast<olm::Session *>(account);
}
static std::uint8_t * from_c(void * bytes) {
@@ -49,7 +49,7 @@ static std::uint8_t const * from_c(void const * bytes) {
static const std::uint8_t CIPHER_KDF_INFO[] = "Pickle";
-static const axolotl::CipherAesSha256 PICKLE_CIPHER(
+static const olm::CipherAesSha256 PICKLE_CIPHER(
CIPHER_KDF_INFO, sizeof(CIPHER_KDF_INFO) -1
);
@@ -58,7 +58,7 @@ std::size_t enc_output_length(
) {
std::size_t length = PICKLE_CIPHER.encrypt_ciphertext_length(raw_length);
length += PICKLE_CIPHER.mac_length();
- return axolotl::encode_base64_length(length);
+ return olm::encode_base64_length(length);
}
@@ -68,7 +68,7 @@ std::uint8_t * enc_output_pos(
) {
std::size_t length = PICKLE_CIPHER.encrypt_ciphertext_length(raw_length);
length += PICKLE_CIPHER.mac_length();
- return output + axolotl::encode_base64_length(length) - length;
+ return output + olm::encode_base64_length(length) - length;
}
std::size_t enc_output(
@@ -79,7 +79,7 @@ std::size_t enc_output(
raw_length
);
std::size_t length = ciphertext_length + PICKLE_CIPHER.mac_length();
- std::size_t base64_length = axolotl::encode_base64_length(length);
+ std::size_t base64_length = olm::encode_base64_length(length);
std::uint8_t * raw_output = output + base64_length - length;
PICKLE_CIPHER.encrypt(
key, key_length,
@@ -87,21 +87,21 @@ std::size_t enc_output(
raw_output, ciphertext_length,
raw_output, length
);
- axolotl::encode_base64(raw_output, length, output);
+ olm::encode_base64(raw_output, length, output);
return raw_length;
}
std::size_t enc_input(
std::uint8_t const * key, std::size_t key_length,
std::uint8_t * input, size_t b64_length,
- axolotl::ErrorCode & last_error
+ olm::ErrorCode & last_error
) {
- std::size_t enc_length = axolotl::decode_base64_length(b64_length);
+ std::size_t enc_length = olm::decode_base64_length(b64_length);
if (enc_length == std::size_t(-1)) {
- last_error = axolotl::ErrorCode::INVALID_BASE64;
+ last_error = olm::ErrorCode::INVALID_BASE64;
return std::size_t(-1);
}
- axolotl::decode_base64(input, b64_length, input);
+ olm::decode_base64(input, b64_length, input);
std::size_t raw_length = enc_length - PICKLE_CIPHER.mac_length();
std::size_t result = PICKLE_CIPHER.decrypt(
key, key_length,
@@ -110,7 +110,7 @@ std::size_t enc_input(
input, raw_length
);
if (result == std::size_t(-1)) {
- last_error = axolotl::ErrorCode::BAD_ACCOUNT_KEY;
+ last_error = olm::ErrorCode::BAD_ACCOUNT_KEY;
}
return result;
}
@@ -119,35 +119,35 @@ std::size_t enc_input(
std::size_t b64_output_length(
size_t raw_length
) {
- return axolotl::encode_base64_length(raw_length);
+ return olm::encode_base64_length(raw_length);
}
std::uint8_t * b64_output_pos(
std::uint8_t * output,
size_t raw_length
) {
- return output + axolotl::encode_base64_length(raw_length) - raw_length;
+ return output + olm::encode_base64_length(raw_length) - raw_length;
}
std::size_t b64_output(
std::uint8_t * output, size_t raw_length
) {
- std::size_t base64_length = axolotl::encode_base64_length(raw_length);
+ std::size_t base64_length = olm::encode_base64_length(raw_length);
std::uint8_t * raw_output = output + base64_length - raw_length;
- axolotl::encode_base64(raw_output, raw_length, output);
+ olm::encode_base64(raw_output, raw_length, output);
return base64_length;
}
std::size_t b64_input(
std::uint8_t * input, size_t b64_length,
- axolotl::ErrorCode & last_error
+ olm::ErrorCode & last_error
) {
- std::size_t raw_length = axolotl::decode_base64_length(b64_length);
+ std::size_t raw_length = olm::decode_base64_length(b64_length);
if (raw_length == std::size_t(-1)) {
- last_error = axolotl::ErrorCode::INVALID_BASE64;
+ last_error = olm::ErrorCode::INVALID_BASE64;
return std::size_t(-1);
}
- axolotl::decode_base64(input, b64_length, input);
+ olm::decode_base64(input, b64_length, input);
return raw_length;
}
@@ -169,13 +169,13 @@ const char * errors[9] {
extern "C" {
-size_t axolotl_error() {
+size_t olm_error() {
return std::size_t(-1);
}
-const char * axolotl_account_last_error(
- AxolotlSession * account
+const char * olm_account_last_error(
+ OlmSession * account
) {
unsigned error = unsigned(from_c(account)->last_error);
if (error < 9) {
@@ -186,8 +186,8 @@ const char * axolotl_account_last_error(
}
-const char * axolotl_session_last_error(
- AxolotlSession * session
+const char * olm_session_last_error(
+ OlmSession * session
) {
unsigned error = unsigned(from_c(session)->last_error);
if (error < 9) {
@@ -198,53 +198,53 @@ const char * axolotl_session_last_error(
}
-size_t axolotl_account_size() {
- return sizeof(axolotl::Account);
+size_t olm_account_size() {
+ return sizeof(olm::Account);
}
-size_t axolotl_session_size() {
- return sizeof(axolotl::Session);
+size_t olm_session_size() {
+ return sizeof(olm::Session);
}
-AxolotlAccount * axolotl_account(
+OlmAccount * olm_account(
void * memory
) {
- return to_c(new(memory) axolotl::Account());
+ return to_c(new(memory) olm::Account());
}
-AxolotlSession * axolotl_session(
+OlmSession * olm_session(
void * memory
) {
- return to_c(new(memory) axolotl::Session());
+ return to_c(new(memory) olm::Session());
}
-size_t axolotl_pickle_account_length(
- AxolotlAccount * account
+size_t olm_pickle_account_length(
+ OlmAccount * account
) {
return enc_output_length(pickle_length(*from_c(account)));
}
-size_t axolotl_pickle_session_length(
- AxolotlSession * session
+size_t olm_pickle_session_length(
+ OlmSession * session
) {
return enc_output_length(pickle_length(*from_c(session)));
}
-size_t axolotl_pickle_account(
- AxolotlAccount * account,
+size_t olm_pickle_account(
+ OlmAccount * account,
void const * key, size_t key_length,
void * pickled, size_t pickled_length
) {
- axolotl::Account & object = *from_c(account);
+ olm::Account & object = *from_c(account);
std::size_t raw_length = pickle_length(object);
if (pickled_length < enc_output_length(raw_length)) {
- object.last_error = axolotl::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
+ object.last_error = olm::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
return size_t(-1);
}
pickle(enc_output_pos(from_c(pickled), raw_length), object);
@@ -252,15 +252,15 @@ size_t axolotl_pickle_account(
}
-size_t axolotl_pickle_session(
- AxolotlSession * session,
+size_t olm_pickle_session(
+ OlmSession * session,
void const * key, size_t key_length,
void * pickled, size_t pickled_length
) {
- axolotl::Session & object = *from_c(session);
+ olm::Session & object = *from_c(session);
std::size_t raw_length = pickle_length(object);
if (pickled_length < enc_output_length(raw_length)) {
- object.last_error = axolotl::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
+ object.last_error = olm::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
return size_t(-1);
}
pickle(enc_output_pos(from_c(pickled), raw_length), object);
@@ -268,12 +268,12 @@ size_t axolotl_pickle_session(
}
-size_t axolotl_unpickle_account(
- AxolotlAccount * account,
+size_t olm_unpickle_account(
+ OlmAccount * account,
void const * key, size_t key_length,
void * pickled, size_t pickled_length
) {
- axolotl::Account & object = *from_c(account);
+ olm::Account & object = *from_c(account);
std::uint8_t * const pos = from_c(pickled);
std::size_t raw_length = enc_input(
from_c(key), key_length, pos, pickled_length, object.last_error
@@ -287,12 +287,12 @@ size_t axolotl_unpickle_account(
}
-size_t axolotl_unpickle_session(
- AxolotlSession * session,
+size_t olm_unpickle_session(
+ OlmSession * session,
void const * key, size_t key_length,
void * pickled, size_t pickled_length
) {
- axolotl::Session & object = *from_c(session);
+ olm::Session & object = *from_c(session);
std::uint8_t * const pos = from_c(pickled);
std::size_t raw_length = enc_input(
from_c(key), key_length, pos, pickled_length, object.last_error
@@ -306,15 +306,15 @@ size_t axolotl_unpickle_session(
}
-size_t axolotl_create_account_random_length(
- AxolotlAccount * account
+size_t olm_create_account_random_length(
+ OlmAccount * account
) {
return from_c(account)->new_account_random_length();
}
-size_t axolotl_create_account(
- AxolotlAccount * account,
+size_t olm_create_account(
+ OlmAccount * account,
void const * random, size_t random_length
) {
return from_c(account)->new_account(from_c(random), random_length);
@@ -323,10 +323,10 @@ size_t axolotl_create_account(
namespace {
static const std::size_t OUTPUT_KEY_LENGTH = 2 + 10 + 2 +
- axolotl::encode_base64_length(32) + 3;
+ olm::encode_base64_length(32) + 3;
void output_key(
- axolotl::LocalKey const & key,
+ olm::LocalKey const & key,
std::uint8_t sep,
std::uint8_t * output
) {
@@ -343,7 +343,7 @@ void output_key(
}
output[12] = ',';
output[13] = '"';
- axolotl::encode_base64(key.key.public_key, 32, output + 14);
+ olm::encode_base64(key.key.public_key, 32, output + 14);
output[OUTPUT_KEY_LENGTH - 3] = '"';
output[OUTPUT_KEY_LENGTH - 2] = ']';
output[OUTPUT_KEY_LENGTH - 1] = '\n';
@@ -352,21 +352,21 @@ void output_key(
} // namespace
-size_t axolotl_account_identity_keys_length(
- AxolotlAccount * account
+size_t olm_account_identity_keys_length(
+ OlmAccount * account
) {
return OUTPUT_KEY_LENGTH + 1;
}
-size_t axolotl_account_identity_keys(
- AxolotlAccount * account,
+size_t olm_account_identity_keys(
+ OlmAccount * account,
void * identity_keys, size_t identity_key_length
) {
- std::size_t length = axolotl_account_identity_keys_length(account);
+ std::size_t length = olm_account_identity_keys_length(account);
if (identity_key_length < length) {
from_c(account)->last_error =
- axolotl::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
+ olm::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
return size_t(-1);
}
std::uint8_t * output = from_c(identity_keys);
@@ -377,22 +377,22 @@ size_t axolotl_account_identity_keys(
}
-size_t axolotl_account_one_time_keys_length(
- AxolotlAccount * account
+size_t olm_account_one_time_keys_length(
+ OlmAccount * account
) {
size_t count = from_c(account)->one_time_keys.size();
return OUTPUT_KEY_LENGTH * (count + 1) + 1;
}
-size_t axolotl_account_one_time_keys(
- AxolotlAccount * account,
+size_t olm_account_one_time_keys(
+ OlmAccount * account,
void * identity_keys, size_t identity_key_length
) {
- std::size_t length = axolotl_account_one_time_keys_length(account);
+ std::size_t length = olm_account_one_time_keys_length(account);
if (identity_key_length < length) {
from_c(account)->last_error =
- axolotl::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
+ olm::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
return size_t(-1);
}
std::uint8_t * output = from_c(identity_keys);
@@ -407,35 +407,35 @@ size_t axolotl_account_one_time_keys(
}
-size_t axolotl_create_outbound_session_random_length(
- AxolotlSession * session
+size_t olm_create_outbound_session_random_length(
+ OlmSession * session
) {
return from_c(session)->new_outbound_session_random_length();
}
-size_t axolotl_create_outbound_session(
- AxolotlSession * session,
- AxolotlAccount * account,
+size_t olm_create_outbound_session(
+ OlmSession * session,
+ OlmAccount * account,
void const * their_identity_key, size_t their_identity_key_length,
unsigned their_one_time_key_id,
void const * their_one_time_key, size_t their_one_time_key_length,
void const * random, size_t random_length
) {
- if (axolotl::decode_base64_length(their_identity_key_length) != 32
- || axolotl::decode_base64_length(their_one_time_key_length) != 32
+ if (olm::decode_base64_length(their_identity_key_length) != 32
+ || olm::decode_base64_length(their_one_time_key_length) != 32
) {
- from_c(session)->last_error = axolotl::ErrorCode::INVALID_BASE64;
+ from_c(session)->last_error = olm::ErrorCode::INVALID_BASE64;
return std::size_t(-1);
}
- axolotl::Curve25519PublicKey identity_key;
- axolotl::RemoteKey one_time_key;
+ olm::Curve25519PublicKey identity_key;
+ olm::RemoteKey one_time_key;
- axolotl::decode_base64(
+ olm::decode_base64(
from_c(their_identity_key), their_identity_key_length,
identity_key.public_key
);
one_time_key.id = their_one_time_key_id;
- axolotl::decode_base64(
+ olm::decode_base64(
from_c(their_one_time_key), their_one_time_key_length,
one_time_key.key.public_key
);
@@ -447,9 +447,9 @@ size_t axolotl_create_outbound_session(
}
-size_t axolotl_create_inbound_session(
- AxolotlSession * session,
- AxolotlAccount * account,
+size_t olm_create_inbound_session(
+ OlmSession * session,
+ OlmAccount * account,
void * one_time_key_message, size_t message_length
) {
std::size_t raw_length = b64_input(
@@ -464,8 +464,8 @@ size_t axolotl_create_inbound_session(
}
-size_t axolotl_matches_inbound_session(
- AxolotlSession * session,
+size_t olm_matches_inbound_session(
+ OlmSession * session,
void * one_time_key_message, size_t message_length
) {
std::size_t raw_length = b64_input(
@@ -481,36 +481,36 @@ size_t axolotl_matches_inbound_session(
}
-size_t axolotl_remove_one_time_keys(
- AxolotlAccount * account,
- AxolotlSession * session
+size_t olm_remove_one_time_keys(
+ OlmAccount * account,
+ OlmSession * 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;
+ from_c(account)->last_error = olm::ErrorCode::BAD_MESSAGE_KEY_ID;
}
return result;
}
-size_t axolotl_encrypt_message_type(
- AxolotlSession * session
+size_t olm_encrypt_message_type(
+ OlmSession * session
) {
return size_t(from_c(session)->encrypt_message_type());
}
-size_t axolotl_encrypt_random_length(
- AxolotlSession * session
+size_t olm_encrypt_random_length(
+ OlmSession * session
) {
return from_c(session)->encrypt_random_length();
}
-size_t axolotl_encrypt_message_length(
- AxolotlSession * session,
+size_t olm_encrypt_message_length(
+ OlmSession * session,
size_t plaintext_length
) {
return b64_output_length(
@@ -519,8 +519,8 @@ size_t axolotl_encrypt_message_length(
}
-size_t axolotl_encrypt(
- AxolotlSession * session,
+size_t olm_encrypt(
+ OlmSession * session,
void const * plaintext, size_t plaintext_length,
void const * random, size_t random_length,
void * message, size_t message_length
@@ -530,7 +530,7 @@ size_t axolotl_encrypt(
);
if (message_length < raw_length) {
from_c(session)->last_error =
- axolotl::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
+ olm::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
return std::size_t(-1);
}
from_c(session)->encrypt(
@@ -542,8 +542,8 @@ size_t axolotl_encrypt(
}
-size_t axolotl_decrypt_max_plaintext_length(
- AxolotlSession * session,
+size_t olm_decrypt_max_plaintext_length(
+ OlmSession * session,
size_t message_type,
void * message, size_t message_length
) {
@@ -554,13 +554,13 @@ size_t axolotl_decrypt_max_plaintext_length(
return std::size_t(-1);
}
return from_c(session)->decrypt_max_plaintext_length(
- axolotl::MessageType(message_type), from_c(message), raw_length
+ olm::MessageType(message_type), from_c(message), raw_length
);
}
-size_t axolotl_decrypt(
- AxolotlSession * session,
+size_t olm_decrypt(
+ OlmSession * session,
size_t message_type,
void * message, size_t message_length,
void * plaintext, size_t max_plaintext_length
@@ -572,7 +572,7 @@ size_t axolotl_decrypt(
return std::size_t(-1);
}
return from_c(session)->decrypt(
- axolotl::MessageType(message_type), from_c(message), raw_length,
+ olm::MessageType(message_type), from_c(message), raw_length,
from_c(plaintext), max_plaintext_length
);
}
diff --git a/src/pickle.cpp b/src/pickle.cpp
index 1597326..3aa64ed 100644
--- a/src/pickle.cpp
+++ b/src/pickle.cpp
@@ -12,32 +12,32 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/pickle.hh"
+#include "olm/pickle.hh"
-std::size_t axolotl::pickle_length(
- const axolotl::Curve25519PublicKey & value
+std::size_t olm::pickle_length(
+ const olm::Curve25519PublicKey & value
) {
return sizeof(value.public_key);
}
-std::uint8_t * axolotl::pickle(
+std::uint8_t * olm::pickle(
std::uint8_t * pos,
- const axolotl::Curve25519PublicKey & value
+ const olm::Curve25519PublicKey & value
) {
- pos = axolotl::pickle_bytes(
+ pos = olm::pickle_bytes(
pos, value.public_key, sizeof(value.public_key)
);
return pos;
}
-std::uint8_t const * axolotl::unpickle(
+std::uint8_t const * olm::unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::Curve25519PublicKey & value
+ olm::Curve25519PublicKey & value
) {
- pos = axolotl::unpickle_bytes(
+ pos = olm::unpickle_bytes(
pos, end, value.public_key, sizeof(value.public_key)
);
return pos;
@@ -45,35 +45,35 @@ std::uint8_t const * axolotl::unpickle(
}
-std::size_t axolotl::pickle_length(
- const axolotl::Curve25519KeyPair & value
+std::size_t olm::pickle_length(
+ const olm::Curve25519KeyPair & value
) {
return sizeof(value.public_key) + sizeof(value.private_key);
}
-std::uint8_t * axolotl::pickle(
+std::uint8_t * olm::pickle(
std::uint8_t * pos,
- const axolotl::Curve25519KeyPair & value
+ const olm::Curve25519KeyPair & value
) {
- pos = axolotl::pickle_bytes(
+ pos = olm::pickle_bytes(
pos, value.public_key, sizeof(value.public_key)
);
- pos = axolotl::pickle_bytes(
+ pos = olm::pickle_bytes(
pos, value.private_key, sizeof(value.private_key)
);
return pos;
}
-std::uint8_t const * axolotl::unpickle(
+std::uint8_t const * olm::unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::Curve25519KeyPair & value
+ olm::Curve25519KeyPair & value
) {
- pos = axolotl::unpickle_bytes(
+ pos = olm::unpickle_bytes(
pos, end, value.public_key, sizeof(value.public_key)
);
- pos = axolotl::unpickle_bytes(
+ pos = olm::unpickle_bytes(
pos, end, value.private_key, sizeof(value.private_key)
);
return pos;
diff --git a/src/ratchet.cpp b/src/ratchet.cpp
index 37d2d4e..2f361fa 100644
--- a/src/ratchet.cpp
+++ b/src/ratchet.cpp
@@ -12,11 +12,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/ratchet.hh"
-#include "axolotl/message.hh"
-#include "axolotl/memory.hh"
-#include "axolotl/cipher.hh"
-#include "axolotl/pickle.hh"
+#include "olm/ratchet.hh"
+#include "olm/message.hh"
+#include "olm/memory.hh"
+#include "olm/cipher.hh"
+#include "olm/pickle.hh"
#include <cstring>
@@ -24,23 +24,23 @@
namespace {
std::uint8_t PROTOCOL_VERSION = 3;
-std::size_t KEY_LENGTH = axolotl::Curve25519PublicKey::LENGTH;
+std::size_t KEY_LENGTH = olm::Curve25519PublicKey::LENGTH;
std::uint8_t MESSAGE_KEY_SEED[1] = {0x01};
std::uint8_t CHAIN_KEY_SEED[1] = {0x02};
std::size_t MAX_MESSAGE_GAP = 2000;
void create_chain_key(
- axolotl::SharedKey const & root_key,
- axolotl::Curve25519KeyPair const & our_key,
- axolotl::Curve25519PublicKey const & their_key,
- axolotl::KdfInfo const & info,
- axolotl::SharedKey & new_root_key,
- axolotl::ChainKey & new_chain_key
+ olm::SharedKey const & root_key,
+ olm::Curve25519KeyPair const & our_key,
+ olm::Curve25519PublicKey const & their_key,
+ olm::KdfInfo const & info,
+ olm::SharedKey & new_root_key,
+ olm::ChainKey & new_chain_key
) {
- axolotl::SharedKey secret;
- axolotl::curve25519_shared_secret(our_key, their_key, secret);
+ olm::SharedKey secret;
+ olm::curve25519_shared_secret(our_key, their_key, secret);
std::uint8_t derived_secrets[64];
- axolotl::hkdf_sha256(
+ olm::hkdf_sha256(
secret, sizeof(secret),
root_key, sizeof(root_key),
info.ratchet_info, info.ratchet_info_length,
@@ -49,16 +49,16 @@ void create_chain_key(
std::memcpy(new_root_key, derived_secrets, 32);
std::memcpy(new_chain_key.key, derived_secrets + 32, 32);
new_chain_key.index = 0;
- axolotl::unset(derived_secrets);
- axolotl::unset(secret);
+ olm::unset(derived_secrets);
+ olm::unset(secret);
}
void advance_chain_key(
- axolotl::ChainKey const & chain_key,
- axolotl::ChainKey & new_chain_key
+ olm::ChainKey const & chain_key,
+ olm::ChainKey & new_chain_key
) {
- axolotl::hmac_sha256(
+ olm::hmac_sha256(
chain_key.key, sizeof(chain_key.key),
CHAIN_KEY_SEED, sizeof(CHAIN_KEY_SEED),
new_chain_key.key
@@ -68,11 +68,11 @@ void advance_chain_key(
void create_message_keys(
- axolotl::ChainKey const & chain_key,
- axolotl::KdfInfo const & info,
- axolotl::MessageKey & message_key
+ olm::ChainKey const & chain_key,
+ olm::KdfInfo const & info,
+ olm::MessageKey & message_key
) {
- axolotl::hmac_sha256(
+ olm::hmac_sha256(
chain_key.key, sizeof(chain_key.key),
MESSAGE_KEY_SEED, sizeof(MESSAGE_KEY_SEED),
message_key.key
@@ -82,9 +82,9 @@ void create_message_keys(
std::size_t verify_mac_and_decrypt(
- axolotl::Cipher const & cipher,
- axolotl::MessageKey const & message_key,
- axolotl::MessageReader const & reader,
+ olm::Cipher const & cipher,
+ olm::MessageKey const & message_key,
+ olm::MessageReader const & reader,
std::uint8_t * plaintext, std::size_t max_plaintext_length
) {
return cipher.decrypt(
@@ -97,9 +97,9 @@ std::size_t verify_mac_and_decrypt(
std::size_t verify_mac_and_decrypt_for_existing_chain(
- axolotl::Ratchet const & session,
- axolotl::ChainKey const & chain,
- axolotl::MessageReader const & reader,
+ olm::Ratchet const & session,
+ olm::ChainKey const & chain,
+ olm::MessageReader const & reader,
std::uint8_t * plaintext, std::size_t max_plaintext_length
) {
if (reader.counter < chain.index) {
@@ -111,13 +111,13 @@ std::size_t verify_mac_and_decrypt_for_existing_chain(
return std::size_t(-1);
}
- axolotl::ChainKey new_chain = chain;
+ olm::ChainKey new_chain = chain;
while (new_chain.index < reader.counter) {
advance_chain_key(new_chain, new_chain);
}
- axolotl::MessageKey message_key;
+ olm::MessageKey message_key;
create_message_keys(new_chain, session.kdf_info, message_key);
std::size_t result = verify_mac_and_decrypt(
@@ -125,18 +125,18 @@ std::size_t verify_mac_and_decrypt_for_existing_chain(
plaintext, max_plaintext_length
);
- axolotl::unset(new_chain);
+ olm::unset(new_chain);
return result;
}
std::size_t verify_mac_and_decrypt_for_new_chain(
- axolotl::Ratchet const & session,
- axolotl::MessageReader const & reader,
+ olm::Ratchet const & session,
+ olm::MessageReader const & reader,
std::uint8_t * plaintext, std::size_t max_plaintext_length
) {
- axolotl::SharedKey new_root_key;
- axolotl::ReceiverChain new_chain;
+ olm::SharedKey new_root_key;
+ olm::ReceiverChain new_chain;
/* They shouldn't move to a new chain until we've sent them a message
* acknowledging the last one */
@@ -162,29 +162,29 @@ std::size_t verify_mac_and_decrypt_for_new_chain(
session, new_chain.chain_key, reader,
plaintext, max_plaintext_length
);
- axolotl::unset(new_root_key);
- axolotl::unset(new_chain);
+ olm::unset(new_root_key);
+ olm::unset(new_chain);
return result;
}
} // namespace
-axolotl::Ratchet::Ratchet(
- axolotl::KdfInfo const & kdf_info,
+olm::Ratchet::Ratchet(
+ olm::KdfInfo const & kdf_info,
Cipher const & ratchet_cipher
) : kdf_info(kdf_info),
ratchet_cipher(ratchet_cipher),
- last_error(axolotl::ErrorCode::SUCCESS) {
+ last_error(olm::ErrorCode::SUCCESS) {
}
-void axolotl::Ratchet::initialise_as_bob(
+void olm::Ratchet::initialise_as_bob(
std::uint8_t const * shared_secret, std::size_t shared_secret_length,
- axolotl::Curve25519PublicKey const & their_ratchet_key
+ olm::Curve25519PublicKey const & their_ratchet_key
) {
std::uint8_t derived_secrets[64];
- axolotl::hkdf_sha256(
+ olm::hkdf_sha256(
shared_secret, shared_secret_length,
nullptr, 0,
kdf_info.root_info, kdf_info.root_info_length,
@@ -195,16 +195,16 @@ void axolotl::Ratchet::initialise_as_bob(
std::memcpy(root_key, derived_secrets, 32);
std::memcpy(receiver_chains[0].chain_key.key, derived_secrets + 32, 32);
receiver_chains[0].ratchet_key = their_ratchet_key;
- axolotl::unset(derived_secrets);
+ olm::unset(derived_secrets);
}
-void axolotl::Ratchet::initialise_as_alice(
+void olm::Ratchet::initialise_as_alice(
std::uint8_t const * shared_secret, std::size_t shared_secret_length,
- axolotl::Curve25519KeyPair const & our_ratchet_key
+ olm::Curve25519KeyPair const & our_ratchet_key
) {
std::uint8_t derived_secrets[64];
- axolotl::hkdf_sha256(
+ olm::hkdf_sha256(
shared_secret, shared_secret_length,
nullptr, 0,
kdf_info.root_info, kdf_info.root_info_length,
@@ -215,14 +215,14 @@ void axolotl::Ratchet::initialise_as_alice(
std::memcpy(root_key, derived_secrets, 32);
std::memcpy(sender_chain[0].chain_key.key, derived_secrets + 32, 32);
sender_chain[0].ratchet_key = our_ratchet_key;
- axolotl::unset(derived_secrets);
+ olm::unset(derived_secrets);
}
-namespace axolotl {
+namespace olm {
static std::size_t pickle_length(
- const axolotl::SharedKey & value
+ const olm::SharedKey & value
) {
return KEY_LENGTH;
}
@@ -230,135 +230,135 @@ static std::size_t pickle_length(
static std::uint8_t * pickle(
std::uint8_t * pos,
- const axolotl::SharedKey & value
+ const olm::SharedKey & value
) {
- return axolotl::pickle_bytes(pos, value, KEY_LENGTH);
+ return olm::pickle_bytes(pos, value, KEY_LENGTH);
}
static std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::SharedKey & value
+ olm::SharedKey & value
) {
- return axolotl::unpickle_bytes(pos, end, value, KEY_LENGTH);
+ return olm::unpickle_bytes(pos, end, value, KEY_LENGTH);
}
static std::size_t pickle_length(
- const axolotl::SenderChain & value
+ const olm::SenderChain & value
) {
std::size_t length = 0;
- length += axolotl::pickle_length(value.ratchet_key);
- length += axolotl::pickle_length(value.chain_key.key);
- length += axolotl::pickle_length(value.chain_key.index);
+ length += olm::pickle_length(value.ratchet_key);
+ length += olm::pickle_length(value.chain_key.key);
+ length += olm::pickle_length(value.chain_key.index);
return length;
}
static std::uint8_t * pickle(
std::uint8_t * pos,
- const axolotl::SenderChain & value
+ const olm::SenderChain & value
) {
- pos = axolotl::pickle(pos, value.ratchet_key);
- pos = axolotl::pickle(pos, value.chain_key.key);
- pos = axolotl::pickle(pos, value.chain_key.index);
+ pos = olm::pickle(pos, value.ratchet_key);
+ pos = olm::pickle(pos, value.chain_key.key);
+ pos = olm::pickle(pos, value.chain_key.index);
return pos;
}
static std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::SenderChain & value
+ olm::SenderChain & value
) {
- pos = axolotl::unpickle(pos, end, value.ratchet_key);
- pos = axolotl::unpickle(pos, end, value.chain_key.key);
- pos = axolotl::unpickle(pos, end, value.chain_key.index);
+ pos = olm::unpickle(pos, end, value.ratchet_key);
+ pos = olm::unpickle(pos, end, value.chain_key.key);
+ pos = olm::unpickle(pos, end, value.chain_key.index);
return pos;
}
static std::size_t pickle_length(
- const axolotl::ReceiverChain & value
+ const olm::ReceiverChain & value
) {
std::size_t length = 0;
- length += axolotl::pickle_length(value.ratchet_key);
- length += axolotl::pickle_length(value.chain_key.key);
- length += axolotl::pickle_length(value.chain_key.index);
+ length += olm::pickle_length(value.ratchet_key);
+ length += olm::pickle_length(value.chain_key.key);
+ length += olm::pickle_length(value.chain_key.index);
return length;
}
static std::uint8_t * pickle(
std::uint8_t * pos,
- const axolotl::ReceiverChain & value
+ const olm::ReceiverChain & value
) {
- pos = axolotl::pickle(pos, value.ratchet_key);
- pos = axolotl::pickle(pos, value.chain_key.key);
- pos = axolotl::pickle(pos, value.chain_key.index);
+ pos = olm::pickle(pos, value.ratchet_key);
+ pos = olm::pickle(pos, value.chain_key.key);
+ pos = olm::pickle(pos, value.chain_key.index);
return pos;
}
static std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::ReceiverChain & value
+ olm::ReceiverChain & value
) {
- pos = axolotl::unpickle(pos, end, value.ratchet_key);
- pos = axolotl::unpickle(pos, end, value.chain_key.key);
- pos = axolotl::unpickle(pos, end, value.chain_key.index);
+ pos = olm::unpickle(pos, end, value.ratchet_key);
+ pos = olm::unpickle(pos, end, value.chain_key.key);
+ pos = olm::unpickle(pos, end, value.chain_key.index);
return pos;
}
static std::size_t pickle_length(
- const axolotl::SkippedMessageKey & value
+ const olm::SkippedMessageKey & value
) {
std::size_t length = 0;
- length += axolotl::pickle_length(value.ratchet_key);
- length += axolotl::pickle_length(value.message_key.key);
- length += axolotl::pickle_length(value.message_key.index);
+ length += olm::pickle_length(value.ratchet_key);
+ length += olm::pickle_length(value.message_key.key);
+ length += olm::pickle_length(value.message_key.index);
return length;
}
static std::uint8_t * pickle(
std::uint8_t * pos,
- const axolotl::SkippedMessageKey & value
+ const olm::SkippedMessageKey & value
) {
- pos = axolotl::pickle(pos, value.ratchet_key);
- pos = axolotl::pickle(pos, value.message_key.key);
- pos = axolotl::pickle(pos, value.message_key.index);
+ pos = olm::pickle(pos, value.ratchet_key);
+ pos = olm::pickle(pos, value.message_key.key);
+ pos = olm::pickle(pos, value.message_key.index);
return pos;
}
static std::uint8_t const * unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::SkippedMessageKey & value
+ olm::SkippedMessageKey & value
) {
- pos = axolotl::unpickle(pos, end, value.ratchet_key);
- pos = axolotl::unpickle(pos, end, value.message_key.key);
- pos = axolotl::unpickle(pos, end, value.message_key.index);
+ pos = olm::unpickle(pos, end, value.ratchet_key);
+ pos = olm::unpickle(pos, end, value.message_key.key);
+ pos = olm::unpickle(pos, end, value.message_key.index);
return pos;
}
-} // namespace axolotl
+} // namespace olm
-std::size_t axolotl::pickle_length(
- axolotl::Ratchet const & value
+std::size_t olm::pickle_length(
+ olm::Ratchet const & value
) {
std::size_t length = 0;
length += KEY_LENGTH;
- length += axolotl::pickle_length(value.sender_chain);
- length += axolotl::pickle_length(value.receiver_chains);
- length += axolotl::pickle_length(value.skipped_message_keys);
+ length += olm::pickle_length(value.sender_chain);
+ length += olm::pickle_length(value.receiver_chains);
+ length += olm::pickle_length(value.skipped_message_keys);
return length;
}
-std::uint8_t * axolotl::pickle(
+std::uint8_t * olm::pickle(
std::uint8_t * pos,
- axolotl::Ratchet const & value
+ olm::Ratchet const & value
) {
pos = pickle(pos, value.root_key);
pos = pickle(pos, value.sender_chain);
@@ -368,9 +368,9 @@ std::uint8_t * axolotl::pickle(
}
-std::uint8_t const * axolotl::unpickle(
+std::uint8_t const * olm::unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
- axolotl::Ratchet & value
+ olm::Ratchet & value
) {
pos = unpickle(pos, end, value.root_key);
pos = unpickle(pos, end, value.sender_chain);
@@ -380,7 +380,7 @@ std::uint8_t const * axolotl::unpickle(
}
-std::size_t axolotl::Ratchet::encrypt_output_length(
+std::size_t olm::Ratchet::encrypt_output_length(
std::size_t plaintext_length
) {
std::size_t counter = 0;
@@ -390,18 +390,18 @@ std::size_t axolotl::Ratchet::encrypt_output_length(
std::size_t padded = ratchet_cipher.encrypt_ciphertext_length(
plaintext_length
);
- return axolotl::encode_message_length(
+ return olm::encode_message_length(
counter, KEY_LENGTH, padded, ratchet_cipher.mac_length()
);
}
-std::size_t axolotl::Ratchet::encrypt_random_length() {
+std::size_t olm::Ratchet::encrypt_random_length() {
return sender_chain.empty() ? KEY_LENGTH : 0;
}
-std::size_t axolotl::Ratchet::encrypt(
+std::size_t olm::Ratchet::encrypt(
std::uint8_t const * plaintext, std::size_t plaintext_length,
std::uint8_t const * random, std::size_t random_length,
std::uint8_t * output, std::size_t max_output_length
@@ -409,17 +409,17 @@ std::size_t axolotl::Ratchet::encrypt(
std::size_t output_length = encrypt_output_length(plaintext_length);
if (random_length < encrypt_random_length()) {
- last_error = axolotl::ErrorCode::NOT_ENOUGH_RANDOM;
+ last_error = olm::ErrorCode::NOT_ENOUGH_RANDOM;
return std::size_t(-1);
}
if (max_output_length < output_length) {
- last_error = axolotl::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
+ last_error = olm::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
return std::size_t(-1);
}
if (sender_chain.empty()) {
sender_chain.insert();
- axolotl::generate_key(random, sender_chain[0].ratchet_key);
+ olm::generate_key(random, sender_chain[0].ratchet_key);
create_chain_key(
root_key,
sender_chain[0].ratchet_key,
@@ -439,9 +439,9 @@ std::size_t axolotl::Ratchet::encrypt(
std::uint32_t counter = keys.index;
Curve25519PublicKey const & ratchet_key = sender_chain[0].ratchet_key;
- axolotl::MessageWriter writer;
+ olm::MessageWriter writer;
- axolotl::encode_message(
+ olm::encode_message(
writer, PROTOCOL_VERSION, counter, KEY_LENGTH, ciphertext_length, output
);
@@ -454,21 +454,21 @@ std::size_t axolotl::Ratchet::encrypt(
output, output_length
);
- axolotl::unset(keys);
+ olm::unset(keys);
return output_length;
}
-std::size_t axolotl::Ratchet::decrypt_max_plaintext_length(
+std::size_t olm::Ratchet::decrypt_max_plaintext_length(
std::uint8_t const * input, std::size_t input_length
) {
- axolotl::MessageReader reader;
- axolotl::decode_message(
+ olm::MessageReader reader;
+ olm::decode_message(
reader, input, input_length, ratchet_cipher.mac_length()
);
if (!reader.ciphertext) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_FORMAT;
+ last_error = olm::ErrorCode::BAD_MESSAGE_FORMAT;
return std::size_t(-1);
}
@@ -476,22 +476,22 @@ std::size_t axolotl::Ratchet::decrypt_max_plaintext_length(
}
-std::size_t axolotl::Ratchet::decrypt(
+std::size_t olm::Ratchet::decrypt(
std::uint8_t const * input, std::size_t input_length,
std::uint8_t * plaintext, std::size_t max_plaintext_length
) {
- axolotl::MessageReader reader;
- axolotl::decode_message(
+ olm::MessageReader reader;
+ olm::decode_message(
reader, input, input_length, ratchet_cipher.mac_length()
);
if (reader.version != PROTOCOL_VERSION) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_VERSION;
+ last_error = olm::ErrorCode::BAD_MESSAGE_VERSION;
return std::size_t(-1);
}
if (!reader.has_counter || !reader.ratchet_key || !reader.ciphertext) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_FORMAT;
+ last_error = olm::ErrorCode::BAD_MESSAGE_FORMAT;
return std::size_t(-1);
}
@@ -500,17 +500,17 @@ std::size_t axolotl::Ratchet::decrypt(
);
if (max_plaintext_length < max_length) {
- last_error = axolotl::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
+ last_error = olm::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
return std::size_t(-1);
}
if (reader.ratchet_key_length != KEY_LENGTH) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_FORMAT;
+ last_error = olm::ErrorCode::BAD_MESSAGE_FORMAT;
return std::size_t(-1);
}
ReceiverChain * chain = nullptr;
- for (axolotl::ReceiverChain & receiver_chain : receiver_chains) {
+ for (olm::ReceiverChain & receiver_chain : receiver_chains) {
if (0 == std::memcmp(
receiver_chain.ratchet_key.public_key, reader.ratchet_key,
KEY_LENGTH
@@ -529,7 +529,7 @@ std::size_t axolotl::Ratchet::decrypt(
} else if (chain->chain_key.index > reader.counter) {
/* Chain already advanced beyond the key for this message
* Check if the message keys are in the skipped key list. */
- for (axolotl::SkippedMessageKey & skipped : skipped_message_keys) {
+ for (olm::SkippedMessageKey & skipped : skipped_message_keys) {
if (reader.counter == skipped.message_key.index
&& 0 == std::memcmp(
skipped.ratchet_key.public_key, reader.ratchet_key,
@@ -546,7 +546,7 @@ std::size_t axolotl::Ratchet::decrypt(
if (result != std::size_t(-1)) {
/* Remove the key from the skipped keys now that we've
* decoded the message it corresponds to. */
- axolotl::unset(skipped);
+ olm::unset(skipped);
skipped_message_keys.erase(&skipped);
return result;
}
@@ -559,7 +559,7 @@ std::size_t axolotl::Ratchet::decrypt(
}
if (result == std::size_t(-1)) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_MAC;
+ last_error = olm::ErrorCode::BAD_MESSAGE_MAC;
return std::size_t(-1);
}
@@ -576,12 +576,12 @@ std::size_t axolotl::Ratchet::decrypt(
root_key, sender_chain[0].ratchet_key, chain->ratchet_key,
kdf_info, root_key, chain->chain_key
);
- axolotl::unset(sender_chain[0]);
+ olm::unset(sender_chain[0]);
sender_chain.erase(sender_chain.begin());
}
while (chain->chain_key.index < reader.counter) {
- axolotl::SkippedMessageKey & key = *skipped_message_keys.insert();
+ olm::SkippedMessageKey & key = *skipped_message_keys.insert();
create_message_keys(chain->chain_key, kdf_info, key.message_key);
key.ratchet_key = chain->ratchet_key;
advance_chain_key(chain->chain_key, chain->chain_key);
diff --git a/src/session.cpp b/src/session.cpp
index 9d0935b..a028431 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -12,13 +12,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "axolotl/session.hh"
-#include "axolotl/cipher.hh"
-#include "axolotl/crypto.hh"
-#include "axolotl/account.hh"
-#include "axolotl/memory.hh"
-#include "axolotl/message.hh"
-#include "axolotl/pickle.hh"
+#include "olm/session.hh"
+#include "olm/cipher.hh"
+#include "olm/crypto.hh"
+#include "olm/account.hh"
+#include "olm/memory.hh"
+#include "olm/message.hh"
+#include "olm/pickle.hh"
#include <cstring>
@@ -27,51 +27,51 @@ namespace {
static const std::size_t KEY_LENGTH = 32;
static const std::uint8_t PROTOCOL_VERSION = 0x3;
-static const std::uint8_t ROOT_KDF_INFO[] = "AXOLOTL_ROOT";
-static const std::uint8_t RATCHET_KDF_INFO[] = "AXOLOTL_RATCHET";
-static const std::uint8_t CIPHER_KDF_INFO[] = "AXOLOTL_KEYS";
+static const std::uint8_t ROOT_KDF_INFO[] = "OLM_ROOT";
+static const std::uint8_t RATCHET_KDF_INFO[] = "OLM_RATCHET";
+static const std::uint8_t CIPHER_KDF_INFO[] = "OLM_KEYS";
-static const axolotl::CipherAesSha256 AXOLOTL_CIPHER(
+static const olm::CipherAesSha256 OLM_CIPHER(
CIPHER_KDF_INFO, sizeof(CIPHER_KDF_INFO) -1
);
-static const axolotl::KdfInfo AXOLOTL_KDF_INFO = {
+static const olm::KdfInfo OLM_KDF_INFO = {
ROOT_KDF_INFO, sizeof(ROOT_KDF_INFO) - 1,
RATCHET_KDF_INFO, sizeof(RATCHET_KDF_INFO) - 1
};
} // namespace
-axolotl::Session::Session(
-) : ratchet(AXOLOTL_KDF_INFO, AXOLOTL_CIPHER),
- last_error(axolotl::ErrorCode::SUCCESS),
+olm::Session::Session(
+) : ratchet(OLM_KDF_INFO, OLM_CIPHER),
+ last_error(olm::ErrorCode::SUCCESS),
received_message(false),
bob_one_time_key_id(0) {
}
-std::size_t axolotl::Session::new_outbound_session_random_length() {
+std::size_t olm::Session::new_outbound_session_random_length() {
return KEY_LENGTH * 2;
}
-std::size_t axolotl::Session::new_outbound_session(
- axolotl::Account const & local_account,
- axolotl::Curve25519PublicKey const & identity_key,
- axolotl::RemoteKey const & one_time_key,
+std::size_t olm::Session::new_outbound_session(
+ olm::Account const & local_account,
+ olm::Curve25519PublicKey const & identity_key,
+ olm::RemoteKey const & one_time_key,
std::uint8_t const * random, std::size_t random_length
) {
if (random_length < new_outbound_session_random_length()) {
- last_error = axolotl::ErrorCode::NOT_ENOUGH_RANDOM;
+ last_error = olm::ErrorCode::NOT_ENOUGH_RANDOM;
return std::size_t(-1);
}
Curve25519KeyPair base_key;
- axolotl::generate_key(random, base_key);
+ olm::generate_key(random, base_key);
Curve25519KeyPair ratchet_key;
- axolotl::generate_key(random + 32, ratchet_key);
+ olm::generate_key(random + 32, ratchet_key);
received_message = false;
alice_identity_key.id = local_account.identity_key.id;
@@ -81,21 +81,21 @@ std::size_t axolotl::Session::new_outbound_session(
std::uint8_t shared_secret[96];
- axolotl::curve25519_shared_secret(
+ olm::curve25519_shared_secret(
local_account.identity_key.key, one_time_key.key, shared_secret
);
- axolotl::curve25519_shared_secret(
+ olm::curve25519_shared_secret(
base_key, identity_key, shared_secret + 32
);
- axolotl::curve25519_shared_secret(
+ olm::curve25519_shared_secret(
base_key, one_time_key.key, shared_secret + 64
);
ratchet.initialise_as_alice(shared_secret, 96, ratchet_key);
- axolotl::unset(base_key);
- axolotl::unset(ratchet_key);
- axolotl::unset(shared_secret);
+ olm::unset(base_key);
+ olm::unset(ratchet_key);
+ olm::unset(shared_secret);
return std::size_t(0);
}
@@ -103,7 +103,7 @@ std::size_t axolotl::Session::new_outbound_session(
namespace {
bool check_message_fields(
- axolotl::PreKeyMessageReader & reader
+ olm::PreKeyMessageReader & reader
) {
bool ok = true;
ok = ok && reader.identity_key;
@@ -118,19 +118,19 @@ bool check_message_fields(
} // namespace
-std::size_t axolotl::Session::new_inbound_session(
- axolotl::Account & local_account,
+std::size_t olm::Session::new_inbound_session(
+ olm::Account & local_account,
std::uint8_t const * one_time_key_message, std::size_t message_length
) {
- axolotl::PreKeyMessageReader reader;
+ olm::PreKeyMessageReader reader;
decode_one_time_key_message(reader, one_time_key_message, message_length);
if (!check_message_fields(reader)) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_FORMAT;
+ last_error = olm::ErrorCode::BAD_MESSAGE_FORMAT;
return std::size_t(-1);
}
- axolotl::MessageReader message_reader;
+ olm::MessageReader message_reader;
decode_message(
message_reader, reader.message, reader.message_length,
ratchet.ratchet_cipher.mac_length()
@@ -138,34 +138,34 @@ std::size_t axolotl::Session::new_inbound_session(
if (!message_reader.ratchet_key
|| message_reader.ratchet_key_length != KEY_LENGTH) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_FORMAT;
+ last_error = olm::ErrorCode::BAD_MESSAGE_FORMAT;
return std::size_t(-1);
}
std::memcpy(alice_identity_key.key.public_key, reader.identity_key, 32);
std::memcpy(alice_base_key.public_key, reader.base_key, 32);
bob_one_time_key_id = reader.one_time_key_id;
- axolotl::Curve25519PublicKey ratchet_key;
+ olm::Curve25519PublicKey ratchet_key;
std::memcpy(ratchet_key.public_key, message_reader.ratchet_key, 32);
- axolotl::LocalKey const * bob_one_time_key = local_account.lookup_key(
+ olm::LocalKey const * bob_one_time_key = local_account.lookup_key(
bob_one_time_key_id
);
if (!bob_one_time_key) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_KEY_ID;
+ last_error = olm::ErrorCode::BAD_MESSAGE_KEY_ID;
return std::size_t(-1);
}
std::uint8_t shared_secret[96];
- axolotl::curve25519_shared_secret(
+ olm::curve25519_shared_secret(
bob_one_time_key->key, alice_identity_key.key, shared_secret
);
- axolotl::curve25519_shared_secret(
+ olm::curve25519_shared_secret(
local_account.identity_key.key, alice_base_key, shared_secret + 32
);
- axolotl::curve25519_shared_secret(
+ olm::curve25519_shared_secret(
bob_one_time_key->key, alice_base_key, shared_secret + 64
);
@@ -175,10 +175,10 @@ std::size_t axolotl::Session::new_inbound_session(
}
-bool axolotl::Session::matches_inbound_session(
+bool olm::Session::matches_inbound_session(
std::uint8_t const * one_time_key_message, std::size_t message_length
) {
- axolotl::PreKeyMessageReader reader;
+ olm::PreKeyMessageReader reader;
decode_one_time_key_message(reader, one_time_key_message, message_length);
if (!check_message_fields(reader)) {
@@ -197,16 +197,16 @@ bool axolotl::Session::matches_inbound_session(
}
-axolotl::MessageType axolotl::Session::encrypt_message_type() {
+olm::MessageType olm::Session::encrypt_message_type() {
if (received_message) {
- return axolotl::MessageType::MESSAGE;
+ return olm::MessageType::MESSAGE;
} else {
- return axolotl::MessageType::PRE_KEY;
+ return olm::MessageType::PRE_KEY;
}
}
-std::size_t axolotl::Session::encrypt_message_length(
+std::size_t olm::Session::encrypt_message_length(
std::size_t plaintext_length
) {
std::size_t message_length = ratchet.encrypt_output_length(
@@ -226,18 +226,18 @@ std::size_t axolotl::Session::encrypt_message_length(
}
-std::size_t axolotl::Session::encrypt_random_length() {
+std::size_t olm::Session::encrypt_random_length() {
return ratchet.encrypt_random_length();
}
-std::size_t axolotl::Session::encrypt(
+std::size_t olm::Session::encrypt(
std::uint8_t const * plaintext, std::size_t plaintext_length,
std::uint8_t const * random, std::size_t random_length,
std::uint8_t * message, std::size_t message_length
) {
if (message_length < encrypt_message_length(plaintext_length)) {
- last_error = axolotl::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
+ last_error = olm::ErrorCode::OUTPUT_BUFFER_TOO_SMALL;
return std::size_t(-1);
}
std::uint8_t * message_body;
@@ -248,7 +248,7 @@ std::size_t axolotl::Session::encrypt(
if (received_message) {
message_body = message;
} else {
- axolotl::PreKeyMessageWriter writer;
+ olm::PreKeyMessageWriter writer;
encode_one_time_key_message(
writer,
PROTOCOL_VERSION,
@@ -275,26 +275,26 @@ std::size_t axolotl::Session::encrypt(
if (result == std::size_t(-1)) {
last_error = ratchet.last_error;
- ratchet.last_error = axolotl::ErrorCode::SUCCESS;
+ ratchet.last_error = olm::ErrorCode::SUCCESS;
}
return result;
}
-std::size_t axolotl::Session::decrypt_max_plaintext_length(
+std::size_t olm::Session::decrypt_max_plaintext_length(
MessageType message_type,
std::uint8_t const * message, std::size_t message_length
) {
std::uint8_t const * message_body;
std::size_t message_body_length;
- if (message_type == axolotl::MessageType::MESSAGE) {
+ if (message_type == olm::MessageType::MESSAGE) {
message_body = message;
message_body_length = message_length;
} else {
- axolotl::PreKeyMessageReader reader;
+ olm::PreKeyMessageReader reader;
decode_one_time_key_message(reader, message, message_length);
if (!reader.message) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_FORMAT;
+ last_error = olm::ErrorCode::BAD_MESSAGE_FORMAT;
return std::size_t(-1);
}
message_body = reader.message;
@@ -307,27 +307,27 @@ std::size_t axolotl::Session::decrypt_max_plaintext_length(
if (result == std::size_t(-1)) {
last_error = ratchet.last_error;
- ratchet.last_error = axolotl::ErrorCode::SUCCESS;
+ ratchet.last_error = olm::ErrorCode::SUCCESS;
}
return result;
}
-std::size_t axolotl::Session::decrypt(
- axolotl::MessageType message_type,
+std::size_t olm::Session::decrypt(
+ olm::MessageType message_type,
std::uint8_t const * message, std::size_t message_length,
std::uint8_t * plaintext, std::size_t max_plaintext_length
) {
std::uint8_t const * message_body;
std::size_t message_body_length;
- if (message_type == axolotl::MessageType::MESSAGE) {
+ if (message_type == olm::MessageType::MESSAGE) {
message_body = message;
message_body_length = message_length;
} else {
- axolotl::PreKeyMessageReader reader;
+ olm::PreKeyMessageReader reader;
decode_one_time_key_message(reader, message, message_length);
if (!reader.message) {
- last_error = axolotl::ErrorCode::BAD_MESSAGE_FORMAT;
+ last_error = olm::ErrorCode::BAD_MESSAGE_FORMAT;
return std::size_t(-1);
}
message_body = reader.message;
@@ -340,7 +340,7 @@ std::size_t axolotl::Session::decrypt(
if (result == std::size_t(-1)) {
last_error = ratchet.last_error;
- ratchet.last_error = axolotl::ErrorCode::SUCCESS;
+ ratchet.last_error = olm::ErrorCode::SUCCESS;
} else {
received_message = true;
}
@@ -348,44 +348,44 @@ std::size_t axolotl::Session::decrypt(
}
-std::size_t axolotl::pickle_length(
+std::size_t olm::pickle_length(
Session const & value
) {
std::size_t length = 0;
- length += axolotl::pickle_length(value.received_message);
- length += axolotl::pickle_length(value.alice_identity_key.id);
- length += axolotl::pickle_length(value.alice_identity_key.key);
- length += axolotl::pickle_length(value.alice_base_key);
- length += axolotl::pickle_length(value.bob_one_time_key_id);
- length += axolotl::pickle_length(value.ratchet);
+ length += olm::pickle_length(value.received_message);
+ length += olm::pickle_length(value.alice_identity_key.id);
+ length += olm::pickle_length(value.alice_identity_key.key);
+ length += olm::pickle_length(value.alice_base_key);
+ length += olm::pickle_length(value.bob_one_time_key_id);
+ length += olm::pickle_length(value.ratchet);
return length;
}
-std::uint8_t * axolotl::pickle(
+std::uint8_t * olm::pickle(
std::uint8_t * pos,
Session const & value
) {
- pos = axolotl::pickle(pos, value.received_message);
- pos = axolotl::pickle(pos, value.alice_identity_key.id);
- pos = axolotl::pickle(pos, value.alice_identity_key.key);
- pos = axolotl::pickle(pos, value.alice_base_key);
- pos = axolotl::pickle(pos, value.bob_one_time_key_id);
- pos = axolotl::pickle(pos, value.ratchet);
+ pos = olm::pickle(pos, value.received_message);
+ pos = olm::pickle(pos, value.alice_identity_key.id);
+ pos = olm::pickle(pos, value.alice_identity_key.key);
+ pos = olm::pickle(pos, value.alice_base_key);
+ pos = olm::pickle(pos, value.bob_one_time_key_id);
+ pos = olm::pickle(pos, value.ratchet);
return pos;
}
-std::uint8_t const * axolotl::unpickle(
+std::uint8_t const * olm::unpickle(
std::uint8_t const * pos, std::uint8_t const * end,
Session & value
) {
- pos = axolotl::unpickle(pos, end, value.received_message);
- pos = axolotl::unpickle(pos, end, value.alice_identity_key.id);
- pos = axolotl::unpickle(pos, end, value.alice_identity_key.key);
- pos = axolotl::unpickle(pos, end, value.alice_base_key);
- pos = axolotl::unpickle(pos, end, value.bob_one_time_key_id);
- pos = axolotl::unpickle(pos, end, value.ratchet);
+ pos = olm::unpickle(pos, end, value.received_message);
+ pos = olm::unpickle(pos, end, value.alice_identity_key.id);
+ pos = olm::unpickle(pos, end, value.alice_identity_key.key);
+ pos = olm::unpickle(pos, end, value.alice_base_key);
+ pos = olm::unpickle(pos, end, value.bob_one_time_key_id);
+ pos = olm::unpickle(pos, end, value.ratchet);
return pos;
}