forked from openkylin/xmlsec1
119 lines
4.9 KiB
HTML
119 lines
4.9 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
<title>Using keys manager for verification/decryption.: XML Security Library Reference Manual</title>
|
||
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
|
||
<link rel="home" href="index.html" title="XML Security Library Reference Manual">
|
||
<link rel="up" href="xmlsec-notes-keysmngr.html" title="Keys manager.">
|
||
<link rel="prev" href="xmlsec-notes-keys-manager-sign-enc.html" title="Using keys manager for signatures/encryption.">
|
||
<link rel="next" href="xmlsec-notes-custom-keys-store.html" title="Implementing a custom keys store.">
|
||
<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
|
||
<link rel="stylesheet" href="style.css" type="text/css">
|
||
</head>
|
||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
|
||
<td width="100%" align="left" class="shortcuts"></td>
|
||
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
|
||
<td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
|
||
<td><a accesskey="p" href="xmlsec-notes-keys-manager-sign-enc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
|
||
<td><a accesskey="n" href="xmlsec-notes-custom-keys-store.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
|
||
</tr></table>
|
||
<div class="sect1">
|
||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||
<a name="xmlsec-notes-keys-mngr-verify-decrypt"></a>Using keys manager for verification/decryption.</h2></div></div></div>
|
||
<p>If more than one key could be used for signature or encryption,
|
||
then using <em class="structfield"><code>signKey</code></em> member of
|
||
<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a> structure or
|
||
<em class="structfield"><code>encKey</code></em> member of
|
||
<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a> structure
|
||
is not possible. Instead, the application should load known keys in
|
||
the keys manager and use <dsig:KeyName/> element to specify
|
||
the key name.
|
||
</p>
|
||
<p>
|
||
</p>
|
||
<div class="example">
|
||
<a name="id-1.2.10.5.3.1"></a><p class="title"><b>Example 18. Initializing keys manager and loading DES keys from binary files.</b></p>
|
||
<div class="example-contents">
|
||
<pre class="programlisting">
|
||
/**
|
||
* load_des_keys:
|
||
* @files: the list of filenames.
|
||
* @files_size: the number of filenames in #files.
|
||
*
|
||
* Creates default keys manager and load DES keys from #files in it.
|
||
* The caller is responsible for destroing returned keys manager using
|
||
* @xmlSecKeysMngrDestroy.
|
||
*
|
||
* Returns the pointer to newly created keys manager or NULL if an error
|
||
* occurs.
|
||
*/
|
||
xmlSecKeysMngrPtr
|
||
load_des_keys(char** files, int files_size) {
|
||
xmlSecKeysMngrPtr mngr;
|
||
xmlSecKeyPtr key;
|
||
int i;
|
||
|
||
assert(files);
|
||
assert(files_size > 0);
|
||
|
||
/* create and initialize keys manager, we use a default list based
|
||
* keys manager, implement your own xmlSecKeysStore klass if you need
|
||
* something more sophisticated
|
||
*/
|
||
mngr = xmlSecKeysMngrCreate();
|
||
if(mngr == NULL) {
|
||
fprintf(stderr, "Error: failed to create keys manager.\n");
|
||
return(NULL);
|
||
}
|
||
if(xmlSecCryptoAppDefaultKeysMngrInit(mngr) < 0) {
|
||
fprintf(stderr, "Error: failed to initialize keys manager.\n");
|
||
xmlSecKeysMngrDestroy(mngr);
|
||
return(NULL);
|
||
}
|
||
|
||
for(i = 0; i < files_size; ++i) {
|
||
assert(files[i]);
|
||
|
||
/* load DES key */
|
||
key = xmlSecKeyReadBinaryFile(xmlSecKeyDataDesId, files[i]);
|
||
if(key == NULL) {
|
||
fprintf(stderr,"Error: failed to load des key from binary file \"%s\"\n", files[i]);
|
||
xmlSecKeysMngrDestroy(mngr);
|
||
return(NULL);
|
||
}
|
||
|
||
/* set key name to the file name, this is just an example! */
|
||
if(xmlSecKeySetName(key, BAD_CAST files[i]) < 0) {
|
||
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", files[i]);
|
||
xmlSecKeyDestroy(key);
|
||
xmlSecKeysMngrDestroy(mngr);
|
||
return(NULL);
|
||
}
|
||
|
||
/* add key to keys manager, from now on keys manager is responsible
|
||
* for destroying key
|
||
*/
|
||
if(xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key) < 0) {
|
||
fprintf(stderr,"Error: failed to add key from \"%s\" to keys manager\n", files[i]);
|
||
xmlSecKeyDestroy(key);
|
||
xmlSecKeysMngrDestroy(mngr);
|
||
return(NULL);
|
||
}
|
||
}
|
||
|
||
return(mngr);
|
||
}
|
||
</pre>
|
||
<p><a class="link" href="xmlsec-decrypt-with-keys-mngr.html#xmlsec-example-decrypt2" title="decrypt2.c">Full program listing</a></p>
|
||
</div>
|
||
</div>
|
||
<p><br class="example-break">
|
||
</p>
|
||
</div>
|
||
<div class="footer">
|
||
<hr>Generated by GTK-Doc V1.27</div>
|
||
</body>
|
||
</html>
|