A library providing an ACN (Anonymous Communication Network) abstraction and a tor (for now) implementation.
Go to file
Sarah Jamie Lewis cc924a476e
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
Make regexp global static
2022-04-19 16:42:23 -07:00
testing Fix several small goroutine leaks around restart 2022-04-18 14:59:37 -07:00
tor Make regexp global static 2022-04-19 16:42:23 -07:00
.drone.yml Add Lock to ReplaceACN. Minor Drone fixups 2022-01-11 15:17:54 -08:00
.gitignore Add Lock to ReplaceACN. Minor Drone fixups 2022-01-11 15:17:54 -08:00
LICENSE import libricochet-go connectivity package as stand alone repo 2020-02-05 19:46:02 -05:00
README.md Sketch of Tor Authenticator 2020-06-29 11:45:47 -07:00
acn.go Allow Querying of ACN Info - Support Getting Circuit Stats 2022-01-13 13:51:58 -08:00
error_acn.go Allow Querying of ACN Info - Support Getting Circuit Stats 2022-01-13 13:51:58 -08:00
go.mod Make IsValidHostname More Robust 2021-09-28 14:01:53 -07:00
go.sum Make IsValidHostname More Robust 2021-09-28 14:01:53 -07:00
localProvider.go Allow Querying of ACN Info - Support Getting Circuit Stats 2022-01-13 13:51:58 -08:00
proxy_acn.go Allow Querying of ACN Info - Support Getting Circuit Stats 2022-01-13 13:51:58 -08:00

README.md

connectivity

A library providing an ACN (Anonymous Communication Network ) networking abstraction

Supported ACNs

  • Tor v3 Onion Services

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()