@@ -137,22 +137,6 @@ func (req *SendDraftReq) AddTextPackage(
137137 return nil
138138}
139139
140- func (req * SendDraftReq ) AddClearSignedPackage (
141- kr * crypto.KeyRing ,
142- body string ,
143- prefs map [string ]SendPreferences ,
144- attKeys map [string ]* crypto.SessionKey ,
145- ) error {
146- pkg , err := newClearSignedPackage (kr , body , prefs , attKeys )
147- if err != nil {
148- return err
149- }
150-
151- req .Packages = append (req .Packages , pkg )
152-
153- return nil
154- }
155-
156140func newMIMEPackage (
157141 kr * crypto.KeyRing ,
158142 mimeBody string ,
@@ -216,7 +200,7 @@ func newTextPackage(
216200 prefs map [string ]SendPreferences ,
217201 attKeys map [string ]* crypto.SessionKey ,
218202) (* MessagePackage , error ) {
219- if ! ( mimeType == rfc822 .TextPlain || mimeType == rfc822 .TextHTML ) {
203+ if mimeType != rfc822 .TextPlain && mimeType != rfc822 .TextHTML {
220204 return nil , fmt .Errorf ("invalid MIME type for package: %s" , mimeType )
221205 }
222206
@@ -233,7 +217,13 @@ func newTextPackage(
233217 }
234218
235219 if prefs .SignatureType == DetachedSignature && ! prefs .Encrypt {
236- return nil , fmt .Errorf ("text package cannot contain clear-signed body" )
220+ if prefs .EncryptionScheme == PGPInlineScheme {
221+ return nil , fmt .Errorf ("invalid encryption scheme for %s: %d" , addr , prefs .EncryptionScheme )
222+ }
223+
224+ if prefs .EncryptionScheme == ClearScheme && mimeType != rfc822 .TextPlain {
225+ return nil , fmt .Errorf ("invalid MIME type for clear package: %s" , mimeType )
226+ }
237227 }
238228
239229 if prefs .EncryptionScheme == InternalScheme && ! prefs .Encrypt {
@@ -298,63 +288,8 @@ func newTextPackage(
298288 return pkg , nil
299289}
300290
301- func newClearSignedPackage (
302- kr * crypto.KeyRing ,
303- body string ,
304- prefs map [string ]SendPreferences ,
305- attKeys map [string ]* crypto.SessionKey ,
306- ) (* MessagePackage , error ) {
307- encBody , err := kr .Encrypt (crypto .NewPlainMessage ([]byte (body )), kr )
308- if err != nil {
309- return nil , fmt .Errorf ("failed to encrypt MIME body: %w" , err )
310- }
311-
312- splitEncBody , err := encBody .SplitMessage ()
313- if err != nil {
314- return nil , fmt .Errorf ("failed to split message: %w" , err )
315- }
316-
317- decBodyKey , err := kr .DecryptSessionKey (splitEncBody .GetBinaryKeyPacket ())
318- if err != nil {
319- return nil , fmt .Errorf ("failed to decrypt session key: %w" , err )
320- }
321-
322- pkg := newMessagePackage (rfc822 .TextPlain , splitEncBody .GetBinaryDataPacket ())
323-
324- for addr , prefs := range prefs {
325- if prefs .MIMEType != rfc822 .TextPlain {
326- return nil , fmt .Errorf ("invalid MIME type for clear signed package: %s" , prefs .MIMEType )
327- }
328-
329- if prefs .SignatureType != DetachedSignature {
330- return nil , fmt .Errorf ("clear signed package must contain detached signature" )
331- }
332-
333- if prefs .Encrypt || prefs .EncryptionScheme != ClearScheme {
334- return nil , fmt .Errorf ("clear signed package cannot be encrypted" )
335- }
336-
337- pkg .BodyKey = newSessionKey (decBodyKey )
338-
339- for attID , attKey := range attKeys {
340- pkg .AttachmentKeys [attID ] = newSessionKey (attKey )
341- }
342-
343- recipient := & MessageRecipient {
344- Type : prefs .EncryptionScheme ,
345- Signature : prefs .SignatureType ,
346- AttachmentKeyPackets : make (map [string ]string ),
347- }
348-
349- pkg .Addresses [addr ] = recipient
350- pkg .Type |= prefs .EncryptionScheme
351- }
352-
353- return pkg , nil
354- }
355-
356291func encSplit (kr * crypto.KeyRing , body string ) (* crypto.SessionKey , []byte , error ) {
357- encBody , err := kr .Encrypt (crypto .NewPlainMessage ([] byte ( body ) ), kr )
292+ encBody , err := kr .Encrypt (crypto .NewPlainMessageFromString ( body ), kr )
358293 if err != nil {
359294 return nil , nil , fmt .Errorf ("failed to encrypt MIME body: %w" , err )
360295 }
0 commit comments