Change from encoding/xml to etree.

code-cleanup
Martin Dosch 2 years ago
parent 644b1f809d
commit 28c5884044

@ -30,28 +30,6 @@ type OxMessageElement struct {
}
// Created with https://github.com/miku/zek
type OxCryptElement struct {
XMLName xml.Name `xml:"signcrypt"`
Text string `xml:",chardata"`
Xmlns string `xml:"xmlns,attr"`
To struct {
Text string `xml:",chardata"`
Jid string `xml:"jid,attr"`
} `xml:"to"`
Time struct {
Text string `xml:",chardata"`
Stamp string `xml:"stamp,attr"`
} `xml:"time"`
Rpad string `xml:"rpad"`
Payload struct {
Text string `xml:",chardata"`
Body struct {
Text string `xml:",chardata"`
Xmlns string `xml:"xmlns,attr"`
} `xml:"body"`
} `xml:"payload"`
}
// Created with https://github.com/miku/zek
type OxPublicKeysList struct {
XMLName xml.Name `xml:"pubsub"`
@ -76,18 +54,6 @@ type OxPublicKeysList struct {
} `xml:"items"`
}
// Created with https://github.com/miku/zek
type IQPubsubRequest 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"`
MaxItems string `xml:"max_items,attr"`
} `xml:"items"`
}
// Created with https://github.com/miku/zek
type IQDiscoItemsType struct {
XMLName xml.Name `xml:"query"`

36
ox.go

@ -373,21 +373,23 @@ func oxRecvPublicKeys(client *xmpp.Client, recipient string,
}
func oxGetPublicKeyRing(client *xmpp.Client, recipient string) (*crypto.KeyRing, error) {
var oxPublicKeyListRequest IQPubsubRequest
var oxPublicKeyListXML OxPublicKeysList
publicKeyRing, err := crypto.NewKeyRing(nil)
if err != nil {
return nil, err
}
oxPublicKeyListRequest.Xmlns = nsPubsub
oxPublicKeyListRequest.Items.Node = nsOxPubKeys
oxPublicKeyListRequest.Items.MaxItems = "1"
opkl, err := xml.Marshal(oxPublicKeyListRequest)
oxPubKeyListReq := etree.NewDocument()
oxPubKeyListReqPs := oxPubKeyListReq.CreateElement("pubsub")
oxPubKeyListReqPs.CreateAttr("xmlns", nsPubsub)
oxPubKeyListReqPsItems := oxPubKeyListReqPs.CreateElement("items")
oxPubKeyListReqPsItems.CreateAttr("node", nsOxPubKeys)
oxPubKeyListReqPsItems.CreateAttr("max_items", "1")
opkl, err := oxPubKeyListReq.WriteToString()
if err != nil {
log.Fatal(err)
}
oxPublicKeyList, err := sendIQ(client, recipient, "get", string(opkl))
oxPublicKeyList, err := sendIQ(client, recipient, "get", opkl)
if err != nil {
log.Fatal(err)
}
@ -487,7 +489,6 @@ func oxGetPublicKeyRing(client *xmpp.Client, recipient string) (*crypto.KeyRing,
func oxEncrypt(client *xmpp.Client, oxPrivKey *crypto.Key, recipient string,
keyRing *crypto.KeyRing, message string) (string, error) {
var oxCryptMessage OxCryptElement
var oxMessage OxMessageElement
privKeyRing, err := crypto.NewKeyRing(oxPrivKey)
if err != nil {
@ -501,13 +502,20 @@ func oxEncrypt(client *xmpp.Client, oxPrivKey *crypto.Key, recipient string,
_ = keyRing.AddKey(ownKey)
}
}
oxCryptMessage.Xmlns = nsOx
oxCryptMessage.To.Jid = recipient
oxCryptMessage.Time.Stamp = time.Now().UTC().Format("2006-01-02T15:04:05Z")
oxCryptMessage.Rpad = getRpad()
oxCryptMessage.Payload.Body.Xmlns = nsJabberClient
oxCryptMessage.Payload.Body.Text = message
ocm, err := xml.Marshal(oxCryptMessage)
oxCryptMessage := etree.NewDocument()
oxCryptMessagePs := oxCryptMessage.CreateElement("pubsub")
oxCryptMessagePs.CreateAttr("xmlns", nsOx)
oxCryptMessagePsTo := oxCryptMessagePs.CreateElement("to")
oxCryptMessagePsTo.CreateAttr("jid", recipient)
oxCryptMessagePsTime := oxCryptMessagePs.CreateElement("time")
oxCryptMessagePsTime.CreateAttr("stamp", time.Now().UTC().Format("2006-01-02T15:04:05Z"))
oxCryptMessagePsRpad := oxCryptMessagePs.CreateElement("rpad")
oxCryptMessagePsRpad.CreateText(getRpad())
oxCryptMessagePsPayload := oxCryptMessagePs.CreateElement("payload")
oxCryptMessagePsPayloadBody := oxCryptMessagePsPayload.CreateElement("body")
oxCryptMessagePsPayloadBody.CreateAttr("xmlns", nsJabberClient)
oxCryptMessagePsPayloadBody.CreateText(message)
ocm, err := oxCryptMessage.WriteToString()
if err != nil {
return "error", err
}

Loading…
Cancel
Save