14#include "keyple/core/service/InternalLegacyDto.hpp"
19#include "keyple/core/service/InternalCardSelector.hpp"
25InternalLegacyDto::InternalLegacyDto()
29const std::vector<std::shared_ptr<LegacyCardSelectionRequestV0>>
30InternalLegacyDto::mapToLegacyCardSelectionRequestsV0(
31 const std::vector<std::shared_ptr<CardSelector>>& cardSelectors,
32 const std::vector<std::shared_ptr<CardSelectionRequestSpi>>&
33 cardSelectionRequests)
35 std::vector<std::shared_ptr<LegacyCardSelectionRequestV0>> result;
37 for (
int i = 0; i < cardSelectors.size(); i++) {
38 result.push_back(mapToLegacyCardSelectionRequestV0(
39 cardSelectors[i], cardSelectionRequests[i]));
45const std::vector<std::shared_ptr<LegacyCardSelectionRequestV1>>
46InternalLegacyDto::mapToLegacyCardSelectionRequestsV1(
47 const std::vector<std::shared_ptr<CardSelector>>& cardSelectors,
48 const std::vector<std::shared_ptr<CardSelectionRequestSpi>>&
49 cardSelectionRequests)
51 std::vector<std::shared_ptr<LegacyCardSelectionRequestV1>> result;
53 for (
int i = 0; i < cardSelectors.size(); i++) {
54 result.push_back(mapToLegacyCardSelectionRequestV1(
55 cardSelectors[i], cardSelectionRequests[i]));
61std::shared_ptr<LegacyCardSelectionRequestV0>
62InternalLegacyDto::mapToLegacyCardSelectionRequestV0(
63 std::shared_ptr<CardSelector> cardSelector,
64 std::shared_ptr<CardSelectionRequestSpi> cardSelectionRequestSpi)
66 auto result = std::make_shared<LegacyCardSelectionRequestV0>();
68 result->mCardRequest = cardSelectionRequestSpi->getCardRequest() !=
nullptr
69 ? mapToLegacyCardRequestV0(
70 cardSelectionRequestSpi->getCardRequest())
74 = mapToLegacyCardSelector(cardSelector, cardSelectionRequestSpi);
79std::shared_ptr<LegacyCardSelectionRequestV1>
80InternalLegacyDto::mapToLegacyCardSelectionRequestV1(
81 std::shared_ptr<CardSelector> cardSelector,
82 std::shared_ptr<CardSelectionRequestSpi> cardSelectionRequestSpi)
84 auto result = std::make_shared<LegacyCardSelectionRequestV1>();
86 result->mCardRequest = cardSelectionRequestSpi->getCardRequest() !=
nullptr
87 ? mapToLegacyCardRequestV1(
88 cardSelectionRequestSpi->getCardRequest())
92 = mapToLegacyCardSelector(cardSelector, cardSelectionRequestSpi);
97std::shared_ptr<LegacyCardSelector>
98InternalLegacyDto::mapToLegacyCardSelector(
99 std::shared_ptr<CardSelector> cardSelector,
100 std::shared_ptr<CardSelectionRequestSpi> cardSelectionRequestSpi)
102 auto result = std::make_shared<LegacyCardSelector>();
103 auto basicCardSelector
104 = std::dynamic_pointer_cast<InternalCardSelector>(cardSelector);
106 result->mCardProtocol = basicCardSelector->getLogicalProtocolName();
107 result->mPowerOnDataRegex = basicCardSelector->getPowerOnDataRegex();
109 const auto isoCardSelector
110 = std::dynamic_pointer_cast<InternalIsoCardSelector>(cardSelector);
111 if (isoCardSelector) {
112 result->mAid = isoCardSelector->getAid();
113 result->mFileOccurrence = isoCardSelector->getFileOccurrence();
114 result->mFileControlInformation
115 = isoCardSelector->getFileControlInformation();
117 result->mAid = std::vector<uint8_t>(0);
118 result->mFileOccurrence = CommonIsoCardSelector::FileOccurrence::FIRST;
119 result->mFileControlInformation
120 = CommonIsoCardSelector::FileControlInformation::FCI;
122 result->mSuccessfulSelectionStatusWords
123 = cardSelectionRequestSpi->getSuccessfulSelectionStatusWords();
128std::shared_ptr<LegacyCardRequest>
129InternalLegacyDto::mapToLegacyCardRequestV0(
130 const std::shared_ptr<CardRequestSpi> cardRequest)
132 auto result = std::make_shared<LegacyCardRequestV0>();
134 result->mApduRequests
135 = mapToLegacyApduRequests(cardRequest->getApduRequests());
136 result->mIsStatusCodesVerificationEnabled
137 = cardRequest->stopOnUnsuccessfulStatusWord();
142std::shared_ptr<LegacyCardRequest>
143InternalLegacyDto::mapToLegacyCardRequestV1(
144 const std::shared_ptr<CardRequestSpi> cardRequest)
146 auto result = std::make_shared<LegacyCardRequestV1>();
148 result->mApduRequests
149 = mapToLegacyApduRequests(cardRequest->getApduRequests());
150 result->mStopOnUnsuccessfulStatusWord
151 = cardRequest->stopOnUnsuccessfulStatusWord();
156const std::vector<std::shared_ptr<LegacyApduRequest>>
157InternalLegacyDto::mapToLegacyApduRequests(
158 const std::vector<std::shared_ptr<ApduRequestSpi>>& apduRequests)
160 std::vector<std::shared_ptr<LegacyApduRequest>> result;
162 for (
const auto& apduRequestSpi : apduRequests) {
163 result.push_back(mapToLegacyApduRequest(apduRequestSpi));
169std::shared_ptr<LegacyApduRequest>
170InternalLegacyDto::mapToLegacyApduRequest(
171 const std::shared_ptr<ApduRequestSpi> apduRequestSpi)
173 auto result = std::make_shared<LegacyApduRequest>();
175 result->mApdu = apduRequestSpi->getApdu();
176 result->mInfo = apduRequestSpi->getInfo();
177 result->mSuccessfulStatusWords = apduRequestSpi->getSuccessfulStatusWords();