diff options
author | Linus Nordberg <linus@nordberg.se> | 2022-03-28 13:18:52 +0200 |
---|---|---|
committer | Rasmus Dahlberg <rasmus@mullvad.net> | 2022-03-28 19:18:11 +0200 |
commit | 3f8010612c376ba9775101a3c823125ce9c82304 (patch) | |
tree | 4a806b3e4b452a28cbfab97e7412ed9182f4588d /pkg/instance | |
parent | 4e1b2586576012a1be561a2337192ee517f13fbb (diff) |
follow SSHSIG changes in lib
Diffstat (limited to 'pkg/instance')
-rw-r--r-- | pkg/instance/handler_test.go | 6 | ||||
-rw-r--r-- | pkg/instance/instance.go | 7 |
2 files changed, 8 insertions, 5 deletions
diff --git a/pkg/instance/handler_test.go b/pkg/instance/handler_test.go index f8817dc..8a48860 100644 --- a/pkg/instance/handler_test.go +++ b/pkg/instance/handler_test.go @@ -658,7 +658,7 @@ func mustHandle(t *testing.T, i Instance, e types.Endpoint) Handler { return Handler{} } -func mustLeafBuffer(t *testing.T, shardHint uint64, checksum types.Hash, wantSig bool) io.Reader { +func mustLeafBuffer(t *testing.T, shardHint uint64, preimage types.Hash, wantSig bool) io.Reader { t.Helper() vk, sk, err := ed25519.GenerateKey(rand.Reader) @@ -667,7 +667,7 @@ func mustLeafBuffer(t *testing.T, shardHint uint64, checksum types.Hash, wantSig } msg := types.Statement{ ShardHint: shardHint, - Checksum: checksum, + Checksum: *types.HashFn(preimage[:]), } sig := ed25519.Sign(sk, msg.ToBinary()) if !wantSig { @@ -676,7 +676,7 @@ func mustLeafBuffer(t *testing.T, shardHint uint64, checksum types.Hash, wantSig return bytes.NewBufferString(fmt.Sprintf( "%s=%d\n"+"%s=%x\n"+"%s=%x\n"+"%s=%x\n"+"%s=%s\n", "shard_hint", shardHint, - "checksum", checksum[:], + "preimage", preimage[:], "signature", sig, "verification_key", vk, "domain_hint", "example.com", diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go index bbd6cde..7ade955 100644 --- a/pkg/instance/instance.go +++ b/pkg/instance/instance.go @@ -56,8 +56,11 @@ func (i *Instance) leafRequestFromHTTP(ctx context.Context, r *http.Request) (*r if err := req.FromASCII(r.Body); err != nil { return nil, fmt.Errorf("FromASCII: %v", err) } - - if !req.Statement.Verify(&req.VerificationKey, &req.Signature) { + stmt := types.Statement{ + ShardHint: req.ShardHint, + Checksum: *types.HashFn(req.Preimage[:]), + } + if !stmt.Verify(&req.VerificationKey, &req.Signature) { return nil, fmt.Errorf("invalid signature") } shardEnd := uint64(time.Now().Unix()) |