e6368fc43b4f4e5d47a6b6c58ab1bf71584b119f
[framework/web/wrt-commons.git] / modules / vcore / src / vcore / SignatureReader.h
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /*
17  * @file        SignatureReader.h
18  * @author      Bartlomiej Grzelewski (b.grzelewski@samsung.com)
19  * @version     1.0
20  * @brief       SignatureReader is used to parse widget digital signature.
21  */
22 #ifndef _SIGNATUREREADER_H_
23 #define _SIGNATUREREADER_H_
24
25 #include <map>
26 #include  <dpl/log/log.h>
27
28 #include "SignatureData.h"
29 #include "ParserSchema.h"
30
31 namespace ValidationCore {
32 class SignatureReader
33 {
34   public:
35     class Exception
36     {
37       public:
38         DECLARE_EXCEPTION_TYPE(DPL::Exception, Base)
39         DECLARE_EXCEPTION_TYPE(Base, TargetRestrictionException)
40     };
41
42     SignatureReader();
43
44     void initialize(SignatureData &data,
45             const std::string &xmlscheme)
46     {
47         m_parserSchema.initialize(
48             data.getSignatureFileName(), true, SaxReader::VALIDATION_XMLSCHEME,
49             xmlscheme);
50     }
51
52     void read(SignatureData &data)
53     {
54         m_parserSchema.read(data);
55     }
56
57   private:
58     void blankFunction(SignatureData &)
59     {
60     }
61
62     void tokenKeyInfo(SignatureData &signatureData);
63     void tokenKeyModulus(SignatureData &signatureData);
64     void tokenKeyExponent(SignatureData &signatureData);
65     void tokenX509Data(SignatureData &signatureData);
66     void tokenX509Certificate(SignatureData &signatureData);
67     void tokenPublicKey(SignatureData &signatureData);
68     void tokenNamedCurve(SignatureData &signatureData);
69     void tokenRole(SignatureData &signatureData);
70     void tokenProfile(SignatureData &signatureData);
71     void tokenObject(SignatureData &signatureData);
72     void tokenSignatureProperties(SignatureData &signatureData);
73     void tokenTargetRestriction(SignatureData &signatureData);
74
75     void tokenEndKeyInfo(SignatureData &signatureData);
76     // KW     void tokenEndKeyName(SignatureData &signatureData);
77     void tokenEndRSAKeyValue(SignatureData &signatureData);
78     void tokenEndKeyModulus(SignatureData &signatureData);
79     void tokenEndKeyExponent(SignatureData &signatureData);
80     void tokenEndX509Data(SignatureData &signatureData);
81     void tokenEndX509Certificate(SignatureData &signatureData);
82     void tokenEndPublicKey(SignatureData &signatureData);
83     void tokenEndECKeyValue(SignatureData &signatureData);
84     void tokenEndIdentifier(SignatureData &signatureData);
85     void tokenEndObject(SignatureData &signatureData);
86
87     // DSA key components
88     void tokenEndDSAPComponent(SignatureData& signatureData);
89     void tokenEndDSAQComponent(SignatureData& signatureData);
90     void tokenEndDSAGComponent(SignatureData& signatureData);
91     void tokenEndDSAYComponent(SignatureData& signatureData);
92     void tokenEndDSAJComponent(SignatureData& signatureData);
93
94     void tokenEndDSAKeyValue(SignatureData& signatureData);
95
96     void tokenEndDSASeedComponent(SignatureData& signatureData);
97     void tokenEndDSAPGenCounterComponent(SignatureData& signatureData);
98
99     // temporary values required due reference parsing process
100     // optional parameters for dsa
101     std::string m_dsaKeyPComponent;
102     std::string m_dsaKeyQComponent;
103     std::string m_dsaKeyGComponent;
104     std::string m_dsaKeyYComponent;
105     std::string m_dsaKeyJComponent;
106     std::string m_dsaKeySeedComponent;
107     std::string m_dsaKeyPGenCounter;
108     // temporary values of ecdsa key
109     std::string m_publicKey;
110     std::string m_nameCurveURI;
111     std::string m_modulus;
112     std::string m_exponent;
113
114     // temporary values required due Object parsing
115     int m_signaturePropertiesCounter;
116     bool m_targetRestrictionObjectFound;
117
118     ParserSchema<SignatureReader, SignatureData> m_parserSchema;
119 };
120 }
121
122 #endif