14#include "keyple/card/calypso/CommandGetDataTraceabilityInformation.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/core/util/ApduUtil.hpp"
30using keyple::core::util::ApduUtil;
32const std::map<int, const std::shared_ptr<Command::StatusProperties>>
33 CommandGetDataTraceabilityInformation::STATUS_TABLE = [] {
34 std::map<int, const std::shared_ptr<Command::StatusProperties>> m(
35 Command::STATUS_TABLE);
39 std::make_shared<StatusProperties>(
40 "Data object not found (optional mode not "
42 typeid(CardDataAccessException))},
44 std::make_shared<StatusProperties>(
45 "P1 or P2 value not supported",
46 typeid(CardDataAccessException))}});
50CommandGetDataTraceabilityInformation::CommandGetDataTraceabilityInformation(
51 const std::shared_ptr<DtoAdapters::TransactionContextDto>&
53 const std::shared_ptr<DtoAdapters::CommandContextDto>& commandContext)
54: Command(CardCommandRef::GET_DATA, nullptr, transactionContext, commandContext)
56 const std::uint8_t cardClass
57 = transactionContext->getCard() !=
nullptr
58 ? transactionContext->getCard()->getCardClass().getValue()
59 : CalypsoCardClass::ISO.getValue();
63 std::make_shared<DtoAdapters::ApduRequestAdapter>(ApduUtil::build(
65 getCommandRef().getInstructionByte(),
66 CalypsoCardConstant::TAG_TRACEABILITY_INFORMATION_MSB,
67 CalypsoCardConstant::TAG_TRACEABILITY_INFORMATION_MSB,
70 addSubName(
"TRACEABILITY_INFORMATION");
74CommandGetDataTraceabilityInformation::finalizeRequest()
80CommandGetDataTraceabilityInformation ::
81 isCryptoServiceRequiredToFinalizeRequest()
const
87CommandGetDataTraceabilityInformation ::
88 synchronizeCryptoServiceBeforeCardProcessing()
94CommandGetDataTraceabilityInformation::parseResponse(
95 std::shared_ptr<ApduResponseApi> apduResponse)
97 Command::setApduResponseAndCheckStatus(apduResponse);
99 getTransactionContext()->getCard()->setTraceabilityInformation(
100 apduResponse->getDataOut());
103const std::map<int, const std::shared_ptr<Command::StatusProperties>>&
104CommandGetDataTraceabilityInformation::getStatusTable()
const