diff options
Diffstat (limited to 'cast/standalone_receiver/static_credentials.h')
-rw-r--r-- | cast/standalone_receiver/static_credentials.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/cast/standalone_receiver/static_credentials.h b/cast/standalone_receiver/static_credentials.h new file mode 100644 index 00000000..4707f5f4 --- /dev/null +++ b/cast/standalone_receiver/static_credentials.h @@ -0,0 +1,60 @@ +// Copyright 2020 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. + +#ifndef CAST_STANDALONE_RECEIVER_STATIC_CREDENTIALS_H_ +#define CAST_STANDALONE_RECEIVER_STATIC_CREDENTIALS_H_ + +#include <memory> +#include <vector> + +#include "absl/strings/string_view.h" +#include "cast/receiver/channel/device_auth_namespace_handler.h" +#include "platform/base/error.h" +#include "platform/base/tls_credentials.h" + +namespace openscreen { +namespace cast { + +class StaticCredentialsProvider final + : public DeviceAuthNamespaceHandler::CredentialsProvider { + public: + StaticCredentialsProvider(); + StaticCredentialsProvider(DeviceCredentials device_creds, + std::vector<uint8_t> tls_cert_der); + + StaticCredentialsProvider(const StaticCredentialsProvider&) = delete; + StaticCredentialsProvider(StaticCredentialsProvider&&); + StaticCredentialsProvider& operator=(const StaticCredentialsProvider&) = + delete; + StaticCredentialsProvider& operator=(StaticCredentialsProvider&&); + ~StaticCredentialsProvider(); + + absl::Span<const uint8_t> GetCurrentTlsCertAsDer() override { + return absl::Span<uint8_t>(tls_cert_der); + } + const DeviceCredentials& GetCurrentDeviceCredentials() override { + return device_creds; + } + + DeviceCredentials device_creds; + std::vector<uint8_t> tls_cert_der; +}; + +struct GeneratedCredentials { + std::unique_ptr<StaticCredentialsProvider> provider; + TlsCredentials tls_credentials; + std::vector<uint8_t> root_cert_der; +}; + +// Generates a valid set of credentials for use with the TLS Server socket, +// including a generated X509 certificate generated from the static private key +// stored in private_key_der.h. The certificate is valid for +// kCertificateDuration from when this function is called. +ErrorOr<GeneratedCredentials> GenerateCredentials( + absl::string_view device_certificate_id); + +} // namespace cast +} // namespace openscreen + +#endif // CAST_STANDALONE_RECEIVER_STATIC_CREDENTIALS_H_ |