1: <?php
2: /*
3: You may not change or alter any portion of this comment or credits
4: of supporting developers from this source code or any supporting source code
5: which is considered copyrighted (c) material of the original comment or credit authors.
6:
7: This program is distributed in the hope that it will be useful,
8: but WITHOUT ANY WARRANTY; without even the implied warranty of
9: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10: */
11:
12: namespace Xmf\Key;
13:
14: /**
15: * Xmf\Key\KeyAbstract
16: *
17: * manage key and related storage
18: *
19: * @category Xmf\Key\KeyAbstract
20: * @package Xmf
21: * @author Richard Griffith <richard@geekwright.com>
22: * @copyright 2018-2023 XOOPS Project (https://xoops.org)
23: * @license GNU GPL 2.0 or later (https://www.gnu.org/licenses/gpl-2.0.html)
24: * @link https://xoops.org
25: */
26: abstract class KeyAbstract
27: {
28: /** @var StorageInterface */
29: protected $storage;
30:
31: /** @var string */
32: protected $name;
33:
34: /**
35: * KeyAbstract constructor.
36: * @param StorageInterface $storage key store
37: * @param string $name case-insensitive key name, allow only A-Z, 0-9, _ and -
38: */
39: public function __construct(StorageInterface $storage, $name)
40: {
41: $this->storage = $storage;
42: $this->name = strtolower(preg_replace('/[^A-Z0-9_-]/i', '', $name));
43: }
44:
45: /**
46: * get key for use in signing
47: *
48: * @return string signing key
49: */
50: abstract public function getSigning();
51:
52: /**
53: * get key for use in verifying
54: *
55: * @return string verifying key
56: */
57: abstract public function getVerifying();
58:
59: /**
60: * create the key and store it for use
61: *
62: * @return boolean true if key was created and stored, otherwise false
63: */
64: abstract public function create();
65:
66: /**
67: * delete the key
68: *
69: * @return boolean true if key was deleted, otherwise false
70: */
71: abstract public function kill();
72: }
73: