aboutsummaryrefslogtreecommitdiff
path: root/cast/receiver/channel/device_auth_namespace_handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cast/receiver/channel/device_auth_namespace_handler.cc')
-rw-r--r--cast/receiver/channel/device_auth_namespace_handler.cc43
1 files changed, 29 insertions, 14 deletions
diff --git a/cast/receiver/channel/device_auth_namespace_handler.cc b/cast/receiver/channel/device_auth_namespace_handler.cc
index a12a5b6c..9e9d5e3f 100644
--- a/cast/receiver/channel/device_auth_namespace_handler.cc
+++ b/cast/receiver/channel/device_auth_namespace_handler.cc
@@ -14,8 +14,17 @@
#include "platform/base/tls_credentials.h"
#include "util/crypto/digest_sign.h"
+using ::cast::channel::AuthChallenge;
+using ::cast::channel::AuthError;
+using ::cast::channel::AuthResponse;
+using ::cast::channel::CastMessage;
+using ::cast::channel::DeviceAuthMessage;
+using ::cast::channel::HashAlgorithm;
+using ::cast::channel::SignatureAlgorithm;
+
+namespace openscreen {
namespace cast {
-namespace channel {
+
namespace {
CastMessage GenerateErrorMessage(AuthError::ErrorType error_type) {
@@ -26,9 +35,10 @@ CastMessage GenerateErrorMessage(AuthError::ErrorType error_type) {
message.SerializeToString(&payload);
CastMessage response;
- response.set_protocol_version(CastMessage_ProtocolVersion_CASTV2_1_0);
+ response.set_protocol_version(
+ ::cast::channel::CastMessage_ProtocolVersion_CASTV2_1_0);
response.set_namespace_(kAuthNamespace);
- response.set_payload_type(CastMessage_PayloadType_BINARY);
+ response.set_payload_type(::cast::channel::CastMessage_PayloadType_BINARY);
response.set_payload_binary(std::move(payload));
return response;
}
@@ -43,8 +53,9 @@ DeviceAuthNamespaceHandler::~DeviceAuthNamespaceHandler() = default;
void DeviceAuthNamespaceHandler::OnMessage(VirtualConnectionRouter* router,
CastSocket* socket,
- CastMessage&& message) {
- if (message.payload_type() != CastMessage_PayloadType_BINARY) {
+ CastMessage message) {
+ if (message.payload_type() !=
+ ::cast::channel::CastMessage_PayloadType_BINARY) {
return;
}
const std::string& payload = message.payload_binary();
@@ -70,14 +81,17 @@ void DeviceAuthNamespaceHandler::OnMessage(VirtualConnectionRouter* router,
HashAlgorithm hash_alg = challenge.hash_algorithm();
// TODO(btolsch): Reconsider supporting SHA1 after further metrics
// investigation.
- if ((sig_alg != UNSPECIFIED && sig_alg != RSASSA_PKCS1v15) ||
- (hash_alg != SHA1 && hash_alg != SHA256)) {
+ if ((sig_alg != ::cast::channel::UNSPECIFIED &&
+ sig_alg != ::cast::channel::RSASSA_PKCS1v15) ||
+ (hash_alg != ::cast::channel::SHA1 &&
+ hash_alg != ::cast::channel::SHA256)) {
router->SendMessage(
virtual_conn,
GenerateErrorMessage(AuthError::SIGNATURE_ALGORITHM_UNAVAILABLE));
return;
}
- const EVP_MD* digest = hash_alg == SHA256 ? EVP_sha256() : EVP_sha1();
+ const EVP_MD* digest =
+ hash_alg == ::cast::channel::SHA256 ? EVP_sha256() : EVP_sha1();
const absl::Span<const uint8_t> tls_cert_der =
creds_provider_->GetCurrentTlsCertAsDer();
@@ -97,7 +111,7 @@ void DeviceAuthNamespaceHandler::OnMessage(VirtualConnectionRouter* router,
++it) {
auth_response->add_intermediate_certificate(*it);
}
- auth_response->set_signature_algorithm(RSASSA_PKCS1v15);
+ auth_response->set_signature_algorithm(::cast::channel::RSASSA_PKCS1v15);
auth_response->set_hash_algorithm(hash_alg);
std::string sender_nonce;
if (challenge.has_sender_nonce()) {
@@ -114,8 +128,8 @@ void DeviceAuthNamespaceHandler::OnMessage(VirtualConnectionRouter* router,
to_be_signed.insert(to_be_signed.end(), tls_cert_der.begin(),
tls_cert_der.end());
- openscreen::ErrorOr<std::string> signature = openscreen::SignData(
- digest, device_creds.private_key.get(), to_be_signed);
+ ErrorOr<std::string> signature =
+ SignData(digest, device_creds.private_key.get(), to_be_signed);
if (!signature) {
router->SendMessage(virtual_conn,
GenerateErrorMessage(AuthError::INTERNAL_ERROR));
@@ -129,12 +143,13 @@ void DeviceAuthNamespaceHandler::OnMessage(VirtualConnectionRouter* router,
std::string response_string;
response_auth_message.SerializeToString(&response_string);
CastMessage response;
- response.set_protocol_version(CastMessage_ProtocolVersion_CASTV2_1_0);
+ response.set_protocol_version(
+ ::cast::channel::CastMessage_ProtocolVersion_CASTV2_1_0);
response.set_namespace_(kAuthNamespace);
- response.set_payload_type(CastMessage_PayloadType_BINARY);
+ response.set_payload_type(::cast::channel::CastMessage_PayloadType_BINARY);
response.set_payload_binary(std::move(response_string));
router->SendMessage(virtual_conn, std::move(response));
}
-} // namespace channel
} // namespace cast
+} // namespace openscreen