16#include "WriteAccessLevel.h"
35using namespace calypsonet::terminal::calypso;
36using namespace keyple::core::util::cpp;
57 const std::shared_ptr<CalypsoCardAdapter> targetCard,
58 const std::shared_ptr<CardSecuritySettingAdapter> securitySetting,
59 const std::vector<std::vector<uint8_t>>& transactionAuditData);
70 std::shared_ptr<uint8_t>
computeKvc(
const WriteAccessLevel writeAccessLevel,
71 const std::shared_ptr<uint8_t> kvc)
const;
83 std::shared_ptr<uint8_t>
computeKif(
const WriteAccessLevel writeAccessLevel,
84 const std::shared_ptr<uint8_t> kif,
85 const std::shared_ptr<uint8_t> kvc)
const;
123 const uint8_t cipheringKif,
124 const uint8_t cipheringKvc,
125 const uint8_t sourceKif,
126 const uint8_t sourceKvc);
138 const std::vector<uint8_t>& currentPin,
139 const std::vector<uint8_t>& newPin);
152 const std::vector<uint8_t>& svGetHeader,
153 const std::vector<uint8_t>& svGetData,
154 const std::shared_ptr<CmdCardSvReload> cmdCardSvReload);
168 const bool isDebitCommand,
169 const std::vector<uint8_t>& svGetHeader,
170 const std::vector<uint8_t>& svGetData,
171 const std::shared_ptr<CmdCardSvDebitOrUndebit> cmdCardSvDebitOrUndebit);
196 const std::vector<uint8_t>& openSecureSessionDataOut,
199 const bool isSessionEncrypted,
200 const bool isVerificationMode);
211 void updateSession(
const std::vector<std::shared_ptr<ApduRequestSpi>>& requests,
212 const std::vector<std::shared_ptr<ApduResponseApi>>& responses,
213 const int startIndex);
238 class DigestManager {
243 const uint8_t mSessionKif;
248 const uint8_t mSessionKvc;
253 bool mIsDigestInitDone =
false;
258 const std::vector<uint8_t> mOpenSecureSessionDataOut;
263 const bool mIsSessionEncrypted;
268 const bool mIsVerificationMode;
273 std::vector<std::vector<uint8_t>> mCardApdus;
291 const std::vector<uint8_t>& openSecureSessionDataOut,
294 const bool isSessionEncrypted,
295 const bool isVerificationMode);
305 void updateSession(
const std::vector<std::shared_ptr<ApduRequestSpi>>& requests,
306 const std::vector<std::shared_ptr<ApduResponseApi>>& responses,
307 const int startIndex);
313 void prepareCommands();
319 void prepareDigestInit();
325 void prepareDigestUpdate();
331 void prepareDigestClose();
337 std::shared_ptr<CalypsoSamAdapter> mControlSam =
nullptr;
342 const std::shared_ptr<CalypsoCardAdapter> mTargetCard;
347 const std::shared_ptr<CardSecuritySettingAdapter> mCardSecuritySetting;
352 std::shared_ptr<DigestManager> mDigestManager;
const std::shared_ptr< CmdSamSvPrepareDebitOrUndebit > prepareSvPrepareDebitOrUndebit(const bool isDebitCommand, const std::vector< uint8_t > &svGetHeader, const std::vector< uint8_t > &svGetData, const std::shared_ptr< CmdCardSvDebitOrUndebit > cmdCardSvDebitOrUndebit)
void prepareDigestAuthenticate(const std::vector< uint8_t > &cardSignatureLo)
const std::shared_ptr< CmdSamSvPrepareLoad > prepareSvPrepareLoad(const std::vector< uint8_t > &svGetHeader, const std::vector< uint8_t > &svGetData, const std::shared_ptr< CmdCardSvReload > cmdCardSvReload)
void updateSession(const std::vector< std::shared_ptr< ApduRequestSpi > > &requests, const std::vector< std::shared_ptr< ApduResponseApi > > &responses, const int startIndex)
const std::shared_ptr< CmdSamDigestClose > prepareSessionClosing()
const std::shared_ptr< CmdSamCardGenerateKey > prepareCardGenerateKey(const uint8_t cipheringKif, const uint8_t cipheringKvc, const uint8_t sourceKif, const uint8_t sourceKvc)
CardControlSamTransactionManagerAdapter(const std::shared_ptr< CalypsoCardAdapter > targetCard, const std::shared_ptr< CardSecuritySettingAdapter > securitySetting, const std::vector< std::vector< uint8_t > > &transactionAuditData)
std::shared_ptr< CmdSamGetChallenge > prepareGetChallenge()
void prepareSvCheck(const std::vector< uint8_t > &svOperationData)
std::shared_ptr< uint8_t > computeKif(const WriteAccessLevel writeAccessLevel, const std::shared_ptr< uint8_t > kif, const std::shared_ptr< uint8_t > kvc) const
void initializeSession(const std::vector< uint8_t > &openSecureSessionDataOut, const uint8_t kif, const uint8_t kvc, const bool isSessionEncrypted, const bool isVerificationMode)
std::shared_ptr< uint8_t > computeKvc(const WriteAccessLevel writeAccessLevel, const std::shared_ptr< uint8_t > kvc) const
const std::shared_ptr< CmdSamCardCipherPin > prepareCardCipherPin(const std::vector< uint8_t > ¤tPin, const std::vector< uint8_t > &newPin)
SamTransactionManager & processCommands() override