/ src / BerSequenceObject.cpp
BerSequenceObject.cpp
 1  /**
 2   * @file BerSequenceObject.cpp
 3   * @author Rene Ceska xceska06 (xceska06@stud.fit.vutbr.cz)
 4   * @date 2023-11-19
 5   */
 6  #include "inc/BerSequenceObject.h"
 7  
 8  berObjectTypes BerSequenceObject::getBerObjectType() {
 9    return berSequenceObject;
10  }
11  
12  long long int BerSequenceObject::getLenght() {
13  
14    long long int dataLenght = 0;
15  
16    for (long unsigned int i = 0; i < objects.size(); i++) {
17      dataLenght += objects[i]->getLenght();
18    }
19  
20    return BER_TAG_LENGTH + BER_LENGTH_OF_LENGTH_TAG + BER_4BYTE_LENGTH_LENGTH +
21           dataLenght;
22  }
23  
24  std::vector<unsigned char> BerSequenceObject::getBerRepresentation() {
25    std::vector<unsigned char> berRepresentation;
26    long long int dataLenght = 0;
27    for (long unsigned int i = 0; i < objects.size(); i++) {
28      dataLenght += objects[i]->getLenght();
29    }
30  
31    berRepresentation.push_back(tag);
32    AppendLenght4Bytes(berRepresentation, dataLenght);
33    for (long unsigned int i = 0; i < objects.size(); i++) {
34      std::vector<unsigned char> objectRepresentation =
35          objects[i]->getBerRepresentation();
36      berRepresentation.insert(berRepresentation.end(),
37                               objectRepresentation.begin(),
38                               objectRepresentation.end());
39    }
40  
41    return berRepresentation;
42  }
43  
44  BerSequenceObject::BerSequenceObject() { tag = BER_SEQUENCE_C; }
45  
46  int BerSequenceObject::GetTag() { return tag; }
47  
48  BerSequenceObject::BerSequenceObject(int tag) { this->tag = tag; }
49  
50  BerSequenceObject::~BerSequenceObject() {
51    for (long unsigned int i = 0; i < objects.size(); i++) {
52      delete objects[i];
53    }
54  }