aboutsummaryrefslogtreecommitdiffstats
path: root/dec.go
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2025-10-24 15:10:12 -0700
committerRose Hogenson <rosehogenson@posteo.net>2025-10-24 15:10:12 -0700
commitedd01c62855ff5d1b0ef50a1d9350718cb033c84 (patch)
tree24651fbc3774da158d36a19f8a532ed50828cf45 /dec.go
parent9a08b03b83ff28a26b0c20ccebc178df29cf7312 (diff)
downloadsym-edd01c62855ff5d1b0ef50a1d9350718cb033c84.tar.zst
Remove all metadata
Diffstat (limited to 'dec.go')
-rw-r--r--dec.go25
1 files changed, 6 insertions, 19 deletions
diff --git a/dec.go b/dec.go
index fdea3fe..aa551ad 100644
--- a/dec.go
+++ b/dec.go
@@ -1,7 +1,6 @@
package main
import (
- "encoding/binary"
"errors"
"flag"
"fmt"
@@ -10,22 +9,8 @@ import (
"strings"
)
-func decrypt(w io.Writer, r io.Reader, password string) error {
- fileFormat := make([]byte, 4)
- if _, err := io.ReadFull(r, fileFormat); err != nil {
- return err
- }
- if string(fileFormat) != magic {
- return fmt.Errorf("bad file format")
- }
- header := new(fileMetadata)
- if err := binary.Read(r, binary.BigEndian, header); err != nil {
- return err
- }
- if err := header.validate(); err != nil {
- return err
- }
- _, err := io.Copy(w, header.EncryptionMetadata.newDecryptingReader(r, password, &header.HashMetadata))
+func (o *decryptOptions) decrypt(w io.Writer, r io.Reader, password string) error {
+ _, err := io.Copy(w, newDecryptingReader(r, password, o.iterations))
return err
}
@@ -42,12 +27,14 @@ func (f *decryptFlags) registerFlags(fs *flag.FlagSet) {
type decryptOptions struct {
decryptFlags
+ iterations int
passwordIn func() (string, error)
stdin io.Reader
stdout io.Writer
}
var defaultDecryptOptions = decryptOptions{
+ iterations: defaultPBKDF2Iters,
passwordIn: termReadPassword,
stdin: os.Stdin,
stdout: os.Stdout,
@@ -86,7 +73,7 @@ func (o *decryptOptions) decryptFile(fileName string, password string) (err erro
os.Remove(fOut.Name())
}
}()
- if err := decrypt(fOut, fIn, password); err != nil {
+ if err := o.decrypt(fOut, fIn, password); err != nil {
return fmt.Errorf("decrypt %q: %s", fileName, err)
}
return fOut.Close()
@@ -114,7 +101,7 @@ func (o *decryptOptions) run(args ...string) error {
}
}
if len(args) == 0 {
- return decrypt(o.stdout, o.stdin, password)
+ return o.decrypt(o.stdout, o.stdin, password)
}
for _, fileName := range args {
if err := o.decryptFile(fileName, password); err != nil {