spa
Version:
Single-page applications builder with continuous integration, granular updates and loader.
21 lines (18 loc) • 822 B
text/coffeescript
(MODE) ->
decoder = (data, password, p) ->
if data instanceof ArrayBuffer
view = new Uint8Array(data)
ct = sjcl.codec.bytes.toBits(view)
else if data instanceof Buffer
ct = sjcl.codec.bytes.toBits(data)
else
throw Error("invalid input type")
salt = sjcl.codec.hex.toBits(p.salt)
iv = sjcl.codec.hex.toBits(p.iv)
key = sjcl.misc.pbkdf2(password, salt, p.iter).slice(0, p.ks / 32)
prp = new sjcl.cipher.aes(key)
auth = sjcl.codec.utf8String.toBits(p.auth)
text = sjcl.mode[MODE].decrypt(prp, ct, iv, auth, p.ts)
return sjcl.codec.utf8String.fromBits(text)
return (content, module, loader) ->
return decoder(content, loader.options.password, module.decoding)