2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * @file SignatureReader.h
18 * @author Bartlomiej Grzelewski (b.grzelewski@samsung.com)
20 * @brief SignatureReader is used to parse widget digital signature.
22 #ifndef _VALIDATION_CORE_SIGNATUREREADER_H_
23 #define _VALIDATION_CORE_SIGNATUREREADER_H_
25 #include <vcore/SignatureData.h>
26 #include <vcore/ParserSchema.h>
27 #include <vcore/exception.h>
31 namespace ValidationCore {
33 class SignatureReader {
37 VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
38 VCORE_DECLARE_EXCEPTION_TYPE(Base, TargetRestriction);
43 void initialize(SignatureData &signatureData, const std::string &xmlscheme);
45 void read(SignatureData &signatureData);
48 void blankFunction(SignatureData &signatureData);
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);
62 void tokenTargetRestriction(SignatureData &signatureData);
64 void tokenEndKeyInfo(SignatureData &signatureData);
65 // KW void tokenEndKeyName(SignatureData &signatureData);
67 void tokenEndRSAKeyValue(SignatureData &signatureData);
69 void tokenEndKeyModulus(SignatureData &signatureData);
70 void tokenEndKeyExponent(SignatureData &signatureData);
71 void tokenEndX509Data(SignatureData &signatureData);
73 void tokenEndX509Certificate(SignatureData &signatureData);
75 void tokenEndPublicKey(SignatureData &signatureData);
76 void tokenEndECKeyValue(SignatureData &signatureData);
77 void tokenEndIdentifier(SignatureData &signatureData);
78 void tokenEndObject(SignatureData &signatureData);
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);
87 void tokenEndDSAKeyValue(SignatureData& signatureData);
89 void tokenEndDSASeedComponent(SignatureData& signatureData);
90 void tokenEndDSAPGenCounterComponent(SignatureData& signatureData);
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;
107 // temporary values required due Object parsing
108 int m_signaturePropertiesCounter;
109 bool m_targetRestrictionObjectFound;
111 ParserSchema<SignatureReader, SignatureData> m_parserSchema;
115 #endif // _VALIDATION_CORE_SIGNATUREREADER_H_