1
|
|
|
<?php |
2
|
|
|
/* |
3
|
|
|
* This file is part of the KleijnWeb\JwtBundle package. |
4
|
|
|
* |
5
|
|
|
* For the full copyright and license information, please view the LICENSE |
6
|
|
|
* file that was distributed with this source code. |
7
|
|
|
*/ |
8
|
|
|
|
9
|
|
|
namespace KleijnWeb\JwtBundle\Tests\Jwt\SignatureValidator; |
10
|
|
|
|
11
|
|
|
use KleijnWeb\JwtBundle\Jwt\SignatureValidator\RsaValidator; |
12
|
|
|
|
13
|
|
|
/** |
14
|
|
|
* @author John Kleijn <[email protected]> |
15
|
|
|
*/ |
16
|
|
|
class RsaValidatorTest extends \PHPUnit_Framework_TestCase |
17
|
|
|
{ |
18
|
|
|
/** |
19
|
|
|
* @var string |
20
|
|
|
*/ |
21
|
|
|
private static $pubKey = '-----BEGIN PUBLIC KEY----- |
22
|
|
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwND1VMVJ3BC/aM38tQRH |
23
|
|
|
2GDHecXE8EsGoeAeBR5dFt3QC1/Eoub/F2kee3RBtI6I+kDBjrSDz5lsqh3Sm7N/ |
24
|
|
|
47fTKZLvdBaHbCuYXVBQ2tZeEiUBESnsY2HUzXDlqSyDWohuiYeeL6gewxe1CnSE |
25
|
|
|
0l8gYZ0Tx4ViPFYulva6siew0f4tBuSEwSPiKZQnGcssQYJ/VevTD6L4wGoDhkXV |
26
|
|
|
VvJ+qiNgmXXssgCl5vHs22y/RIgeOnDhkj81aB9Evx9iR7DOtyRBxnovrbN5gDwX |
27
|
|
|
m6IDw3fRhZQrVwZ816/eN+1sqpIMZF4oo4kRA4b64U04ex67A/6BwDDQ3LH0mD4d |
28
|
|
|
EwIDAQAB |
29
|
|
|
-----END PUBLIC KEY-----'; |
30
|
|
|
/** |
31
|
|
|
* @var string |
32
|
|
|
*/ |
33
|
|
|
private static $privKey = '-----BEGIN RSA PRIVATE KEY----- |
34
|
|
|
MIIEowIBAAKCAQEAwND1VMVJ3BC/aM38tQRH2GDHecXE8EsGoeAeBR5dFt3QC1/E |
35
|
|
|
oub/F2kee3RBtI6I+kDBjrSDz5lsqh3Sm7N/47fTKZLvdBaHbCuYXVBQ2tZeEiUB |
36
|
|
|
ESnsY2HUzXDlqSyDWohuiYeeL6gewxe1CnSE0l8gYZ0Tx4ViPFYulva6siew0f4t |
37
|
|
|
BuSEwSPiKZQnGcssQYJ/VevTD6L4wGoDhkXVVvJ+qiNgmXXssgCl5vHs22y/RIge |
38
|
|
|
OnDhkj81aB9Evx9iR7DOtyRBxnovrbN5gDwXm6IDw3fRhZQrVwZ816/eN+1sqpIM |
39
|
|
|
ZF4oo4kRA4b64U04ex67A/6BwDDQ3LH0mD4dEwIDAQABAoIBAEej2+NZQi4P0u5/ |
40
|
|
|
ymr/YipVGwh1oMyfM6GlgcHpHDFIzOnM9WSJazIpjnfUJC2P3/kLYl9BVtAlcyhp |
41
|
|
|
2DydnuDfBggmXe3GCR75u6zAEKqeh2k6coEMEJaEXOrQDaSjs1JJ6rgSuYV/c56N |
42
|
|
|
CmkODeOUEJX0JMs3Fd7RLpJMreVPD0XjNFIPqKrkkpG4rxteHjtbxfLJlHhVRcSf |
43
|
|
|
IESZ2MdQczLosjsyiv9b/8kp4y4bAR33BaedLxJvxer8qXVKgzw9YHJhWVojFoDx |
44
|
|
|
GwxMR2Eh2hUEAlwifKv84P5GgYdQ0CPHMe06fR+fq/B75dqF/Emlks6f1hoTVEJc |
45
|
|
|
RvXVy7ECgYEA/zUEHdhegUTrFMfvfUrqw+Uolj+GH10yM5EQqYGAiEsNOv+pcR0+ |
46
|
|
|
DoNawt1Ddrj4LuvM9s26O26yX99UyleiHphPAOdXUiU7taIWIIcllY+oA9ZajhG8 |
47
|
|
|
ufZmCfydeVi+/EjpIrEU3F7q0GXisZ8oMIfg+HG8Z2+uy/+m7k6RCT8CgYEAwWpR |
48
|
|
|
hzW2/4bDpa4P5AfN0wN+CqlGEIfim5MBk608QWgQTPIIADk9dX3IML2BVaX/Eyod |
49
|
|
|
CYn+reF0UDIyaI2XCZ9ab/jeKOQVUh2IksK4T9H41JokWyXoYcVJSF6kIdHOCY4D |
50
|
|
|
GXfx0ruJa2dKGWBMcpSUndXqVGmDvVrcdSOsQy0CgYEA/V19AMRWzq/FU5RLR3Ch |
51
|
|
|
MmrHqKLYXTsBJADZMe/H04fvUquPZSVK/s2Zxew1liB9BNhFXKFSSr7TiCsI2vm1 |
52
|
|
|
kfpUNOl3363nYaPRo+mIfrtoaqbcsD8bxuPA2hlZnadltMIN8ssrkr0JEmyUaxM/ |
53
|
|
|
qy67Quxnx6kxOIZPDDgj9bECgYBB/JraDVpkrT6cjNkBDCSNhFiBHKU5yJJoT2wv |
54
|
|
|
TOAM1IsTJVPTd7PfHM2qy0yPwvVWPXzwnzLTceKz5ZxLDVtlPgelwftRahdYD5lj |
55
|
|
|
sKkfGlzRc9FJg5JXoO5SkW9f1mt72QZ3rvNC2RaWHQQryi3qvYRCoRO0PtdiR9iE |
56
|
|
|
4mnH9QKBgERffegJiuqdPyAeBZ+5htJ9pdfXjVTgFGuEvhmTR/mrpwqjihLg8IXV |
57
|
|
|
whXkXaMi77FKD9StGrlBOQD6CgUVt/DkiZyGDRX0YkTj78X+hjsrgNdIr8c0TrtQ |
58
|
|
|
gen9FW5mEhj257ZHej/AQrJWFo7YVooBL7ShwU0WaReeQkncxAsY |
59
|
|
|
-----END RSA PRIVATE KEY----- |
60
|
|
|
'; |
61
|
|
|
|
62
|
|
|
/** |
63
|
|
|
* @param string $type |
64
|
|
|
* @param string $expected |
65
|
|
|
* @param string $payload |
66
|
|
|
* @param string $signature |
67
|
|
|
* |
68
|
|
|
* @test |
69
|
|
|
* @dataProvider testSetProvider |
70
|
|
|
*/ |
71
|
|
|
public function willPassTestDataSetUsingSha256($type, $expected, $payload, $signature) |
72
|
|
|
{ |
73
|
|
|
$validator = new RsaValidator($type); |
74
|
|
|
$this->assertSame($expected, $validator->isValid($payload, self::$pubKey, $signature)); |
75
|
|
|
} |
76
|
|
|
|
77
|
|
|
/** |
78
|
|
|
* @return array |
79
|
|
|
*/ |
80
|
|
|
public static function testSetProvider() |
81
|
|
|
{ |
82
|
|
|
// SHA256 |
83
|
|
|
|
84
|
|
|
$payload1 = 'some payload'; |
85
|
|
|
$signature1 = ''; |
86
|
|
|
openssl_sign($payload1, $signature1, self::$privKey, RsaValidator::SHA256); |
87
|
|
|
|
88
|
|
|
$payload2 = 'some other payload'; |
89
|
|
|
$signature2 = ''; |
90
|
|
|
openssl_sign($payload2, $signature2, self::$privKey, RsaValidator::SHA256); |
91
|
|
|
|
92
|
|
|
// SHA512 |
93
|
|
|
|
94
|
|
|
$payload3 = 'some payload'; |
95
|
|
|
$signature3 = ''; |
96
|
|
|
openssl_sign($payload3, $signature3, self::$privKey, RsaValidator::SHA512); |
97
|
|
|
|
98
|
|
|
$payload4 = 'some other payload'; |
99
|
|
|
$signature4 = ''; |
100
|
|
|
openssl_sign($payload4, $signature4, self::$privKey, RsaValidator::SHA512); |
101
|
|
|
|
102
|
|
|
return [ |
103
|
|
|
[RsaValidator::SHA256, true, $payload1, $signature1], |
104
|
|
|
[RsaValidator::SHA256, true, $payload2, $signature2], |
105
|
|
|
[RsaValidator::SHA256, false, $payload1, $signature2], |
106
|
|
|
[RsaValidator::SHA256, false, $payload2, $signature1], |
107
|
|
|
[RsaValidator::SHA512, true, $payload3, $signature3], |
108
|
|
|
[RsaValidator::SHA512, true, $payload4, $signature4], |
109
|
|
|
[RsaValidator::SHA512, false, $signature4, $signature3], |
110
|
|
|
[RsaValidator::SHA512, false, $signature3, $signature4], |
111
|
|
|
[RsaValidator::SHA512, false, $payload1, $signature1], |
112
|
|
|
[RsaValidator::SHA512, false, $payload2, $signature2], |
113
|
|
|
]; |
114
|
|
|
} |
115
|
|
|
} |
116
|
|
|
|