// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause

package tkatype

import (
	"encoding/json"
	"testing"

	"golang.org/x/crypto/blake2s"
)

func TestSigHashSize(t *testing.T) {
	var sigHash AUMSigHash
	if len(sigHash) != blake2s.Size {
		t.Errorf("AUMSigHash is wrong size: got %d, want %d", len(sigHash), blake2s.Size)
	}

	var nksHash NKSSigHash
	if len(nksHash) != blake2s.Size {
		t.Errorf("NKSSigHash is wrong size: got %d, want %d", len(nksHash), blake2s.Size)
	}
}

func TestMarshaledSignatureJSON(t *testing.T) {
	sig := MarshaledSignature("abcdef")
	j, err := json.Marshal(sig)
	if err != nil {
		t.Fatal(err)
	}
	const encoded = `"YWJjZGVm"`
	if string(j) != encoded {
		t.Errorf("got JSON %q; want %q", j, encoded)
	}

	var back MarshaledSignature
	if err := json.Unmarshal([]byte(encoded), &back); err != nil {
		t.Fatal(err)
	}
	if string(back) != string(sig) {
		t.Errorf("decoded JSON back to %q; want %q", back, sig)
	}
}
