Incorporated pkce into auth.
This commit is contained in:
24
src/pkce.js
24
src/pkce.js
@@ -1,24 +0,0 @@
|
|||||||
// pkce.js
|
|
||||||
import crypto from "node:crypto";
|
|
||||||
|
|
||||||
function base64UrlEncode(buf) {
|
|
||||||
return buf
|
|
||||||
.toString("base64")
|
|
||||||
.replace(/\+/g, "-")
|
|
||||||
.replace(/\//g, "_")
|
|
||||||
.replace(/=+$/g, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* RFC7636 PKCE (S256)
|
|
||||||
* @returns {{ verifier: string, challenge: string, challengeMethod: "S256" }}
|
|
||||||
*/
|
|
||||||
export function generatePkce() {
|
|
||||||
// 32 bytes -> ~43 chars base64url, within RFC7636 43..128 range
|
|
||||||
const verifier = base64UrlEncode(crypto.randomBytes(32));
|
|
||||||
const challenge = base64UrlEncode(
|
|
||||||
crypto.createHash("sha256").update(verifier).digest()
|
|
||||||
);
|
|
||||||
|
|
||||||
return { verifier, challenge, challengeMethod: "S256" };
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user