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 (
|
const (
|
||||||
FieldPMScheme = "X-PM-SCHEME"
|
FieldPMScheme = "X-PM-SCHEME"
|
||||||
FieldPMSign = "X-PM-SIGN"
|
FieldPMSign = "X-PM-SIGN"
|
||||||
FieldPMEncrypt = "X-PM-ENCRYPT"
|
FieldPMEncrypt = "X-PM-ENCRYPT"
|
||||||
FieldPMMIMEType = "X-PM-MIMETYPE"
|
FieldPMEncryptUntrusted = "X-PM-ENCRYPT-UNTRUSTED"
|
||||||
|
FieldPMMIMEType = "X-PM-MIMETYPE"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Cards []*Card
|
type Cards []*Card
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ func TestContactSettings(t *testing.T) {
|
|||||||
settings.SetScheme(proton.PGPInlineScheme)
|
settings.SetScheme(proton.PGPInlineScheme)
|
||||||
settings.SetSign(true)
|
settings.SetSign(true)
|
||||||
settings.SetEncrypt(true)
|
settings.SetEncrypt(true)
|
||||||
|
settings.SetEncryptUntrusted(true)
|
||||||
settings.AddKey(key)
|
settings.AddKey(key)
|
||||||
|
|
||||||
err = contact.SetSettings(nil, "user@user", proton.CardTypeClear, settings)
|
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.Scheme, proton.PGPInlineScheme)
|
||||||
require.Equal(t, *settings.Sign, true)
|
require.Equal(t, *settings.Sign, true)
|
||||||
require.Equal(t, *settings.Encrypt, true)
|
require.Equal(t, *settings.Encrypt, true)
|
||||||
|
require.Equal(t, *settings.EncryptUntrusted, true)
|
||||||
require.Equal(t, len(settings.Keys), 1)
|
require.Equal(t, len(settings.Keys), 1)
|
||||||
kr, err := crypto.NewKeyRing(settings.Keys[0])
|
kr, err := crypto.NewKeyRing(settings.Keys[0])
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -19,11 +19,12 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type ContactSettings struct {
|
type ContactSettings struct {
|
||||||
MIMEType *rfc822.MIMEType
|
MIMEType *rfc822.MIMEType
|
||||||
Scheme *EncryptionScheme
|
Scheme *EncryptionScheme
|
||||||
Sign *bool
|
Sign *bool
|
||||||
Encrypt *bool
|
Encrypt *bool
|
||||||
Keys []*crypto.Key
|
EncryptUntrusted *bool
|
||||||
|
Keys []*crypto.Key
|
||||||
}
|
}
|
||||||
|
|
||||||
type Contact struct {
|
type Contact struct {
|
||||||
@@ -59,6 +60,13 @@ func (cs *ContactSettings) SetEncrypt(enabled bool) {
|
|||||||
*cs.Encrypt = enabled
|
*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) {
|
func (cs *ContactSettings) AddKey(key *crypto.Key) {
|
||||||
cs.Keys = append(cs.Keys, 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)
|
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)
|
keys, err := group.Get(vcard.FieldKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ContactSettings{}, err
|
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
|
// KEY
|
||||||
if settings.Keys != nil && len(settings.Keys) > 0 {
|
if settings.Keys != nil && len(settings.Keys) > 0 {
|
||||||
var keys = ""
|
var keys = ""
|
||||||
|
|||||||
Reference in New Issue
Block a user