21#include "CalypsoCard.h"
29#include "LoggerFactory.h"
35using namespace calypsonet::terminal::calypso::card;
36using namespace keyple::core::util::cpp;
58 const uint8_t debitKeyIndex,
59 const std::vector<uint8_t> sessionTerminalChallenge,
61 const uint8_t recordNumber);
75 const std::vector<uint8_t>& samChallenge,
77 const uint8_t recordNumber,
78 const std::shared_ptr<CalypsoCard> calypsoCard);
92 const std::vector<uint8_t>& samChallenge,
94 const uint8_t recordNumber);
108 const std::vector<uint8_t>& samChallenge,
110 const uint8_t recordNumber);
124 const std::vector<uint8_t>& samChallenge,
126 const uint8_t recordNumber,
167 void parseRev3(
const std::vector<uint8_t>& apduResponseData);
197 void parseRev24(
const std::vector<uint8_t>& apduResponseData);
226 void parseRev10(
const std::vector<uint8_t>& apduResponseData);
289 const std::map<const int, const std::shared_ptr<StatusProperties>>&
getStatusTable()
const
297 class SecureSession {
307 const std::vector<uint8_t>& getChallengeTransactionCounter()
const;
312 const std::vector<uint8_t>& getChallengeRandomNumber()
const;
320 bool isPreviousSessionRatified()
const;
336 const std::shared_ptr<uint8_t> getKIF()
const;
344 const std::shared_ptr<uint8_t> getKVC()
const;
352 const std::vector<uint8_t>& getOriginalData()
const;
360 const std::vector<uint8_t>& getSecureSessionData()
const;
366 const std::vector<uint8_t> mChallengeTransactionCounter;
371 const std::vector<uint8_t> mChallengeRandomNumber;
376 const bool mPreviousSessionRatified;
381 const bool mManageSecureSessionAuthorized;
386 const std::shared_ptr<uint8_t> mKif;
391 const std::shared_ptr<uint8_t> mKvc;
396 const std::vector<uint8_t> mOriginalData;
401 const std::vector<uint8_t> mSecureSessionData;
418 SecureSession(
const std::vector<uint8_t>& challengeTransactionCounter,
419 const std::vector<uint8_t>& challengeRandomNumber,
420 const bool previousSessionRatified,
421 const bool manageSecureSessionAuthorized,
422 const std::shared_ptr<uint8_t> kif,
423 const std::shared_ptr<uint8_t> kvc,
424 const std::vector<uint8_t>& originalData,
425 const std::vector<uint8_t>& secureSessionData);
431 const std::unique_ptr<Logger> mLogger = LoggerFactory::getLogger(
typeid(
CmdCardOpenSession));
436 static const std::map<const int, const std::shared_ptr<StatusProperties>> STATUS_TABLE;
441 const std::shared_ptr<CalypsoCard> mCalypsoCard;
451 uint8_t mRecordNumber;
456 std::shared_ptr<SecureSession> mSecureSession;
461 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)
const std::vector< uint8_t > & getRecordDataRead() const
bool isManageSecureSessionAuthorized() const
CmdCardOpenSession(const std::shared_ptr< CalypsoCard > calypsoCard, const uint8_t debitKeyIndex, const std::vector< uint8_t > sessionTerminalChallenge, const uint8_t sfi, const uint8_t recordNumber)
const std::vector< uint8_t > & getCardChallenge() const
void createRev3(const uint8_t keyIndex, const std::vector< uint8_t > &samChallenge, const uint8_t sfi, const uint8_t recordNumber, const std::shared_ptr< CalypsoCard > calypsoCard)
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override
void parseRev24(const std::vector< uint8_t > &apduResponseData)
CmdCardOpenSession & setApduResponse(const std::shared_ptr< ApduResponseApi > apduResponse) override
int getTransactionCounterValue() const
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
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