-
Notifications
You must be signed in to change notification settings - Fork 1
/
encrypt-multi.html
113 lines (94 loc) · 3.4 KB
/
encrypt-multi.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="js/jquery.min.js"></script>
<style type="text/css">
.txtarea {
width: 600px;
height: 200px;
}
.largetxtarea {
height:400px;
}
</style>
<title>Encrypt for one or more PublicKeys</title>
</head>
<body>
<h2>Encrypt for one or more PublicKeys</h2>
<u>Offline</u> in your Browser<br />
No data is send during encryption
<br /><br />
<script src="js/openpgp.min.js"></script>
PublicKeys<br />
<textarea id="pgp_pubkey" class="txtarea largetxtarea"></textarea><br />
<br />
Message: <button id="btnEncrypt">encrypt</button><br />
<textarea id="pgp_input" class="txtarea"></textarea><br />
Encrypted Message:<br />
<textarea id="pgp_output" class="txtarea"></textarea>
<script>
$("#pgp_pubkey").val(`-----BEGIN PGP PUBLIC KEY BLOCK-----
xjMEZCSYDxYJKwYBBAHaRw8BAQdA236zVdhtTOjKPCgl6L8/UcRpSGFPP1JX
VoJj2wr0seHNKVBhdHJpY2sgR2F3cm9uIDxzYW1wbGVAcGF0cmlja2dhd3Jv
bi5jb20+wowEEBYKAD4FgmQkmA8ECwkHCAmQU21todfkzVgDFQgKBBYAAgEC
GQECmwMCHgEWIQTimyaijx5EFeOIkX9TbW2h1+TNWAAAtuQA/3lplXAvyJDA
GZk8+RJo23woXhZ9mbmCwae4xWHcJXZdAP4qTqm6VszPO71QxagJUREnRwSI
U3Zo+Wbd0UZnWABKBM44BGQkmA8SCisGAQQBl1UBBQEBB0CDyqtM4M42BWJ1
wOdt9PHo8ppYDVaheDXlLTWNhDmNdwMBCAfCeAQYFggAKgWCZCSYDwmQU21t
odfkzVgCmwwWIQTimyaijx5EFeOIkX9TbW2h1+TNWAAAPbcBAJFAuhLmH83z
AL3uHCbGS5wHcMG3zciER7RUshCAS/uiAQC3OIrleJiOkeCnuJfFL1/23/LO
kd2S33ACls4LtSPEBA==
=MZe5
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
xjMEZCSYXhYJKwYBBAHaRw8BAQdAeqlfmO1qrmIgY8P7ff7QM36pFJH4Oikj
BqQ3fKy6Q3bNJlNvbWUgT3RoZXIgPHNhbXBsZTJAcGF0cmlja2dhd3Jvbi5j
b20+wowEEBYKAD4FgmQkmF4ECwkHCAmQqw4KJo2a5YoDFQgKBBYAAgECGQEC
mwMCHgEWIQTbJQz3PevlNJpHl5yrDgomjZrligAAl54A/A0uGk3fIJqW4BAD
gNvBqt2mHTqJF95FNxLbwlym9BkcAQCnc5UO5ZqYMIy11FEl0k9JR3izvF4w
uXgPn0gYVgSHAM44BGQkmF4SCisGAQQBl1UBBQEBB0Cr46yMLy3WDIpDK91l
xt0/0CT/B6Uo8o3s9SgJhav0GQMBCAfCeAQYFggAKgWCZCSYXgmQqw4KJo2a
5YoCmwwWIQTbJQz3PevlNJpHl5yrDgomjZrligAAggwBAJ6BgK8wbAD5vl6y
thGtjvMgw4HXRvUZKDw8NzKPPNgiAP9J7Q4/J9sR5ubc+BQy69vw7WdUqOAN
rlksV87de8+GBw==
=BJx+
-----END PGP PUBLIC KEY BLOCK-----`);
(async () => {
doEncrypt = async function() {
const publicKeysInput = $("#pgp_pubkey").val().replace(/\r/, "");
const plaintext = $('#pgp_input').val().replace(/\r/, "");
if(plaintext != '' && publicKeysInput != '') {
var publicKeysArmored = publicKeysInput.split('-----BEGIN');
publicKeysArmored = publicKeysArmored.filter(function(x){ return (x !== (undefined || null || '')); });
publicKeysArmored = publicKeysArmored.map(x => "-----BEGIN"+x)
const publicKeys = await Promise.all(publicKeysArmored.map(armoredKey => openpgp.readKey({ armoredKey })));
const message = await openpgp.createMessage({ text: plaintext });
const encrypted = await openpgp.encrypt({
message, // input as Message object
encryptionKeys: publicKeys
});
if (encrypted) {
$("#pgp_output").val(encrypted)
} else {
$("#pgp_output").val('')
}
} else {
$("#pgp_output").val('')
}
};
})();
doEncrypt()
$('#pgp_input').bind('input propertychange', function() {
doEncrypt()
});
$('#pgp_pubkey').bind('input propertychange', function() {
doEncrypt()
});
$('#btnEncrypt').click(function() {
doEncrypt()
})
</script>
</body>
</html>