-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.php
64 lines (45 loc) · 1.3 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
namespace MFunc;
require_once __DIR__ . "/config/Configurations.php";
require_once PROJ_ROOT ."/includes/JWT/JWT.php";
require_once PROJ_ROOT . "/vendor/autoload.php";
use EllipticCurve;
global $Configurations;
$header = [
"alg" => "RS256",
"type" => "JWT"
];
$payload = [
"id" => "31ededfqwfwqfqwfqfw",
"name" => "Mojaf",
"role" => "Secretary"
];
$jwt = new JWT();
echo "<h1>RSA /w SHA265</h1>";
$jwt_str = $jwt->genToken($payload, $Configurations->authGenKey);
var_dump($jwt_str);
echo "<br>";
echo "<br>";
var_dump((gzdeflate($jwt_str, 9)));
echo "<br>";
echo "<br>";
$tmp = explode(".", $jwt_str);
$body = $tmp[1];
$body = JWT::base64url_decode($body);
$body2 = substr($body, 0, strlen($body) - 19) . '"role": "Admin"}';
$bodyEnc = JWT::base64url_encode($body2);
$jwt_str2 = "{$tmp[0]}.$bodyEnc.{$tmp[2]}";
$jwt = new JWT($jwt_str);
/* var_dump($jwt->verify($Configurations->authVerKey)); */
echo "<h1>ECDSA /w SHA265</h1>";
echo "<br>";
echo "<br>";
$privateKey = new EllipticCurve\PrivateKey;
$publicKey = $privateKey->publicKey();
$header = JWT::base64url_encode(json_encode([
"alg" => "ES256",
"type" => "JWT"
]));
$payload = JWT::base64url_encode(json_encode($payload));
$sign = EllipticCurve\Ecdsa::sign("$header.$payload", $privateKey);
var_dump("$header.$payload.{$sign->toBase64()}");