keyctl/pkg/db/key.go
2023-03-20 21:18:44 +01:00

45 lines
972 B
Go

// Copyright (C) 2023 Marius Schellenberger
package db
import (
"git.giftfish.de/ston1th/keyctl/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 {
key, err := db.GetKey(k)
if err == nil {
keys = append(keys, key)
}
return nil
})
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, t core.Type) (k core.Key, err error) {
kstore, k, err := key.Generate(name, size, enc, t)
if err != nil {
return
}
err = db.store.Set(keyPrefix+k.ID, &kstore)
return
}
func (db *DB) DeleteKey(id string) error {
return db.store.Delete(keyPrefix + id)
}