/* * Copyright (c) 2023, stelar7 * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::Crypto { class CryptoKey final : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(CryptoKey, Bindings::PlatformObject); JS_DECLARE_ALLOCATOR(CryptoKey); public: [[nodiscard]] static JS::NonnullGCPtr create(JS::Realm&); virtual ~CryptoKey() override; bool extractable() const { return m_extractable; } Bindings::KeyType type() const { return m_type; } Object const* algorithm() const { return m_algorithm.ptr(); } Object const* usages() const { return m_usages.ptr(); } void set_extractable(bool extractable) { m_extractable = extractable; } void set_type(Bindings::KeyType type) { m_type = type; } void set_algorithm(JS::NonnullGCPtr algorithm) { m_algorithm = move(algorithm); } void set_usages(JS::NonnullGCPtr usages) { m_usages = move(usages); } private: explicit CryptoKey(JS::Realm&); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Visitor&) override; Bindings::KeyType m_type; bool m_extractable { false }; JS::NonnullGCPtr m_algorithm; JS::NonnullGCPtr m_usages; }; }