Annotation of embedaddon/strongswan/src/libstrongswan/credentials/keys/shared_key.c, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2007 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 "shared_key.h"
17:
18: ENUM(shared_key_type_names, SHARED_ANY, SHARED_PPK,
19: "ANY",
20: "IKE",
21: "EAP",
22: "PRIVATE_KEY_PASS",
23: "PIN",
24: "NTLM",
25: "PPK",
26: );
27:
28: typedef struct private_shared_key_t private_shared_key_t;
29:
30: /**
31: * private data of shared_key
32: */
33: struct private_shared_key_t {
34:
35: /**
36: * public functions
37: */
38: shared_key_t public;
39:
40: /**
41: * type of this shared key
42: */
43: shared_key_type_t type;
44:
45: /**
46: * associated shared key data
47: */
48: chunk_t key;
49:
50: /**
51: * reference counter
52: */
53: refcount_t ref;
54: };
55:
56: METHOD(shared_key_t, get_type, shared_key_type_t,
57: private_shared_key_t *this)
58: {
59: return this->type;
60: }
61:
62: METHOD(shared_key_t, get_key, chunk_t,
63: private_shared_key_t *this)
64: {
65: return this->key;
66: }
67:
68: METHOD(shared_key_t, get_ref, shared_key_t*,
69: private_shared_key_t *this)
70: {
71: ref_get(&this->ref);
72: return &this->public;
73: }
74:
75: METHOD(shared_key_t, destroy, void,
76: private_shared_key_t *this)
77: {
78: if (ref_put(&this->ref))
79: {
80: free(this->key.ptr);
81: free(this);
82: }
83: }
84:
85: /*
86: * see header file
87: */
88: shared_key_t *shared_key_create(shared_key_type_t type, chunk_t key)
89: {
90: private_shared_key_t *this;
91:
92: INIT(this,
93: .public = {
94: .get_type = _get_type,
95: .get_key = _get_key,
96: .get_ref = _get_ref,
97: .destroy = _destroy,
98: },
99: .type = type,
100: .key = key,
101: .ref = 1,
102: );
103:
104: return &this->public;
105: }
106:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>