Add support for internal sending
This commit is contained in:
parent
ee7dae2c2f
commit
5efc14fefb
|
@ -331,18 +331,17 @@ func (set *MessagePackageSet) AddCleartext(addr string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func serializeEncryptedKey(symKey *packet.EncryptedKey, pub *packet.PublicKey, config *packet.Config) (string, error) {
|
func serializeEncryptedKey(symKey *packet.EncryptedKey, pub *packet.PublicKey, config *packet.Config) (string, error) {
|
||||||
var armored bytes.Buffer
|
var encoded bytes.Buffer
|
||||||
ciphertext, err := armor.Encode(&armored, "PGP MESSAGE", nil)
|
ciphertext := base64.NewEncoder(base64.StdEncoding, &encoded)
|
||||||
|
|
||||||
|
err := packet.SerializeEncryptedKey(ciphertext, pub, symKey.CipherFunc, symKey.Key, config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = packet.SerializeEncryptedKey(ciphertext, pub, symKey.CipherFunc, symKey.Key, config)
|
ciphertext.Close()
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
return armored.String(), nil
|
return encoded.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (set *MessagePackageSet) AddInternal(addr string, pub *openpgp.Entity) error {
|
func (set *MessagePackageSet) AddInternal(addr string, pub *openpgp.Entity) error {
|
||||||
|
|
22
smtp/smtp.go
22
smtp/smtp.go
|
@ -210,7 +210,27 @@ func (u *user) Send(from string, to []string, r io.Reader) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(encryptedRecipients) > 0 {
|
if len(encryptedRecipients) > 0 {
|
||||||
// TODO
|
encryptedSet := protonmail.NewMessagePackageSet(nil)
|
||||||
|
|
||||||
|
plaintext, err := encryptedSet.Encrypt(bodyType)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, err := io.Copy(plaintext, bytes.NewReader(body.Bytes())); err != nil {
|
||||||
|
plaintext.Close()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := plaintext.Close(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for rcpt, pub := range encryptedRecipients {
|
||||||
|
if err := encryptedSet.AddInternal(rcpt, pub); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
outgoing.Packages = append(outgoing.Packages, encryptedSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = u.c.SendMessage(outgoing)
|
_, _, err = u.c.SendMessage(outgoing)
|
||||||
|
|
Loading…
Reference in New Issue