2 years ago
#49994
killsteenkill
golang/goxmldig - Signed element verification failed
I am trying to sign a xml file in Golang. I have used goxmldig to create the digital signature. I am unable to sign any document except very simple elements without any child in etree. I have used the example of signing and validate function from goxmldig. Here is my code:
faxml := etree.NewElement("faxml")
faxml.CreateAttr("xsi:noNamespaceSchemaLocation", "CO_NEF.xsd")
faxml.CreateAttr("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
faxml.CreateAttr("Id", "hasdfuw7862389rjkhasd23asdf2w3wsd")
header := faxml.CreateElement("header")
header.CreateElement("extsysname").SetText("COAPI")
header.CreateElement("batchnumext").SetText("11111")
paymentList := faxml.CreateElement("paymentlist")
element1 := paymentList.CreateElement("payment")
element1.CreateElement("paymentrefno").SetText("p1")
element1.CreateElement("Amount").SetText("2200")
signingKey, _, err := getSigningCertificateKey()
if err != nil {
fmt.Println(err.Error())
}
ctx := dsig.NewDefaultSigningContext(signingKey)
ctx.Canonicalizer = dsig.MakeC14N10RecCanonicalizer()
ctx.IdAttribute = "Id"
signedElement, err := ctx.SignEnveloped(faxml)
if err != nil {
panic(err)
}
fmt.Println("=============== Signed Element =============")
fmt.Printf("%#v\n", signedElement)
fmt.Println("=============== End Element =============")
fmt.Println("================= Signed Element Validation==============")
fmt.Println("--validated errors--")
validateCert, err := rsapem.ParseCertificateFromFile(conf.String("", configKeyPath, "signing-file.certificate"))
if err != nil {
fmt.Println(fmt.Sprintf("validate Certificate parse Error: %s", err.Error()))
}
validatedStr, err := validate(validateCert, signedElement)
if err != nil {
fmt.Println(fmt.Sprintf("signed element validation failed: %s", err.Error()))
}
fmt.Println("--validated string--")
fmt.Println(validatedStr)
fmt.Println("================= End Signed Element Validation==============")
This always returns a error of: signed element validation failed: Missing signature referencing the top-level element
xml
go
xml-signature
0 Answers
Your Answer