code.pfad.fr/gohmekit@v0.2.1/pairing/hc_database_test.go (about)

     1  package pairing_test
     2  
     3  import (
     4  	"code.pfad.fr/gohmekit/pairing"
     5  	"github.com/brutella/hc/db"
     6  )
     7  
     8  var _ pairing.Database = HCDatabase{}
     9  
    10  type HCDatabase struct {
    11  	db.Database
    12  }
    13  
    14  func (d HCDatabase) IsPaired() bool {
    15  	entities, _ := d.Entities()
    16  	for _, e := range entities {
    17  		if len(e.PrivateKey) == 0 {
    18  			return true
    19  		}
    20  	}
    21  	return false
    22  }
    23  
    24  func (d HCDatabase) GetLongTermPublicKey(id []byte) ([]byte, error) {
    25  	e, err := d.EntityWithName(string(id))
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  	return e.PublicKey, nil
    30  }
    31  
    32  func (d HCDatabase) AddLongTermPublicKey(c pairing.Controller) error {
    33  	return d.SaveEntity(db.NewEntity(string(c.PairingID), c.LongTermPublicKey, nil))
    34  }
    35  
    36  func (d HCDatabase) RemoveLongTermPublicKey(id []byte) error {
    37  	d.DeleteEntity(db.NewEntity(string(id), nil, nil))
    38  	return nil
    39  }
    40  
    41  func (d HCDatabase) ListLongTermPublicKey() ([]pairing.Controller, error) {
    42  	entities, err := d.Entities()
    43  	if err != nil {
    44  		return nil, err
    45  	}
    46  	c := make([]pairing.Controller, 0, len(entities))
    47  	for _, e := range entities {
    48  		c = append(c, pairing.Controller{
    49  			PairingID:         []byte(e.Name),
    50  			LongTermPublicKey: e.PublicKey,
    51  		})
    52  	}
    53  	return c, nil
    54  }