aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ratchet.cpp11
-rw-r--r--src/session.cpp6
-rw-r--r--tests/test_session.cpp14
3 files changed, 12 insertions, 19 deletions
diff --git a/src/ratchet.cpp b/src/ratchet.cpp
index 671d260..aab5fbb 100644
--- a/src/ratchet.cpp
+++ b/src/ratchet.cpp
@@ -363,10 +363,6 @@ std::size_t olm::pickle_length(
length += olm::pickle_length(value.sender_chain);
length += olm::pickle_length(value.receiver_chains);
length += olm::pickle_length(value.skipped_message_keys);
-
- // the logging_enabled branch includes a 'chain_index' field
- length += olm::pickle_length(std::uint32_t(0));
-
return length;
}
@@ -378,11 +374,6 @@ std::uint8_t * olm::pickle(
pos = pickle(pos, value.sender_chain);
pos = pickle(pos, value.receiver_chains);
pos = pickle(pos, value.skipped_message_keys);
-
- // the logging_enabled branch includes a 'chain_index' field; for us, it is
- // empty.
- pos = pickle(pos, std::uint32_t(0));
-
return pos;
}
@@ -397,7 +388,7 @@ std::uint8_t const * olm::unpickle(
pos = unpickle(pos, end, value.receiver_chains);
pos = unpickle(pos, end, value.skipped_message_keys);
- // pickle v2 includes a chain index; pickle v1 did not.
+ // pickle v 0x80000001 includes a chain index; pickle v1 does not.
if (includes_chain_index) {
std::uint32_t dummy;
pos = unpickle(pos, end, dummy);
diff --git a/src/session.cpp b/src/session.cpp
index b76a6b8..6ca7f36 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -396,7 +396,9 @@ std::size_t olm::Session::decrypt(
}
namespace {
-static const std::uint32_t SESSION_PICKLE_VERSION = 2;
+// the master branch writes pickle version 1; the logging_enabled branch writes
+// 0x80000001.
+static const std::uint32_t SESSION_PICKLE_VERSION = 1;
}
std::size_t olm::pickle_length(
@@ -440,7 +442,7 @@ std::uint8_t const * olm::unpickle(
includes_chain_index = false;
break;
- case 2:
+ case 0x80000001UL:
includes_chain_index = true;
break;
diff --git a/tests/test_session.cpp b/tests/test_session.cpp
index a0c1f6a..c4c5b2a 100644
--- a/tests/test_session.cpp
+++ b/tests/test_session.cpp
@@ -116,13 +116,13 @@ int main() {
TestCase test_case("V2 session pickle");
const uint8_t *PICKLE_KEY=(uint8_t *)"secret_key";
- uint8_t pickled[1024] =
- "XTc0/aHUZIVjq257h6sCI1f4/EFJ42QYSOp6SDn88FSXRkO9dfrxGk8gPvZiNCnXFYWggX"
- "UkTkaiSd9MFuj6kB49COlLU1zKw3caJmEIgud7umbYrAXhaBMCTl8T3XFVJK5gXThOE3sI"
- "QCRy4RP4zAVJMTwnvNTzobi3N0aCxEDC+RIol6cEv+bV04zs8wbivdBDVJ7WIDVBF42dzQ"
- "qPhL4KC5TLB9FYn/eUvrn56tHa5B3udjm1dbPynkjzkRy7Mbp5zUe6XhHDesKo0VxaHhOl"
- "t117bSOKdf72wK/bStaWTpNdAA9h0AFuj2Rgp7E42yJTHY0tv23lMH1Hd+IHdsMsgMcfvL"
- "Si";
+ uint8_t pickled[] =
+ "m+DS/q34MXpw2xp50ZD0B7val1mlMpQXo0mx+VPje0weFYRRuuZQBdJgcFPEpi2MVSpA4c"
+ "qgqHyj2/bU7/lz+BXkEBrCFVx0BJidxXfOLDW4TNtRhLS1YHJNGP8GvTg1+dCytBTLsCdm"
+ "5f945Eq1U/pY3Cg96YTUufFP6EYrfRoDbAsRHc+h+wKKftQv+W44yUmRhcCemGHtpxk3UQ"
+ "AMCI7EBv9BvveyZMy3p9qZ3xvFK34Hef+R7gjtFycz7Nk/4UF46sT3cTmUlXz9iFW4uz2F"
+ "rTI1Wjym+l0DadsbSpHSUjmp9zt4qRP2UjwfZ5QNLv+cdObIfqFsiThGu/PlKigdF4SLHr"
+ "nG";
size_t pickle_len = _olm_enc_input(
PICKLE_KEY, strlen((char *)PICKLE_KEY),