1
0
Fork 0
mirror of https://github.com/binwiederhier/ntfy.git synced 2024-11-01 17:34:14 +01:00

Remove crypto.subtle requirement

This commit is contained in:
Philipp Heckel 2022-03-12 08:15:30 -05:00
parent 4a6aca4c07
commit 3699464947
2 changed files with 13 additions and 9 deletions

View file

@ -1,5 +1,5 @@
import Connection from "./Connection"; import Connection from "./Connection";
import {sha256} from "./utils"; import {hashCode} from "./utils";
/** /**
* The connection manager keeps track of active connections (WebSocket connections, see Connection). * The connection manager keeps track of active connections (WebSocket connections, see Connection).
@ -108,10 +108,9 @@ class ConnectionManager {
} }
const makeConnectionId = async (subscription, user) => { const makeConnectionId = async (subscription, user) => {
const hash = (user) return (user)
? await sha256(`${subscription.id}|${user.username}|${user.password}`) ? hashCode(`${subscription.id}|${user.username}|${user.password}`)
: await sha256(`${subscription.id}`); : hashCode(`${subscription.id}`);
return hash.substring(0, 10);
} }
const connectionManager = new ConnectionManager(); const connectionManager = new ConnectionManager();

View file

@ -115,10 +115,15 @@ export const shuffle = (arr) => {
return arr; return arr;
} }
// https://jameshfisher.com/2017/10/30/web-cryptography-api-hello-world/ /** Non-cryptographic hash function, see https://stackoverflow.com/a/8831937/1440785 */
export const sha256 = async (s) => { export const hashCode = async (s) => {
const buf = await crypto.subtle.digest("SHA-256", new TextEncoder("utf-8").encode(s)); let hash = 0;
return Array.prototype.map.call(new Uint8Array(buf), x=>(('00'+x.toString(16)).slice(-2))).join(''); for (let i = 0; i < s.length; i++) {
const char = s.charCodeAt(i);
hash = ((hash<<5)-hash)+char;
hash = hash & hash; // Convert to 32bit integer
}
return hash;
} }
export const formatShortDateTime = (timestamp) => { export const formatShortDateTime = (timestamp) => {