|
1 | 1 | describe("JWT spec", function() |
2 | 2 |
|
3 | 3 | local jwt = require 'jwt' |
| 4 | + local crypto = require 'crypto' |
4 | 5 | local plainJwt = "eyJhbGciOiJub25lIn0.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ" |
5 | 6 |
|
6 | 7 | it("can decode a plain text token", function() |
@@ -50,16 +51,6 @@ describe("JWT spec", function() |
50 | 51 | assert.are.same(claims, decodedClaims) |
51 | 52 | end) |
52 | 53 |
|
53 | | - it("it cannot decode a token without a signature but with a key specified", function() |
54 | | - local claims = { |
55 | | - test = "test", |
56 | | - } |
57 | | - local keyPair = crypto.pkey.generate("rsa", 512) |
58 | | - local token, err = jwt.encode(claims, {alg = "RS256"}) |
59 | | - local decodedClaims = jwt.decode(token, {keys = {public = keyPair}}) |
60 | | - assert.are.same(decodedClaims, nil) |
61 | | - end) |
62 | | - |
63 | 54 | it("it cannot encode/decode a signed plain text token with alg=RS256 and an incorrect key", function() |
64 | 55 | local claims = { |
65 | 56 | test = "test", |
@@ -93,4 +84,32 @@ EQIDAQAB |
93 | 84 | assert(not token) |
94 | 85 | assert(err ~= nil) |
95 | 86 | end) |
| 87 | + |
| 88 | + it("can encode and decode rs256", function() |
| 89 | + local keys = { |
| 90 | + private = crypto.pkey.from_pem( |
| 91 | +[[-----BEGIN RSA PRIVATE KEY----- |
| 92 | +MIIBOwIBAAJBANfnFz7xPmYVdJxZE7sQ5quh/XUzB5y/D5z2A7KPYXUgUP0jd5yL |
| 93 | +Z7+pVBcFSUm5AZXJLXH4jPVOXztcmiu4ta0CAwEAAQJBAJYXWNmw7Cgbkk1+v3C0 |
| 94 | +dyeqHYF0UD5vtHLxs/BWLPI2lZO0e6ixFNI4uIuatBox1Zbzt1TSy8T09Slt4tNL |
| 95 | +CAECIQD6PHDGtKXcI2wUSvh4y8y7XfvwlwRPU2AzWZ1zvOCbbQIhANzgMpUNOZL2 |
| 96 | +vakju4sal1yZeXUWO8FurmsAyotAx9tBAiB2oQKh4PAkXZKWSDhlI9CqHtMaaq17 |
| 97 | +Yb5geaKARNGCPQIgILYrh5ufzT4xtJ0QJ3fWtuYb8NVMIEeuGTbSyHDdqIECIQDZ |
| 98 | +3LNCyR2ykwetc6KqbQh3W4VkuatAQgMv5pNdFLrfmg== |
| 99 | +-----END RSA PRIVATE KEY-----]], true), |
| 100 | + public = crypto.pkey.from_pem( |
| 101 | +[[-----BEGIN PUBLIC KEY----- |
| 102 | +MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANfnFz7xPmYVdJxZE7sQ5quh/XUzB5y/ |
| 103 | +D5z2A7KPYXUgUP0jd5yLZ7+pVBcFSUm5AZXJLXH4jPVOXztcmiu4ta0CAwEAAQ== |
| 104 | +-----END PUBLIC KEY-----]], false), |
| 105 | + } |
| 106 | + local claims = { |
| 107 | + test = "test", |
| 108 | + longClaim = "iubvn1oubv91henvicuqnw93bn19u ndij npkhabsdvlb23iou4bijbandlivubhql3ubvliuqwdbnvliuqwhv9ulqbhiulbiluabsdvuhbq9urbv9ubqubxuvbu9qbdshvuhqniuhv9uhbfq9uhr89hqu9ebnv9uqhu9rbvp9843$#BVCo²¸´no414i" |
| 109 | + } |
| 110 | + local token = jwt.encode(claims, {alg = "RS256", keys = keys}) |
| 111 | + local decodedClaims, err = jwt.decode(token, {keys = keys}) |
| 112 | + if not decodedClaims then error(err) end |
| 113 | + assert.are.same(claims, decodedClaims) |
| 114 | + end) |
96 | 115 | end) |
0 commit comments