Validate recipient emails in send before asking for their public keys

This commit is contained in:
Pavel Škoda 2020-05-19 18:33:32 +02:00 committed by Jakub Cuth
parent c6c6cfc7d7
commit 4e2ab9b389
3 changed files with 23 additions and 0 deletions

View File

@ -3,6 +3,13 @@
Changelog [format](http://keepachangelog.com/en/1.0.0/)
## Unreleased
## unreleased
### Changed
* GODT-308 better user error message when request is canceled
* GODT-312 validate recipient emails in send before asking for their public keys
## [v1.2.7] Donghai-hotfix - beta (2020-05-07)
### Added
* IMAP mailbox info update when new mailbox is created

View File

@ -209,6 +209,10 @@ func (su *smtpUser) Send(from string, to []string, messageReader io.Reader) (err
containsUnencryptedRecipients := false
for _, email := range to {
if !looksLikeEmail(email) {
return errors.New(`"` + email + `" is not a valid recipient.`)
}
// PMEL 1.
contactEmails, err := su.client.GetContactEmailByEmail(email, 0, 1000)
if err != nil {

View File

@ -19,11 +19,23 @@ package smtp
import (
"encoding/base64"
"regexp"
pmcrypto "github.com/ProtonMail/gopenpgp/crypto"
"github.com/ProtonMail/proton-bridge/pkg/pmapi"
)
//nolint:gochecknoglobals // Used like a constant
var mailFormat = regexp.MustCompile(`.+@.+\..+`)
// looksLikeEmail validates whether the string resembles an email.
//
// Notice that it does this naively by simply checking for the existence
// of a DOT and an AT sign.
func looksLikeEmail(e string) bool {
return mailFormat.MatchString(e)
}
func createPackets(
pubkey *pmcrypto.KeyRing,
bodyKey *pmcrypto.SymmetricKey,