moar progress

restructure-xml-stanzas
Martin Dosch 1 year ago
parent 413e59647b
commit 09557cf3f9
No known key found for this signature in database
GPG Key ID: 52A57CFCE13D657D

43
ox.go

@ -446,16 +446,9 @@ func oxGetPublicKeyRing(client *xmpp.Client, iqc chan xmpp.IQ,
if err != nil {
return nil, err
}
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()
opkl, err := oxGetPubKeyRingRequest()
if err != nil {
log.Fatal(err)
return nil, err
}
oxPublicKeyList, err := sendIQ(client, iqc, recipient, "get", opkl)
if err != nil {
@ -600,20 +593,7 @@ func oxEncrypt(client *xmpp.Client, iqc chan xmpp.IQ, oxPrivKey *crypto.Key,
_ = keyRing.AddKey(ownKey)
}
}
oxCryptMessage := etree.NewDocument()
oxCryptMessageSc := oxCryptMessage.CreateElement("signcrypt")
oxCryptMessageSc.CreateAttr("xmlns", nsOx)
oxCryptMessageScTo := oxCryptMessageSc.CreateElement("to")
oxCryptMessageScTo.CreateAttr("jid", recipient)
oxCryptMessageScTime := oxCryptMessageSc.CreateElement("time")
oxCryptMessageScTime.CreateAttr("stamp", time.Now().UTC().Format("2006-01-02T15:04:05Z"))
oxCryptMessageScRpad := oxCryptMessageSc.CreateElement("rpad")
oxCryptMessageScRpad.CreateText(getRpad(len(message)))
oxCryptMessageScPayload := oxCryptMessageSc.CreateElement("payload")
oxCryptMessageScPayloadBody := oxCryptMessageScPayload.CreateElement("body")
oxCryptMessageScPayloadBody.CreateAttr("xmlns", nsJabberClient)
oxCryptMessageScPayloadBody.CreateText(message)
ocm, err := oxCryptMessage.WriteToString()
ocm, err := oxCryptMessage(recipient, message)
if err != nil {
return "error", err
}
@ -622,24 +602,9 @@ func oxEncrypt(client *xmpp.Client, iqc chan xmpp.IQ, oxPrivKey *crypto.Key,
if err != nil {
return "error", err
}
om := etree.NewDocument()
omMessage := om.CreateElement("message")
omMessage.CreateAttr("to", recipient)
omMessage.CreateAttr("id", getID())
omMessageStore := omMessage.CreateElement("store")
omMessageStore.CreateAttr("xmlns", nsHints)
omMessageEme := omMessage.CreateElement("encryption")
omMessageEme.CreateAttr("xmlns", nsEme)
omMessageEme.CreateAttr("namespace", nsOx)
omMessageOpgp := omMessage.CreateElement("openpgp")
omMessageOpgp.CreateAttr("xmlns", nsOx)
omMessageOpgp.CreateText(base64.StdEncoding.EncodeToString(pgpMessage.Data))
omMessageBody := omMessage.CreateElement("body")
omMessageBody.CreateText(oxAltBody)
oms, err := om.WriteToString()
oms, err := oxMessage(recipient, pgpMessage)
if err != nil {
return "error", err
}
return oms, nil
}

@ -1,10 +1,13 @@
package main
import (
"encoding/base64"
"errors"
"strings"
"time"
"github.com/beevik/etree" // BSD-2-clause
"github.com/ProtonMail/gopenpgp/v2/crypto" // MIT License
"github.com/beevik/etree" // BSD-2-clause
)
func oxNodeListRequest() (string, error) {
@ -178,3 +181,60 @@ func oxRecvPubKeysRequest(fingerprint string) (string, error) {
}
return output, nil
}
func oxGetPubKeyRingRequest() (string, error) {
oxPubKeyListReq := etree.NewDocument()
oxPubKeyListReqPs := oxPubKeyListReq.CreateElement("pubsub")
oxPubKeyListReqPs.CreateAttr("xmlns", nsPubsub)
oxPubKeyListReqPsItems := oxPubKeyListReqPs.CreateElement("items")
oxPubKeyListReqPsItems.CreateAttr("node", nsOxPubKeys)
oxPubKeyListReqPsItems.CreateAttr("max_items", "1")
output, err := oxPubKeyListReq.WriteToString()
if err != nil {
return output, err
}
return output, err
}
func oxCryptMessage(recipient string, message string) (string, error) {
oxCryptMessage := etree.NewDocument()
oxCryptMessageSc := oxCryptMessage.CreateElement("signcrypt")
oxCryptMessageSc.CreateAttr("xmlns", nsOx)
oxCryptMessageScTo := oxCryptMessageSc.CreateElement("to")
oxCryptMessageScTo.CreateAttr("jid", recipient)
oxCryptMessageScTime := oxCryptMessageSc.CreateElement("time")
oxCryptMessageScTime.CreateAttr("stamp", time.Now().UTC().Format("2006-01-02T15:04:05Z"))
oxCryptMessageScRpad := oxCryptMessageSc.CreateElement("rpad")
oxCryptMessageScRpad.CreateText(getRpad(len(message)))
oxCryptMessageScPayload := oxCryptMessageSc.CreateElement("payload")
oxCryptMessageScPayloadBody := oxCryptMessageScPayload.CreateElement("body")
oxCryptMessageScPayloadBody.CreateAttr("xmlns", nsJabberClient)
oxCryptMessageScPayloadBody.CreateText(message)
output, err := oxCryptMessage.WriteToString()
if err != nil {
return output, err
}
return output, nil
}
func oxMessage(recipient string, pgpMessage *crypto.PGPMessage) (string, error) {
om := etree.NewDocument()
omMessage := om.CreateElement("message")
omMessage.CreateAttr("to", recipient)
omMessage.CreateAttr("id", getID())
omMessageStore := omMessage.CreateElement("store")
omMessageStore.CreateAttr("xmlns", nsHints)
omMessageEme := omMessage.CreateElement("encryption")
omMessageEme.CreateAttr("xmlns", nsEme)
omMessageEme.CreateAttr("namespace", nsOx)
omMessageOpgp := omMessage.CreateElement("openpgp")
omMessageOpgp.CreateAttr("xmlns", nsOx)
omMessageOpgp.CreateText(base64.StdEncoding.EncodeToString(pgpMessage.Data))
omMessageBody := omMessage.CreateElement("body")
omMessageBody.CreateText(oxAltBody)
output, err := om.WriteToString()
if err != nil {
return output, err
}
return output, nil
}

Loading…
Cancel
Save