Let’s Encrypt is a free, automated, and open Certificate Authority.
- Install tools for using the Let's Encrypt certificates using Certbot
sudo apt-get update \
sudo apt-get install software-properties-common| ## Review Points | |
| ### **Binding to `window`** | |
| The SDK binds to the `window` object, which both restricts and presumes the usage is to be in the context of a browser. Which does the following: | |
| - Makes the implementer rightly assume this code is to only be used in the browser context which should not be done in its current state, as will be outlined | |
| - Does not allow use without polyfilling window in a Node.JS environment (Common for API <-> API implementation) | |
| - Due to these presumptions this creates security concerns and attack vectors that will be outlined further below |
| /** | |
| * Generate an RFC 4122 compliant v4uuid using window.crypto.getRandomValues | |
| * @returns {String} - A newly generated v4uuid | |
| */ | |
| export function genUuidv4() { | |
| let hex = window.crypto.getRandomValues(new Uint8Array(128 / 8)); // Or your crypto lib of choice -- Slice off the 0x if lib provides it. | |
| let bytes = Buffer.from(hex, 'hex'); | |
| // Force byte 7 and 9 to unsigned and pad to 8 bits | |
| let byte7asBin = (bytes[6] >>> 0).toString(2).padStart(8, "0"); // Get byte 7 as binary |
| func check_trail_cache(): | |
| if player_last_pos != player.position: | |
| position = player_trail[0][0] | |
| move_dir = player_trail[0][1] | |
| if position_index < frame_offset: | |
| position_index += 1 | |
| else: | |
| position_index = 0 | |
| ### Keybase proof | |
| I hereby claim: | |
| * I am acatthatprograms on github. | |
| * I am acatthatprograms (https://keybase.io/acatthatprograms) on keybase. | |
| * I have a public key ASAfFvOikGHt7gqXDN4VRburi_t5e-hycyKyeSYirro5_Qo | |
| To claim this, I am signing this object: |