Merge pull request #4 from davrux/ownheader

Ownheader
This commit is contained in:
Yakub Kristianto 2023-11-16 22:09:16 +07:00 committed by GitHub
commit 03d6312748
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 4 deletions

View File

@ -388,7 +388,7 @@ func encryptStream(key []byte, w io.Writer) (io.Writer, error) {
// data. The authcode will be written out in fileWriter.close(). // data. The authcode will be written out in fileWriter.close().
func newEncryptionWriter(w io.Writer, password passwordFn, fw *fileWriter, aesstrength byte) (io.Writer, error) { func newEncryptionWriter(w io.Writer, password passwordFn, fw *fileWriter, aesstrength byte) (io.Writer, error) {
keysize := aesKeyLen(aesstrength) keysize := aesKeyLen(aesstrength)
salt := make([]byte, keysize / 2) salt := make([]byte, keysize/2)
_, err := rand.Read(salt[:]) _, err := rand.Read(salt[:])
if err != nil { if err != nil {
return nil, errors.New("zip: unable to generate random salt") return nil, errors.New("zip: unable to generate random salt")
@ -437,7 +437,8 @@ func (h *FileHeader) writeWinZipExtra() {
h.Extra = append(h.Extra, buf[:]...) h.Extra = append(h.Extra, buf[:]...)
} }
func (h *FileHeader) setEncryptionMethod(enc EncryptionMethod) { // SetEncryptionMethod sets the encryption method.
func (h *FileHeader) SetEncryptionMethod(enc EncryptionMethod) {
h.encryption = enc h.encryption = enc
switch enc { switch enc {
case AES128Encryption: case AES128Encryption:
@ -478,6 +479,6 @@ func (w *Writer) Encrypt(name string, password string, enc EncryptionMethod) (io
Method: Deflate, Method: Deflate,
} }
fh.SetPassword(password) fh.SetPassword(password)
fh.setEncryptionMethod(enc) fh.SetEncryptionMethod(enc)
return w.CreateHeader(fh) return w.CreateHeader(fh)
} }

View File

@ -56,7 +56,7 @@ func TestPasswordHelloWorldAes(t *testing.T) {
var b bytes.Buffer var b bytes.Buffer
for _, f := range r.File { for _, f := range r.File {
if !f.IsEncrypted() { if !f.IsEncrypted() {
t.Errorf("Expected %s to be encrypted.", f.FileInfo().Name) t.Errorf("Expected %s to be encrypted.", f.FileInfo().Name())
} }
f.SetPassword("golang") f.SetPassword("golang")
rc, err := f.Open() rc, err := f.Open()