Change from encoding/xml to etree.

code-cleanup
Martin Dosch 2 years ago
parent 5d36173be7
commit 11cf616e99

@ -52,26 +52,6 @@ type OxCryptElement struct {
} `xml:"payload"`
}
// Created with https://github.com/miku/zek
type OxPublicKey struct {
XMLName xml.Name `xml:"pubsub"`
Text string `xml:",chardata"`
Xmlns string `xml:"xmlns,attr"`
Items struct {
Text string `xml:",chardata"`
Node string `xml:"node,attr"`
Item struct {
Text string `xml:",chardata"`
ID string `xml:"id,attr"`
Pubkey []struct {
Text string `xml:",chardata"`
Xmlns string `xml:"xmlns,attr"`
Data string `xml:"data"`
} `xml:"pubkey"`
} `xml:"item"`
} `xml:"items"`
}
// Created with https://github.com/miku/zek
type OxPublicKeysList struct {
XMLName xml.Name `xml:"pubsub"`

27
ox.go

@ -320,16 +320,17 @@ func oxGenPrivKey(jid string, client *xmpp.Client, passphrase string) error {
func oxRecvPublicKeys(client *xmpp.Client, recipient string,
fingerprint string) (*crypto.KeyRing, error) {
var oxPublicKeyRequest IQPubsubRequest
var oxPublicKeyXML OxPublicKey
oxPublicKeyRequest.Xmlns = nsPubsub
oxPublicKeyRequest.Items.Node = nsOxPubKeys + ":" + fingerprint
oxPublicKeyRequest.Items.MaxItems = "1"
opk, err := xml.Marshal(oxPublicKeyRequest)
opkr := etree.NewDocument()
opkrPs := opkr.CreateElement("pubsub")
opkrPs.CreateAttr("xmlns", nsPubsub)
opkrPsItems := opkrPs.CreateElement("items")
opkrPsItems.CreateAttr("node", nsOxPubKeys+":"+fingerprint)
opkrPsItems.CreateAttr("max_items", "1")
opkrString, err := opkr.WriteToString()
if err != nil {
return nil, err
}
oxPublicKey, err := sendIQ(client, recipient, "get", string(opk))
oxPublicKey, err := sendIQ(client, recipient, "get", opkrString)
if err != nil {
return nil, err
}
@ -337,7 +338,8 @@ func oxRecvPublicKeys(client *xmpp.Client, recipient string,
return nil, errors.New("Error while requesting public key for " +
recipient)
}
err = xml.Unmarshal(oxPublicKey.Query, &oxPublicKeyXML)
oxPublicKeyXML := etree.NewDocument()
err = oxPublicKeyXML.ReadFromBytes(oxPublicKey.Query)
if err != nil {
return nil, err
}
@ -345,8 +347,13 @@ func oxRecvPublicKeys(client *xmpp.Client, recipient string,
if err != nil {
return nil, err
}
for _, r := range oxPublicKeyXML.Items.Item.Pubkey {
decodedPubKey, err := base64.StdEncoding.DecodeString(r.Data)
oxPublicKeyXMLPubsub := oxPublicKeyXML.SelectElement("pubsub")
oxPublicKeyXMLItems := oxPublicKeyXMLPubsub.SelectElement("items")
oxPublicKeyXMLItem := oxPublicKeyXMLItems.SelectElement("item")
oxPublicKeyXMLPubkeys := oxPublicKeyXMLItem.SelectElements("pubkey")
for _, r := range oxPublicKeyXMLPubkeys {
data := r.SelectElement("data")
decodedPubKey, err := base64.StdEncoding.DecodeString(data.Text())
if err != nil {
return nil, err
}

Loading…
Cancel
Save