Files
2026-05-15 04:53:44 +00:00

48 lines
1.3 KiB
C#

using AS1024.Wireguard.Utils;
const string Help =
"""
wgkey - WireGuard key utility
wgkey gen
wgkey pub <private-base64>
wgkey decode <key-base64>
""";
if (args.Length == 0 || args[0] is "-h" or "--help" or "help")
{
Console.WriteLine(Help);
return 0;
}
try
{
// TODO: stdin mode?
switch (args[0])
{
case "gen":
{
var priv = WireGuardKeyUtils.GeneratePrivateKey();
var pub = WireGuardKeyUtils.GetPublicKey(priv);
Console.WriteLine($"private={Convert.ToBase64String(priv)}");
Console.WriteLine($"public={Convert.ToBase64String(pub)}");
return 0;
}
case "pub" when args.Length == 2:
Console.WriteLine(Convert.ToBase64String(
WireGuardKeyUtils.GetPublicKey(WireGuardKeyUtils.FromBase64(args[1]))));
return 0;
case "decode" when args.Length == 2:
Console.WriteLine(Convert.ToHexString(WireGuardKeyUtils.FromBase64(args[1])).ToLowerInvariant());
return 0;
default:
Console.Error.WriteLine(Help);
return 1;
}
}
catch (Exception e) when (e is ArgumentException or FormatException)
{
Console.Error.WriteLine(e.Message);
return 1;
}