Stream received data into encrypted file
This commit is contained in:
parent
9ec8374721
commit
9e0474a68f
35
main.go
35
main.go
@ -3,7 +3,6 @@ package main
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@ -99,40 +98,42 @@ func (driver *ForwarderDriver) GetFile(path string, offset int64) (int64, io.Rea
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (driver *ForwarderDriver) PutFile(destPath string, data io.Reader, appendData bool) (int64, error) {
|
func (driver *ForwarderDriver) PutFile(destPath string, data io.Reader, appendData bool) (int64, error) {
|
||||||
log.Printf("Receiving %v", destPath)
|
log.Printf("Receiving file %v", destPath)
|
||||||
|
|
||||||
log.Printf("ReadAll…")
|
log.Printf("Opening output file")
|
||||||
contents, err := ioutil.ReadAll(data)
|
encryptedFile, err := os.Create("file.pdf.asc")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error: %v", err)
|
log.Printf("Error: %v", err)
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("crypto.PGP…")
|
log.Printf("Preparing GPG encryption handle")
|
||||||
pgp := crypto.PGP()
|
pgp := crypto.PGP()
|
||||||
encHandle, err := pgp.Encryption().Recipient(driver.RecipientKey).New()
|
encHandle, err := pgp.Encryption().Recipient(driver.RecipientKey).New()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error: %v", err)
|
log.Printf("Error: %v", err)
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
log.Printf("Encrypt…")
|
|
||||||
pgpMessage, err := encHandle.Encrypt(contents)
|
log.Printf("Preparing encrypting writer")
|
||||||
if err != nil {
|
encryptingWriter, err := encHandle.EncryptingWriter(encryptedFile, crypto.Armor)
|
||||||
log.Printf("Error: %v", err)
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
log.Printf("ArmorBytes…")
|
|
||||||
armored, err := pgpMessage.ArmorBytes()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error: %v", err)
|
log.Printf("Error: %v", err)
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("WriteFile…")
|
log.Printf("Read, encrypt and write data")
|
||||||
os.WriteFile("file.txt", armored, 0666)
|
transferred_bytes, err := io.Copy(encryptingWriter, data)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error: %v", err)
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
log.Printf("Status: %v, Transferred bytes: %v, errmes: %v", 0, len(contents), err)
|
encryptingWriter.Close()
|
||||||
return int64(len(contents)), err
|
encryptedFile.Close()
|
||||||
|
|
||||||
|
log.Printf("Transferred bytes: %v", transferred_bytes)
|
||||||
|
return transferred_bytes, err
|
||||||
}
|
}
|
||||||
|
|
||||||
type ForwarderDriverFactory struct {
|
type ForwarderDriverFactory struct {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user