aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/encoding/generator.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-08-17 17:36:09 +0200
committerMartin Willi <martin@revosec.ch>2010-08-19 19:02:33 +0200
commitb519071299562400b8f3f3a7c43e5d2d2009c08b (patch)
tree790c44cd9f26c019170cebdd7c95de17b8c4d73e /src/libcharon/encoding/generator.c
parent7fc4b0814fa3aeefd1d9685e99900e48a7cfbab2 (diff)
downloadstrongswan-b519071299562400b8f3f3a7c43e5d2d2009c08b.tar.bz2
strongswan-b519071299562400b8f3f3a7c43e5d2d2009c08b.tar.xz
Use AEAD wrapper for encryption payload encryption/decryption
Diffstat (limited to 'src/libcharon/encoding/generator.c')
-rw-r--r--src/libcharon/encoding/generator.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/src/libcharon/encoding/generator.c b/src/libcharon/encoding/generator.c
index c114eb2fd..224f76fce 100644
--- a/src/libcharon/encoding/generator.c
+++ b/src/libcharon/encoding/generator.c
@@ -463,24 +463,15 @@ static void generate_from_chunk(private_generator_t *this, u_int32_t offset)
write_bytes_to_buffer(this, value->ptr, value->len);
}
-METHOD(generator_t, write_to_chunk, void,
- private_generator_t *this, chunk_t *data)
+METHOD(generator_t, get_chunk, chunk_t,
+ private_generator_t *this, u_int32_t **lenpos)
{
- u_int32_t len, val;
+ chunk_t data;
- len = get_length(this);
-
- /* write length into header length field */
- if (this->header_length_position_offset > 0)
- {
- val = htonl(len);
- write_bytes_to_buffer_at_offset(this, &val, sizeof(u_int32_t),
- this->header_length_position_offset);
- }
- *data = chunk_alloc(len);
- memcpy(data->ptr, this->buffer, len);
-
- DBG3(DBG_ENC, "generated data of this generator %B", data);
+ *lenpos = (u_int32_t*)(this->buffer + this->header_length_position_offset);
+ data = chunk_create(this->buffer, get_length(this));
+ DBG3(DBG_ENC, "generated data of this generator %B", &data);
+ return data;
}
METHOD(generator_t, generate_payload, void,
@@ -864,7 +855,7 @@ generator_t *generator_create()
INIT(this,
.public = {
- .write_to_chunk = _write_to_chunk,
+ .get_chunk = _get_chunk,
.generate_payload = _generate_payload,
.destroy = _destroy,
},