Annotation of embedaddon/strongswan/src/libcharon/encoding/payloads/transform_substructure.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2005-2006 Martin Willi
3: * Copyright (C) 2005 Jan Hutter
4: * HSR Hochschule fuer Technik Rapperswil
5: *
6: * This program is free software; you can redistribute it and/or modify it
7: * under the terms of the GNU General Public License as published by the
8: * Free Software Foundation; either version 2 of the License, or (at your
9: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
10: *
11: * This program is distributed in the hope that it will be useful, but
12: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14: * for more details.
15: */
16:
17: /**
18: * @defgroup transform_substructure transform_substructure
19: * @{ @ingroup payloads
20: */
21:
22: #ifndef TRANSFORM_SUBSTRUCTURE_H_
23: #define TRANSFORM_SUBSTRUCTURE_H_
24:
25: typedef struct transform_substructure_t transform_substructure_t;
26:
27: #include <library.h>
28: #include <encoding/payloads/payload.h>
29: #include <encoding/payloads/transform_attribute.h>
30: #include <collections/linked_list.h>
31: #include <crypto/diffie_hellman.h>
32: #include <crypto/signers/signer.h>
33: #include <crypto/prfs/prf.h>
34: #include <crypto/crypters/crypter.h>
35: #include <crypto/proposal/proposal.h>
36:
37: /**
38: * IKEv1 Value for a transform payload.
39: */
40: #define TRANSFORM_TYPE_VALUE 3
41:
42: /**
43: * Class representing an IKEv1/IKEv2 transform substructure.
44: */
45: struct transform_substructure_t {
46:
47: /**
48: * The payload_t interface.
49: */
50: payload_t payload_interface;
51:
52: /**
53: * Adds a transform_attribute_t object to this object.
54: *
55: * @param proposal transform_attribute_t object to add
56: */
57: void (*add_transform_attribute) (transform_substructure_t *this,
58: transform_attribute_t *attribute);
59:
60: /**
61: * Sets the next_payload field of this substructure
62: *
63: * If this is the last transform, next payload field is set to 0,
64: * otherwise to 3
65: *
66: * @param is_last When TRUE, next payload field is set to 0, otherwise to 3
67: */
68: void (*set_is_last_transform) (transform_substructure_t *this, bool is_last);
69:
70: /**
71: * Get transform type (IKEv2) or the transform number (IKEv1).
72: *
73: * @return Transform type of current transform substructure.
74: */
75: uint8_t (*get_transform_type_or_number) (transform_substructure_t *this);
76:
77: /**
78: * Get transform id of the current transform.
79: *
80: * @return Transform id of current transform substructure.
81: */
82: uint16_t (*get_transform_id) (transform_substructure_t *this);
83:
84: /**
85: * Create an enumerator over transform attributes.
86: *
87: * @return enumerator over transform_attribute_t*
88: */
89: enumerator_t* (*create_attribute_enumerator)(transform_substructure_t *this);
90:
91: /**
92: * Destroys an transform_substructure_t object.
93: */
94: void (*destroy) (transform_substructure_t *this);
95: };
96:
97: /**
98: * Creates an empty transform_substructure_t object.
99: *
100: * @param type PLV2_TRANSFORM_SUBSTRUCTURE or PLV1_TRANSFORM_SUBSTRUCTURE
101: * @return created transform_substructure_t object
102: */
103: transform_substructure_t *transform_substructure_create(payload_type_t type);
104:
105: /**
106: * Creates an empty transform_substructure_t object.
107: *
108: * @param type PLV2_TRANSFORM_SUBSTRUCTURE or PLV1_TRANSFORM_SUBSTRUCTURE
109: * @param type_or_number Type (IKEv2) or number (IKEv1) of transform
110: * @param id transform id specific for the transform type
111: * @return transform_substructure_t object
112: */
113: transform_substructure_t *transform_substructure_create_type(payload_type_t type,
114: uint8_t type_or_number, uint16_t id);
115:
116: #endif /** TRANSFORM_SUBSTRUCTURE_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>