()
| 72 | }; |
| 73 | |
| 74 | const randomNonce = (): string => { |
| 75 | const bytes = new Uint8Array(32); |
| 76 | crypto.getRandomValues(bytes); |
| 77 | return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join(""); |
| 78 | }; |
| 79 | |
| 80 | const timingSafeEqual = (a: string, b: string): boolean => { |
| 81 | if (a.length !== b.length) return false; |