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 }