A library providing an ACN (Anonymous Communication Network) abstraction and a tor (for now) implementation.
Sarah Jamie Lewis
1524e78a4a
continuous-integration/drone/push Build is pending
Информация
Reviewed-on: #47 Reviewed-by: Dan Ballard <dan@openprivacy.ca> |
||
---|---|---|
testing | ||
tor | ||
.drone.yml | ||
.gitignore | ||
LICENSE | ||
README.md | ||
acn.go | ||
error_acn.go | ||
go.mod | ||
go.sum | ||
localProvider.go | ||
proxy_acn.go |
README.md
connectivity
A library providing an ACN (Anonymous Communication Network ) networking abstraction
Supported ACNs
- Tor v3 Onion Services
Environment Variables
TOR_LD_LIBRARY_PATH
- override the library path given to the Tor process as different from the one given to the parent process.CWTCH_RESTRICT_PORTS
- forces connectivity to bind to a subset of ports15000-15378
CWTCH_BIND_EXTERNAL_WHONIX
- forces connectivity to bind to external interfaces (only supported/recommended on certain Whonix-based setups. Please open an issue if you think this should be expanded.)
Requirements for ACN Support
- Reference an EndPoint via a string / hostname
- Maintain an endpoint via a PublicKey (the underlying crypto is the responsibility of the implementation)
Using
Each ACN implementation provides a specific start function that takes in the required parameters to e.g. find a specific binary on the system, attempt to talk to a specific system service or launch an in-memory networking manager:
acn, err := NewTorACN(".", "", 9051, HashedPasswordAuthenticator{"examplehasedpassword"})
if err != nil {
t.Error(err)
return
}
At this point the ACN is responsible for setting up the networking interface, the result of which can be checked via the Status callback:
acn.SetStatusCallback(getStatusCallback(progChan))
progress := 0
for progress < 100 {
progress = <-progChan
}
Once initialized the ACN can be used to open new connections:
conn,err := acn.Open(hostname);
Or host a service on the ACN:
ls,err := acn.Listen(identity, port) ;
We also provide closing and restart functionality for managing the networking service:
acn.Restart()
and
acn.Close()