Fix source file permissions in the project
[platform/core/security/tef-simulator.git] / simulatordaemon / src / TABinaryManager / TAUnpack.h
1 /*
2  * =====================================================================================
3  *
4  *       Filename:  TAUnpack.h
5  *
6  *    Description:  TAUnpack header file
7  *
8  *        Version:  1.0
9  *        Created:  05 May 2015 12:42:03  IST
10  *       Revision:  Original
11  *       Compiler:  gcc
12  *
13  *         Author:  Krishna (Kr), k.devale@samsung.com
14  *   Organization:  Samsung Electronics
15  *
16  * =====================================================================================
17  */
18
19 #ifndef TAUNPACK_H_
20 #define TAUNPACK_H_
21
22 /*-----------------------------------------------------------------------------
23  *  Include files
24  *-----------------------------------------------------------------------------*/
25 #include <string>
26 using namespace std;
27
28 /*-----------------------------------------------------------------------------
29  *  MACROS
30  *-----------------------------------------------------------------------------*/
31 #define PAGE_SIZE                               (1024)
32 #define SECURITY_HEADER_MAGIC1  (0x736D6153)
33 #define SECURITY_HEADER_MAGIC2  (0x2E676E75)
34
35 /*-----------------------------------------------------------------------------
36  *  Definitions
37  *-----------------------------------------------------------------------------*/
38 typedef struct {
39         unsigned int magic1;
40         unsigned int magic2;
41         unsigned int version;
42         unsigned int reserve;
43         unsigned int image_offset;
44         unsigned int image_size;
45         unsigned int sign_offset;
46         unsigned int sign_size;
47 } TAPackageHeaderV1;
48
49 typedef struct {
50         unsigned int magic1;
51         unsigned int magic2;
52         unsigned int version;
53         unsigned int reserve;
54         unsigned int image_offset;
55         unsigned int image_size;
56         unsigned int manifest_offset;
57         unsigned int manifest_size;
58         unsigned int cert_offset;
59         unsigned int cert_size;
60         unsigned int sign_offset;
61         unsigned int sign_size;
62 } TAPackageHeaderV2;
63
64 /*-----------------------------------------------------------------------------
65  *  Class definitions
66  *-----------------------------------------------------------------------------*/
67 class TAUnpack {
68 private:
69         TAUnpack();
70         static TAUnpack *instance;
71         void fixHeaderEndianness(TAPackageHeaderV2 *header);
72         unsigned int sizeWithoutPadding(const char* paddedData,
73             unsigned int paddedSize);
74 public:
75         static TAUnpack* getInstance();
76         int unpackTA(string path, string uuid);
77         virtual ~TAUnpack();
78 };
79
80 #endif /* TAUNPACK_H_ */