mirror of
https://github.com/studiokaiji/nostr-webhost.git
synced 2025-12-17 14:54:31 +01:00
76 lines
1.4 KiB
Go
76 lines
1.4 KiB
Go
package keystore
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/nbd-wtf/go-nostr"
|
|
"github.com/nbd-wtf/go-nostr/nip19"
|
|
"github.com/studiokaiji/nostr-webhost/hostr/cmd/paths"
|
|
)
|
|
|
|
const PATH = ".nostr_account_secret"
|
|
|
|
func SetSecret(key string) error {
|
|
// nsecから始まる場合はデコードする
|
|
if key[0:4] == "nsec" {
|
|
_, v, err := nip19.Decode(key)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
key = v.(string)
|
|
}
|
|
|
|
dir, err := paths.GetSettingsDirectory()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
filePath := filepath.Join(dir, PATH)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// キーをファイルに書き込み
|
|
return os.WriteFile(filePath, []byte(key), 0644)
|
|
}
|
|
|
|
func ShowPublic() (string, string, error) {
|
|
hex, err := GetPublic()
|
|
if err != nil {
|
|
return "", "", err
|
|
}
|
|
npub, err := nip19.EncodePublicKey(hex)
|
|
fmt.Printf("npub: %s\nhex: %s\n", npub, hex)
|
|
return hex, npub, nil
|
|
}
|
|
|
|
func GetPublic() (string, error) {
|
|
secret, err := GetSecret()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
hex, err := nostr.GetPublicKey(secret)
|
|
return hex, err
|
|
}
|
|
|
|
func GetSecret() (string, error) {
|
|
dir, err := paths.GetSettingsDirectory()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
filePath := filepath.Join(dir, PATH)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
secretBytes, err := os.ReadFile(filePath)
|
|
if err != nil {
|
|
return "", errors.New("Could not read secret")
|
|
}
|
|
return string(secretBytes), nil
|
|
}
|