./cmd/seedjab/main.go ./.git/config ./.git/description ./.git/HEAD ./.git/hooks/applypatch-msg.sample ./.git/hooks/commit-msg.sample ./.git/hooks/docs.url ./.git/hooks/fsmonitor-watchman.sample ./.git/hooks/post-update.sample ./.git/hooks/pre-applypatch.sample ./.git/hooks/pre-commit.sample ./.git/hooks/pre-merge-commit.sample ./.git/hooks/prepare-commit-msg.sample ./.git/hooks/pre-push.sample ./.git/hooks/pre-rebase.sample ./.gitignore ./.git/index ./.git/info/exclude ./.git/logs/HEAD ./go.mod ./go.sum ./inspect_status.sh ./internal/cli/decrypt.go ./internal/cli/encrypt.go ./internal/cli/password.go ./internal/crypto/crypto.go ./internal/vault/vault.go ./internal/version/version.go ./.jj/.gitignore ./.jj/working_copy/checkout ./.jj/working_copy/tree_state ./.jj/working_copy/type ./seedjab ---- main.go ---- ---- internal/vault/vault.go ---- package vault import ( "os" "encoding/json" ) type Vault struct { Version int `json:"version"` Cipher string `json:"cipher"` KDF string `json:"kdf"` Salt string `json:"salt"` Nonce string `json:"nonce"` Ciphertext string `json:"ciphertext"` } func Save(filename string, v *Vault) error { vjs, er := json.MarshalIndent(v, "", " ",) if er != nil { return er } err := os.WriteFile(filename, vjs, 0644,) if err != nil { return err } return nil } func Load(filename string) (*Vault, error) { data, err := os.ReadFile(filename) if err != nil { return nil, err } var v Vault err = json.Unmarshal(data, &v) if err != nil { return nil, err } return &v, nil } ---- go.mod ---- module seedjab go 1.25.0 require ( golang.org/x/sys v0.46.0 // indirect golang.org/x/term v0.44.0 // indirect )