EllipticCurve.h 630 B

123456789101112131415161718192021222324
  1. /*
  2. * Copyright (c) 2022, Michiel Visser <opensource@webmichiel.nl>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/ByteBuffer.h>
  8. namespace Crypto::Curves {
  9. class EllipticCurve {
  10. public:
  11. virtual size_t key_size() = 0;
  12. virtual ErrorOr<ByteBuffer> generate_private_key() = 0;
  13. virtual ErrorOr<ByteBuffer> generate_public_key(ReadonlyBytes a) = 0;
  14. virtual ErrorOr<ByteBuffer> compute_coordinate(ReadonlyBytes scalar_bytes, ReadonlyBytes point_bytes) = 0;
  15. virtual ErrorOr<ByteBuffer> derive_premaster_key(ReadonlyBytes shared_point) = 0;
  16. virtual ~EllipticCurve() = default;
  17. };
  18. }