OSDN Git Service

big boom
[bytom/Bytom-JS-SDK.git] / src / utils / byte.js
1
2 // assumes wordArray is Big-Endian (because it comes from CryptoJS which is all BE)
3 // From: https://gist.github.com/getify/7325764
4 export function convertWordArrayToUint8Array(wordArray) {
5         var len = wordArray.words.length,
6                 u8_array = new Uint8Array(len << 2),
7                 offset = 0, word, i
8         ;
9         for (i=0; i<len; i++) {
10                 word = wordArray.words[i];
11                 u8_array[offset++] = word >> 24;
12                 u8_array[offset++] = (word >> 16) & 0xff;
13                 u8_array[offset++] = (word >> 8) & 0xff;
14                 u8_array[offset++] = word & 0xff;
15         }
16     return u8_array;
17 }
18
19 export function convertUint8ArrayToWordArray(u8Array) {
20         var words = [], i = 0, len = u8Array.length;
21
22         while (i < len) {
23                 words.push(
24                         (u8Array[i++] << 24) |
25                         (u8Array[i++] << 16) |
26                         (u8Array[i++] << 8)  |
27                         (u8Array[i++])
28                 );
29         }
30
31         return {
32                 sigBytes: words.length * 4,
33                 words: words
34         };
35 }
36
37 // get random Uint8Array
38 export function getRandomByte(len) {
39         var array = new Uint8Array(len);
40         window.crypto.getRandomValues(array);
41         return array;
42 }