summary refs log tree commit diff
path: root/api/src/test/jwt.ts
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/test/jwt.ts')
-rw-r--r--api/src/test/jwt.ts37
1 files changed, 37 insertions, 0 deletions
diff --git a/api/src/test/jwt.ts b/api/src/test/jwt.ts
new file mode 100644

index 00000000..bdad513b --- /dev/null +++ b/api/src/test/jwt.ts
@@ -0,0 +1,37 @@ +const jwa = require("jwa"); + +var STR64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""); + +function base64url(string: string, encoding: string) { + // @ts-ignore + return Buffer.from(string, encoding).toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); +} + +function to64String(input: number, current = ""): string { + if (input < 0 && current.length == 0) { + input = input * -1; + } + var modify = input % 64; + var remain = Math.floor(input / 64); + var result = STR64[modify] + current; + return remain <= 0 ? result : to64String(remain, result); +} + +function to64Parse(input: string) { + var result = 0; + var toProc = input.split(""); + var e; + for (e in toProc) { + result = result * 64 + STR64.indexOf(toProc[e]); + } + return result; +} + +// @ts-ignore +const start = `${base64url("311129357362135041")}.${to64String(Date.now())}`; +const signature = jwa("HS256").sign(start, `test`); +const token = `${start}.${signature}`; +console.log(token); + +// MzExMTI5MzU3MzYyMTM1MDQx.XdQb_rA.907VgF60kocnOTl32MSUWGSSzbAytQ0jbt36KjLaxuY +// MzExMTI5MzU3MzYyMTM1MDQx.XdQbaPy.4vGx4L7IuFJGsRe6IL3BeybLIvbx4Vauvx12pwNsy2U