diff --git a/src/app/entrar/components/LoginForm.js b/src/app/entrar/components/LoginForm.js index 6056ffefd6747132e147dc86c7f2d6cd22d8362a..9f204b9d58e65565722f20935adf1791103de4de 100644 --- a/src/app/entrar/components/LoginForm.js +++ b/src/app/entrar/components/LoginForm.js @@ -30,10 +30,12 @@ export default function LoginForm({ async function generateCodeVerifier() { var code_verifier = new Uint8Array(32); window.crypto.getRandomValues(code_verifier); - return code_verifier; + return base64URL(code_verifier); } - function generateCodeChallenge(code_verifier) { - return base64URL(window.crypto.subtle.digest("SHA-256", code_verifier)); + async function generateCodeChallenge(code_verifier) { + const encoder = new TextEncoder(); + const data = encoder.encode(code_verifier); + return base64URL(await window.crypto.subtle.digest("SHA-256", data)); } async function base64URL(buffer) { // use a FileReader to generate a base64 data URI: @@ -43,10 +45,10 @@ export default function LoginForm({ reader.readAsDataURL(new Blob([buffer])) }); // remove the `data:...;base64,` part from the start - return base64url.slice(base64url.indexOf(',') + 1); - } + return base64url.slice(base64url.indexOf(',') + 1).replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_'); + } const codeVerifier = await generateCodeVerifier(); - localStorage.setItem("govbr_code_verifier", await base64URL(codeVerifier)); + localStorage.setItem("govbr_code_verifier", codeVerifier); const params = { response_type: "code", client_id: "mecredhomologa.c3sl.ufpr.br",