diff options
author | btolsch <btolsch@chromium.org> | 2019-10-15 12:54:10 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-15 20:03:29 +0000 |
commit | a04b13eaa77d8ca31c0f06e32231bef84f96e32d (patch) | |
tree | 5158547e199df455b63cbe7f93c6c99748054181 /cast/sender/channel/message_util.cc | |
parent | c56f0388085f0e0d4df657498381f35317fbf041 (diff) | |
download | openscreen-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.cc | 34 |
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 |