mirror of
https://github.com/ProtonMail/go-proton-api.git
synced 2025-12-23 23:57:50 -05:00
feat(GODT-3048): Add X-PM-ENCRYPT-UNTRUSTED to vcard parser
This commit is contained in:
committed by
LBeernaertProton
parent
5f248dfc82
commit
fb55d3bd8b
@@ -11,10 +11,11 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
FieldPMScheme = "X-PM-SCHEME"
|
||||
FieldPMSign = "X-PM-SIGN"
|
||||
FieldPMEncrypt = "X-PM-ENCRYPT"
|
||||
FieldPMMIMEType = "X-PM-MIMETYPE"
|
||||
FieldPMScheme = "X-PM-SCHEME"
|
||||
FieldPMSign = "X-PM-SIGN"
|
||||
FieldPMEncrypt = "X-PM-ENCRYPT"
|
||||
FieldPMEncryptUntrusted = "X-PM-ENCRYPT-UNTRUSTED"
|
||||
FieldPMMIMEType = "X-PM-MIMETYPE"
|
||||
)
|
||||
|
||||
type Cards []*Card
|
||||
|
||||
@@ -49,6 +49,7 @@ func TestContactSettings(t *testing.T) {
|
||||
settings.SetScheme(proton.PGPInlineScheme)
|
||||
settings.SetSign(true)
|
||||
settings.SetEncrypt(true)
|
||||
settings.SetEncryptUntrusted(true)
|
||||
settings.AddKey(key)
|
||||
|
||||
err = contact.SetSettings(nil, "user@user", proton.CardTypeClear, settings)
|
||||
@@ -61,6 +62,7 @@ func TestContactSettings(t *testing.T) {
|
||||
require.Equal(t, *settings.Scheme, proton.PGPInlineScheme)
|
||||
require.Equal(t, *settings.Sign, true)
|
||||
require.Equal(t, *settings.Encrypt, true)
|
||||
require.Equal(t, *settings.EncryptUntrusted, true)
|
||||
require.Equal(t, len(settings.Keys), 1)
|
||||
kr, err := crypto.NewKeyRing(settings.Keys[0])
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -19,11 +19,12 @@ const (
|
||||
)
|
||||
|
||||
type ContactSettings struct {
|
||||
MIMEType *rfc822.MIMEType
|
||||
Scheme *EncryptionScheme
|
||||
Sign *bool
|
||||
Encrypt *bool
|
||||
Keys []*crypto.Key
|
||||
MIMEType *rfc822.MIMEType
|
||||
Scheme *EncryptionScheme
|
||||
Sign *bool
|
||||
Encrypt *bool
|
||||
EncryptUntrusted *bool
|
||||
Keys []*crypto.Key
|
||||
}
|
||||
|
||||
type Contact struct {
|
||||
@@ -59,6 +60,13 @@ func (cs *ContactSettings) SetEncrypt(enabled bool) {
|
||||
*cs.Encrypt = enabled
|
||||
}
|
||||
|
||||
func (cs *ContactSettings) SetEncryptUntrusted(enabled bool) {
|
||||
if cs.EncryptUntrusted == nil {
|
||||
cs.EncryptUntrusted = new(bool)
|
||||
}
|
||||
*cs.EncryptUntrusted = enabled
|
||||
}
|
||||
|
||||
func (cs *ContactSettings) AddKey(key *crypto.Key) {
|
||||
cs.Keys = append(cs.Keys, key)
|
||||
}
|
||||
@@ -128,6 +136,20 @@ func (c *Contact) GetSettings(kr *crypto.KeyRing, email string, cardType CardTyp
|
||||
settings.Encrypt = newPtr(encrypt)
|
||||
}
|
||||
|
||||
encryptUntrusted, err := group.Get(FieldPMEncryptUntrusted)
|
||||
if err != nil {
|
||||
return ContactSettings{}, err
|
||||
}
|
||||
|
||||
if len(encryptUntrusted) > 0 {
|
||||
b, err := strconv.ParseBool(encryptUntrusted[0])
|
||||
if err != nil {
|
||||
return ContactSettings{}, err
|
||||
}
|
||||
|
||||
settings.EncryptUntrusted = newPtr(b)
|
||||
}
|
||||
|
||||
keys, err := group.Get(vcard.FieldKey)
|
||||
if err != nil {
|
||||
return ContactSettings{}, err
|
||||
@@ -227,6 +249,19 @@ func (c *Contact) SetSettings(kr *crypto.KeyRing, email string, cardType CardTyp
|
||||
}
|
||||
}
|
||||
|
||||
// X-PM-ENCRYPT-UNTRUSTED:
|
||||
if settings.EncryptUntrusted != nil {
|
||||
if *settings.EncryptUntrusted {
|
||||
if err := group.Set(FieldPMEncryptUntrusted, "true", vcard.Params{}); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
if err := group.Set(FieldPMEncryptUntrusted, "false", vcard.Params{}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// KEY
|
||||
if settings.Keys != nil && len(settings.Keys) > 0 {
|
||||
var keys = ""
|
||||
|
||||
Reference in New Issue
Block a user