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