14#include "keyple/card/calypso/CommandGetDataFcp.hpp"
19#include "keyple/card/calypso/CalypsoCardAdapter.hpp"
20#include "keyple/card/calypso/CalypsoCardClass.hpp"
21#include "keyple/card/calypso/CalypsoCardConstant.hpp"
22#include "keyple/card/calypso/CardCommandRef.hpp"
23#include "keyple/card/calypso/CardDataAccessException.hpp"
24#include "keyple/card/calypso/CommandSelectFile.hpp"
25#include "keyple/core/util/ApduUtil.hpp"
26#include "keyple/core/util/BerTlvUtil.hpp"
27#include "keyple/core/util/HexUtil.hpp"
33using keyple::core::util::ApduUtil;
34using keyple::core::util::BerTlvUtil;
35using keyple::core::util::HexUtil;
37const std::map<int, const std::shared_ptr<Command::StatusProperties>>
38 CommandGetDataFcp::STATUS_TABLE = [] {
39 std::map<int, const std::shared_ptr<Command::StatusProperties>> m(
40 Command::STATUS_TABLE);
44 std::make_shared<StatusProperties>(
45 "Data object not found (optional mode not "
47 typeid(CardDataAccessException))},
49 std::make_shared<StatusProperties>(
50 "File not found",
typeid(CardDataAccessException))},
52 std::make_shared<StatusProperties>(
53 "P1 or P2 value not supported",
54 typeid(CardDataAccessException))}});
58CommandGetDataFcp::CommandGetDataFcp(
59 const std::shared_ptr<DtoAdapters::TransactionContextDto>&
61 const std::shared_ptr<DtoAdapters::CommandContextDto>& commandContext)
62: Command(CardCommandRef::GET_DATA, nullptr, transactionContext, commandContext)
64 const std::uint8_t cardClass
65 = transactionContext->getCard() !=
nullptr
66 ? transactionContext->getCard()->getCardClass().getValue()
67 : CalypsoCardClass::ISO.getValue();
71 std::make_shared<DtoAdapters::ApduRequestAdapter>(ApduUtil::build(
73 getCommandRef().getInstructionByte(),
74 CalypsoCardConstant::TAG_FCP_FOR_CURRENT_FILE_MSB,
75 CalypsoCardConstant::TAG_FCP_FOR_CURRENT_FILE_LSB,
78 addSubName(
"FCP_FOR_CURRENT_FILE");
82CommandGetDataFcp::finalizeRequest()
88CommandGetDataFcp::isCryptoServiceRequiredToFinalizeRequest()
const
94CommandGetDataFcp::synchronizeCryptoServiceBeforeCardProcessing()
100CommandGetDataFcp::parseResponse(std::shared_ptr<ApduResponseApi> apduResponse)
102 Command::setApduResponseAndCheckStatus(apduResponse);
104 CommandSelectFile::parseProprietaryInformation(
105 apduResponse->getDataOut(), getTransactionContext()->getCard());
108const std::map<int, const std::shared_ptr<Command::StatusProperties>>&
109CommandGetDataFcp::getStatusTable()
const