blob: 45b2836c1a1f0aa767ba6cf4e33593b35e121684 [file] [log] [blame]
// Copyright 2016 The Fuchsia 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 "src/system_data/client_secret.h"
#include <utility>
#include "src/lib/crypto_util/random.h"
#include "third_party/abseil-cpp/absl/strings/escaping.h"
namespace cobalt::system_data {
// static
ClientSecret ClientSecret::GenerateNewSecret() {
crypto::Random rand;
return GenerateNewSecret(&rand);
}
// static
ClientSecret ClientSecret::GenerateNewSecret(crypto::Random* rand) {
ClientSecret client_secret;
client_secret.bytes_.resize(kNumSecretBytes);
rand->RandomBytes(reinterpret_cast<byte*>(client_secret.bytes_.data()), kNumSecretBytes);
return client_secret;
}
// static
ClientSecret ClientSecret::FromToken(const std::string& token) {
ClientSecret client_secret;
absl::Base64Unescape(token, &client_secret.bytes_);
return client_secret;
}
std::string ClientSecret::GetToken() { return absl::Base64Escape(bytes_); }
} // namespace cobalt::system_data