Message::get_signature()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 2
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Message
4
 *
5
 * @author    Pronamic <[email protected]>
6
 * @copyright 2005-2022 Pronamic
7
 * @license   GPL-3.0-or-later
8
 * @package   Pronamic\WordPress\Pay\Gateways\OmniKassa2
9
 */
10
11
namespace Pronamic\WordPress\Pay\Gateways\OmniKassa2;
12
13
/**
14
 * Message
15
 *
16
 * @author  Remco Tolsma
17
 * @version 2.2.4
18
 * @since   2.0.2
19
 */
20
abstract class Message implements Signable {
21
	/**
22
	 * Signature.
23
	 *
24
	 * @var string|null
25
	 */
26
	private $signature;
27
28
	/**
29
	 * Get signature.
30
	 *
31
	 * @return string|null
32
	 */
33 4
	public function get_signature() {
34 4
		return $this->signature;
35
	}
36
37
	/**
38
	 * Set signature.
39
	 *
40
	 * @param string|null $signature Signature.
41
	 * @return void
42
	 */
43 5
	protected function set_signature( $signature ) {
44 5
		$this->signature = $signature;
45 5
	}
46
47
	/**
48
	 * Sign this message with specified signing key.
49
	 *
50
	 * @param string $signing_key Signing key.
51
	 * @return void
52
	 */
53
	public function sign( $signing_key ) {
54
		$signature = Security::get_signature( $this, $signing_key );
55
56
		$this->set_signature( $signature );
57
	}
58
59
	/**
60
	 * Check if this message is valid.
61
	 *
62
	 * @param string $signing_key Signing key.
63
	 * @return bool True if valid, false otherwise.
64
	 */
65 3
	public function is_valid( $signing_key ) {
66 3
		$signature_a = Security::get_signature( $this, $signing_key );
67
68 3
		if ( empty( $signature_a ) ) {
69
			return false;
70
		}
71
72 3
		$signature_b = $this->get_signature();
73
74 3
		if ( empty( $signature_b ) ) {
75
			return false;
76
		}
77
78 3
		return Security::validate_signature( $signature_a, $signature_b );
79
	}
80
}
81