01d00bc035
It's good to have SPDX identifiers in all files as the Linux kernel developers are working to add these identifiers to all files. Update all files with the correct SPDX license identifier based on the license text of the project or based on the license in the file itself. The SPDX identifier is a legally binding shorthand, which can be used instead of the full boiler plate text. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Modified-by: Jason A. Donenfeld <Jason@zx2c4.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
75 lines
2.3 KiB
HTML
75 lines
2.3 KiB
HTML
<script src="curve25519_generate.js"></script>
|
|
<script>
|
|
/* SPDX-License-Identifier: GPL-2.0
|
|
*
|
|
* Copyright (C) 2015-2017 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
|
*/
|
|
function generateWireguardKeypair()
|
|
{
|
|
var privateKey = Module._malloc(32);
|
|
var publicKey = Module._malloc(32);
|
|
Module._curve25519_generate_private(privateKey);
|
|
Module._curve25519_generate_public(publicKey, privateKey);
|
|
var privateBase64 = Module._malloc(45);
|
|
var publicBase64 = Module._malloc(45);
|
|
Module._key_to_base64(privateBase64, privateKey);
|
|
Module._key_to_base64(publicBase64, publicKey);
|
|
Module._free(privateKey);
|
|
Module._free(publicKey);
|
|
var keypair = {
|
|
publicKey: Module.Pointer_stringify(publicBase64),
|
|
privateKey: Module.Pointer_stringify(privateBase64)
|
|
};
|
|
Module._free(privateBase64);
|
|
Module._free(publicBase64);
|
|
return keypair;
|
|
}
|
|
|
|
function sendPubkeyToServer(pubkey, username, password)
|
|
{
|
|
alert("Sending " + username + ":" + password + " to server for new pubkey " + pubkey + "...");
|
|
|
|
// send info to server
|
|
|
|
var serverResponse = {
|
|
publicKey: "6spHEFoJrp9pijbxjJoS6fHjZaAWQqtdFFO/OtpVe3w=",
|
|
allowedIPs: [ "0.0.0.0/0", "::/0" ],
|
|
endpoint: "demo.wireguard.com:63321",
|
|
address: [ "192.168.18.42/32", "fd08:1234:1111::77/128" ],
|
|
dns: [ "8.8.8.8", "8.8.4.4" ]
|
|
}
|
|
|
|
return serverResponse;
|
|
}
|
|
|
|
function downloadNewConfiguration()
|
|
{
|
|
var keypair = generateWireguardKeypair();
|
|
var serverResponse = sendPubkeyToServer(keypair.publicKey, "zx2c4", "supersecretpassword");
|
|
|
|
var config = [];
|
|
config.push("[Interface]");
|
|
config.push("PrivateKey = " + keypair.privateKey);
|
|
config.push("Address = " + serverResponse.address.join(", "));
|
|
config.push("DNS = " + serverResponse.dns.join(", "));
|
|
config.push("");
|
|
config.push("[Peer]");
|
|
config.push("PublicKey = " + serverResponse.publicKey);
|
|
config.push("AllowedIPs = " + serverResponse.allowedIPs.join(", "));
|
|
config.push("Endpoint = " + serverResponse.endpoint);
|
|
config.push("");
|
|
config = config.join("\n");
|
|
|
|
var blob = new Blob([config], { type: "text/plain" });
|
|
var a = document.createElement("a");
|
|
a.download = "demo0.conf";
|
|
a.href = URL.createObjectURL(blob);
|
|
a.style.display = "none";
|
|
document.body.appendChild(a);
|
|
a.click();
|
|
document.body.removeChild(a);
|
|
}
|
|
</script>
|
|
|
|
<a href="javascript:downloadNewConfiguration()">Download a WireGuard configuration file</a>
|