wintun

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2026 License: GPL-3.0 Imports: 20 Imported by: 0

Documentation

Overview

Package wintun скачивает wintun.dll фиксированной версии, проверяет её и кладёт рядом с qwdtt-cli.exe. Его зовут команды wintun и release.

wintun.dll нужна только режиму -datapath tun на Windows (свой адаптер). В репозитории её нет: это чужой бинарь под собственной лицензией WireGuard LLC, а не наш код. Этот пакет — единственный источник DLL и для сборки из исходников, и для релиза.

Что делается:

  1. архив wintun-<версия>.zip берётся с https://www.wintun.net/builds/ (или из Options.Archive, если он уже скачан);
  2. SHA256 архива сверяется с зашитым в код; не совпал — ошибка, и ничего не распаковано;
  3. из архива берётся bin/<arch>/wintun.dll, и на Windows проверяется её подпись Authenticode: действительная, подписант — WireGuard LLC;
  4. DLL и лицензия Wintun (как wintun-LICENSE.txt) копируются в Options.Dest с временем изменения из архива.

Лицензия Wintun разрешает распространять DLL без изменений вместе с программой, которая обращается к ней только через API wintun.h, — так её и использует wireguard-go. Поэтому лицензия кладётся рядом с DLL.

Сменить версию Wintun — значит поменять Version и ArchiveSHA256 ниже, сверив хеш с архивом, скачанным вручную с wintun.net.

Index

Constants

View Source
const (
	Version       = "0.14.1"
	ArchiveSHA256 = "07c256185d6ee3652e09fa55c0b673e2624b565e02c4b9091c79ca7d2f24ef51"
	ArchiveURL    = "https://www.wintun.net/builds/wintun-" + Version + ".zip"
)

Версия и хеш архива. Хеш — от архива с wintun.net/builds (plan-e2.md, врезка W2).

View Source
const ExpectedSigner = "O=WireGuard LLC"

ExpectedSigner — подписант DLL. Проверяется организация, а не отпечаток сертификата: сертификаты продлеваются, организация остаётся.

Variables

This section is empty.

Functions

func ArchDir

func ArchDir(arch string) (dir string, ok bool)

ArchDir — каталог архитектуры в архиве; ok — архитектура известна.

func Fetch

func Fetch(o Options) (err error)

Fetch делает всё по шагам из описания пакета.

func SignerSubject

func SignerSubject(path string) (string, error)

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 — что и куда брать.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL