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 _SIGNATUREREADER_H_
23 #define _SIGNATUREREADER_H_
26 #include <dpl/log/log.h>
28 #include "SignatureData.h"
29 #include "ParserSchema.h"
31 namespace ValidationCore {
38 DECLARE_EXCEPTION_TYPE(DPL::Exception, Base)
39 DECLARE_EXCEPTION_TYPE(Base, TargetRestrictionException)
44 void initialize(SignatureData &data,
45 const std::string &xmlscheme)
47 m_parserSchema.initialize(
48 data.getSignatureFileName(), true, SaxReader::VALIDATION_XMLSCHEME,
52 void read(SignatureData &data)
54 m_parserSchema.read(data);
58 void blankFunction(SignatureData &)
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);
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);
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);
94 void tokenEndDSAKeyValue(SignatureData& signatureData);
96 void tokenEndDSASeedComponent(SignatureData& signatureData);
97 void tokenEndDSAPGenCounterComponent(SignatureData& signatureData);
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;
114 // temporary values required due Object parsing
115 int m_signaturePropertiesCounter;
116 bool m_targetRestrictionObjectFound;
118 ParserSchema<SignatureReader, SignatureData> m_parserSchema;