hello,<br>Thanks.<br>I user the following code to load public key from a certificate:<br><br>pubkey2 = xmlSecKeyCreate();<br>xmlSecCryptoAppKeyCertLoad(pubkey2, &quot;cert.pem&quot;, xmlSecKeyDataFormatPem);<br>dsigCtx-&gt;signKey = pubkey2;<br>
if (xmlSecDSigCtxVerify(dsigCtx, signature_nd) &lt; 0) {<br>&nbsp;&nbsp; xmlSecDSigCtxDestroy(dsigCtx);<br>&nbsp;&nbsp; if (keys_manager) xmlSecKeysMngrDestroy(keys_manager);<br>&nbsp;&nbsp; std::cerr&lt;&lt;&quot;Signature verification failed (with trusted ca path)&quot;&lt;&lt;std::endl;<br>
&nbsp;&nbsp; return false;<br>&nbsp;}<br><br>But I got the error:<br><br>func=xmlSecKeyMatch:file=keys.c:line=703:obj=unknown:subj=xmlSecKeyIsValid(key):error=100:assertion:<br>func=xmlSecOpenSSLEvpSignatureSetKey:file=signatures.c:line=263:obj=unknown:subj=xmlSecKeyCheckId(key, ctx-&gt;keyId):error=100:assertion:<br>
func=xmlSecDSigCtxProcessKeyInfoNode:file=xmldsig.c:line=882:obj=unknown:subj=xmlSecTransformSetKey:error=1:xmlsec library function failed:transform=rsa-sha1<br>func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=565:obj=unknown:subj=xmlSecDSigCtxProcessKeyInfoNode:error=1:xmlsec library function failed:<br>
func=xmlSecDSigCtxVerify:file=xmldsig.c:line=366:obj=unknown:subj=xmlSecDSigCtxSigantureProcessNode:error=1:xmlsec library function failed:<br><br><br>How ever if I load the key from a public key file (which is convert from certificate by using openssl command), it works well.<br>
<br>Some hint?<br><br>Thanks<br>Weizhong<br><br><br><div class="gmail_quote">On Mon, Jun 30, 2008 at 4:20 AM, Aleksey Sanin &lt;<a href="mailto:aleksey@aleksey.com">aleksey@aleksey.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<a href="https://www.aleksey.com/xmlsec/api/xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYFROMCERTLOADBIO" target="_blank">https://www.aleksey.com/xmlsec/api/xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYFROMCERTLOADBIO</a><br>

<br>
Aleksey<br>
<br>
wz qiang wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">
hello Aleksey and Ed,<br>
I use:<br>
openssl x509 -inform pem -in cert.pem -pubkey -noout &gt; publickey.pem<br>
&nbsp;to extract the public key from certificate, and then load the public key into keymanager:<br>
&nbsp;key = xmlSecCryptoAppKeyLoad(publickeyfile, xmlSecKeyDataFormatPem, NULL, NULL, NULL);<br>
xmlSecCryptoAppDefaultKeysMngrAdoptKey(keys_mngr, key);<br>
&nbsp;It seems to work.<br>
&nbsp;My following question is, is there some api in xmlsec which I can use to extract public key directly from certificate. I know in openssl there is X509_get_pubkey(certfile), but the return type is EVP_PKEY, here we need xmlSecKeyPtr.<br>

&nbsp;Thanks<br>
Weizhong<br>
<br>
<br></div><div><div></div><div class="Wj3C7c">
&nbsp;On 6/26/08, *Aleksey Sanin* &lt;<a href="mailto:aleksey@aleksey.com" target="_blank">aleksey@aleksey.com</a> &lt;mailto:<a href="mailto:aleksey@aleksey.com" target="_blank">aleksey@aleksey.com</a>&gt;&gt; wrote:<br>
<br>
 &nbsp; &nbsp;Ah, I see.... I guess it is a copy/paste error for the comment :)<br>
<br>
 &nbsp; &nbsp;Aleksey<br>
<br>
<br>
 &nbsp; &nbsp;Ed Shallow wrote:<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;I believe Weizhong is asking why is the &quot;private&quot; key being<br>
 &nbsp; &nbsp; &nbsp; &nbsp;loaded &nbsp;if one simply wants to encrypt.<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Loading a public certificate &nbsp;in .pem &nbsp;should &nbsp;be appropriate.<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Why is private even mentioned ?<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Aleksey Sanin wrote:<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;The session key is created for you automatically if you specify<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;that you want AES, DES, ... encryption for the data. Look at the<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xmlsec/tests/ examples.<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Aleksey<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wz qiang wrote:<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hi Aleksey and others,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; In encrypt3.c, there is one line for loading private key.<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* load private RSA key */<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key = xmlSecCryptoAppKeyLoad(key_file,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xmlSecKeyDataFormatPem, NULL, NULL, NULL);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; I my understanding, normally the public key is used for<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;encrypting the session key, and then on the other side<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private key is used for decrypting the session key<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(session key is used for encrypting the data). So my<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;question is, how I can do like that by using xmlsec API?<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Thanks in advance<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Weizhong Qiang<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;------------------------------------------------------------------------<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_______________________________________________<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xmlsec mailing list<br></div></div>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="mailto:xmlsec@aleksey.com" target="_blank">xmlsec@aleksey.com</a> &lt;mailto:<a href="mailto:xmlsec@aleksey.com" target="_blank">xmlsec@aleksey.com</a>&gt;<div class="Ih2E3d"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.aleksey.com/mailman/listinfo/xmlsec" target="_blank">http://www.aleksey.com/mailman/listinfo/xmlsec</a><br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_______________________________________________<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xmlsec mailing list<br></div>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="mailto:xmlsec@aleksey.com" target="_blank">xmlsec@aleksey.com</a> &lt;mailto:<a href="mailto:xmlsec@aleksey.com" target="_blank">xmlsec@aleksey.com</a>&gt;<div class="Ih2E3d"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.aleksey.com/mailman/listinfo/xmlsec" target="_blank">http://www.aleksey.com/mailman/listinfo/xmlsec</a><br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;_______________________________________________<br>
 &nbsp; &nbsp; &nbsp; &nbsp;xmlsec mailing list<br></div>
 &nbsp; &nbsp; &nbsp; &nbsp;<a href="mailto:xmlsec@aleksey.com" target="_blank">xmlsec@aleksey.com</a> &lt;mailto:<a href="mailto:xmlsec@aleksey.com" target="_blank">xmlsec@aleksey.com</a>&gt;<div class="Ih2E3d"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.aleksey.com/mailman/listinfo/xmlsec" target="_blank">http://www.aleksey.com/mailman/listinfo/xmlsec</a><br>
<br>
 &nbsp; &nbsp;_______________________________________________<br>
 &nbsp; &nbsp;xmlsec mailing list<br></div>
 &nbsp; &nbsp;<a href="mailto:xmlsec@aleksey.com" target="_blank">xmlsec@aleksey.com</a> &lt;mailto:<a href="mailto:xmlsec@aleksey.com" target="_blank">xmlsec@aleksey.com</a>&gt;<div class="Ih2E3d"><br>
 &nbsp; &nbsp;<a href="http://www.aleksey.com/mailman/listinfo/xmlsec" target="_blank">http://www.aleksey.com/mailman/listinfo/xmlsec</a><br>
<br>
<br>
</div></blockquote>
</blockquote></div><br>