diff options
| author | Rasmus Dahlberg <rasmus@mullvad.net> | 2022-07-22 18:25:56 +0200 | 
|---|---|---|
| committer | Rasmus Dahlberg <rasmus@mullvad.net> | 2022-07-22 18:25:56 +0200 | 
| commit | f04e26523189ac3fc54381376966f98d2f52440b (patch) | |
| tree | 52f664a52759322947420f7313573e92002fa6f9 /cmd/sigsum-debug/spam/leaf/config.go | |
| parent | 722e48feb2aa85d8cb75069a06024e506367e34f (diff) | |
add spam command to sigsum-debugsigsum-spam
Diffstat (limited to 'cmd/sigsum-debug/spam/leaf/config.go')
| -rw-r--r-- | cmd/sigsum-debug/spam/leaf/config.go | 60 | 
1 files changed, 60 insertions, 0 deletions
diff --git a/cmd/sigsum-debug/spam/leaf/config.go b/cmd/sigsum-debug/spam/leaf/config.go new file mode 100644 index 0000000..2e20777 --- /dev/null +++ b/cmd/sigsum-debug/spam/leaf/config.go @@ -0,0 +1,60 @@ +package leaf + +import ( +	"crypto" +	"crypto/ed25519" +	"fmt" +	"net/http" +	"time" + +	"git.sigsum.org/sigsum-go/internal/fmtio" +	"git.sigsum.org/sigsum-go/pkg/types" +) + +type Config struct { +	LogURL        string +	PrivateKey    string        // a private key to sign checksum with in hex +	DomainHint    string        // a domain hint that is valid for the above key +	Duration      time.Duration // how long to run test +	Interval      time.Duration // how often to emit stats +	Wait          time.Duration // time to wait between submits +	NumSubmitters uint64        // at least one +	NumCheckers   uint64        // zero to disable checkers + +	url    string +	signer crypto.Signer +	pub    types.PublicKey +	cli    http.Client + +	maxEvents int           // maximum number of events to queue at a checker +	backoff   time.Duration // time to backoff when waiting for 200 OK +} + +func (cfg *Config) parse(args []string) (err error) { +	if len(args) != 0 { +		return fmt.Errorf("trailing arguments: %v", args) +	} +	if len(cfg.LogURL) == 0 { +		return fmt.Errorf("url is a required option") +	} +	if len(cfg.PrivateKey) == 0 { +		return fmt.Errorf("private key is a required option") +	} +	if len(cfg.DomainHint) == 0 { +		return fmt.Errorf("domain hint is a required option") +	} + +	if cfg.signer, err = fmtio.SignerFromHex(cfg.PrivateKey); err != nil { +		return fmt.Errorf("parse private key: %v", err) +	} +	if cfg.NumSubmitters == 0 { +		return fmt.Errorf("at least one submitter is required") +	} + +	cfg.url = types.EndpointAddLeaf.Path(cfg.LogURL, "sigsum/v0") +	cfg.maxEvents = 16384 +	cfg.backoff = 5 * time.Second +	cfg.cli = http.Client{Timeout: 10 * time.Second} +	copy(cfg.pub[:], (cfg.signer.Public().(ed25519.PublicKey))[:]) +	return nil +}  | 
