Gerrit Patch Uploader has uploaded a new change for review.
https://gerrit.wikimedia.org/r/190640
Change subject: mediawiki.user: Simplify mw.user.generateRandomSessionId
......................................................................
mediawiki.user: Simplify mw.user.generateRandomSessionId
Change-Id: I6e6ac9e0813c4ba540e0a53b8e6667162cb60bf7
---
M resources/src/mediawiki/mediawiki.user.js
1 file changed, 9 insertions(+), 21 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core
refs/changes/40/190640/1
diff --git a/resources/src/mediawiki/mediawiki.user.js
b/resources/src/mediawiki/mediawiki.user.js
index c3ec3f3..537eaa5 100644
--- a/resources/src/mediawiki/mediawiki.user.js
+++ b/resources/src/mediawiki/mediawiki.user.js
@@ -3,19 +3,12 @@
* @singleton
*/
( function ( mw, $ ) {
- var user, i,
+ var user,
deferreds = {},
- byteToHex = [],
// Extend the skeleton mw.user from mediawiki.js
// This is kind of ugly but we're stuck with this for b/c
reasons
options = mw.user.options || new mw.Map(),
tokens = mw.user.tokens || new mw.Map();
-
- // Maps for number -> hex string conversion (with padding)
- // idea from: https://github.com/broofa/node-uuid/blob/master/uuid.js
- for ( i = 0; i < 256; i++ ) {
- byteToHex[i] = (i + 0x100).toString(16).substr(1);
- }
/**
* Get the current user's groups or rights
@@ -75,28 +68,23 @@
* @return {string} 64 bit integer in hex format, padded
*/
generateRandomSessionId: function () {
- /*jshint bitwise:false */
- var rnds, i, r, cryptoObj, hexRnds = new Array( 8 );
+ var rnds, i, cryptoObj, hexRnds = new Array( 2 );
cryptoObj = window.crypto || window.msCrypto; // for IE
11
if ( cryptoObj ) {
- // We fill an array with 8 random values, each
of which is 8 bits.
+ // We fill an array with 2 random values, each
of which is 32 bits.
// note that rnds is an array-like object not a
true array
- rnds = new Uint8Array( 8 );
+ rnds = new Uint32Array( 2 );
cryptoObj.getRandomValues( rnds );
} else {
- rnds = new Array( 8 );
- // From:
https://github.com/broofa/node-uuid/blob/master/uuid.js
- for ( i = 0, r; i < 8; i++ ) {
- if ( ( i & 0x03 ) === 0 ) {
- r = Math.random() * 0x100000000;
- }
- rnds[i] = r >>> ( ( i & 0x03 ) << 3 ) &
0xff;
+ rnds = new Array( 2 );
+ for ( i = 0, r; i < 2; i++ ) {
+ rnds[i] = Math.floor( Math.random() *
0x100000000 );
}
}
- // convert to hex using byteToHex that already contains
padding
+ // convert to hex
for ( i = 0; i < rnds.length; i++ ) {
- hexRnds[i] = byteToHex[rnds[i]];
+ hexRnds[i] = ( rnds[i] + 0x100000000
).toString( 16 ).substr( 1 );
}
// concatenation of two random integers with entrophy n
and m
--
To view, visit https://gerrit.wikimedia.org/r/190640
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6e6ac9e0813c4ba540e0a53b8e6667162cb60bf7
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Gerrit Patch Uploader <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits