Skip to content

Commit 32b5ea0

Browse files
authored
chore: add tests for JWK ASN1 fix (#631)
1 parent 47ad26b commit 32b5ea0

3 files changed

Lines changed: 50 additions & 6 deletions

File tree

tests/JWKTest.php

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,15 @@
99
class JWKTest extends TestCase
1010
{
1111
private static $keys;
12-
private static $privKey1;
13-
private static $privKey2;
12+
13+
public static function setUpBeforeClass(): void
14+
{
15+
$jwkSet = json_decode(
16+
file_get_contents(__DIR__ . '/data/rsa-jwkset.json'),
17+
true
18+
);
19+
self::$keys = JWK::parseKeySet($jwkSet);
20+
}
1421

1522
public function testMissingKty()
1623
{
@@ -84,16 +91,33 @@ public function testParseKeyWithEmptyDValue()
8491
$this->assertTrue(\is_array($keys));
8592
}
8693

87-
public function testParseJwkKeySet()
94+
/** @dataProvider provideParseJwkKeySet */
95+
public function testParseJwkKeySet($jwkFile, $keyId, $pubkeyFile)
8896
{
8997
$jwkSet = json_decode(
90-
file_get_contents(__DIR__ . '/data/rsa-jwkset.json'),
98+
file_get_contents(__DIR__ . '/data/' . $jwkFile),
9199
true
92100
);
93101
$keys = JWK::parseKeySet($jwkSet);
94102
$this->assertTrue(\is_array($keys));
95-
$this->assertArrayHasKey('jwk1', $keys);
96-
self::$keys = $keys;
103+
$this->assertArrayHasKey($keyId, $keys);
104+
105+
// verify public key
106+
$keyMaterial = $keys[$keyId]->getKeyMaterial();
107+
$publicKey = openssl_pkey_get_details($keyMaterial)['key'];
108+
109+
$this->assertEquals(
110+
file_get_contents(__DIR__ . '/data/' . $pubkeyFile),
111+
$publicKey
112+
);
113+
}
114+
115+
public function provideParseJwkKeySet()
116+
{
117+
return [
118+
['rsa-jwkset.json', 'jwk1', 'rsa1-public.pub'],
119+
['rsa-jwkset-2.json', 'jwk2', 'rsa-jwk2-public.pub'],
120+
];
97121
}
98122

99123
public function testParseJwkKey_empty()

tests/data/rsa-jwk2-public.pub

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-----BEGIN PUBLIC KEY-----
2+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyKqGRQyJtqxRm/Mo2YTC
3+
CAkPSDb7uNgC7tXjgVzNv2/XB8r4vMibBpZFPbwyVUk0wGhPk8qLjrIj/K8IMu/I
4+
Ytkq87pc1/1FAOub7e3xUrMx66GCq8QG94xROSfDWuMy7twILwjbkzNEU6bNibM0
5+
IQbCvdybFPhq4YHvlwOjfuMl2mNUma8wT1/l2MZenV1dmeLTg/kYGe9PGmn9JiY4
6+
t01Nj1FJQj9rH863KAa3LadQ4l8aBOpaIZwjANo3GCJJd4uSB67G+p0wuuDDYbiU
7+
GtN55degXjDKrv3v5bLgpPMX6ynvt2bi0olb/QZfovTnUaLfsZpCXTk/CvUXr2Q2
8+
KwIDAQAB
9+
-----END PUBLIC KEY-----

tests/data/rsa-jwkset-2.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"keys": [
3+
{
4+
"kty": "RSA",
5+
"e": "AQAB",
6+
"kid": "jwk2",
7+
"alg": "RS256",
8+
"n": "yKqGRQyJtqxRm_Mo2YTCCAkPSDb7uNgC7tXjgVzNv2_XB8r4vMibBpZFPbwyVUk0wGhPk8qLjrIj_K8IMu_IYtkq87pc1_1FAOub7e3xUrMx66GCq8QG94xROSfDWuMy7twILwjbkzNEU6bNibM0IQbCvdybFPhq4YHvlwOjfuMl2mNUma8wT1_l2MZenV1dmeLTg_kYGe9PGmn9JiY4t01Nj1FJQj9rH863KAa3LadQ4l8aBOpaIZwjANo3GCJJd4uSB67G-p0wuuDDYbiUGtN55degXjDKrv3v5bLgpPMX6ynvt2bi0olb_QZfovTnUaLfsZpCXTk_CvUXr2Q2Kw"
9+
}
10+
]
11+
}

0 commit comments

Comments
 (0)