diff options
author | Rasmus Dahlberg <rasmus.dahlberg@kau.se> | 2021-02-23 12:05:43 +0100 |
---|---|---|
committer | Rasmus Dahlberg <rasmus.dahlberg@kau.se> | 2021-02-23 12:05:43 +0100 |
commit | 7ca509cc468e8bff5188ff06b87f758fca8ae39a (patch) | |
tree | ae11d6a633286c18127097225196b9d95a4be58d /types | |
parent | b4dd74a3f36ca46b7bcda69e8d95949babfeb76d (diff) |
started using Fingerprint() instead of String()
Diffstat (limited to 'types')
-rw-r--r-- | types/namespace_pool.go | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/types/namespace_pool.go b/types/namespace_pool.go index 0f30567..1e9e8f6 100644 --- a/types/namespace_pool.go +++ b/types/namespace_pool.go @@ -6,7 +6,7 @@ import ( // NamespacePool is a pool of namespaces that contain complete verification keys type NamespacePool struct { - pool map[string]*Namespace + pool map[[NamespaceFingerprintSize]byte]*Namespace list []*Namespace // If we need to update this structure without a restart => add mutex. } @@ -16,17 +16,21 @@ type NamespacePool struct { // complete verification key. The latter is determined by namespaceWithKey(). func NewNamespacePool(namespaces []*Namespace) (*NamespacePool, error) { np := &NamespacePool{ - pool: make(map[string]*Namespace), + pool: make(map[[NamespaceFingerprintSize]byte]*Namespace), list: make([]*Namespace, 0), } for _, namespace := range namespaces { if !namespaceWithKey(namespace.Format) { return nil, fmt.Errorf("need verification key in namespace pool: %v", namespace.Format) } - if _, ok := np.pool[namespace.String()]; ok { + fpr, err := namespace.Fingerprint() + if err != nil { + return nil, fmt.Errorf("need fingerprint in namespace pool: %v", err) + } + if _, ok := np.pool[*fpr]; ok { return nil, fmt.Errorf("duplicate namespace: %v", namespace.String()) } - np.pool[namespace.String()] = namespace + np.pool[*fpr] = namespace np.list = append(np.list, namespace) } return np, nil @@ -34,7 +38,11 @@ func NewNamespacePool(namespaces []*Namespace) (*NamespacePool, error) { // Find checks if namespace is a member of the namespace pool. func (np *NamespacePool) Find(namespace *Namespace) (*Namespace, bool) { - if _, ok := np.pool[namespace.String()]; !ok { + fpr, err := namespace.Fingerprint() + if err != nil { + return nil, false + } + if _, ok := np.pool[*fpr]; !ok { return nil, false } // If the passed namespace is a key fingerprint the actual key needs to be |