wireguard-tools/contrib/keygen-html/keygen.html
Greg Kroah-Hartman 01d00bc035 global: add SPDX tags to all files
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>
2017-12-09 22:29:28 +01:00

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>