Keyple Card Calypso C++ Library 2.2.2
Reference Terminal Reader API for C++
CommonSignatureComputationDataAdapter.h
Go to the documentation of this file.
1/**************************************************************************************************
2 * Copyright (c) 2022 Calypso Networks Association https://calypsonet.org/ *
3 * *
4 * See the NOTICE file(s) distributed with this work for additional information regarding *
5 * copyright ownership. *
6 * *
7 * This program and the accompanying materials are made available under the terms of the Eclipse *
8 * Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0 *
9 * *
10 * SPDX-License-Identifier: EPL-2.0 *
11 **************************************************************************************************/
12
13#pragma once
14
15/* Calypsonet Terminal Calypso */
16#include "CommonSignatureComputationData.h"
17
18/* Keyple Core Util */
19#include "IllegalStateException.h"
20
21namespace keyple {
22namespace card {
23namespace calypso {
24
25using namespace calypsonet::terminal::calypso::transaction;
26using namespace keyple::core::util::cpp::exception;
27
35template <typename T>
36class CommonSignatureComputationDataAdapter : virtual public CommonSignatureComputationData<T> {
37public:
43 T& setData(const std::vector<uint8_t>& data, const uint8_t kif, const uint8_t kvc) override
44 {
45 mData = data;
46 mKif = kif;
47 mKvc = kvc;
48
49 return dynamic_cast<T&>(*this);
50 }
51
57 T& setSignatureSize(const int size) override
58 {
59 mSignatureSize = size;
60
61 return dynamic_cast<T&>(*this);
62 }
63
69 T& setKeyDiversifier(const std::vector<uint8_t>& diversifier) override
70 {
71 mKeyDiversifier = diversifier;
72 mIsKeyDiversifierSet = true;
73
74 return dynamic_cast<T&>(*this);
75 }
76
82 const std::vector<uint8_t>& getSignature() const override
83 {
84 if (!mSignatureProcessed) {
85 throw IllegalStateException("The command has not yet been processed");
86 }
87
88 return mSignature;
89 }
90
97 virtual const std::vector<uint8_t>& getData() const
98 {
99 return mData;
100 }
101
102
109 virtual uint8_t getKif() const
110 {
111 return mKif;
112 }
113
120 virtual uint8_t getKvc() const
121 {
122 return mKvc;
123 }
124
131 virtual int getSignatureSize() const
132 {
133 return mSignatureSize;
134 }
135
143 virtual void setSignature(const std::vector<uint8_t>& signature)
144 {
145 mSignature = signature;
146 mSignatureProcessed = true;
147 }
148
155 virtual const std::vector<uint8_t>& getKeyDiversifier() const
156 {
157 return mKeyDiversifier;
158 }
159
164 {
165 return mIsKeyDiversifierSet;
166 }
167
168private:
172 std::vector<uint8_t> mData;
173
177 uint8_t mKif;
178
182 uint8_t mKvc;
183
187 int mSignatureSize = 8;
188
192 std::vector<uint8_t> mKeyDiversifier;
193
197 bool mIsKeyDiversifierSet = false;
198
202 std::vector<uint8_t> mSignature;
203
207 bool mSignatureProcessed = false;
208};
209
210}
211}
212}
virtual void setSignature(const std::vector< uint8_t > &signature)
T & setData(const std::vector< uint8_t > &data, const uint8_t kif, const uint8_t kvc) override
T & setKeyDiversifier(const std::vector< uint8_t > &diversifier) override