diff options
author | timonson <54777088+timonson@users.noreply.github.com> | 2020-10-20 05:08:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-20 14:08:34 +1100 |
commit | 034ab48086557af00216ffe311c71ad4eb0ec4d5 (patch) | |
tree | 292abc572ed68eb52c1bc773e64f820497e065df /std/jwt/_signature_test.ts | |
parent | 992c2a436e5fe371807dd43bd293bb811fd529e7 (diff) |
feat(std/jwt): add a JSON Web Token library (#7991)
Co-authored-by: Tim Reichen <timreichen@users.noreply.github.com>
Diffstat (limited to 'std/jwt/_signature_test.ts')
-rw-r--r-- | std/jwt/_signature_test.ts | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/std/jwt/_signature_test.ts b/std/jwt/_signature_test.ts new file mode 100644 index 000000000..c02f0f4bc --- /dev/null +++ b/std/jwt/_signature_test.ts @@ -0,0 +1,46 @@ +import { assertEquals } from "../testing/asserts.ts"; +import { create, decode } from "./mod.ts"; + +import { + convertHexToBase64url, + create as createSignature, + verify as verifySignature, +} from "./_signature.ts"; + +const algorithm = "HS256"; +const key = "m$y-key"; + +Deno.test("[jwt] create signature", async function () { + // https://www.freeformatter.com/hmac-generator.html + const computedHmacInHex = + "2b9e6619fa7f2c8d8b3565c88365376b75b1b0e5d87e41218066fd1986f2c056"; + assertEquals( + await createSignature(algorithm, key, "thisTextWillBeEncrypted"), + convertHexToBase64url(computedHmacInHex), + ); + + const anotherVerifiedSignatureInBase64Url = + "p2KneqJhji8T0PDlVxcG4DROyzTgWXbDhz_mcTVojXo"; + assertEquals( + await createSignature( + algorithm, + key, + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ", + ), + anotherVerifiedSignatureInBase64Url, + ); +}); + +Deno.test("[jwt] verify signature", async function () { + const jwt = await create({}, key); + const { header, signature } = decode(jwt); + + const validSignature = await verifySignature({ + signature, + key, + algorithm: header.alg, + signingInput: jwt.slice(0, jwt.lastIndexOf(".")), + }); + + assertEquals(validSignature, true); +}); |