2012-10-25 8 views
5

पर विफल रहता है मैं pyxmlsec/xmlsec/libxml2 का उपयोग कर एक XML फ़ाइल पर हस्ताक्षर करने का प्रयास कर रहा हूं लेकिन यह विफल रहता है (sigCtx->signValueNode == NULL:error=100:assertion)।xmlsec1 साइन कमांड लाइन पर काम करता है लेकिन पाइथन कोड

जब मैं कमांड लाइन से चलाने इसे सुचारू रूप से काम करता है:

xmlsec1 sign --output signed.xml --pkcs12 c.pfx --pwd mypwd tobesigned.xml 

मेरे अजगर कोड:

libxml2.initParser() 
libxml2.substituteEntitiesDefault(1) 
xmlsec.init() 
xmlsec.cryptoAppInit(None) 
xmlsec.cryptoInit() 

doc_xml = libxml2.parseMemory(xml, len(xml)) 
signature_node = xmlsec.findNode(
    doc_xml.getRootElement(), 
    xmlsec.NodeSignature, 
    xmlsec.DSigNs, 
) 

signer = xmlsec.DSigCtx() 

key = xmlsec.cryptoAppKeyLoad(
    filename=str(self.issuer.certificate.path), 
    format=xmlsec.KeyDataFormatPkcs12, 
    pwd=str(self.issuer.certificate_password), 
    pwdCallback=None, 
    pwdCallbackCtx=None, 
) 

signer.signKey = key 
signer.sign(signature_node) # error! 
... 

पूर्ण त्रुटि ट्रेस: ​​

func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=463:obj=unknown:subj=dsigCtx->signValueNode == NULL:error=100:assertion: 
func=xmlSecDSigCtxSign:file=xmldsig.c:line=303:obj=unknown:subj=xmlSecDSigCtxSigantureProcessNode:error=1:xmlsec library function failed: 

किसी भी सुझाव दिए गए?

धन्यवाद!

उत्तर

5

xmlsec -DXMLSEC_NO_SIZE_T विकल्प और pXxmlsec -UXMLSEC_NO_SIZE_T के साथ संकलित किया गया था।

setup.py और अच्छी तरह से पैचिंग के बाद के बाद t = tuple(flag[2:].split('='))

if len(t) == 1: t = tuple([t[0],""]) 

वर्क्स निम्नलिखित पंक्ति जोड़ संपादित करें।

सुनिश्चित करें कि साफ, पुनर्निर्माण और पुनर्स्थापित करें!

+1

फिक्स्ड कांटा: https://github.com/aricaldeira/pyxmlsec – alanjds

संबंधित मुद्दे

 संबंधित मुद्दे