Remove crypto.subtle requirement
This commit is contained in:
parent
4a6aca4c07
commit
3699464947
2 changed files with 13 additions and 9 deletions
|
@ -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();
|
||||||
|
|
|
@ -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) => {
|
||||||
|
|
Loading…
Reference in a new issue