1 // Package pseudohsm provides a pseudo HSM for development environments.
10 XPub XPub `json:"xpub"`
11 XKey []byte `json:"xkey"`
14 func (h *HSM) Backup() ([]*KeyImage, error) {
15 images := []*KeyImage{}
16 xpubs := h.cache.keys()
17 for _, xpub := range xpubs {
18 xKey, err := ioutil.ReadFile(xpub.File)
23 images = append(images, &KeyImage{XPub: xpub, XKey: xKey})
28 func (h *HSM) Restore(images []*KeyImage) error {
29 for _, image := range images {
30 if ok := h.cache.hasAlias(image.XPub.Alias); ok {
31 return ErrDuplicateKeyAlias
34 fileName := filepath.Base(image.XPub.File)
35 image.XPub.File = h.keyStore.JoinPath(fileName)
36 if err := writeKeyFile(image.XPub.File, image.XKey); err != nil {
39 h.cache.add(image.XPub)