forst version
This commit is contained in:
commit
bf257866e6
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.DS_Store
|
85
main.go
Normal file
85
main.go
Normal file
@ -0,0 +1,85 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"golang.org/x/crypto/openpgp"
|
||||
)
|
||||
|
||||
// args [0] is this
|
||||
func main() {
|
||||
if len(os.Args) < 3 {
|
||||
log.Fatal("encrypt keyPath filePath")
|
||||
}
|
||||
keyPath := os.Args[1]
|
||||
filePath := os.Args[2]
|
||||
|
||||
wd, err := os.Getwd()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
keyPath = path.Join(wd, keyPath)
|
||||
filePath = path.Join(wd, filePath)
|
||||
|
||||
if _, err := os.Stat(keyPath); err != nil && !os.IsExist(err) {
|
||||
fmt.Println(err)
|
||||
log.Fatal("key file not exists")
|
||||
}
|
||||
|
||||
if _, err := os.Stat(filePath); err != nil && !os.IsExist(err) {
|
||||
log.Fatal("key file not exists")
|
||||
}
|
||||
|
||||
encrypt(keyPath, filePath)
|
||||
}
|
||||
|
||||
func encrypt(pubKey, srcPath string) {
|
||||
keyFile, err := os.Open(pubKey)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer keyFile.Close()
|
||||
|
||||
var keyList openpgp.EntityList
|
||||
keys, err := openpgp.ReadArmoredKeyRing(keyFile)
|
||||
// keys, err := openpgp.ReadKeyRing(keyFile)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
keyList = append(keyList, keys...)
|
||||
|
||||
distFile, err := os.Create("./dist.pgp")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer distFile.Close()
|
||||
|
||||
// distBuf := new(bytes.Buffer)
|
||||
|
||||
srcFile, err := os.Open(srcPath)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer srcFile.Close()
|
||||
|
||||
fhint := &openpgp.FileHints{}
|
||||
fhint.IsBinary = true
|
||||
|
||||
tmpWriter, err := openpgp.Encrypt(distFile, keyList, nil, fhint, nil)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer tmpWriter.Close()
|
||||
|
||||
_, err = io.Copy(tmpWriter, srcFile)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user