Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async encrypt (pld, secrets) {
try {
let rawPld
try {
rawPld = LZUTF8.compress(JSON.stringify(pld))
} catch (e) {
throw this.err('Packing process failed', { e })
}
try {
secrets = await this.loadSecrets(['encrypt'], secrets)
const tagSize = 128 // 128 bits
const iv = new Uint8Array(12) // 12 bytes
crypto.getRandomValues(iv)
let cypher = await crypto.subtle.encrypt(
{
name: 'AES-GCM',
iv,
tagLength: tagSize,
additionalData: __.strToArrBuf(secrets.userId)
},
secrets.cryptKeyObj,
getShareableURL = (preset) => {
const compressedPreset = compress(JSON.stringify(preset), { outputEncoding: 'Base64' })
const shareableURL = `djen.co/#share=${compressedPreset}`
if (shareableURL.length > 2048) logError('URL exceeds 2048 chars. May not succeed')
return shareableURL
}
serialize (value) {
return LZUTF8.compress(JSON.stringify(value), {
outputEncoding: 'BinaryString'
})
}
private async encrypt(): Promise {
const compressed = LZUTF8.compress(JSON.stringify([...this.passwords]));
const initializationVector = new Uint8Array(this.ivLen);
crypto.getRandomValues(initializationVector);
const encrypted = await crypto.subtle.encrypt({
name: 'AES-GCM',
iv: initializationVector
},
this.masterKey,
compressed
);
return this.concatUint8Array(initializationVector, new Uint8Array(encrypted));
}
private updatePattern(pattern : Pattern, patternSettings: PatternSettings) {
var patternSettingsQueryString = encodeURIComponent(lzutf8.compress(JSON.stringify(patternSettings),{outputEncoding: "Base64"}));
window.history.pushState('pattern', 'pattern', window.location.origin + window.location.pathname + '?patternSettings=' + patternSettingsQueryString);
this.setState({pattern: pattern, patternSettings: patternSettings});
}
require.ensure(['lzutf8'], (require) => {
const compress = require('lzutf8').compress
const compressedPreset = compress(JSON.stringify(preset), { outputEncoding: 'Base64' })
const shareableURL = `djen.co/#share=${compressedPreset}`
if (shareableURL.length > 2048) logError('URL exceeds 2048 chars. May not succeed')
res(shareableURL)
}, 'lzutf8')
})