<DIV>Hi,</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks so much for&nbsp;your code!&nbsp; It's very clear now.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I modified sign2.c in the examples directory, but it failed to sign the document.&nbsp; Here are my modifications below:</DIV>
<DIV><FONT size=2>
<P>const xmlSecByte *keybuf = "secret";<BR>xmlSecSize keysize = 6;</P>
<P>/* create signature template for RSA-SHA1 enveloped signature */<BR>signNode = xmlSecTmplSignatureCreate(doc, xmlSecTransformExclC14NId, xmlSecTransformHmacSha1Id, NULL);</P>
<P>dsigCtx-&gt;signKey = CreateHmacKey(keybuf, keysize);</P>
<P>/* sign the template */<BR>if(xmlSecDSigCtxSign(dsigCtx, signNode) &lt; 0) {<BR>fprintf(stderr,"Error: signature failed\n");<BR>goto done;<BR>}</P>
<P>-----------------------------------------------------------------------------</P></FONT></DIV>
<DIV>These are the error messages:</DIV>
<DIV><FONT size=2>
<P>func=xmlSecKeyMatch:file=keys.c:line=703:obj=unknown:subj=xmlSecKeyIsValid(key):error=100:assertion:</P>
<P>func=xmlSecOpenSSLHmacSetKey:file=hmac.c:line=208:obj=unknown:subj=xmlSecKeyDataCheckId(value, xmlSecOpenSSLKeyDataHmacId):error=100:assertion:</P>
<P>func=xmlSecDSigCtxProcessKeyInfoNode:file=xmldsig.c:line=882:obj=unknown:subj=xmlSecTransformSetKey:error=1:xmlsec library function failed:transform=hmac-sha1</P>
<P>func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=565:obj=unknown:subj=xmlSecDSigCtxProcessKeyInfoNode:error=1:xmlsec library function failed:</P>
<P>func=xmlSecDSigCtxSign:file=xmldsig.c:line=303:obj=unknown:subj=xmlSecDSigCtxSigantureProcessNode:error=1:xmlsec library function failed:</P>
<P>Error: signature failed</P>
<P>------------------------------------------------------------------</P></FONT></DIV>
<DIV>Do you know why this is possibly failing?&nbsp; Am I missing a step here?</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks,</DIV>
<DIV>Monica</DIV>
<DIV><BR><BR><B><I>Aleksey Sanin &lt;aleksey@aleksey.com&gt;</I></B> wrote:</DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">Creating HMAC key in xmlsec:<BR>------------------------------<BR><BR>xmlSecKeyPtr CreateHmacKey(const xmlSecByte * buf, xmlSecSize size)<BR>{<BR>xmlSecKeyPtr key;<BR>xmlSecKeyDataPtr key_data;<BR>int ret;<BR><BR>key = xmlSecKeyCreate();<BR>if(!key) {<BR>return (NULL);<BR>}<BR><BR>key_data = xmlSecKeyEnsureData(key, xmlSecKeyDataHmacId);<BR>if(!key_data) {<BR>xmlSecKeyDestroy(key);<BR>return (NULL);<BR>}<BR><BR>ret = xmlSecOpenSSLKeyDataHmacSet(key_data, buf, size);<BR>if(ret &lt; 0) {<BR>xmlSecKeyDestroy(key);<BR>return (NULL);<BR>}<BR><BR>return (key);<BR>}<BR><BR>------------------------------<BR><BR><BR>Best,<BR>Aleksey<BR><BR><BR><BR></BLOCKQUOTE><p>
                <hr size=1>Do you Yahoo!?<br><a
href="http://vote.yahoo.com">vote.yahoo.com</a> - Register online to vote today!