summaryrefslogtreecommitdiff
path: root/token_operations.ts
diff options
context:
space:
mode:
authorhaturatu <taro@eyes4you.org>2024-08-09 20:57:38 +0900
committerhaturatu <taro@eyes4you.org>2024-08-09 20:57:38 +0900
commit5a73bb414fafca464eb6a0b3ff305bb98d3ece9c (patch)
tree9d2b5cdbf65a1f5a1a03fd3f47eef219f8ea4bea /token_operations.ts
first commit
Diffstat (limited to 'token_operations.ts')
-rw-r--r--token_operations.ts63
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();
+