cryptographically random uuids
This commit is contained in:
@@ -5,16 +5,29 @@ class SNCrypto {
|
|||||||
}
|
}
|
||||||
|
|
||||||
generateUUID() {
|
generateUUID() {
|
||||||
var d = new Date().getTime();
|
var crypto = window.crypto || window.msCrypto;
|
||||||
if(window.performance && typeof window.performance.now === "function"){
|
if(crypto) {
|
||||||
d += performance.now(); //use high-precision timer if available
|
var buf = new Uint32Array(4);
|
||||||
}
|
crypto.getRandomValues(buf);
|
||||||
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
var idx = -1;
|
||||||
var r = (d + Math.random()*16)%16 | 0;
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
||||||
d = Math.floor(d/16);
|
idx++;
|
||||||
return (c=='x' ? r : (r&0x3|0x8)).toString(16);
|
var r = (buf[idx>>3] >> ((idx%8)*4))&15;
|
||||||
});
|
var v = c == 'x' ? r : (r&0x3|0x8);
|
||||||
return uuid;
|
return v.toString(16);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var d = new Date().getTime();
|
||||||
|
if(window.performance && typeof window.performance.now === "function"){
|
||||||
|
d += performance.now(); //use high-precision timer if available
|
||||||
|
}
|
||||||
|
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
||||||
|
var r = (d + Math.random()*16)%16 | 0;
|
||||||
|
d = Math.floor(d/16);
|
||||||
|
return (c=='x' ? r : (r&0x3|0x8)).toString(16);
|
||||||
|
});
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
decryptText(encrypted_content, key) {
|
decryptText(encrypted_content, key) {
|
||||||
|
|||||||
31
vendor/assets/javascripts/transpiled.js
vendored
31
vendor/assets/javascripts/transpiled.js
vendored
@@ -28,16 +28,29 @@ var SNCrypto = function () {
|
|||||||
}, {
|
}, {
|
||||||
key: 'generateUUID',
|
key: 'generateUUID',
|
||||||
value: function generateUUID() {
|
value: function generateUUID() {
|
||||||
var d = new Date().getTime();
|
var crypto = window.crypto || window.msCrypto;
|
||||||
if (window.performance && typeof window.performance.now === "function") {
|
if (crypto) {
|
||||||
d += performance.now(); //use high-precision timer if available
|
var buf = new Uint32Array(4);
|
||||||
|
crypto.getRandomValues(buf);
|
||||||
|
var idx = -1;
|
||||||
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||||
|
idx++;
|
||||||
|
var r = buf[idx >> 3] >> idx % 8 * 4 & 15;
|
||||||
|
var v = c == 'x' ? r : r & 0x3 | 0x8;
|
||||||
|
return v.toString(16);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var d = new Date().getTime();
|
||||||
|
if (window.performance && typeof window.performance.now === "function") {
|
||||||
|
d += performance.now(); //use high-precision timer if available
|
||||||
|
}
|
||||||
|
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||||
|
var r = (d + Math.random() * 16) % 16 | 0;
|
||||||
|
d = Math.floor(d / 16);
|
||||||
|
return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);
|
||||||
|
});
|
||||||
|
return uuid;
|
||||||
}
|
}
|
||||||
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
||||||
var r = (d + Math.random() * 16) % 16 | 0;
|
|
||||||
d = Math.floor(d / 16);
|
|
||||||
return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);
|
|
||||||
});
|
|
||||||
return uuid;
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'decryptText',
|
key: 'decryptText',
|
||||||
|
|||||||
2
vendor/assets/javascripts/transpiled.js.map
vendored
2
vendor/assets/javascripts/transpiled.js.map
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user