Documentation
¶
Overview ¶
Package wintun скачивает wintun.dll фиксированной версии, проверяет её и кладёт рядом с qwdtt-cli.exe. Его зовут команды wintun и release.
wintun.dll нужна только режиму -datapath tun на Windows (свой адаптер). В репозитории её нет: это чужой бинарь под собственной лицензией WireGuard LLC, а не наш код. Этот пакет — единственный источник DLL и для сборки из исходников, и для релиза.
Что делается:
- архив wintun-<версия>.zip берётся с https://www.wintun.net/builds/ (или из Options.Archive, если он уже скачан);
- SHA256 архива сверяется с зашитым в код; не совпал — ошибка, и ничего не распаковано;
- из архива берётся bin/<arch>/wintun.dll, и на Windows проверяется её подпись Authenticode: действительная, подписант — WireGuard LLC;
- DLL и лицензия Wintun (как wintun-LICENSE.txt) копируются в Options.Dest с временем изменения из архива.
Лицензия Wintun разрешает распространять DLL без изменений вместе с программой, которая обращается к ней только через API wintun.h, — так её и использует wireguard-go. Поэтому лицензия кладётся рядом с DLL.
Сменить версию Wintun — значит поменять Version и ArchiveSHA256 ниже, сверив хеш с архивом, скачанным вручную с wintun.net.
Index ¶
Constants ¶
const ( Version = "0.14.1" ArchiveSHA256 = "07c256185d6ee3652e09fa55c0b673e2624b565e02c4b9091c79ca7d2f24ef51" ArchiveURL = "https://www.wintun.net/builds/wintun-" + Version + ".zip" )
Версия и хеш архива. Хеш — от архива с wintun.net/builds (plan-e2.md, врезка W2).
const ExpectedSigner = "O=WireGuard LLC"
ExpectedSigner — подписант DLL. Проверяется организация, а не отпечаток сертификата: сертификаты продлеваются, организация остаётся.
Variables ¶
This section is empty.
Functions ¶
func SignerSubject ¶
SignerSubject — субъект сертификата подписанта Authenticode в PE-файле path, в том виде, в каком его показывает Windows (X509Certificate2.Subject): «CN=…, O=…, L=…, S=…, C=…». Подписант — первый в основной подписи, его и называет Get-AuthenticodeSignature.
Здесь подпись только разбирается, а не проверяется: действительна ли она, решает WinVerifyTrust (sign_windows.go).
Types ¶
type Options ¶
type Options struct {
// Arch — архитектура в терминах Go: amd64, arm64, 386, arm. Регистр не
// важен.
Arch string
// Dest — куда положить wintun.dll.
Dest string
// Archive — уже скачанный wintun-<версия>.zip: тогда в сеть не ходим.
// Хеш проверяется всё равно.
Archive string
}
Options — что и куда брать.