PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / PaymentGateways / Routes / RouteSignature.php
give / src / Framework / PaymentGateways / Routes Last commit date
GatewayRoute.php 3 years ago RouteSignature.php 4 years ago
RouteSignature.php
105 lines
1 <?php
2
3 namespace Give\Framework\PaymentGateways\Routes;
4
5 use Give\Framework\Shims\Shim;
6
7 /**
8 * Route signature for creating secure gateway route methods
9 *
10 * @since 2.19.0
11 */
12 class RouteSignature
13 {
14 /**
15 * @var string
16 */
17 private $signature;
18 /**
19 * @var string
20 */
21 public $expiration;
22
23 /**
24 * @since 2.19.5 replace wp_create_nonce with wp_hash and timestamp expiration
25 * @since 2.19.4 replace RouteSignature args with unique donationId
26 * @since 2.19.0
27 *
28 * @param int $gatewayId
29 * @param string $gatewayMethod
30 * @param int $donationId
31 * @param string $expiration
32 */
33 public function __construct($gatewayId, $gatewayMethod, $donationId, $expiration = null)
34 {
35 $this->expiration = $expiration ?: $this->createExpirationTimestamp();
36 $this->signature = $this->generateSignatureString($gatewayId, $gatewayMethod, $donationId, $this->expiration);
37 }
38
39
40 /**
41 * @since 2.19.5
42 *
43 * @param string $gatewayId
44 * @param string $gatewayMethod
45 * @param int $donationId
46 * @param string $expiration
47 * @return string
48 */
49 private function generateSignatureString($gatewayId, $gatewayMethod, $donationId, $expiration)
50 {
51 return "$gatewayId@$gatewayMethod:$donationId|$expiration";
52 }
53
54 /**
55 * @since 2.19.0
56 *
57 * @return string
58 */
59 public function toString()
60 {
61 return $this->signature;
62 }
63
64 /**
65 * @since 2.19.5
66 *
67 * @return string
68 */
69 public function toHash()
70 {
71 return wp_hash($this->signature);
72 }
73
74 /**
75 * Create expiration timestamp
76 *
77 * @since 2.19.5
78 *
79 * @return string
80 */
81 public function createExpirationTimestamp()
82 {
83 return (string)current_datetime()->modify('+1 day')->getTimestamp();
84 }
85
86
87 /**
88 * @since 2.19.5
89 *
90 * @param string $suppliedSignature
91 * @return bool
92 */
93 public function isValid($suppliedSignature)
94 {
95 $isSignatureValid = hash_equals(
96 $suppliedSignature,
97 $this->toHash()
98 );
99
100 $isNotExpired = ((int)$this->expiration) >= current_datetime()->getTimestamp();
101
102 return $isSignatureValid && $isNotExpired;
103 }
104 }
105