diff options
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); +}); |