36 lines
816 B
PHP
36 lines
816 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace 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;
|
|
}
|