- added and tested id_payload_t
[strongswan.git] / Source / charon / encoding / generator.c
index cb646fa..c239cf6 100644 (file)
@@ -40,6 +40,7 @@
 #include <encoding/payloads/ke_payload.h>
 #include <encoding/payloads/notify_payload.h>
 #include <encoding/payloads/nonce_payload.h>
+#include <encoding/payloads/id_payload.h>
 
 
 typedef struct private_generator_t private_generator_t;
@@ -759,6 +760,19 @@ static void generate_payload (private_generator_t *this,payload_t *payload)
                                this->write_bytes_to_buffer_at_offset(this,&int16_val,sizeof(u_int16_t),payload_length_position_offset);
                                break;
                        }
+                       case ID_DATA:
+                       {
+                               /* the ID Data value is generated from chunk */
+                               this->generate_from_chunk(this, rules[i].offset);
+                               
+                               u_int32_t payload_length_position_offset = this->last_payload_length_position_offset;
+                               /* Length of nonce PAYLOAD is calculated */
+                               u_int16_t length_of_id_payload = ID_PAYLOAD_HEADER_LENGTH + ((chunk_t *)(this->data_struct + rules[i].offset))->len;
+                               u_int16_t int16_val = htons(length_of_id_payload);
+
+                               this->write_bytes_to_buffer_at_offset(this,&int16_val,sizeof(u_int16_t),payload_length_position_offset);
+                               break;
+                       }
                        case PROPOSALS:
                        {
                                /* before iterative generate the transforms, store the current payload length position */