Created
February 12, 2019 20:32
-
-
Save oz123/5e8949e714619960c8fa37be23af9454 to your computer and use it in GitHub Desktop.
using openpgp to encrypt uploaded file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import "babel-polyfill"; | |
var openpgp = require('openpgp'); // use as CommonJS, AMD, ES6 module or via window.openpgp | |
const query = query => document.querySelector(query); | |
const queryAll = query => Array.prototype.slice.apply(document.querySelectorAll(query)); | |
const pub_key = | |
['-----BEGIN PGP PUBLIC KEY BLOCK-----', | |
'Version: GnuPG v2.0.22 (GNU/Linux)', | |
'', | |
'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', | |
'T2o9P7OT67k=', | |
'=/Kyq', | |
'-----END PGP PUBLIC KEY BLOCK-----'].join('\n'); | |
function getKeyList() { | |
const pubKeyData = [pub_key]; | |
return Promise.all(pubKeyData.map(key => openpgp.key.readArmored(key))).then(xs => xs.map(a => a.keys[0])); | |
} | |
query("#uploader").addEventListener('change', function(evt) { | |
var files = evt.target.files; // FileList object | |
var reader = new FileReader(); | |
reader.onload = (async function(evt) { | |
var link; | |
link = document.createElement('a'); | |
const keys = await getKeyList(); | |
var arrayBuffer = this.result; | |
var fileData = new Uint8Array(arrayBuffer); | |
const options = { | |
message: openpgp.message.fromBinary(fileData), | |
publicKeys: keys, | |
privateKey: "", | |
armor: true, | |
}; | |
return openpgp.encrypt(options).then(results => { | |
link.setAttribute('href', window.URL.createObjectURL( | |
new Blob([results.data]), {type: "application/pgp-encrypted"}) | |
); | |
link.setAttribute('download', "encrypted.file.gpg"); | |
link.innerHTML = files[0].name + ".pgp"; | |
query('#output').appendChild(link); | |
}); | |
})(); | |
reader.readAsArrayBuffer(this.files[0]); | |
var add = (function () { | |
var counter = 0; | |
return function () {counter += 1; return counter;} | |
})(); | |
var file = document.getElementById("uploader"); | |
file.onchange = function(){ | |
if (file.files.length > 0){ | |
document.getElementById('filename-1').innerHTML = file.files[0].name; | |
} | |
if (file.files.length > 1){ | |
document.getElementById('filename-1').innerHTML = file.files.length + " files selected"; | |
} | |
} | |
if (file.files.length > 4){ | |
alert("You can select up to 4 files\nPlease select again") | |
file.files.val = "" | |
document.getElementById('filename-1').innerHTML = "Choose a file ..." | |
}; | |
}, false); | |
// vi: tabstop=2 sts=2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment