Skip to content

Commit d8bf8e1

Browse files
committed
fix: Avoid double compression in sessionkey and sign encryption
1 parent 55a6908 commit d8bf8e1

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

crypto/encryption_core.go

+8-7
Original file line numberDiff line numberDiff line change
@@ -237,14 +237,8 @@ func (eh *encryptionHandle) encryptStreamWithSessionKeyHelper(
237237
return nil, nil, fmt.Errorf("gopenpgp: unable to encrypt: %w", err)
238238
}
239239

240-
if algo := config.Compression(); algo != packet.CompressionNone {
241-
encryptWriter, err = packet.SerializeCompressed(encryptWriter, algo, config.CompressionConfig)
242-
if err != nil {
243-
return nil, nil, fmt.Errorf("gopenpgp: error in compression: %w", err)
244-
}
245-
}
246-
247240
if signers != nil {
241+
// SignWithParams handles compression.
248242
signWriter, err = openpgp.SignWithParams(encryptWriter, signers, &openpgp.SignParams{
249243
Hints: hints,
250244
TextSig: eh.IsUTF8,
@@ -255,6 +249,13 @@ func (eh *encryptionHandle) encryptStreamWithSessionKeyHelper(
255249
return nil, nil, fmt.Errorf("gopenpgp: unable to sign: %w", err)
256250
}
257251
} else {
252+
// We need to handle compression outside of go-crypto.
253+
if algo := config.Compression(); algo != packet.CompressionNone {
254+
encryptWriter, err = packet.SerializeCompressed(encryptWriter, algo, config.CompressionConfig)
255+
if err != nil {
256+
return nil, nil, fmt.Errorf("gopenpgp: error in compression: %w", err)
257+
}
258+
}
258259
encryptWriter, err = packet.SerializeLiteral(
259260
encryptWriter,
260261
!plainMessageMetadata.IsUtf8(),

0 commit comments

Comments
 (0)