blob: 57a3228e323ce03457f92694d718fbb2935e07e8 [file] [log] [blame]
// Copyright 2020 The Chromium OS 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 "attestation/pca_agent/server/pca_agent_service.h"
#include <string>
#include <utility>
#include <attestation/proto_bindings/interface.pb.h>
#include <base/bind.h>
#include <base/bind_helpers.h>
#include <base/memory/ref_counted.h>
#include <brillo/http/http_utils.h>
#include <brillo/mime_utils.h>
#include "attestation/pca_agent/server/pca_request.h"
namespace attestation {
namespace pca_agent {
namespace {
constexpr char kDefaultPCAServerUrl[] = "https://chromeos-ca.gstatic.com";
constexpr char kTestPCAServerUrl[] = "https://asbestos-qa.corp.google.com";
constexpr char kEnrollPath[] = "enroll";
constexpr char kSignPath[] = "sign";
std::string ACATypeToServerUrl(ACAType type) {
if (type == TEST_ACA) {
return kTestPCAServerUrl;
}
return kDefaultPCAServerUrl;
}
std::string EnrollRequestToServerUrl(const EnrollRequest& req) {
return ACATypeToServerUrl(req.aca_type()) + "/" + kEnrollPath;
}
std::string CertRequestToServerUrl(const GetCertificateRequest& req) {
return ACATypeToServerUrl(req.aca_type()) + "/" + kSignPath;
}
} // namespace
void PcaAgentService::Enroll(
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<EnrollReply>>
response,
const EnrollRequest& request) {
VLOG(1) << __func__;
scoped_refptr<PcaRequest<EnrollReply>> pca_request =
new PcaRequest<EnrollReply>(__func__, EnrollRequestToServerUrl(request),
request.request(), std::move(response));
pca_request->SendRequest();
}
void PcaAgentService::GetCertificate(
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<GetCertificateReply>>
response,
const GetCertificateRequest& request) {
VLOG(1) << __func__;
scoped_refptr<PcaRequest<GetCertificateReply>> pca_request =
new PcaRequest<GetCertificateReply>(
__func__, CertRequestToServerUrl(request), request.request(),
std::move(response));
pca_request->SendRequest();
}
} // namespace pca_agent
} // namespace attestation