A simple data encryption library, heavily inspired by @Benjojo12 and @FiloSottile's fantastic age project.
- Multiple recipients
- Supports encrypting with your existing SSH keys / ssh-agent
- Convenient API
- ssh-rsa
- ssh-ed25519
- ssh-agent signing challenge (excluding ECDSA identities, as ECDSA signatures aren't deterministic)
- scrypt / password
buf := bytes.NewBuffer(nil)
alice, err := sasquatch.ParseRecipient("ssh-ed25519 ...")
bob, err := sasquatch.ParseRecipient("ssh-rsa ...")
rcp := []sasquatch.Recipient{alice, bob}
w, err := sasquatch.Encrypt(buf, rcp...)
data := []byte("Hello Alice, Hey Bob!")
w.Write(data)
w.Close()
ioutil.WriteFile("/tmp/sasquatch.encrypted", buf.Bytes(), 0644)
buf, err := ioutil.ReadFile("/tmp/sasquatch.encrypted")
// find all available identities
identities := sasquatch.FindIdentities()
r, err := sasquatch.Decrypt(buf, identities...)
buf, err := ioutil.ReadAll(r)
ioutil.WriteFile("/tmp/sasquatch.decrypted", buf.Bytes(), 0644)
// encryption
signers, err := sasquatch.SSHAgentSigners()
rcp, err := sasquatch.NewChallengeRecipient(signers[0])
sasquatch.Encrypt(buf, rcp)
// decryption
id, err := sasquatch.NewChallengeIdentity(signers[0])
r, err := sasquatch.Decrypt(buf, id)
// encryption
rcp, err := sasquatch.NewScryptRecipient("password")
sasquatch.Encrypt(buf, rcp)
// decryption
id, err := sasquatch.NewScryptIdentity("password")
r, err := sasquatch.Decrypt(buf, id)