keyctl/pkg/db/key.go
2023-03-14 01:43:04 +01:00

48 lines
963 B
Go

// Copyright (C) 2023 Marius Schellenberger
package db
import (
"sort"
"git.giftfish.de/ston1th/goacc/pkg/core"
"git.giftfish.de/ston1th/keyctl/pkg/key"
)
const keyPrefix = "key/"
func (db *DB) GetKeys() (keys core.Keys, err error) {
err = db.store.ForEachPrefix(keyPrefix, func(k string, _ []byte) error {
k, err := db.GetKey(k)
if err == nil {
keys = append(keys, k)
}
return nil
})
sort.Sort(keys)
return
}
func (db *DB) GetKey(id string) (k core.Key, err error) {
k, err = db.GetKeyWithSecret(id)
k.Key = ""
return
}
func (db *DB) GetKeyWithSecret(id string) (k core.Key, err error) {
err = db.store.Get(keyPrefix+id, &k)
return
}
func (db *DB) CreateKey(name string, size int, enc core.Encoding) (k core.Key, err error) {
k, err = key.Generate(name, size, enc)
if err != nil {
return
}
err = db.store.Set(keyPrefix+k.ID, &k)
return
}
func (db *DB) DeleteKey(id string) error {
return db.store.Delete(keyPrefix + id)
}