21#include "CalypsoCard.h"
30#include "LoggerFactory.h"
36using namespace calypsonet::terminal::calypso::card;
37using namespace keyple::core::util::cpp;
63 const uint8_t keyIndex,
64 const std::vector<uint8_t>& samChallenge,
66 const uint8_t recordNumber,
67 const uint8_t recordSize,
68 const bool isExtendedModeAllowed);
81 const std::vector<uint8_t>& samChallenge,
83 const uint8_t recordNumber);
97 const std::vector<uint8_t>& samChallenge,
99 const uint8_t recordNumber);
113 const std::vector<uint8_t>& samChallenge,
115 const uint8_t recordNumber);
129 const std::vector<uint8_t>& samChallenge,
131 const uint8_t recordNumber,
163 void parseApduResponse(
const std::shared_ptr<ApduResponseApi> apduResponse)
override;
171 void parseRev3(
const std::vector<uint8_t>& apduResponseData);
201 void parseRev24(
const std::vector<uint8_t>& apduResponseData);
230 void parseRev10(
const std::vector<uint8_t>& apduResponseData);
269 const std::map<const int, const std::shared_ptr<StatusProperties>>&
getStatusTable()
const
277 class SecureSession {
287 const std::vector<uint8_t>& getChallengeTransactionCounter()
const;
292 const std::vector<uint8_t>& getChallengeRandomNumber()
const;
300 bool isPreviousSessionRatified()
const;
316 const std::shared_ptr<uint8_t> getKIF()
const;
324 const std::shared_ptr<uint8_t> getKVC()
const;
332 const std::vector<uint8_t>& getOriginalData()
const;
340 const std::vector<uint8_t>& getSecureSessionData()
const;
346 const std::vector<uint8_t> mChallengeTransactionCounter;
351 const std::vector<uint8_t> mChallengeRandomNumber;
356 const bool mPreviousSessionRatified;
361 const bool mManageSecureSessionAuthorized;
366 const std::shared_ptr<uint8_t> mKif;
371 const std::shared_ptr<uint8_t> mKvc;
376 const std::vector<uint8_t> mOriginalData;
381 const std::vector<uint8_t> mSecureSessionData;
398 SecureSession(
const std::vector<uint8_t>& challengeTransactionCounter,
399 const std::vector<uint8_t>& challengeRandomNumber,
400 const bool previousSessionRatified,
401 const bool manageSecureSessionAuthorized,
402 const std::shared_ptr<uint8_t> kif,
403 const std::shared_ptr<uint8_t> kvc,
404 const std::vector<uint8_t>& originalData,
405 const std::vector<uint8_t>& secureSessionData);
411 const std::unique_ptr<Logger> mLogger = LoggerFactory::getLogger(
typeid(
CmdCardOpenSession));
416 static const std::map<const int, const std::shared_ptr<StatusProperties>> STATUS_TABLE;
426 uint8_t mRecordNumber = 0;
431 uint8_t mRecordSize = 0;
436 const bool mIsExtendedModeAllowed =
false;
441 std::shared_ptr<SecureSession> mSecureSession =
nullptr;
446 static const std::map<const int, const std::shared_ptr<StatusProperties>> initStatusTable();
void createRev24(const uint8_t keyIndex, const std::vector< uint8_t > &samChallenge, const uint8_t sfi, const uint8_t recordNumber)
bool isManageSecureSessionAuthorized() const
CmdCardOpenSession(const std::shared_ptr< CalypsoCardAdapter > calypsoCard, const uint8_t keyIndex, const std::vector< uint8_t > &samChallenge, const uint8_t sfi, const uint8_t recordNumber, const uint8_t recordSize, const bool isExtendedModeAllowed)
void createRev3(const uint8_t keyIndex, const std::vector< uint8_t > &samChallenge, const uint8_t sfi, const uint8_t recordNumber)
const std::vector< uint8_t > & getCardChallenge() const
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override
void parseRev24(const std::vector< uint8_t > &apduResponseData)
void buildLegacyApduRequest(const uint8_t keyIndex, const std::vector< uint8_t > &samChallenge, const uint8_t sfi, const uint8_t recordNumber, const uint8_t p1)
const std::shared_ptr< uint8_t > getSelectedKif() const
void parseApduResponse(const std::shared_ptr< ApduResponseApi > apduResponse) override
bool isSessionBufferUsed() const override
const std::shared_ptr< uint8_t > getSelectedKvc() const
uint8_t getRecordNumber() const
void parseRev3(const std::vector< uint8_t > &apduResponseData)
void createRev10(const uint8_t keyIndex, const std::vector< uint8_t > &samChallenge, const uint8_t sfi, const uint8_t recordNumber)
void parseRev10(const std::vector< uint8_t > &apduResponseData)
AbstractApduCommand::StatusProperties StatusProperties