/xmlbench/trunk

To get this branch, use:
bzr branch http://darksoft.org/webbzr/xmlbench/trunk

« back to all changes in this revision

Viewing changes to security/libxml1.h

  • Committer: Suren A. Chilingaryan
  • Date: 2009-02-16 09:27:17 UTC
  • Revision ID: csa@dside.dyndns.org-20090216092717-wipyvaaw2srxhgns
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <assert.h>
 
2
/**
 
3
 * load_rsa_keys:
 
4
 * @key_file:           the key filename.
 
5
 *
 
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.
 
9
 *
 
10
 * Returns the pointer to newly created keys manager or NULL if an error
 
11
 * occurs.
 
12
 */
 
13
 
 
14
xmlSecKeysMngrPtr 
 
15
load_rsa_keys(const char* key_file, const char* cert_file, const char* key_name) {
 
16
    xmlSecKeysMngrPtr mngr;
 
17
    xmlSecKeyPtr key;
 
18
    
 
19
    assert(key_file);
 
20
    assert(key_name);
 
21
    
 
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 
 
25
     */
 
26
    mngr = xmlSecKeysMngrCreate();
 
27
    if(mngr == NULL) {
 
28
        fprintf(stderr, "Error: failed to create keys manager.\n");
 
29
        return(NULL);
 
30
    }
 
31
    if(xmlSecCryptoAppDefaultKeysMngrInit(mngr) < 0) {
 
32
        fprintf(stderr, "Error: failed to initialize keys manager.\n");
 
33
        xmlSecKeysMngrDestroy(mngr);
 
34
        return(NULL);
 
35
    }    
 
36
    
 
37
    /* load private RSA key */
 
38
 
 
39
#if XMLSEC_VERSION_MINOR >= 2
 
40
    if (!cert_file)
 
41
        key = xmlSecCryptoAppKeyLoad(key_file, xmlSecKeyDataFormatCertPem /*Der,Binary,Unknown*/, NULL/*pwd*/, NULL/*pwd callback*/, NULL/*pwd callback ctx*/);
 
42
    else
 
43
#endif
 
44
        key = xmlSecCryptoAppKeyLoad(key_file, xmlSecKeyDataFormatPem /*Der,Binary,Unknown*/, NULL/*pwd*/, NULL/*pwd callback*/, NULL/*pwd callback ctx*/);
 
45
    
 
46
    if(key == NULL) {
 
47
        fprintf(stderr,"Error: failed to load rsa key from file \"%s\"\n", key_file);
 
48
        xmlSecKeysMngrDestroy(mngr);
 
49
        return(NULL);
 
50
    }
 
51
    
 
52
    if (cert_file) {
 
53
        if(xmlSecCryptoAppKeyCertLoad(key, cert_file, xmlSecKeyDataFormatPem) < 0) {
 
54
                fprintf(stderr,"Error: failed to load pem certificate \"%s\"\n", cert_file);
 
55
                return(NULL);
 
56
        }
 
57
    }
 
58
    
 
59
 
 
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);
 
65
        return(NULL);
 
66
    }
 
67
        
 
68
    /* add key to keys manager, from now on keys manager is responsible 
 
69
     * for destroying key 
 
70
     */
 
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);
 
75
        return(NULL);
 
76
    }
 
77
 
 
78
    return(mngr);
 
79
}