Merge pull request #53635 from nextcloud/fix/insecure-crypto-envs

fix(files_sharing): fallback self.crypto.getRandomValues
pull/54111/head
John Molakvoæ 2025-07-28 19:51:59 +07:00 committed by GitHub
commit 33ddce490b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 32 additions and 13 deletions

@ -38,10 +38,29 @@ export default async function(verbose = false): Promise<string> {
const array = new Uint8Array(10)
const ratio = passwordSet.length / 255
self.crypto.getRandomValues(array)
getRandomValues(array)
let password = ''
for (let i = 0; i < array.length; i++) {
password += passwordSet.charAt(array[i] * ratio)
}
return password
}
/**
* Fills the given array with cryptographically secure random values.
* If the crypto API is not available, it falls back to less secure Math.random().
* Crypto API is available in modern browsers on secure contexts (HTTPS).
*
* @param {Uint8Array} array - The array to fill with random values.
*/
function getRandomValues(array: Uint8Array): void {
if (self?.crypto?.getRandomValues) {
self.crypto.getRandomValues(array)
return
}
let len = array.length
while (len--) {
array[len] = Math.floor(Math.random() * 256)
}
}

4
dist/519-519.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4
dist/5792-5792.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long