diff options
author | Rasmus Dahlberg <rasmus.dahlberg@kau.se> | 2020-11-03 10:22:57 +0100 |
---|---|---|
committer | Rasmus Dahlberg <rasmus.dahlberg@kau.se> | 2020-11-03 10:22:57 +0100 |
commit | 1132536be92df9833ccaa72683eaa7e74e10b9e3 (patch) | |
tree | b0a2f02226b12ef053e44a2f84ba9fc37200948c | |
parent | c210c80e80231143f6eaa0f39e8e1d3303983791 (diff) |
fixed FindLog such that it uses a list of operators
-rw-r--r-- | client/add-entry/main.go | 14 | ||||
-rw-r--r-- | client/client.go | 4 | ||||
-rw-r--r-- | server/descriptor/.descriptor.go.swp | bin | 12288 -> 0 bytes | |||
-rw-r--r-- | server/descriptor/descriptor.go | 10 | ||||
-rw-r--r-- | server/descriptor/descriptor_test.go | 8 |
5 files changed, 15 insertions, 21 deletions
diff --git a/client/add-entry/main.go b/client/add-entry/main.go index 693aca8..e782b09 100644 --- a/client/add-entry/main.go +++ b/client/add-entry/main.go @@ -89,17 +89,9 @@ func setup() (*client.Client, error) { return nil, fmt.Errorf("failed decoding log identifier: %v", err) } - // TODO: define FindLog() for []Operator - var log *descriptor.Log - for _, op := range ops { - l, err := op.FindLog(id) - if err == nil { - log = l - break - } - } - if log == nil { - return nil, fmt.Errorf("unknown log identifier: %v", err) + log, err := descriptor.FindLog(ops, id) + if err != nil { + return nil, err } return client.NewClient(log, &http.Client{}, c, &k), nil } diff --git a/client/client.go b/client/client.go index e1663a0..bf854b9 100644 --- a/client/client.go +++ b/client/client.go @@ -50,7 +50,7 @@ func (c *Client) AddEntry(ctx context.Context, name, checksum []byte) (*stfe.StI }{ Item: base64.StdEncoding.EncodeToString(leaf), Scheme: uint16(tls.Ed25519), - Signature: base64.StdEncoding.EncodeToString(ed25519.Sign(*c.PrivateKey, serialized)), + Signature: base64.StdEncoding.EncodeToString(ed25519.Sign(*c.PrivateKey, leaf)), Chain: c.b64Chain(), }) if err != nil { @@ -79,7 +79,7 @@ func (c *Client) AddEntry(ctx context.Context, name, checksum []byte) (*stfe.StI if item.Format != stfe.StFormatSignedDebugInfoV1 { return nil, fmt.Errorf("bad StItem format: %v", item.Format) } - if err := item.SignedDebugInfoV1.Verify(c.Log.Scheme, c.Log.PublicKey, serialized); err != nil { + if err := item.SignedDebugInfoV1.Verify(c.Log.Scheme, c.Log.PublicKey, leaf); err != nil { return nil, fmt.Errorf("bad SignedDebugInfoV1 signature: %v", err) } return &item, nil diff --git a/server/descriptor/.descriptor.go.swp b/server/descriptor/.descriptor.go.swp Binary files differdeleted file mode 100644 index e12d5cd..0000000 --- a/server/descriptor/.descriptor.go.swp +++ /dev/null diff --git a/server/descriptor/descriptor.go b/server/descriptor/descriptor.go index ba90289..016d1cc 100644 --- a/server/descriptor/descriptor.go +++ b/server/descriptor/descriptor.go @@ -30,10 +30,12 @@ type Log struct { BaseUrl string `json:"base_url"` // E.g., example.com/st/v1 } -func (op *Operator) FindLog(logId []byte) (*Log, error) { - for _, log := range op.Logs { - if bytes.Equal(logId, log.Id) { - return log, nil +func FindLog(ops []Operator, logId []byte) (*Log, error) { + for _, op := range ops { + for _, log := range op.Logs { + if bytes.Equal(logId, log.Id) { + return log, nil + } } } return nil, fmt.Errorf("no such log: %s", base64.StdEncoding.EncodeToString(logId)) diff --git a/server/descriptor/descriptor_test.go b/server/descriptor/descriptor_test.go index e461f88..d01fc66 100644 --- a/server/descriptor/descriptor_test.go +++ b/server/descriptor/descriptor_test.go @@ -48,14 +48,14 @@ func TestUnmarshal(t *testing.T) { func TestFindLog(t *testing.T) { for _, table := range []struct { - op Operator + ops []Operator logId []byte wantError bool }{ - {makeOperatorList()[0], deb64("B9oCJk4XIOMXba8dBM5yUj+NLtqTE6xHwbvR9dYkHPM="), false}, - {makeOperatorList()[0], []byte{0, 1, 2, 3}, true}, + {makeOperatorList(), deb64("B9oCJk4XIOMXba8dBM5yUj+NLtqTE6xHwbvR9dYkHPM="), false}, + {makeOperatorList(), []byte{0, 1, 2, 3}, true}, } { - _, err := table.op.FindLog(table.logId) + _, err := FindLog(table.ops, table.logId) if (err != nil) != table.wantError { t.Errorf("wanted log not found for id: %v", table.logId) } |