Annotation of embedaddon/strongswan/src/libstrongswan/plugins/pem/pem_plugin.c, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2009 Martin Willi
3: * HSR Hochschule fuer Technik Rapperswil
4: *
5: * This program is free software; you can redistribute it and/or modify it
6: * under the terms of the GNU General Public License as published by the
7: * Free Software Foundation; either version 2 of the License, or (at your
8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9: *
10: * This program is distributed in the hope that it will be useful, but
11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13: * for more details.
14: */
15:
16: #include "pem_plugin.h"
17:
18: #include <library.h>
19:
20: #include "pem_builder.h"
21: #include "pem_encoder.h"
22:
23: typedef struct private_pem_plugin_t private_pem_plugin_t;
24:
25: /**
26: * private data of pem_plugin
27: */
28: struct private_pem_plugin_t {
29:
30: /**
31: * public functions
32: */
33: pem_plugin_t public;
34: };
35:
36: METHOD(plugin_t, get_name, char*,
37: private_pem_plugin_t *this)
38: {
39: return "pem";
40: }
41:
42: METHOD(plugin_t, get_features, int,
43: private_pem_plugin_t *this, plugin_feature_t *features[])
44: {
45: static plugin_feature_t f[] = {
46: /* private key PEM decoding */
47: PLUGIN_REGISTER(PRIVKEY, pem_private_key_load, FALSE),
48: PLUGIN_PROVIDE(PRIVKEY, KEY_ANY),
49: PLUGIN_DEPENDS(PRIVKEY, KEY_ANY),
50: PLUGIN_SDEPEND(HASHER, HASH_MD5),
51: PLUGIN_REGISTER(PRIVKEY, pem_private_key_load, FALSE),
52: PLUGIN_PROVIDE(PRIVKEY, KEY_RSA),
53: PLUGIN_DEPENDS(PRIVKEY, KEY_RSA),
54: PLUGIN_SDEPEND(HASHER, HASH_MD5),
55: PLUGIN_REGISTER(PRIVKEY, pem_private_key_load, FALSE),
56: PLUGIN_PROVIDE(PRIVKEY, KEY_ECDSA),
57: PLUGIN_DEPENDS(PRIVKEY, KEY_ECDSA),
58: PLUGIN_SDEPEND(HASHER, HASH_MD5),
59: PLUGIN_REGISTER(PRIVKEY, pem_private_key_load, FALSE),
60: PLUGIN_PROVIDE(PRIVKEY, KEY_DSA),
61: PLUGIN_DEPENDS(PRIVKEY, KEY_DSA),
62: PLUGIN_SDEPEND(HASHER, HASH_MD5),
63: PLUGIN_REGISTER(PRIVKEY, pem_private_key_load, FALSE),
64: PLUGIN_PROVIDE(PRIVKEY, KEY_BLISS),
65: PLUGIN_DEPENDS(PRIVKEY, KEY_BLISS),
66: PLUGIN_REGISTER(PRIVKEY, pem_private_key_load, FALSE),
67: PLUGIN_PROVIDE(PRIVKEY, KEY_ED25519),
68: PLUGIN_DEPENDS(PRIVKEY, KEY_ED25519),
69: PLUGIN_REGISTER(PRIVKEY, pem_private_key_load, FALSE),
70: PLUGIN_PROVIDE(PRIVKEY, KEY_ED448),
71: PLUGIN_DEPENDS(PRIVKEY, KEY_ED448),
72:
73: /* public key PEM decoding */
74: PLUGIN_REGISTER(PUBKEY, pem_public_key_load, FALSE),
75: PLUGIN_PROVIDE(PUBKEY, KEY_ANY),
76: PLUGIN_DEPENDS(PUBKEY, KEY_ANY),
77: PLUGIN_REGISTER(PUBKEY, pem_public_key_load, FALSE),
78: PLUGIN_PROVIDE(PUBKEY, KEY_RSA),
79: PLUGIN_DEPENDS(PUBKEY, KEY_RSA),
80: PLUGIN_REGISTER(PUBKEY, pem_public_key_load, FALSE),
81: PLUGIN_PROVIDE(PUBKEY, KEY_ECDSA),
82: PLUGIN_DEPENDS(PUBKEY, KEY_ECDSA),
83: PLUGIN_REGISTER(PUBKEY, pem_public_key_load, FALSE),
84: PLUGIN_PROVIDE(PUBKEY, KEY_DSA),
85: PLUGIN_DEPENDS(PUBKEY, KEY_DSA),
86: PLUGIN_REGISTER(PUBKEY, pem_public_key_load, FALSE),
87: PLUGIN_PROVIDE(PUBKEY, KEY_BLISS),
88: PLUGIN_DEPENDS(PUBKEY, KEY_BLISS),
89: PLUGIN_REGISTER(PUBKEY, pem_public_key_load, FALSE),
90: PLUGIN_PROVIDE(PUBKEY, KEY_ED25519),
91: PLUGIN_DEPENDS(PUBKEY, KEY_ED25519),
92: PLUGIN_REGISTER(PUBKEY, pem_public_key_load, FALSE),
93: PLUGIN_PROVIDE(PUBKEY, KEY_ED448),
94: PLUGIN_DEPENDS(PUBKEY, KEY_ED448),
95:
96: /* certificate PEM decoding */
97: PLUGIN_REGISTER(CERT_DECODE, pem_certificate_load, FALSE),
98: PLUGIN_PROVIDE(CERT_DECODE, CERT_ANY),
99: PLUGIN_SDEPEND(CERT_DECODE, CERT_X509),
100: PLUGIN_SDEPEND(CERT_DECODE, CERT_GPG),
101: PLUGIN_REGISTER(CERT_DECODE, pem_certificate_load, FALSE),
102: PLUGIN_PROVIDE(CERT_DECODE, CERT_X509),
103: PLUGIN_DEPENDS(CERT_DECODE, CERT_X509),
104: PLUGIN_REGISTER(CERT_DECODE, pem_certificate_load, FALSE),
105: PLUGIN_PROVIDE(CERT_DECODE, CERT_X509_CRL),
106: PLUGIN_DEPENDS(CERT_DECODE, CERT_X509_CRL),
107: PLUGIN_REGISTER(CERT_DECODE, pem_certificate_load, FALSE),
108: PLUGIN_PROVIDE(CERT_DECODE, CERT_X509_OCSP_REQUEST),
109: PLUGIN_DEPENDS(CERT_DECODE, CERT_X509_OCSP_REQUEST),
110: PLUGIN_REGISTER(CERT_DECODE, pem_certificate_load, FALSE),
111: PLUGIN_PROVIDE(CERT_DECODE, CERT_X509_OCSP_RESPONSE),
112: PLUGIN_DEPENDS(CERT_DECODE, CERT_X509_OCSP_RESPONSE),
113: PLUGIN_REGISTER(CERT_DECODE, pem_certificate_load, FALSE),
114: PLUGIN_PROVIDE(CERT_DECODE, CERT_X509_AC),
115: PLUGIN_DEPENDS(CERT_DECODE, CERT_X509_AC),
116: PLUGIN_REGISTER(CERT_DECODE, pem_certificate_load, FALSE),
117: PLUGIN_PROVIDE(CERT_DECODE, CERT_PKCS10_REQUEST),
118: PLUGIN_DEPENDS(CERT_DECODE, CERT_PKCS10_REQUEST),
119: PLUGIN_REGISTER(CERT_DECODE, pem_certificate_load, FALSE),
120: PLUGIN_PROVIDE(CERT_DECODE, CERT_TRUSTED_PUBKEY),
121: PLUGIN_DEPENDS(CERT_DECODE, CERT_TRUSTED_PUBKEY),
122: PLUGIN_REGISTER(CERT_DECODE, pem_certificate_load, FALSE),
123: PLUGIN_PROVIDE(CERT_DECODE, CERT_GPG),
124: PLUGIN_DEPENDS(CERT_DECODE, CERT_GPG),
125:
126: /* container PEM decoding */
127: PLUGIN_REGISTER(CONTAINER_DECODE, pem_container_load, FALSE),
128: PLUGIN_PROVIDE(CONTAINER_DECODE, CONTAINER_PKCS12),
129: PLUGIN_DEPENDS(CONTAINER_DECODE, CONTAINER_PKCS12),
130: };
131: *features = f;
132: return countof(f);
133: }
134:
135: METHOD(plugin_t, destroy, void,
136: private_pem_plugin_t *this)
137: {
138: lib->encoding->remove_encoder(lib->encoding, pem_encoder_encode);
139:
140: free(this);
141: }
142:
143: /*
144: * see header file
145: */
146: plugin_t *pem_plugin_create()
147: {
148: private_pem_plugin_t *this;
149:
150: INIT(this,
151: .public = {
152: .plugin = {
153: .get_name = _get_name,
154: .get_features = _get_features,
155: .destroy = _destroy,
156: },
157: },
158: );
159:
160: /* register PEM encoder */
161: lib->encoding->add_encoder(lib->encoding, pem_encoder_encode);
162:
163: return &this->public.plugin;
164: }
165:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>