Return the base64-encoded length of pickles

make olm_pickle_* return the lengths of the base64-encoded pickles, rather than
the raw pickle. (From the application's POV, the format of the pickle is
opaque: it doesn't even know that it is base64-encoded. So returning the length
of the raw pickle is particularly unhelpful.)
rav/inter_device_key_shares
Richard van der Hoff 2016-10-24 10:06:06 +01:00
parent d1a535861d
commit a7310c5821
3 changed files with 34 additions and 25 deletions

View File

@ -60,7 +60,7 @@ size_t _olm_enc_output(
raw_output, length
);
_olm_encode_base64(raw_output, length, output);
return raw_length;
return base64_length;
}

View File

@ -28,23 +28,26 @@ int main() {
size_t pickle_length = olm_pickle_outbound_group_session_length(session);
uint8_t pickle1[pickle_length];
olm_pickle_outbound_group_session(session,
"secret_key", 10,
pickle1, pickle_length);
size_t res = olm_pickle_outbound_group_session(
session, "secret_key", 10, pickle1, pickle_length
);
assert_equals(pickle_length, res);
uint8_t pickle2[pickle_length];
memcpy(pickle2, pickle1, pickle_length);
uint8_t buffer2[size];
OlmOutboundGroupSession *session2 = olm_outbound_group_session(buffer2);
size_t res = olm_unpickle_outbound_group_session(session2,
"secret_key", 10,
pickle2, pickle_length);
res = olm_unpickle_outbound_group_session(
session2, "secret_key", 10, pickle2, pickle_length
);
assert_not_equals((size_t)-1, res);
assert_equals(pickle_length,
olm_pickle_outbound_group_session_length(session2));
olm_pickle_outbound_group_session(session2,
"secret_key", 10,
pickle2, pickle_length);
res = olm_pickle_outbound_group_session(
session2, "secret_key", 10, pickle2, pickle_length
);
assert_equals(pickle_length, res);
assert_equals(pickle1, pickle2, pickle_length);
}
@ -59,23 +62,25 @@ int main() {
size_t pickle_length = olm_pickle_inbound_group_session_length(session);
uint8_t pickle1[pickle_length];
olm_pickle_inbound_group_session(session,
"secret_key", 10,
pickle1, pickle_length);
size_t res = olm_pickle_inbound_group_session(
session, "secret_key", 10, pickle1, pickle_length
);
assert_equals(pickle_length, res);
uint8_t pickle2[pickle_length];
memcpy(pickle2, pickle1, pickle_length);
uint8_t buffer2[size];
OlmInboundGroupSession *session2 = olm_inbound_group_session(buffer2);
size_t res = olm_unpickle_inbound_group_session(session2,
"secret_key", 10,
pickle2, pickle_length);
res = olm_unpickle_inbound_group_session(
session2, "secret_key", 10, pickle2, pickle_length
);
assert_not_equals((size_t)-1, res);
assert_equals(pickle_length,
olm_pickle_inbound_group_session_length(session2));
olm_pickle_inbound_group_session(session2,
"secret_key", 10,
pickle2, pickle_length);
res = olm_pickle_inbound_group_session(
session2, "secret_key", 10, pickle2, pickle_length
);
assert_equals(pickle1, pickle2, pickle_length);
}

View File

@ -49,7 +49,9 @@ mock_random(ot_random, sizeof(ot_random));
std::size_t pickle_length = ::olm_pickle_account_length(account);
std::uint8_t pickle1[pickle_length];
::olm_pickle_account(account, "secret_key", 10, pickle1, pickle_length);
std::size_t res = ::olm_pickle_account(account, "secret_key", 10, pickle1, pickle_length);
assert_equals(pickle_length, res);
std::uint8_t pickle2[pickle_length];
std::memcpy(pickle2, pickle1, pickle_length);
@ -59,10 +61,10 @@ assert_not_equals(std::size_t(-1), ::olm_unpickle_account(
account2, "secret_key", 10, pickle2, pickle_length
));
assert_equals(pickle_length, ::olm_pickle_account_length(account2));
::olm_pickle_account(account2, "secret_key", 10, pickle2, pickle_length);
res = ::olm_pickle_account(account2, "secret_key", 10, pickle2, pickle_length);
assert_equals(pickle_length, res);
assert_equals(pickle1, pickle2, pickle_length);
}
@ -122,7 +124,9 @@ mock_random(random2, sizeof(random2));
std::size_t pickle_length = ::olm_pickle_session_length(session);
std::uint8_t pickle1[pickle_length];
::olm_pickle_session(session, "secret_key", 10, pickle1, pickle_length);
std::size_t res = ::olm_pickle_session(session, "secret_key", 10, pickle1, pickle_length);
assert_equals(pickle_length, res);
std::uint8_t pickle2[pickle_length];
std::memcpy(pickle2, pickle1, pickle_length);
@ -132,10 +136,10 @@ assert_not_equals(std::size_t(-1), ::olm_unpickle_session(
session2, "secret_key", 10, pickle2, pickle_length
));
assert_equals(pickle_length, ::olm_pickle_session_length(session2));
::olm_pickle_session(session2, "secret_key", 10, pickle2, pickle_length);
res = ::olm_pickle_session(session2, "secret_key", 10, pickle2, pickle_length);
assert_equals(pickle_length, res);
assert_equals(pickle1, pickle2, pickle_length);
}
{ /** Loopback test */