4
* @key_file: the key filename.
6
* Creates simple keys manager and load RSA key from #key_file in it.
7
* The caller is responsible for destroing returned keys manager using
8
* @xmlSecKeysMngrDestroy.
10
* Returns the pointer to newly created keys manager or NULL if an error
15
load_rsa_keys(const char* key_file, const char* cert_file, const char* key_name) {
16
xmlSecKeysMngrPtr mngr;
22
/* create and initialize keys manager, we use a simple list based
23
* keys manager, implement your own xmlSecKeysStore klass if you need
24
* something more sophisticated
26
mngr = xmlSecKeysMngrCreate();
28
fprintf(stderr, "Error: failed to create keys manager.\n");
31
if(xmlSecCryptoAppDefaultKeysMngrInit(mngr) < 0) {
32
fprintf(stderr, "Error: failed to initialize keys manager.\n");
33
xmlSecKeysMngrDestroy(mngr);
37
/* load private RSA key */
39
#if XMLSEC_VERSION_MINOR >= 2
41
key = xmlSecCryptoAppKeyLoad(key_file, xmlSecKeyDataFormatCertPem /*Der,Binary,Unknown*/, NULL/*pwd*/, NULL/*pwd callback*/, NULL/*pwd callback ctx*/);
44
key = xmlSecCryptoAppKeyLoad(key_file, xmlSecKeyDataFormatPem /*Der,Binary,Unknown*/, NULL/*pwd*/, NULL/*pwd callback*/, NULL/*pwd callback ctx*/);
47
fprintf(stderr,"Error: failed to load rsa key from file \"%s\"\n", key_file);
48
xmlSecKeysMngrDestroy(mngr);
53
if(xmlSecCryptoAppKeyCertLoad(key, cert_file, xmlSecKeyDataFormatPem) < 0) {
54
fprintf(stderr,"Error: failed to load pem certificate \"%s\"\n", cert_file);
60
/* set key name to the file name, this is just an example! */
61
if(xmlSecKeySetName(key, BAD_CAST key_name) < 0) {
62
fprintf(stderr,"Error: failed to set key name for key from \"%s\"\n", key_file);
63
xmlSecKeyDestroy(key);
64
xmlSecKeysMngrDestroy(mngr);
68
/* add key to keys manager, from now on keys manager is responsible
71
if(xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key) < 0) {
72
fprintf(stderr,"Error: failed to add key from \"%s\" to keys manager\n", key_file);
73
xmlSecKeyDestroy(key);
74
xmlSecKeysMngrDestroy(mngr);