<?php

declare (strict_types=1);
namespace OCA\Notifications\Vendor\Jose\Component\Encryption\Algorithm\KeyEncryption;

use AESKW\Wrapper as WrapperInterface;
use Override;
use RuntimeException;
abstract readonly class AbstractECDHAESKW implements KeyAgreementWithKeyWrapping
{
    public function __construct()
    {
        if (!interface_exists(WrapperInterface::class)) {
            throw new RuntimeException('Please install "spomky-labs/aes-key-wrap" to use AES-KW algorithms');
        }
    }
    #[Override]
    public function allowedKeyTypes(): array
    {
        return ['EC', 'OKP'];
    }
    #[Override]
    public function getKeyManagementMode(): string
    {
        return self::MODE_WRAP;
    }
    abstract protected function getWrapper(): WrapperInterface;
    abstract protected function getKeyLength(): int;
}