Refactor SignatureValidator and reduce interface headers
[platform/core/security/cert-svc.git] / vcore / 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 _VALIDATION_CORE_SIGNATUREREADER_H_
23 #define _VALIDATION_CORE_SIGNATUREREADER_H_
24
25 #include <vcore/SignatureData.h>
26 #include <vcore/ParserSchema.h>
27 #include <vcore/exception.h>
28
29 #include <map>
30
31 namespace ValidationCore {
32
33 class SignatureReader {
34 public:
35     class Exception {
36     public:
37         VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
38         VCORE_DECLARE_EXCEPTION_TYPE(Base, TargetRestriction);
39     };
40
41     SignatureReader();
42
43     void initialize(SignatureData &signatureData, const std::string &xmlscheme);
44
45     void read(SignatureData &signatureData);
46
47 private:
48     void blankFunction(SignatureData &signatureData);
49
50     void tokenKeyInfo(SignatureData &signatureData);
51     void tokenKeyModulus(SignatureData &signatureData);
52     void tokenKeyExponent(SignatureData &signatureData);
53     void tokenX509Data(SignatureData &signatureData);
54     void tokenX509Certificate(SignatureData &signatureData);
55     void tokenPublicKey(SignatureData &signatureData);
56     void tokenNamedCurve(SignatureData &signatureData);
57     void tokenRole(SignatureData &signatureData);
58     void tokenProfile(SignatureData &signatureData);
59     void tokenObject(SignatureData &signatureData);
60     void tokenSignatureProperties(SignatureData &signatureData);
61
62     void tokenTargetRestriction(SignatureData &signatureData);
63
64     void tokenEndKeyInfo(SignatureData &signatureData);
65     // KW     void tokenEndKeyName(SignatureData &signatureData);
66
67     void tokenEndRSAKeyValue(SignatureData &signatureData);
68
69     void tokenEndKeyModulus(SignatureData &signatureData);
70     void tokenEndKeyExponent(SignatureData &signatureData);
71     void tokenEndX509Data(SignatureData &signatureData);
72
73     void tokenEndX509Certificate(SignatureData &signatureData);
74
75     void tokenEndPublicKey(SignatureData &signatureData);
76     void tokenEndECKeyValue(SignatureData &signatureData);
77     void tokenEndIdentifier(SignatureData &signatureData);
78     void tokenEndObject(SignatureData &signatureData);
79
80     // DSA key components
81     void tokenEndDSAPComponent(SignatureData& signatureData);
82     void tokenEndDSAQComponent(SignatureData& signatureData);
83     void tokenEndDSAGComponent(SignatureData& signatureData);
84     void tokenEndDSAYComponent(SignatureData& signatureData);
85     void tokenEndDSAJComponent(SignatureData& signatureData);
86
87     void tokenEndDSAKeyValue(SignatureData& signatureData);
88
89     void tokenEndDSASeedComponent(SignatureData& signatureData);
90     void tokenEndDSAPGenCounterComponent(SignatureData& signatureData);
91
92     // temporary values required due reference parsing process
93     // optional parameters for dsa
94     std::string m_dsaKeyPComponent;
95     std::string m_dsaKeyQComponent;
96     std::string m_dsaKeyGComponent;
97     std::string m_dsaKeyYComponent;
98     std::string m_dsaKeyJComponent;
99     std::string m_dsaKeySeedComponent;
100     std::string m_dsaKeyPGenCounter;
101     // temporary values of ecdsa key
102     std::string m_publicKey;
103     std::string m_nameCurveURI;
104     std::string m_modulus;
105     std::string m_exponent;
106
107     // temporary values required due Object parsing
108     int m_signaturePropertiesCounter;
109     bool m_targetRestrictionObjectFound;
110
111     ParserSchema<SignatureReader, SignatureData> m_parserSchema;
112 };
113 }
114
115 #endif // _VALIDATION_CORE_SIGNATUREREADER_H_