X25519.h 613 B

1234567891011121314151617181920212223
  1. /*
  2. * Copyright (c) 2022, stelar7 <dudedbz@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/ByteBuffer.h>
  8. #include <LibCrypto/Curves/EllipticCurve.h>
  9. namespace Crypto::Curves {
  10. class X25519 : public EllipticCurve {
  11. public:
  12. size_t key_size() override { return 32; }
  13. ErrorOr<ByteBuffer> generate_private_key() override;
  14. ErrorOr<ByteBuffer> generate_public_key(ReadonlyBytes a) override;
  15. ErrorOr<ByteBuffer> compute_coordinate(ReadonlyBytes a, ReadonlyBytes b) override;
  16. ErrorOr<ByteBuffer> derive_premaster_key(ReadonlyBytes shared_point) override;
  17. };
  18. }