Apply gofmt
This commit is contained in:
parent
9f3e9968ec
commit
2f0833ac9c
|
@ -137,7 +137,7 @@ type CollapsedMerkleTree struct {
|
||||||
size uint64
|
size uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
func calculateNumNodes (size uint64) int {
|
func calculateNumNodes(size uint64) int {
|
||||||
numNodes := 0
|
numNodes := 0
|
||||||
for size > 0 {
|
for size > 0 {
|
||||||
numNodes += int(size & 1)
|
numNodes += int(size & 1)
|
||||||
|
@ -145,16 +145,16 @@ func calculateNumNodes (size uint64) int {
|
||||||
}
|
}
|
||||||
return numNodes
|
return numNodes
|
||||||
}
|
}
|
||||||
func EmptyCollapsedMerkleTree () *CollapsedMerkleTree {
|
func EmptyCollapsedMerkleTree() *CollapsedMerkleTree {
|
||||||
return &CollapsedMerkleTree{}
|
return &CollapsedMerkleTree{}
|
||||||
}
|
}
|
||||||
func NewCollapsedMerkleTree (nodes []ct.MerkleTreeNode, size uint64) (*CollapsedMerkleTree, error) {
|
func NewCollapsedMerkleTree(nodes []ct.MerkleTreeNode, size uint64) (*CollapsedMerkleTree, error) {
|
||||||
if len(nodes) != calculateNumNodes(size) {
|
if len(nodes) != calculateNumNodes(size) {
|
||||||
return nil, errors.New("NewCollapsedMerkleTree: nodes has incorrect size")
|
return nil, errors.New("NewCollapsedMerkleTree: nodes has incorrect size")
|
||||||
}
|
}
|
||||||
return &CollapsedMerkleTree{nodes: nodes, size: size}, nil
|
return &CollapsedMerkleTree{nodes: nodes, size: size}, nil
|
||||||
}
|
}
|
||||||
func CloneCollapsedMerkleTree (source *CollapsedMerkleTree) *CollapsedMerkleTree {
|
func CloneCollapsedMerkleTree(source *CollapsedMerkleTree) *CollapsedMerkleTree {
|
||||||
nodes := make([]ct.MerkleTreeNode, len(source.nodes))
|
nodes := make([]ct.MerkleTreeNode, len(source.nodes))
|
||||||
copy(nodes, source.nodes)
|
copy(nodes, source.nodes)
|
||||||
return &CollapsedMerkleTree{nodes: nodes, size: source.size}
|
return &CollapsedMerkleTree{nodes: nodes, size: source.size}
|
||||||
|
|
|
@ -80,7 +80,7 @@ func LogEntry(info *certspotter.EntryInfo) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadLogList () ([]certspotter.LogInfo, error) {
|
func loadLogList() ([]certspotter.LogInfo, error) {
|
||||||
if *logsFilename != "" {
|
if *logsFilename != "" {
|
||||||
var logFileObj certspotter.LogInfoFile
|
var logFileObj certspotter.LogInfoFile
|
||||||
if err := readJSONFile(*logsFilename, &logFileObj); err != nil {
|
if err := readJSONFile(*logsFilename, &logFileObj); err != nil {
|
||||||
|
@ -128,7 +128,7 @@ func makeLogHandle(logInfo *certspotter.LogInfo) (*logHandle, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctlog.tree == nil && ctlog.verifiedSTH == nil { // This branch can be removed eventually
|
if ctlog.tree == nil && ctlog.verifiedSTH == nil { // This branch can be removed eventually
|
||||||
legacySTH, err := state.GetLegacySTH(logInfo);
|
legacySTH, err := state.GetLegacySTH(logInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error loading legacy STH: %s", err)
|
return nil, fmt.Errorf("Error loading legacy STH: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -151,7 +151,7 @@ func makeLogHandle(logInfo *certspotter.LogInfo) (*logHandle, error) {
|
||||||
return ctlog, nil
|
return ctlog, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctlog *logHandle) refresh () error {
|
func (ctlog *logHandle) refresh() error {
|
||||||
if *verbose {
|
if *verbose {
|
||||||
log.Printf("Retrieving latest STH from log")
|
log.Printf("Retrieving latest STH from log")
|
||||||
}
|
}
|
||||||
|
@ -175,7 +175,7 @@ func (ctlog *logHandle) refresh () error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctlog *logHandle) audit () error {
|
func (ctlog *logHandle) audit() error {
|
||||||
sths, err := ctlog.state.GetUnverifiedSTHs()
|
sths, err := ctlog.state.GetUnverifiedSTHs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error loading unverified STHs: %s", err)
|
return fmt.Errorf("Error loading unverified STHs: %s", err)
|
||||||
|
@ -221,7 +221,7 @@ func (ctlog *logHandle) audit () error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctlog *logHandle) scan (processCallback certspotter.ProcessCallback) error {
|
func (ctlog *logHandle) scan(processCallback certspotter.ProcessCallback) error {
|
||||||
startIndex := int64(ctlog.tree.GetSize())
|
startIndex := int64(ctlog.tree.GetSize())
|
||||||
endIndex := int64(ctlog.verifiedSTH.TreeSize)
|
endIndex := int64(ctlog.verifiedSTH.TreeSize)
|
||||||
|
|
||||||
|
@ -246,7 +246,7 @@ func (ctlog *logHandle) scan (processCallback certspotter.ProcessCallback) error
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func processLog(logInfo* certspotter.LogInfo, processCallback certspotter.ProcessCallback) int {
|
func processLog(logInfo *certspotter.LogInfo, processCallback certspotter.ProcessCallback) int {
|
||||||
log.SetPrefix(os.Args[0] + ": " + logInfo.Url + ": ")
|
log.SetPrefix(os.Args[0] + ": " + logInfo.Url + ": ")
|
||||||
|
|
||||||
ctlog, err := makeLogHandle(logInfo)
|
ctlog, err := makeLogHandle(logInfo)
|
||||||
|
|
|
@ -28,7 +28,7 @@ type LogState struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate a filename that uniquely identifies the STH (within the context of a particular log)
|
// generate a filename that uniquely identifies the STH (within the context of a particular log)
|
||||||
func sthFilename (sth *ct.SignedTreeHead) string {
|
func sthFilename(sth *ct.SignedTreeHead) string {
|
||||||
hasher := sha256.New()
|
hasher := sha256.New()
|
||||||
switch sth.Version {
|
switch sth.Version {
|
||||||
case ct.V1:
|
case ct.V1:
|
||||||
|
@ -41,7 +41,7 @@ func sthFilename (sth *ct.SignedTreeHead) string {
|
||||||
return strconv.FormatUint(sth.TreeSize, 10) + "-" + base64.RawURLEncoding.EncodeToString(hasher.Sum(nil)) + ".json"
|
return strconv.FormatUint(sth.TreeSize, 10) + "-" + base64.RawURLEncoding.EncodeToString(hasher.Sum(nil)) + ".json"
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeLogStateDir (logStatePath string) error {
|
func makeLogStateDir(logStatePath string) error {
|
||||||
if err := os.Mkdir(logStatePath, 0777); err != nil && !os.IsExist(err) {
|
if err := os.Mkdir(logStatePath, 0777); err != nil && !os.IsExist(err) {
|
||||||
return fmt.Errorf("%s: %s", logStatePath, err)
|
return fmt.Errorf("%s: %s", logStatePath, err)
|
||||||
}
|
}
|
||||||
|
@ -54,18 +54,18 @@ func makeLogStateDir (logStatePath string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func OpenLogState (logStatePath string) (*LogState, error) {
|
func OpenLogState(logStatePath string) (*LogState, error) {
|
||||||
if err := makeLogStateDir(logStatePath); err != nil {
|
if err := makeLogStateDir(logStatePath); err != nil {
|
||||||
return nil, fmt.Errorf("Error creating log state directory: %s", err)
|
return nil, fmt.Errorf("Error creating log state directory: %s", err)
|
||||||
}
|
}
|
||||||
return &LogState{path: logStatePath}, nil
|
return &LogState{path: logStatePath}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (logState *LogState) VerifiedSTHFilename () string {
|
func (logState *LogState) VerifiedSTHFilename() string {
|
||||||
return filepath.Join(logState.path, "sth.json")
|
return filepath.Join(logState.path, "sth.json")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (logState *LogState) GetVerifiedSTH () (*ct.SignedTreeHead, error) {
|
func (logState *LogState) GetVerifiedSTH() (*ct.SignedTreeHead, error) {
|
||||||
sth, err := readSTHFile(logState.VerifiedSTHFilename())
|
sth, err := readSTHFile(logState.VerifiedSTHFilename())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
|
@ -77,11 +77,11 @@ func (logState *LogState) GetVerifiedSTH () (*ct.SignedTreeHead, error) {
|
||||||
return sth, nil
|
return sth, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (logState *LogState) StoreVerifiedSTH (sth *ct.SignedTreeHead) error {
|
func (logState *LogState) StoreVerifiedSTH(sth *ct.SignedTreeHead) error {
|
||||||
return writeJSONFile(logState.VerifiedSTHFilename(), sth, 0666)
|
return writeJSONFile(logState.VerifiedSTHFilename(), sth, 0666)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (logState *LogState) GetUnverifiedSTHs () ([]*ct.SignedTreeHead, error) {
|
func (logState *LogState) GetUnverifiedSTHs() ([]*ct.SignedTreeHead, error) {
|
||||||
dir, err := os.Open(filepath.Join(logState.path, "unverified_sths"))
|
dir, err := os.Open(filepath.Join(logState.path, "unverified_sths"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
|
@ -107,11 +107,11 @@ func (logState *LogState) GetUnverifiedSTHs () ([]*ct.SignedTreeHead, error) {
|
||||||
return sths, nil
|
return sths, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (logState *LogState) UnverifiedSTHFilename (sth *ct.SignedTreeHead) string {
|
func (logState *LogState) UnverifiedSTHFilename(sth *ct.SignedTreeHead) string {
|
||||||
return filepath.Join(logState.path, "unverified_sths", sthFilename(sth))
|
return filepath.Join(logState.path, "unverified_sths", sthFilename(sth))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (logState *LogState) StoreUnverifiedSTH (sth *ct.SignedTreeHead) error {
|
func (logState *LogState) StoreUnverifiedSTH(sth *ct.SignedTreeHead) error {
|
||||||
filename := logState.UnverifiedSTHFilename(sth)
|
filename := logState.UnverifiedSTHFilename(sth)
|
||||||
if fileExists(filename) {
|
if fileExists(filename) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -119,7 +119,7 @@ func (logState *LogState) StoreUnverifiedSTH (sth *ct.SignedTreeHead) error {
|
||||||
return writeJSONFile(filename, sth, 0666)
|
return writeJSONFile(filename, sth, 0666)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (logState *LogState) RemoveUnverifiedSTH (sth *ct.SignedTreeHead) error {
|
func (logState *LogState) RemoveUnverifiedSTH(sth *ct.SignedTreeHead) error {
|
||||||
filename := logState.UnverifiedSTHFilename(sth)
|
filename := logState.UnverifiedSTHFilename(sth)
|
||||||
err := os.Remove(filepath.Join(filename))
|
err := os.Remove(filepath.Join(filename))
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
|
@ -128,7 +128,7 @@ func (logState *LogState) RemoveUnverifiedSTH (sth *ct.SignedTreeHead) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (logState *LogState) GetTree () (*certspotter.CollapsedMerkleTree, error) {
|
func (logState *LogState) GetTree() (*certspotter.CollapsedMerkleTree, error) {
|
||||||
tree := new(certspotter.CollapsedMerkleTree)
|
tree := new(certspotter.CollapsedMerkleTree)
|
||||||
if err := readJSONFile(filepath.Join(logState.path, "tree.json"), tree); err != nil {
|
if err := readJSONFile(filepath.Join(logState.path, "tree.json"), tree); err != nil {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
|
@ -140,6 +140,6 @@ func (logState *LogState) GetTree () (*certspotter.CollapsedMerkleTree, error) {
|
||||||
return tree, nil
|
return tree, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (logState *LogState) StoreTree (tree *certspotter.CollapsedMerkleTree) error {
|
func (logState *LogState) StoreTree(tree *certspotter.CollapsedMerkleTree) error {
|
||||||
return writeJSONFile(filepath.Join(logState.path, "tree.json"), tree, 0666)
|
return writeJSONFile(filepath.Join(logState.path, "tree.json"), tree, 0666)
|
||||||
}
|
}
|
||||||
|
|
10
cmd/state.go
10
cmd/state.go
|
@ -14,8 +14,8 @@ import (
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -33,7 +33,7 @@ func legacySTHFilename(logInfo *certspotter.LogInfo) string {
|
||||||
return strings.Replace(strings.Replace(logInfo.FullURI(), "://", "_", 1), "/", "_", -1)
|
return strings.Replace(strings.Replace(logInfo.FullURI(), "://", "_", 1), "/", "_", -1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func readVersionFile (statePath string) (int, error) {
|
func readVersionFile(statePath string) (int, error) {
|
||||||
versionFilePath := filepath.Join(statePath, "version")
|
versionFilePath := filepath.Join(statePath, "version")
|
||||||
versionBytes, err := ioutil.ReadFile(versionFilePath)
|
versionBytes, err := ioutil.ReadFile(versionFilePath)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
@ -57,7 +57,7 @@ func readVersionFile (statePath string) (int, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeVersionFile (statePath string) error {
|
func writeVersionFile(statePath string) error {
|
||||||
version := 1
|
version := 1
|
||||||
versionString := fmt.Sprintf("%d\n", version)
|
versionString := fmt.Sprintf("%d\n", version)
|
||||||
versionFilePath := filepath.Join(statePath, "version")
|
versionFilePath := filepath.Join(statePath, "version")
|
||||||
|
@ -67,7 +67,7 @@ func writeVersionFile (statePath string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeStateDir (statePath string) error {
|
func makeStateDir(statePath string) error {
|
||||||
if err := os.Mkdir(statePath, 0777); err != nil && !os.IsExist(err) {
|
if err := os.Mkdir(statePath, 0777); err != nil && !os.IsExist(err) {
|
||||||
return fmt.Errorf("%s: %s", statePath, err)
|
return fmt.Errorf("%s: %s", statePath, err)
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ func makeStateDir (statePath string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func OpenState (statePath string) (*State, error) {
|
func OpenState(statePath string) (*State, error) {
|
||||||
version, err := readVersionFile(statePath)
|
version, err := readVersionFile(statePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error reading version file: %s", err)
|
return nil, fmt.Errorf("Error reading version file: %s", err)
|
||||||
|
|
|
@ -160,7 +160,7 @@ func (c *LogClient) GetEntries(start, end int64) ([]ct.LogEntry, error) {
|
||||||
for index, entry := range resp.Entries {
|
for index, entry := range resp.Entries {
|
||||||
leaf, err := ct.ReadMerkleTreeLeaf(bytes.NewBuffer(entry.LeafInput))
|
leaf, err := ct.ReadMerkleTreeLeaf(bytes.NewBuffer(entry.LeafInput))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Reading Merkle Tree Leaf at index %d failed: %s", start + int64(index), err)
|
return nil, fmt.Errorf("Reading Merkle Tree Leaf at index %d failed: %s", start+int64(index), err)
|
||||||
}
|
}
|
||||||
entries[index].LeafBytes = entry.LeafInput
|
entries[index].LeafBytes = entry.LeafInput
|
||||||
entries[index].Leaf = *leaf
|
entries[index].Leaf = *leaf
|
||||||
|
@ -174,10 +174,10 @@ func (c *LogClient) GetEntries(start, end int64) ([]ct.LogEntry, error) {
|
||||||
chain, err = ct.UnmarshalPrecertChainArray(entry.ExtraData)
|
chain, err = ct.UnmarshalPrecertChainArray(entry.ExtraData)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("Unknown entry type at index %d: %v", start + int64(index), leaf.TimestampedEntry.EntryType)
|
return nil, fmt.Errorf("Unknown entry type at index %d: %v", start+int64(index), leaf.TimestampedEntry.EntryType)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Parsing entry of type %d at index %d failed: %s", leaf.TimestampedEntry.EntryType, start + int64(index), err)
|
return nil, fmt.Errorf("Parsing entry of type %d at index %d failed: %s", leaf.TimestampedEntry.EntryType, start+int64(index), err)
|
||||||
}
|
}
|
||||||
entries[index].Chain = chain
|
entries[index].Chain = chain
|
||||||
entries[index].Index = start + int64(index)
|
entries[index].Index = start + int64(index)
|
||||||
|
|
|
@ -239,12 +239,12 @@ func (s *Scanner) MakeCollapsedMerkleTree(sth *ct.SignedTreeHead) (*CollapsedMer
|
||||||
return &CollapsedMerkleTree{}, nil
|
return &CollapsedMerkleTree{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
entries, err := s.logClient.GetEntries(int64(sth.TreeSize - 1), int64(sth.TreeSize - 1))
|
entries, err := s.logClient.GetEntries(int64(sth.TreeSize-1), int64(sth.TreeSize-1))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(entries) == 0 {
|
if len(entries) == 0 {
|
||||||
return nil, fmt.Errorf("Log did not return entry %d", sth.TreeSize - 1)
|
return nil, fmt.Errorf("Log did not return entry %d", sth.TreeSize-1)
|
||||||
}
|
}
|
||||||
leafHash := hashLeaf(entries[0].LeafBytes)
|
leafHash := hashLeaf(entries[0].LeafBytes)
|
||||||
|
|
||||||
|
@ -255,7 +255,7 @@ func (s *Scanner) MakeCollapsedMerkleTree(sth *ct.SignedTreeHead) (*CollapsedMer
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
reverseHashes(auditPath)
|
reverseHashes(auditPath)
|
||||||
tree, err = NewCollapsedMerkleTree(auditPath, sth.TreeSize - 1)
|
tree, err = NewCollapsedMerkleTree(auditPath, sth.TreeSize-1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error returned bad audit proof for %x to %d", leafHash, sth.TreeSize)
|
return nil, fmt.Errorf("Error returned bad audit proof for %x to %d", leafHash, sth.TreeSize)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue