Project

General

Profile

« Previous | Next » 

Revision 7218849a

Added by koszko over 1 year ago

add a mapping/resources installation dialog

View differences:

common/misc.js
45 45
#FROM common/browser.js      IMPORT browser
46 46
#FROM common/stored_types.js IMPORT TYPE_NAME, TYPE_PREFIX
47 47

  
48
/* uint8_to_hex is a separate function used in cryptographic functions. */
49
const uint8_to_hex =
50
      array => [...array].map(b => ("0" + b.toString(16)).slice(-2)).join("");
51

  
48 52
/*
49
 * generating unique, per-site value that can be computed synchronously
50
 * and is impossible to guess for a malicious website
53
 * Asynchronously compute hex string representation of a sha256 digest of a
54
 * UTF-8 string.
51 55
 */
52

  
53
/* Uint8toHex is a separate function not exported as (a) it's useful and (b) it will be used in crypto.subtle-based digests */
54
function Uint8toHex(data)
55
{
56
    let returnValue = '';
57
    for (let byte of data)
58
	returnValue += ('00' + byte.toString(16)).slice(-2);
59
    return returnValue;
56
async function sha256_async(string) {
57
    const input_ab = new TextEncoder("utf-8").encode(string);
58
    const digest_ab = await crypto.subtle.digest("SHA-256", input_ab);
59
    return uint8_to_hex(new Uint8Array(digest_ab));
60 60
}
61
#EXPORT sha256_async
61 62

  
63
/*
64
 * Generate a unique value that can be computed synchronously and is impossible
65
 * to guess for a malicious website.
66
 */
62 67
function gen_nonce(length=16)
63 68
{
64
    let randomData = new Uint8Array(length);
65
    crypto.getRandomValues(randomData);
66
    return Uint8toHex(randomData);
69
    const random_data = new Uint8Array(length);
70
    crypto.getRandomValues(random_data);
71
    return uint8_to_hex(random_data);
67 72
}
68 73
#EXPORT gen_nonce
69 74

  

Also available in: Unified diff