diff --git a/encrypt.go b/encrypt.go index ce1cf61..8388444 100644 --- a/encrypt.go +++ b/encrypt.go @@ -279,5 +279,8 @@ func Encrypt(publicKey, doc []byte, opts EncryptOptions) ([]byte, error) { } encDataNode = nil // the template is inserted in the doc, so we don't own it - return dumpDoc(parsedDoc), nil + rootNode := C.xmlDocGetRootElement(parsedDoc) + buf := dumpNode(rootNode) + + return buf, nil } diff --git a/xmlsec.go b/xmlsec.go index da695c9..1c8e25b 100644 --- a/xmlsec.go +++ b/xmlsec.go @@ -108,3 +108,11 @@ func dumpDoc(doc *C.xmlDoc) []byte { return C.GoBytes(unsafe.Pointer(buffer), bufferSize) } + +func dumpNode(node *C.xmlNode) []byte { + buffer := C.xmlBufferCreate() + defer C.xmlBufferFree(buffer) + bufferSize := C.xmlNodeDump(buffer, nil, node, 0, 0) + + return C.GoBytes(unsafe.Pointer(buffer.content), bufferSize) +}