aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorJordan Bayles <jophba@chromium.org>2021-04-06 09:43:46 -0700
committerCommit Bot <commit-bot@chromium.org>2021-04-06 19:42:26 +0000
commit6f3efdbca7c64eb7cca52b77d2131c1e81b1a4a4 (patch)
tree799b8202660ecf2c9b2ecd5d557d28484ecaeb20 /util
parent5acd0d59800d883115aa6c0286cdc692bc18732b (diff)
downloadopenscreen-6f3efdbca7c64eb7cca52b77d2131c1e81b1a4a4.tar.gz
[Cast] Enable Remoting in the SenderSession
This patch exposes remoting functionality on the SenderSession class, allowing embedders to request starting remoting. Bug: b/184186374 Change-Id: If82cffab9eda78e8b7d83d3f46a657e45267e8d6 Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2626352 Commit-Queue: Jordan Bayles <jophba@chromium.org> Reviewed-by: Brandon Tolsch <btolsch@chromium.org>
Diffstat (limited to 'util')
-rw-r--r--util/base64.cc16
-rw-r--r--util/base64.h3
-rw-r--r--util/base64_unittest.cc12
3 files changed, 19 insertions, 12 deletions
diff --git a/util/base64.cc b/util/base64.cc
index 06e120e0..64e34175 100644
--- a/util/base64.cc
+++ b/util/base64.cc
@@ -6,6 +6,10 @@
#include <stddef.h>
+#include <string>
+#include <utility>
+#include <vector>
+
#include "third_party/modp_b64/modp_b64.h"
#include "util/osp_logging.h"
#include "util/std_util.h"
@@ -33,20 +37,18 @@ std::string Encode(absl::string_view input) {
return out;
}
-bool Decode(absl::string_view input, std::string* output) {
- std::string out;
- out.resize(modp_b64_decode_len(input.size()));
+bool Decode(absl::string_view input, std::vector<uint8_t>* output) {
+ std::vector<uint8_t> out(modp_b64_decode_len(input.size()));
- // We don't null terminate the result since it is binary data.
- const size_t output_size =
- modp_b64_decode(data(out), input.data(), input.size());
+ const size_t output_size = modp_b64_decode(
+ reinterpret_cast<char*>(out.data()), input.data(), input.size());
if (output_size == MODP_B64_ERROR) {
return false;
}
// The output size from decode_len is generally larger than needed.
out.resize(output_size);
- output->swap(out);
+ *output = std::move(out);
return true;
}
diff --git a/util/base64.h b/util/base64.h
index b24c3b3f..a7af9eca 100644
--- a/util/base64.h
+++ b/util/base64.h
@@ -6,6 +6,7 @@
#define UTIL_BASE64_H_
#include <string>
+#include <vector>
#include "absl/strings/string_view.h"
#include "absl/types/span.h"
@@ -23,7 +24,7 @@ std::string Encode(absl::string_view input);
// Decodes the base64 input string. Returns true if successful and false
// otherwise. The output string is only modified if successful. The decoding can
// be done in-place.
-bool Decode(absl::string_view input, std::string* output);
+bool Decode(absl::string_view input, std::vector<uint8_t>* output);
} // namespace base64
} // namespace openscreen
diff --git a/util/base64_unittest.cc b/util/base64_unittest.cc
index 28d4fb1d..bb1b7432 100644
--- a/util/base64_unittest.cc
+++ b/util/base64_unittest.cc
@@ -4,6 +4,9 @@
#include "util/base64.h"
+#include <string>
+#include <vector>
+
#include "gtest/gtest.h"
namespace openscreen {
@@ -18,9 +21,9 @@ void CheckEncodeDecode(const char* to_encode, const char* encode_expected) {
std::string encoded = Encode(to_encode);
EXPECT_EQ(encode_expected, encoded);
- std::string decoded;
+ std::vector<uint8_t> decoded;
EXPECT_TRUE(Decode(encoded, &decoded));
- EXPECT_EQ(to_encode, decoded);
+ EXPECT_STREQ(to_encode, reinterpret_cast<char*>(decoded.data()));
}
} // namespace
@@ -52,8 +55,9 @@ TEST(Base64Test, InPlace) {
text = Encode(text);
EXPECT_EQ(kBase64Text, text);
- EXPECT_TRUE(Decode(text, &text));
- EXPECT_EQ(text, kText);
+ std::vector<uint8_t> out;
+ EXPECT_TRUE(Decode(text, &out));
+ EXPECT_STREQ(reinterpret_cast<const char*>(out.data()), kText);
}
} // namespace base64