mirror of
https://github.com/ssh-vault/ssh-vault.git
synced 2025-07-03 03:22:34 +03:00
modified: close.go modified: cmd/ssh-vault/main.go modified: vault.go modified: vault_test.go modified: view.go
35 lines
661 B
Go
35 lines
661 B
Go
package sshvault
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/base64"
|
|
"fmt"
|
|
"io/ioutil"
|
|
|
|
"github.com/ssh-vault/crypto/oaep"
|
|
)
|
|
|
|
// Close saves encrypted data to file
|
|
func (v *vault) Close(data []byte) error {
|
|
p, err := oaep.Encrypt(v.PublicKey, v.Password, []byte(""))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var payload bytes.Buffer
|
|
payload.WriteString(base64.StdEncoding.EncodeToString(p))
|
|
payload.WriteString(";")
|
|
payload.WriteString(base64.StdEncoding.EncodeToString(data))
|
|
|
|
err = ioutil.WriteFile(v.vault,
|
|
[]byte(fmt.Sprintf("SSH-VAULT;AES256;%s\n%s\n",
|
|
v.Fingerprint,
|
|
v.Encode(payload.String(), 64))),
|
|
0600,
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|