mirror of
https://github.com/PrivateBin/PrivateBin.git
synced 2024-03-22 13:10:41 +08:00
add back sjcl.bitArray.extract - needed for bn
This commit is contained in:
parent
86fe235744
commit
0e7ab6a614
|
@ -42,6 +42,27 @@ sjcl.bitArray = {
|
||||||
return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
|
return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract a number packed into a bit array.
|
||||||
|
* @param {bitArray} a The array to slice.
|
||||||
|
* @param {Number} bstart The offset to the start of the slice, in bits.
|
||||||
|
* @param {Number} length The length of the number to extract.
|
||||||
|
* @return {Number} The requested slice.
|
||||||
|
*/
|
||||||
|
extract: function(a, bstart, blength) {
|
||||||
|
// FIXME: this Math.floor is not necessary at all, but for some reason
|
||||||
|
// seems to suppress a bug in the Chromium JIT.
|
||||||
|
var x, sh = Math.floor((-bstart-blength) & 31);
|
||||||
|
if ((bstart + blength - 1 ^ bstart) & -32) {
|
||||||
|
// it crosses a boundary
|
||||||
|
x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
|
||||||
|
} else {
|
||||||
|
// within a single word
|
||||||
|
x = a[bstart/32|0] >>> sh;
|
||||||
|
}
|
||||||
|
return x & ((1<<blength) - 1);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Concatenate two bit arrays.
|
* Concatenate two bit arrays.
|
||||||
* @param {bitArray} a1 The first array.
|
* @param {bitArray} a1 The first array.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user