Skip to content

Commit c4526a0

Browse files
committed
Merge branch '139_remove_checking_code' of github.com:tom-konda/osm-auth into tom-konda-139_remove_checking_code
2 parents 5a86241 + 6a746ce commit c4526a0

File tree

1 file changed

+18
-53
lines changed

1 file changed

+18
-53
lines changed

src/osm-auth.mjs

Lines changed: 18 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -570,19 +570,6 @@ function utilStringQs(str) {
570570
}
571571

572572

573-
/**
574-
* supportsWebCryptoAPI
575-
* https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API
576-
* @returns {boolean} `true` if WebCryptoAPI is available
577-
*/
578-
function supportsWebCryptoAPI() {
579-
return window && window.crypto
580-
&& window.crypto.getRandomValues
581-
&& window.crypto.subtle
582-
&& window.crypto.subtle.digest;
583-
}
584-
585-
586573
/**
587574
* Generates a challenge/verifier pair for PKCE.
588575
* If the browser does not support the WebCryptoAPI, the "plain" method is
@@ -591,38 +578,24 @@ function supportsWebCryptoAPI() {
591578
*/
592579
function _generatePkceChallenge(callback) {
593580
var code_verifier;
594-
if (supportsWebCryptoAPI()) {
595-
// generate a random code_verifier
596-
// https://datatracker.ietf.org/doc/html/rfc7636#section-7.1
597-
var random = window.crypto.getRandomValues(new Uint8Array(32));
598-
code_verifier = base64(random.buffer);
599-
var verifier = Uint8Array.from(Array.from(code_verifier).map(function(char) {
600-
return char.charCodeAt(0);
601-
}));
602-
603-
// generate challenge for code verifier
604-
window.crypto.subtle.digest('SHA-256', verifier).then(function(hash) {
605-
var code_challenge = base64(hash);
606-
607-
callback({
608-
code_challenge: code_challenge,
609-
code_verifier: code_verifier,
610-
code_challenge_method: 'S256'
611-
});
612-
});
613-
} else {
614-
// browser does not support Web Crypto API (e.g. IE11) -> fall back to "plain" method
615-
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
616-
code_verifier = '';
617-
for (var i=0; i<64; i++) {
618-
code_verifier += chars[Math.floor(Math.random() * chars.length)];
619-
}
581+
// generate a random code_verifier
582+
// https://datatracker.ietf.org/doc/html/rfc7636#section-7.1
583+
var random = globalThis.crypto.getRandomValues(new Uint8Array(32));
584+
code_verifier = base64(random.buffer);
585+
var verifier = Uint8Array.from(Array.from(code_verifier).map(function(char) {
586+
return char.charCodeAt(0);
587+
}));
588+
589+
// generate challenge for code verifier
590+
globalThis.crypto.subtle.digest('SHA-256', verifier).then(function(hash) {
591+
var code_challenge = base64(hash);
592+
620593
callback({
594+
code_challenge: code_challenge,
621595
code_verifier: code_verifier,
622-
code_challenge: code_verifier,
623-
code_challenge_method: 'plain',
596+
code_challenge_method: 'S256'
624597
});
625-
}
598+
});
626599
}
627600

628601

@@ -632,17 +605,9 @@ function _generatePkceChallenge(callback) {
632605
*/
633606
function generateState() {
634607
var state;
635-
if (supportsWebCryptoAPI()) {
636-
var random = window.crypto.getRandomValues(new Uint8Array(32));
637-
state = base64(random.buffer);
638-
} else {
639-
// browser does not support Web Crypto API (e.g. IE11) -> fall back to "plain" method
640-
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
641-
state = '';
642-
for (var i=0; i<64; i++) {
643-
state += chars[Math.floor(Math.random() * chars.length)];
644-
}
645-
}
608+
var random = globalThis.crypto.getRandomValues(new Uint8Array(32));
609+
state = base64(random.buffer);
610+
646611
return state;
647612
}
648613

0 commit comments

Comments
 (0)