1<?php
2
3/**
4 * This file is part of the FreeDSx SASL package.
5 *
6 * (c) Chad Sikorra <Chad.Sikorra@gmail.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace FreeDSx\Sasl\Mechanism;
13
14use FreeDSx\Sasl\Challenge\ChallengeInterface;
15use FreeDSx\Sasl\Security\SecurityLayerInterface;
16use FreeDSx\Sasl\SecurityStrength;
17
18/**
19 * Common methods mechanisms must implement.
20 *
21 * @author Chad Sikorra <Chad.Sikorra@gmail.com>
22 */
23interface MechanismInterface
24{
25    /**
26     * Retrieve the registered name for this SASL mechanism.
27     */
28    public function getName(): string;
29
30    /**
31     * Describes various security related aspects of the mechanism.
32     */
33    public function securityStrength(): SecurityStrength;
34
35    /**
36     * Get the challenge object for this mechanism.
37     */
38    public function challenge(): ChallengeInterface;
39
40    /**
41     * Get the security layer object for this mechanism.
42     */
43    public function securityLayer(): SecurityLayerInterface;
44}
45