aboutsummaryrefslogtreecommitdiff
path: root/cast/sender/channel/message_util.cc
diff options
context:
space:
mode:
authorbtolsch <btolsch@chromium.org>2019-10-15 12:54:10 -0700
committerCommit Bot <commit-bot@chromium.org>2019-10-15 20:03:29 +0000
commita04b13eaa77d8ca31c0f06e32231bef84f96e32d (patch)
tree5158547e199df455b63cbe7f93c6c99748054181 /cast/sender/channel/message_util.cc
parentc56f0388085f0e0d4df657498381f35317fbf041 (diff)
downloadopenscreen-a04b13eaa77d8ca31c0f06e32231bef84f96e32d.tar.gz
Add cast sender socket factory
This change adds a CastSocket factory for the sender-side which performs the sender auth challenge and verification before passing a CastSocket back to the caller. Bug: openscreen:59 Change-Id: Ibbbdb2b8881e385cc0a8defbe309c7f10a2af323 Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/1834457 Commit-Queue: Brandon Tolsch <btolsch@chromium.org> Reviewed-by: Ryan Keane <rwkeane@google.com>
Diffstat (limited to 'cast/sender/channel/message_util.cc')
-rw-r--r--cast/sender/channel/message_util.cc34
1 files changed, 34 insertions, 0 deletions
diff --git a/cast/sender/channel/message_util.cc b/cast/sender/channel/message_util.cc
new file mode 100644
index 00000000..ab3ed5d8
--- /dev/null
+++ b/cast/sender/channel/message_util.cc
@@ -0,0 +1,34 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "cast/sender/channel/message_util.h"
+
+#include "cast/sender/channel/cast_auth_util.h"
+
+namespace cast {
+namespace channel {
+
+CastMessage CreateAuthChallengeMessage(const AuthContext& auth_context) {
+ CastMessage message;
+ DeviceAuthMessage auth_message;
+
+ AuthChallenge* challenge = auth_message.mutable_challenge();
+ challenge->set_sender_nonce(auth_context.nonce());
+ challenge->set_hash_algorithm(SHA256);
+
+ std::string auth_message_string;
+ auth_message.SerializeToString(&auth_message_string);
+
+ message.set_protocol_version(CastMessage::CASTV2_1_0);
+ message.set_source_id(kPlatformSenderId);
+ message.set_destination_id(kPlatformReceiverId);
+ message.set_namespace_(kAuthNamespace);
+ message.set_payload_type(CastMessage_PayloadType_BINARY);
+ message.set_payload_binary(auth_message_string);
+
+ return message;
+}
+
+} // namespace channel
+} // namespace cast