// Copyright 2015 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 "crypto/curve25519.h"

#include <stdint.h>

#include "third_party/boringssl/src/include/openssl/curve25519.h"

namespace crypto {

namespace curve25519 {

bool ScalarMult(const uint8_t* private_key,
                const uint8_t* peer_public_key,
                uint8_t* shared_key) {
  return !!X25519(shared_key, private_key, peer_public_key);
}

void ScalarBaseMult(const uint8_t* private_key, uint8_t* public_key) {
  X25519_public_from_private(public_key, private_key);
}

}  // namespace curve25519

}  // namespace crypto
