// 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.

#include "chrome/browser/push_messaging/push_messaging_utils.h"
#include "base/base64url.h"
#include "chrome/browser/push_messaging/push_messaging_constants.h"
#include "url/gurl.h"

namespace push_messaging {

GURL CreateEndpoint(const std::string& subscription_id) {
  const GURL endpoint(kPushMessagingGcmEndpoint + subscription_id);
  DCHECK(endpoint.is_valid());
  return endpoint;
}

blink::mojom::PushSubscriptionOptionsPtr MakeOptions(
    const std::string& sender_id) {
  return blink::mojom::PushSubscriptionOptions::New(
      /*user_visible_only=*/true,
      std::vector<uint8_t>(sender_id.begin(), sender_id.end()));
}

bool IsVapidKey(const std::string& application_server_key) {
  // VAPID keys are NIST P-256 public keys in uncompressed format (64 bytes),
  // verified through its length and the 0x04 prefix.
  return application_server_key.size() == 65 &&
         application_server_key[0] == 0x04;
}

std::string NormalizeSenderInfo(const std::string& application_server_key) {
  if (!IsVapidKey(application_server_key))
    return application_server_key;

  std::string encoded_application_server_key;
  base::Base64UrlEncode(application_server_key,
                        base::Base64UrlEncodePolicy::OMIT_PADDING,
                        &encoded_application_server_key);

  return encoded_application_server_key;
}

}  // namespace push_messaging
