Logic change to follow old code.

This commit is contained in:
Jakub
2020-11-20 11:01:01 +01:00
committed by Jakub Cuth
parent 945bdf4c60
commit 874882b554
3 changed files with 61 additions and 38 deletions

View File

@ -184,11 +184,12 @@ var (
errEncryptedOutsideNotSupported = errors.New("encrypted outside is not supported")
errWrongSendScheme = errors.New("wrong send scheme")
errInternalMustEncrypt = errors.New("internal package must be encrypted")
errInlineMustEncrypt = errors.New("PGP Inline package must be encrypted")
errInlineMustBePlain = errors.New("PGP Inline package must be plain text")
errMissingPubkey = errors.New("cannot encrypt body key packet: missing pubkey")
errSignMustBeMultipart = errors.New("clear signed html packet must be multipart")
errMIMEMustBeMultipart = errors.New("MIME packet must be multipart")
errClearMIMEMustSign = errors.New("clear MIME must be signed")
errSignMustBePGPInline = errors.New("clear sign must be PGP inline")
)
func (req *SendMessageReq) AddRecipient(
@ -224,10 +225,13 @@ func (req *SendMessageReq) addNonMIMERecipient(
pubkey *crypto.KeyRing, signature SignatureFlag,
contentType string, doEncrypt bool,
) (err error) {
if sendScheme.Is(ClearPackage) &&
signature.Is(SignatureDetached) &&
contentType == ContentTypeHTML {
return errSignMustBeMultipart
if sendScheme.Is(ClearPackage) && signature.Is(SignatureDetached) {
if contentType == ContentTypeHTML {
return errSignMustBeMultipart
}
if contentType == ContentTypePlainText {
return errSignMustBePGPInline
}
}
var send *sendData
@ -252,9 +256,6 @@ func (req *SendMessageReq) addNonMIMERecipient(
}
newAddress := &MessageAddress{Type: sendScheme, Signature: signature}
if sendScheme.Is(PGPInlinePackage) && !doEncrypt {
return errInlineMustEncrypt
}
if sendScheme.Is(PGPInlinePackage) && contentType == ContentTypeHTML {
return errInlineMustBePlain
}
@ -288,6 +289,10 @@ func (req *SendMessageReq) addMIMERecipient(
}
}
if sendScheme.Is(ClearMIMEPackage) && signature.HasNo(SignatureDetached) {
return errClearMIMEMustSign
}
if sendScheme.Is(PGPMIMEPackage) {
if pubkey == nil {
return errMissingPubkey