Next Generation Certificate Transparency:
Folders:
config
: Contains the layout of private and public json configuration files used by Monitors and Gossipers. Also contains loaders for the object versions of these .json files.
crypto
: Abstractions associated with CTng cryptographic implementations, and the cryptoconfig implementation.
gossip
: Defines the Gossip object, the state object of the Gossiper, and many functions associated with running a gossiper.
GZip
: Implements functions for reading arrays of bytes to a base-64 encoded, Gzip-compressed representation.
monitor
: Defines the monitor server state and functions associated with monitor tasks, such as querying Loggers and CAs.
server
: HTTP Server implementations for the Gossiper and Monitor. Should call functions from gossip
or monitor
, respectively.
util
: a package that has no internal imports: helper functions and constants that are used throughout the codebase but prevents import cycles from occurring (import cycles are not allowed in go).
testData
: Defines a configuration of CTng with 4 monitors, 4 gossipers, 3 CAs, and 3 Loggers. Also defines a fakeLogger and fakeCA HTTP client for testing.
Running the code
Note: CA,Logger, and revocator folder will not be used for the network test
Run go install .
before continuing!
To run on WSL2:
a logger
: sh loggerTest.sh [loggerID]
a monitor
: sh monitorTest.sh [MonitorID]
a gossiper
: sh gossiperTest.sh [GossiperID]
a CA
: sh CATest.sh [Certificate Authority ID]
The testData
folder contains configurations for testing, but configs can be generated using the functions in config
.
Function Documentation
Documentation + Function descriptions exist in each file/subfolder.
To view this this info + documentation in a formal documentation setting, GoDoc could be utilized, but requires installing the repository locally as a package.
Licensing
Both imports we use, gorilla/mux and herumi/bls-go-binary, use an OpenBSD 3-clause license. as a result, we use the same Please see LICENSE in the outer folder for details.