diff options
author | haturatu <taro@eyes4you.org> | 2024-08-09 20:57:38 +0900 |
---|---|---|
committer | haturatu <taro@eyes4you.org> | 2024-08-09 20:57:38 +0900 |
commit | 5a73bb414fafca464eb6a0b3ff305bb98d3ece9c (patch) | |
tree | 9d2b5cdbf65a1f5a1a03fd3f47eef219f8ea4bea /token_operations.ts |
first commit
Diffstat (limited to 'token_operations.ts')
-rw-r--r-- | token_operations.ts | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/token_operations.ts b/token_operations.ts new file mode 100644 index 0000000..0e5b85f --- /dev/null +++ b/token_operations.ts @@ -0,0 +1,63 @@ +import { create, verify } from "https://deno.land/x/djwt@v3.0.2/mod.ts"; +import { crypto } from "https://deno.land/std@0.140.0/crypto/mod.ts"; + +// シークレットキーをファイルから読み込む +const loadKey = async () => { + try { + const keyData = await Deno.readFile("secret.key"); + return await crypto.subtle.importKey( + "raw", + keyData, + { name: "HMAC", hash: "SHA-512" }, + true, + ["sign", "verify"] + ); + } catch (error) { + console.error("Error loading key:", error); + } +}; + +// JWTを生成する +const createToken = async (key: CryptoKey) => { + try { + const jwt = await create( + { alg: "HS512", typ: "JWT" }, // ヘッダー + { foo: "bar" }, // ペイロード + key // CryptoKey + ); + console.log("Generated JWT:", jwt); + return jwt; + } catch (error) { + console.error("Error creating token:", error); + } +}; + +// JWTを検証する +const verifyToken = async (token: string, key: CryptoKey) => { + try { + const payload = await verify(token, key); + console.log("Payload:", payload); + } catch (error) { + console.error("Error verifying token:", error); + } +}; + +const run = async () => { + try { + const key = await loadKey(); + if (!key) { + console.error("Failed to load key."); + return; + } + + const token = await createToken(key); + if (token) { + await verifyToken(token, key); + } + } catch (error) { + console.error("Error during token operations:", error); + } +}; + +await run(); + |