aboutsummaryrefslogtreecommitdiff
path: root/types/namespace.go
diff options
context:
space:
mode:
Diffstat (limited to 'types/namespace.go')
-rw-r--r--types/namespace.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/types/namespace.go b/types/namespace.go
index 8a2ad17..f221960 100644
--- a/types/namespace.go
+++ b/types/namespace.go
@@ -14,6 +14,8 @@ type NamespaceFormat tls.Enum
const (
NamespaceFormatReserved NamespaceFormat = 0
NamespaceFormatEd25519V1 NamespaceFormat = 1
+
+ NamespaceFingerprintSize = 32
)
// Namespace references a versioned namespace based on a given format specifier
@@ -50,6 +52,16 @@ func (n Namespace) String() string {
}
}
+// Fingerprint returns a fixed-size namespace fingerprint that is unique.
+func (n *Namespace) Fingerprint() (*[NamespaceFingerprintSize]byte, error) {
+ switch n.Format {
+ case NamespaceFormatEd25519V1:
+ return &n.Ed25519V1.Namespace, nil
+ default:
+ return nil, fmt.Errorf("unsupported NamespaceFormat: %v", n.Format)
+ }
+}
+
// NewNamespaceEd25519V1 returns an new Ed25519V1 namespace based on a
// verification key.
func NewNamespaceEd25519V1(vk []byte) (*Namespace, error) {