diff options
| -rw-r--r-- | types/namespace.go | 26 | ||||
| -rw-r--r-- | types/namespace_test.go | 24 | 
2 files changed, 25 insertions, 25 deletions
| diff --git a/types/namespace.go b/types/namespace.go index 3c6b90a..376ebcd 100644 --- a/types/namespace.go +++ b/types/namespace.go @@ -62,6 +62,19 @@ func (n *Namespace) Fingerprint() (*[NamespaceFingerprintSize]byte, error) {  	}  } +// Verify checks that signature is valid over message for this namespace +func (ns *Namespace) Verify(message, signature []byte) error { +	switch ns.Format { +	case NamespaceFormatEd25519V1: +		if !ed25519.Verify(ed25519.PublicKey(ns.Ed25519V1.Namespace[:]), message, signature) { +			return fmt.Errorf("ed25519 signature verification failed") +		} +	default: +		return fmt.Errorf("namespace not supported: %v", ns.Format) +	} +	return nil +} +  // NewNamespaceEd25519V1 returns an new Ed25519V1 namespace based on a  // verification key.  func NewNamespaceEd25519V1(vk []byte) (*Namespace, error) { @@ -76,16 +89,3 @@ func NewNamespaceEd25519V1(vk []byte) (*Namespace, error) {  		Ed25519V1: &ed25519v1,  	}, nil  } - -// Verify checks that signature is valid over message for this namespace -func (ns *Namespace) Verify(message, signature []byte) error { -	switch ns.Format { -	case NamespaceFormatEd25519V1: -		if !ed25519.Verify(ed25519.PublicKey(ns.Ed25519V1.Namespace[:]), message, signature) { -			return fmt.Errorf("ed25519 signature verification failed") -		} -	default: -		return fmt.Errorf("namespace not supported: %v", ns.Format) -	} -	return nil -} diff --git a/types/namespace_test.go b/types/namespace_test.go index cd151d8..c38d295 100644 --- a/types/namespace_test.go +++ b/types/namespace_test.go @@ -76,6 +76,18 @@ func TestFingerprint(t *testing.T) {  	}  } +func TestVerify(t *testing.T) { +	var tests []testCaseNamespace +	tests = append(tests, test_cases_verify(t)...) +	tests = append(tests, test_cases_verify_ed25519v1(t)...) +	for _, table := range tests { +		err := table.namespace.Verify(table.msg, table.sig) +		if got, want := err != nil, table.wantErr; got != want { +			t.Errorf("got error=%v but wanted %v in test %q: %v", got, want, table.description, err) +		} +	} +} +  func TestNewNamespaceEd25519V1(t *testing.T) {  	size := 32 // verification key size  	for _, table := range []struct { @@ -110,18 +122,6 @@ func TestNewNamespaceEd25519V1(t *testing.T) {  	}  } -func TestVerify(t *testing.T) { -	var tests []testCaseNamespace -	tests = append(tests, test_cases_verify(t)...) -	tests = append(tests, test_cases_verify_ed25519v1(t)...) -	for _, table := range tests { -		err := table.namespace.Verify(table.msg, table.sig) -		if got, want := err != nil, table.wantErr; got != want { -			t.Errorf("got error=%v but wanted %v in test %q: %v", got, want, table.description, err) -		} -	} -} -  // testCaseNamespace is a common test case used for Namespace.Verify() tests  type testCaseNamespace struct {  	description string | 
