Files
filou/files/encrypt_file.go
2014-11-09 18:28:08 -08:00

41 lines
1.1 KiB
Go

package files
import (
"io"
"github.com/didiercrunch/filou/asymetric"
"github.com/didiercrunch/filou/contract"
"github.com/didiercrunch/filou/envelop"
"github.com/didiercrunch/filou/helper"
"github.com/didiercrunch/filou/payload"
)
func getEncryptorAndSigner(acceptedContract *contract.AcceptedContract) (asymetric.PublicKeyEncryptor, asymetric.Signer, error) {
errs := make([]error, 0, 2)
signer, err := asymetric.GetSigner(acceptedContract)
if err != nil {
errs = append(errs, err)
}
encryptor, err := asymetric.GetPublicKeyEncryptor(acceptedContract)
if err != nil {
errs = append(errs, err)
}
return encryptor, signer, helper.JoinErrors(errs)
}
func EncryptFile(reader io.Reader, writer io.Writer, acceptedContract *contract.AcceptedContract) error {
encryptor, signer, err := getEncryptorAndSigner(acceptedContract)
if err != nil {
return err
}
payload_, err := payload.GetPayload(reader, acceptedContract)
if err != nil {
return err
}
envelop := envelop.NewEnveloper(encryptor, payload_, signer)
return envelop.WriteToWriter(writer)
}