code.pfad.fr/gohmekit@v0.2.1/storage/memory.go (about)

     1  package storage
     2  
     3  import (
     4  	"errors"
     5  
     6  	"code.pfad.fr/gohmekit/pairing"
     7  )
     8  
     9  // NewMemDatabase is an in-memory database for testing (not thread-safe!)
    10  func NewMemDatabase() pairing.Database {
    11  	return memDatabase{}
    12  }
    13  
    14  type memDatabase map[string][]byte
    15  
    16  func (m memDatabase) IsPaired() bool {
    17  	return len(m) > 0
    18  }
    19  func (m memDatabase) GetLongTermPublicKey(id []byte) ([]byte, error) {
    20  	if key, ok := m[string(id)]; ok {
    21  		return key, nil
    22  	}
    23  	return nil, errors.New("unknown key")
    24  }
    25  func (m memDatabase) AddLongTermPublicKey(c pairing.Controller) error {
    26  	m[string(c.PairingID)] = c.LongTermPublicKey
    27  	return nil
    28  }
    29  func (m memDatabase) RemoveLongTermPublicKey(id []byte) error {
    30  	delete(m, string(id))
    31  	return nil
    32  }
    33  func (m memDatabase) ListLongTermPublicKey() ([]pairing.Controller, error) {
    34  	c := make([]pairing.Controller, 0, len(m))
    35  	for id, key := range m {
    36  		c = append(c, pairing.Controller{
    37  			PairingID:         []byte(id),
    38  			LongTermPublicKey: key,
    39  		})
    40  	}
    41  	return c, nil
    42  }