import * as jose from 'jose'; import { signJWT, decodeJWT, verifyJWT } from '../src/auth.ts'; import { getValues } from '../src/jwks/get.ts'; const payload = { iss: "https://convex.kevisual.cn", sub: "user:123456", aud: "convex-app", name: "John Doe", email: "john.doe@example.com", // exp: Math.floor(Date.now() / 1000) - (2 * 60 * 60) // 2 hours from now } const createToken = async () => { const { privateJWK, privateKeyPEM } = getValues(); const token = await signJWT(payload, privateKeyPEM); console.log('Generated JWT:', token); // console.log('expited at:', new Date(payload.exp * 1000).toLocaleString()); return token; } const token = await createToken() const decode = decodeJWT(token) console.log('Decoded JWT:', decode); const verify = async () => { const { publicKeyPEM, privateJWK, jwks } = getValues(); try { const verifiedPayload = await verifyJWT(token, publicKeyPEM); console.log('Verified JWT payload:', verifiedPayload); } catch (error) { console.error('Verification failed:', error); } } await verify();