diff --git a/Libraries/LibCrypto/Curves/EllipticCurve.h b/Libraries/LibCrypto/Curves/EllipticCurve.h deleted file mode 100644 index ceb756c410d..00000000000 --- a/Libraries/LibCrypto/Curves/EllipticCurve.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2022, Michiel Visser - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#pragma once - -#include - -namespace Crypto::Curves { - -class EllipticCurve { -public: - virtual size_t key_size() = 0; - virtual ErrorOr generate_private_key() = 0; - virtual ErrorOr generate_public_key(ReadonlyBytes a) = 0; - virtual ErrorOr compute_coordinate(ReadonlyBytes scalar_bytes, ReadonlyBytes point_bytes) = 0; - virtual ErrorOr derive_premaster_key(ReadonlyBytes shared_point) = 0; - - virtual ~EllipticCurve() = default; -}; - -} diff --git a/Libraries/LibCrypto/Curves/SECPxxxr1.h b/Libraries/LibCrypto/Curves/SECPxxxr1.h index df119c068c6..4c942774d2b 100644 --- a/Libraries/LibCrypto/Curves/SECPxxxr1.h +++ b/Libraries/LibCrypto/Curves/SECPxxxr1.h @@ -11,7 +11,6 @@ #include #include #include -#include #include namespace { @@ -134,9 +133,9 @@ struct SECPxxxr1Signature { } }; -class SECPxxxr1 : public EllipticCurve { +class SECPxxxr1 { public: - size_t key_size() override { return 1 + (2 * m_scalar_size); } + size_t key_size() { return 1 + (2 * m_scalar_size); } ErrorOr generate_private_key_scalar(); ErrorOr generate_public_key_point(UnsignedBigInteger scalar); @@ -149,7 +148,7 @@ public: return shared_point; } - ErrorOr generate_private_key() override + ErrorOr generate_private_key() { auto key = TRY(generate_private_key_scalar()); @@ -159,14 +158,14 @@ public: return buffer.slice(0, size); } - ErrorOr generate_public_key(ReadonlyBytes a) override + ErrorOr generate_public_key(ReadonlyBytes a) { auto a_int = UnsignedBigInteger::import_data(a); auto point = TRY(generate_public_key_point(a_int)); return point.to_uncompressed(); } - ErrorOr compute_coordinate(ReadonlyBytes scalar_bytes, ReadonlyBytes point_bytes) override + ErrorOr compute_coordinate(ReadonlyBytes scalar_bytes, ReadonlyBytes point_bytes) { auto scalar = UnsignedBigInteger::import_data(scalar_bytes); auto point = TRY(SECPxxxr1Point::from_uncompressed(point_bytes)); @@ -174,7 +173,7 @@ public: return result.to_uncompressed(); } - ErrorOr derive_premaster_key(ReadonlyBytes shared_point_bytes) override + ErrorOr derive_premaster_key(ReadonlyBytes shared_point_bytes) { auto shared_point = TRY(SECPxxxr1Point::from_uncompressed(shared_point_bytes)); auto premaster_key_point = TRY(derive_premaster_key_point(shared_point)); diff --git a/Libraries/LibCrypto/Curves/X25519.h b/Libraries/LibCrypto/Curves/X25519.h index 93609beb250..6fd62ec274d 100644 --- a/Libraries/LibCrypto/Curves/X25519.h +++ b/Libraries/LibCrypto/Curves/X25519.h @@ -7,17 +7,16 @@ #pragma once #include -#include namespace Crypto::Curves { -class X25519 : public EllipticCurve { +class X25519 { public: - size_t key_size() override { return 32; } - ErrorOr generate_private_key() override; - ErrorOr generate_public_key(ReadonlyBytes a) override; - ErrorOr compute_coordinate(ReadonlyBytes a, ReadonlyBytes b) override; - ErrorOr derive_premaster_key(ReadonlyBytes shared_point) override; + size_t key_size() { return 32; } + ErrorOr generate_private_key(); + ErrorOr generate_public_key(ReadonlyBytes a); + ErrorOr compute_coordinate(ReadonlyBytes a, ReadonlyBytes b); + ErrorOr derive_premaster_key(ReadonlyBytes shared_point); }; } diff --git a/Libraries/LibCrypto/Curves/X448.h b/Libraries/LibCrypto/Curves/X448.h index bd613e52517..9dffca25881 100644 --- a/Libraries/LibCrypto/Curves/X448.h +++ b/Libraries/LibCrypto/Curves/X448.h @@ -7,17 +7,16 @@ #pragma once #include -#include namespace Crypto::Curves { -class X448 : public EllipticCurve { +class X448 { public: - size_t key_size() override { return 56; } - ErrorOr generate_private_key() override; - ErrorOr generate_public_key(ReadonlyBytes a) override; - ErrorOr compute_coordinate(ReadonlyBytes a, ReadonlyBytes b) override; - ErrorOr derive_premaster_key(ReadonlyBytes shared_point) override; + size_t key_size() { return 56; } + ErrorOr generate_private_key(); + ErrorOr generate_public_key(ReadonlyBytes a); + ErrorOr compute_coordinate(ReadonlyBytes a, ReadonlyBytes b); + ErrorOr derive_premaster_key(ReadonlyBytes shared_point); }; }