Merge commit 'acae4e8' into logging_enabled

This commit is contained in:
Richard van der Hoff 2016-06-28 14:16:56 +01:00
commit eb3bad7718
6 changed files with 10 additions and 44 deletions

View file

@ -216,7 +216,7 @@ payload followed by a fixed length message authentication code.
| Version Byte | Payload Bytes | MAC Bytes | | Version Byte | Payload Bytes | MAC Bytes |
+--------------+------------------------------------+-----------+ +--------------+------------------------------------+-----------+
The version byte is ``"\x01"``. The version byte is ``"\x03"``.
The payload consists of key-value pairs where the keys are integers and the The payload consists of key-value pairs where the keys are integers and the
values are integers and strings. The keys are encoded as a variable length values are integers and strings. The keys are encoded as a variable length
@ -241,7 +241,7 @@ Cipher-Text 0x22 String The cipher-text, :math:`X_{i,j}`, of the message
=========== ===== ======== ================================================ =========== ===== ======== ================================================
The length of the MAC is determined by the authenticated encryption algorithm The length of the MAC is determined by the authenticated encryption algorithm
being used. (Olm version 1 uses HMAC-SHA-256, giving a MAC of 32 bytes). The being used. (Olm version 1 uses HMAC-SHA-256, truncated to 8 bytes). The
MAC protects all of the bytes preceding the MAC. MAC protects all of the bytes preceding the MAC.
Pre-Key Messages Pre-Key Messages
@ -256,7 +256,7 @@ length payload.
| Version Byte | Payload Bytes | | Version Byte | Payload Bytes |
+--------------+------------------------------------+ +--------------+------------------------------------+
The version byte is ``"\x01"``. The version byte is ``"\x03"``.
The payload uses the same key-value format as for normal messages. The payload uses the same key-value format as for normal messages.
@ -280,9 +280,10 @@ Version 1
~~~~~~~~~ ~~~~~~~~~
Version 1 of Olm uses AES-256_ in CBC_ mode with `PCKS#7`_ padding for Version 1 of Olm uses AES-256_ in CBC_ mode with `PCKS#7`_ padding for
encryption and HMAC-SHA-256_ for authentication. The 256 bit AES key, 256 bit encryption and HMAC-SHA-256_ (truncated to 64 bits) for authentication. The
HMAC key, and 128 bit AES IV are derived from the message key using 256 bit AES key, 256 bit HMAC key, and 128 bit AES IV are derived from the
HKDF-SHA-256_ using the default salt and an info of ``"OLM_KEYS"``. message key using HKDF-SHA-256_ using the default salt and an info of
``"OLM_KEYS"``.
.. math:: .. math::
@ -295,7 +296,7 @@ The plain-text is encrypted with AES-256, using the key :math:`AES\_KEY_{i,j}`
and the IV :math:`AES\_IV_{i,j}` to give the cipher-text, :math:`X_{i,j}`. and the IV :math:`AES\_IV_{i,j}` to give the cipher-text, :math:`X_{i,j}`.
Then the entire message (including the Version Byte and all Payload Bytes) are Then the entire message (including the Version Byte and all Payload Bytes) are
passed through HMAC-SHA-256, and the MAC is appended to the message. passed through HMAC-SHA-256. The first 8 bytes of the MAC are appended to the message.
IPR IPR
--- ---
@ -311,8 +312,8 @@ Acknowledgements
---------------- ----------------
The ratchet that Olm implements was designed by Trevor Perrin and Moxie The ratchet that Olm implements was designed by Trevor Perrin and Moxie
Marlinspike - details at https://github.com/trevp/axolotl/wiki. Olm is an Marlinspike - details at https://github.com/trevp/double_ratchet/wiki. Olm is
entirely new implementation written by the Matrix.org team. an entirely new implementation written by the Matrix.org team.
.. _`Curve25519`: http://cr.yp.to/ecdh.html .. _`Curve25519`: http://cr.yp.to/ecdh.html
.. _`Triple Diffie-Hellman`: https://whispersystems.org/blog/simplifying-otr-deniability/ .. _`Triple Diffie-Hellman`: https://whispersystems.org/blog/simplifying-otr-deniability/

View file

@ -17,7 +17,6 @@
#include <cstdint> #include <cstdint>
#include <cstddef> #include <cstddef>
#include <string>
namespace olm { namespace olm {
@ -27,7 +26,6 @@ static const std::size_t IV_LENGTH = 16;
struct Curve25519PublicKey { struct Curve25519PublicKey {
std::uint8_t public_key[KEY_LENGTH]; std::uint8_t public_key[KEY_LENGTH];
std::string to_string() const;
}; };

View file

@ -87,23 +87,4 @@ std::uint8_t * store_array(
return destination + sizeof(T); return destination + sizeof(T);
} }
/** convert an array of bytes to a string representation */
template<typename T>
std::string bytes_to_string(T start, T end) {
std::ostringstream ss;
ss << std::hex << std::setfill('0');
while (start != end) {
ss << std::setw(2) << static_cast<int>(*start++);
if (start != end) {
ss << ":";
}
}
return ss.str();
}
template<typename T>
std::string bytes_to_string(T start, size_t len) {
return bytes_to_string(start, start+len);
}
} // namespace olm } // namespace olm

View file

@ -415,13 +415,6 @@ size_t olm_ed25519_verify(
void * signature, size_t signature_length void * signature, size_t signature_length
); );
/**
* Set the log level. By default, 1, which logs only FATAL messages.
*/
void olm_set_log_level(
unsigned int level
);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View file

@ -382,6 +382,4 @@ Utility.prototype['ed25519_verify'] = restore_stack(function(
olm_exports["Account"] = Account; olm_exports["Account"] = Account;
olm_exports["Session"] = Session; olm_exports["Session"] = Session;
olm_exports["Utility"] = Utility; olm_exports["Utility"] = Utility;
olm_exports['set_log_level'] = Module['_olm_set_log_level'];
}(); }();

View file

@ -101,11 +101,6 @@ inline static void hmac_sha256_final(
} // namespace } // namespace
std::string olm::Curve25519PublicKey::to_string() const {
return olm::bytes_to_string(std::begin(public_key),
std::end(public_key));
};
void olm::curve25519_generate_key( void olm::curve25519_generate_key(
std::uint8_t const * random_32_bytes, std::uint8_t const * random_32_bytes,
olm::Curve25519KeyPair & key_pair olm::Curve25519KeyPair & key_pair